From e9f362cc87d71c4cbc79274e485a1a1557415fd8 Mon Sep 17 00:00:00 2001 From: nym21 Date: Sat, 14 Jun 2025 20:17:49 +0200 Subject: [PATCH] bundler: init working version --- .gitignore | 1 + Cargo.lock | 1803 +++++++++++++++- Cargo.toml | 1 + README.md | 1 + crates/brk/Cargo.toml | 3 + crates/brk/examples/main.rs | 1 + crates/brk/src/lib.rs | 7 + crates/brk_bundler/Cargo.toml | 16 + crates/brk_bundler/src/lib.rs | 136 ++ crates/brk_cli/src/run.rs | 29 +- crates/brk_logger/src/lib.rs | 8 +- crates/brk_server/Cargo.toml | 3 +- crates/brk_server/examples/main.rs | 2 +- crates/brk_server/src/files/file.rs | 12 +- crates/brk_server/src/lib.rs | 16 +- crates/brk_server/src/traits/header_map.rs | 2 +- .../assets/fonts/geist_mono_var_1_4_01.woff2 | Bin 62100 -> 0 bytes .../fonts/geist_mono_var_italic_v1_5_0.woff2 | Bin 0 -> 72284 bytes .../assets/fonts/geist_mono_var_v1_5_0.woff2 | Bin 0 -> 66316 bytes websites/default/generate-icons.sh | 33 - websites/default/index.html | 274 ++- websites/default/misc/tailwindTo550.js | 46 - .../v5.0.7-treeshaked/script.js | 8 - .../lightweight-charts/v5.0.7/script.js | 8 + .../{v5.0.7-treeshaked => v5.0.7}/types.d.ts | 0 .../packages/lightweight-charts/wrapper.js | 1389 +++++++------ .../default/packages/solid-signals/README.md | 1 + .../default/packages/solid-signals/types.d.ts | 4 - .../solid-signals/v0.3.2-treeshaked/script.js | 679 ------ .../packages/solid-signals/v0.3.2/script.js | 1851 +++++++++++++++++ .../types/boundaries.d.ts | 0 .../types/core/constants.d.ts | 0 .../types/core/core.d.ts | 0 .../types/core/effect.d.ts | 0 .../types/core/error.d.ts | 0 .../types/core/flags.d.ts | 0 .../types/core/index.d.ts | 0 .../types/core/owner.d.ts | 0 .../types/core/scheduler.d.ts | 0 .../types/index.d.ts | 0 .../types/map.d.ts | 0 .../types/signals.d.ts | 0 .../types/store/index.d.ts | 0 .../types/store/projection.d.ts | 0 .../types/store/reconcile.d.ts | 0 .../types/store/store.d.ts | 0 .../types/store/utils.d.ts | 0 .../default/packages/solid-signals/wrapper.js | 278 +-- websites/default/scripts/chart.js | 3 +- websites/default/scripts/entry.js | 3 + websites/default/scripts/main.js | 127 +- websites/default/scripts/options.js | 69 +- websites/default/scripts/simulation.js | 172 +- websites/default/scripts/vecid-to-indexes.js | 2 +- websites/default/service-worker.js | 41 +- websites/default/styles/chart.css | 39 - websites/default/styles/simulation.css | 76 - websites/default/styles/table.css | 144 -- 58 files changed, 5049 insertions(+), 2239 deletions(-) create mode 100644 crates/brk/examples/main.rs create mode 100644 crates/brk_bundler/Cargo.toml create mode 100644 crates/brk_bundler/src/lib.rs delete mode 100644 websites/default/assets/fonts/geist_mono_var_1_4_01.woff2 create mode 100644 websites/default/assets/fonts/geist_mono_var_italic_v1_5_0.woff2 create mode 100644 websites/default/assets/fonts/geist_mono_var_v1_5_0.woff2 delete mode 100755 websites/default/generate-icons.sh delete mode 100644 websites/default/misc/tailwindTo550.js delete mode 100644 websites/default/packages/lightweight-charts/v5.0.7-treeshaked/script.js create mode 100644 websites/default/packages/lightweight-charts/v5.0.7/script.js rename websites/default/packages/lightweight-charts/{v5.0.7-treeshaked => v5.0.7}/types.d.ts (100%) create mode 100644 websites/default/packages/solid-signals/README.md delete mode 100644 websites/default/packages/solid-signals/types.d.ts delete mode 100644 websites/default/packages/solid-signals/v0.3.2-treeshaked/script.js create mode 100644 websites/default/packages/solid-signals/v0.3.2/script.js rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/boundaries.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/constants.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/core.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/effect.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/error.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/flags.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/index.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/owner.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/core/scheduler.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/index.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/map.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/signals.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/store/index.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/store/projection.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/store/reconcile.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/store/store.d.ts (100%) rename websites/default/packages/solid-signals/{v0.3.2-treeshaked => v0.3.2}/types/store/utils.d.ts (100%) create mode 100644 websites/default/scripts/entry.js delete mode 100644 websites/default/styles/chart.css delete mode 100644 websites/default/styles/simulation.css delete mode 100644 websites/default/styles/table.css diff --git a/.gitignore b/.gitignore index 0f1473561..3ac1f8d15 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ # Builds target +dist # Copies *\ copy* diff --git a/Cargo.lock b/Cargo.lock index 7b37db031..7cbbd7868 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,6 +28,39 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.3", + "once_cell", + "version_check", + "zerocopy", +] + +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -123,6 +156,18 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "anyhow" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" + +[[package]] +name = "append-only-vec" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7992085ec035cfe96992dd31bfd495a2ebd31969bb95f624471cb6c0b349e571" + [[package]] name = "arbitrary" version = "1.4.1" @@ -138,6 +183,12 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +[[package]] +name = "arcstr" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03918c3dbd7701a85c6b9887732e2921175f26c350b4563841d0958c21d57e6d" + [[package]] name = "arrayvec" version = "0.7.6" @@ -160,6 +211,28 @@ dependencies = [ "zstd-safe", ] +[[package]] +name = "async-scoped" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4042078ea593edffc452eef14e99fdb2b120caa4ad9618bcdeabc4a023b98740" +dependencies = [ + "futures", + "pin-project", + "tokio", +] + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.103", +] + [[package]] name = "autocfg" version = "1.4.0" @@ -235,6 +308,12 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "base-encode" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17bd29f7c70f32e9387f4d4acfa5ea7b7749ef784fb78cf382df97069337b8c" + [[package]] name = "base58ck" version = "0.1.0" @@ -257,13 +336,22 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64-simd" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" +dependencies = [ + "simd-abstraction", +] + [[package]] name = "base64-simd" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "339abbe78e73178762e23bea9dfd08e697eb3f3301cd4be981c0f78ba5859195" dependencies = [ - "outref", + "outref 0.5.2", "vsimd", ] @@ -371,11 +459,32 @@ dependencies = [ "serde_json", ] +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + [[package]] name = "bitflags" version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +dependencies = [ + "serde", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] [[package]] name = "block-buffer" @@ -390,6 +499,7 @@ dependencies = [ name = "brk" version = "0.0.56" dependencies = [ + "brk_bundler", "brk_cli", "brk_computer", "brk_core", @@ -405,6 +515,18 @@ dependencies = [ "brk_vec", ] +[[package]] +name = "brk_bundler" +version = "0.0.56" +dependencies = [ + "log", + "minify-html-onepass", + "notify", + "rolldown", + "sugar_path", + "tokio", +] + [[package]] name = "brk_cli" version = "0.0.56" @@ -561,6 +683,7 @@ version = "0.0.56" dependencies = [ "axum", "bitcoincore-rpc", + "brk_bundler", "brk_computer", "brk_core", "brk_exit", @@ -657,6 +780,28 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "bytecount" version = "0.6.9" @@ -711,15 +856,26 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.26" +version = "1.2.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956a5e21988b87f372569b66183b78babf23ebc2e744b733e4350a752c4dafac" +checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" dependencies = [ "jobserver", "libc", "shlex", ] +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + [[package]] name = "cfg-if" version = "1.0.1" @@ -785,7 +941,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -827,6 +983,15 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" +[[package]] +name = "commondir" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab552acb7c0a751c75c3dd4f9b95d31ed85c985ce5c70232a2952ffbe7ecfda5" +dependencies = [ + "thiserror 1.0.69", +] + [[package]] name = "compact_str" version = "0.9.0" @@ -838,6 +1003,7 @@ dependencies = [ "itoa", "rustversion", "ryu", + "serde", "static_assertions", ] @@ -847,12 +1013,41 @@ version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea0095f6103c2a8b44acd6fd15960c801dafebf02e21940360833e0673f48ba7" +[[package]] +name = "const-str" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21077772762a1002bb421c3af42ac1725fa56066bfc53d9a55bb79905df2aaf3" +dependencies = [ + "const-str-proc-macro", +] + +[[package]] +name = "const-str-proc-macro" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1e0fdd2e5d3041e530e1b21158aeeef8b5d0e306bc5c1e3d6cf0930d10e25a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "constant_time_eq" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -959,6 +1154,47 @@ dependencies = [ "typenum", ] +[[package]] +name = "css-module-lexer" +version = "0.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b51940c54c6ca015d3add383571ec5610114466eb67aa0a27096e1dcf3c9e29" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cssparser" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be934d936a0fbed5bcdc01042b770de1398bf79d0e192f49fa7faea0e99281e" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf", + "smallvec", +] + +[[package]] +name = "cssparser-color" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "556c099a61d85989d7af52b692e35a8d68a57e7df8c6d07563dc0778b3960c9f" +dependencies = [ + "cssparser", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.103", +] + [[package]] name = "ctrlc" version = "3.4.7" @@ -990,7 +1226,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -1001,7 +1237,20 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 2.0.102", + "syn 2.0.103", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", ] [[package]] @@ -1018,6 +1267,21 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + +[[package]] +name = "data-url" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" +dependencies = [ + "matches", +] + [[package]] name = "deflate64" version = "0.1.9" @@ -1042,7 +1306,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -1056,6 +1320,27 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.103", + "unicode-xid", +] + [[package]] name = "digest" version = "0.10.7" @@ -1073,6 +1358,27 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0d05e1c0dbad51b52c38bda7adceef61b9efc2baf04acfe8726a8c4630a6f57" +[[package]] +name = "dtoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6add3b8cff394282be81f3fc1a0605db594ed69890078ca6e2cab1c408bcf04" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + [[package]] name = "either" version = "1.15.0" @@ -1088,7 +1394,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -1140,12 +1446,33 @@ dependencies = [ "once_cell", ] +[[package]] +name = "fast-glob" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ea3f6bbcf4dbe2076b372186fc7aeecd5f6f84754582e56ee7db262b15a6f0" +dependencies = [ + "arrayvec", +] + [[package]] name = "fastrand" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + [[package]] name = "fixedbitset" version = "0.5.7" @@ -1160,7 +1487,7 @@ checksum = "13279146a877c2060f668bc4c477af8ef5aa42732c58dca32fcb4aff40edc5b4" dependencies = [ "byteorder", "byteview", - "dashmap", + "dashmap 6.1.0", "log", "lsm-tree", "path-absolutize", @@ -1201,6 +1528,36 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "fsevent-sys" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2" +dependencies = [ + "libc", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -1208,6 +1565,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -1216,6 +1574,34 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.103", +] + [[package]] name = "futures-sink" version = "0.3.31" @@ -1234,10 +1620,16 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures-channel", "futures-core", + "futures-io", + "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", + "slab", ] [[package]] @@ -1292,6 +1684,19 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.8", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.12", + "bumpalo", +] [[package]] name = "hashbrown" @@ -1485,6 +1890,35 @@ dependencies = [ "serde", ] +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "inotify" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" +dependencies = [ + "bitflags 2.9.1", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + [[package]] name = "inout" version = "0.1.4" @@ -1509,6 +1943,24 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itertools" version = "0.14.0" @@ -1547,7 +1999,7 @@ checksum = "6c6e1db7ed32c6c71b759497fae34bf7933636f75a251b9e736555da426f6442" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -1585,6 +2037,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json-strip-comments" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b271732a960335e715b6b2ae66a086f115c74eb97360e996d2bd809bfc063bba" +dependencies = [ + "memchr", +] + [[package]] name = "jsonrpc" version = "0.18.0" @@ -1597,6 +2058,26 @@ dependencies = [ "serde_json", ] +[[package]] +name = "kqueue" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" +dependencies = [ + "kqueue-sys", + "libc", +] + +[[package]] +name = "kqueue-sys" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" +dependencies = [ + "bitflags 1.3.2", + "libc", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -1629,6 +2110,17 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.9.1", + "libc", + "redox_syscall", +] + [[package]] name = "libz-rs-sys" version = "0.5.1" @@ -1638,6 +2130,45 @@ dependencies = [ "zlib-rs", ] +[[package]] +name = "lightningcss" +version = "1.0.0-alpha.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a73ffa17de66534e4b527232f44aa0a89fad22c4f4e0735f9be35494f058e54" +dependencies = [ + "ahash 0.8.12", + "bitflags 2.9.1", + "const-str", + "cssparser", + "cssparser-color", + "dashmap 5.5.3", + "data-encoding", + "getrandom 0.2.16", + "indexmap 2.9.0", + "itertools 0.10.5", + "lazy_static", + "lightningcss-derive", + "parcel_selectors", + "parcel_sourcemap", + "paste", + "pathdiff", + "rayon", + "serde", + "smallvec", +] + +[[package]] +name = "lightningcss-derive" +version = "1.0.0-alpha.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12744d1279367caed41739ef094c325d53fb0ffcd4f9b84a368796f870252" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -1676,7 +2207,7 @@ dependencies = [ "lz4_flex", "path-absolutize", "quick_cache", - "rustc-hash", + "rustc-hash 2.1.1", "self_cell", "tempfile", "value-log", @@ -1690,6 +2221,21 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + [[package]] name = "matchit" version = "0.8.4" @@ -1717,6 +2263,47 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "minify-html-common" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697a6b40dffdc5de10c0cbd709dc2bc2039cea9dab8aaa636eb9a49d6b411780" +dependencies = [ + "aho-corasick 0.7.20", + "itertools 0.12.1", + "lazy_static", + "memchr", + "rustc-hash 1.1.0", + "serde", + "serde_json", +] + +[[package]] +name = "minify-html-onepass" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ebcce21183a0b3842371eb15b5dcf198b07e00cc02e65d48f6e2b52ad5d295c" +dependencies = [ + "ahash 0.8.12", + "aho-corasick 0.7.20", + "lightningcss", + "memchr", + "minify-html-common", + "minify-js", + "once_cell", +] + +[[package]] +name = "minify-js" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1fa5546ee8bd66024113e506cabe4230e76635a094c06ea2051b66021dda92e" +dependencies = [ + "aho-corasick 0.7.20", + "lazy_static", + "parse-js", +] + [[package]] name = "miniz_oxide" version = "0.8.9" @@ -1747,6 +2334,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", + "log", "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.59.0", ] @@ -1757,18 +2345,62 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags", + "bitflags 2.9.1", "cfg-if", "cfg_aliases", "libc", ] +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + [[package]] name = "nonmax" version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "610a5acd306ec67f907abe5567859a3c693fb9886eb1f012ab8f2a47bef3db51" +[[package]] +name = "notify" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" +dependencies = [ + "bitflags 2.9.1", + "filetime", + "fsevent-sys", + "inotify", + "kqueue", + "libc", + "log", + "mio", + "notify-types", + "walkdir", + "windows-sys 0.59.0", +] + +[[package]] +name = "notify-types" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-bigint" version = "0.4.6" @@ -1824,12 +2456,24 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" +[[package]] +name = "outref" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" + [[package]] name = "outref" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "owo-colors" version = "4.2.1" @@ -1838,20 +2482,40 @@ checksum = "26995317201fa17f3656c36716aed4a7c81743a9634ac4c99c0eeda495db0cec" [[package]] name = "oxc" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c130580b8327276f252c7a84b484bc35c9432e23ec41b081506d0a5bc71a28" +checksum = "0053b9142d0776d038db03b967c87ebafa5bffdc4150183b5540adbcbc00fabe" dependencies = [ "oxc_allocator", "oxc_ast", + "oxc_ast_visit", + "oxc_cfg", "oxc_codegen", "oxc_diagnostics", + "oxc_isolated_declarations", "oxc_mangler", "oxc_minifier", "oxc_parser", "oxc_regular_expression", + "oxc_semantic", "oxc_span", "oxc_syntax", + "oxc_transformer", + "oxc_transformer_plugins", +] + +[[package]] +name = "oxc-browserslist" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f56cc6eaa393139eda31fc22b4638e3d3e58496122c1738026aa7c4a9631f9" +dependencies = [ + "nom", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "thiserror 2.0.12", + "time", ] [[package]] @@ -1864,7 +2528,7 @@ dependencies = [ "owo-colors", "oxc-miette-derive", "textwrap", - "thiserror", + "thiserror 2.0.12", "unicode-width", ] @@ -1876,30 +2540,31 @@ checksum = "3bd3da01a295024fa79e3b4aba14b590d91256a274ff29cc5ee8f55183b2df24" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] name = "oxc_allocator" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e50218e74886659d1d13de8e6a4ff13c7e96924ed0017bc193a1feb8001b18" +checksum = "6ead9af98156b7a80512e1d0db127572ee4a8de43b41eaf5b797482c8530fdad" dependencies = [ "allocator-api2", "bumpalo", "hashbrown 0.15.4", "oxc_data_structures", - "rustc-hash", + "oxc_estree", + "rustc-hash 2.1.1", + "serde", ] [[package]] name = "oxc_ast" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a2c546ff7887418facf35f7996f0ca2099bde75931597429b408746bbaaddcd" +checksum = "bac5f46a96dd0bc9f63b9745568471b42cb0b617716d311c34a79f68e355796a" dependencies = [ - "bitflags", - "cow-utils", + "bitflags 2.9.1", "oxc_allocator", "oxc_ast_macros", "oxc_data_structures", @@ -1911,50 +2576,51 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ce8952bd09048ac55421aeecc06cc69db9f7220a25d69f3da8c6da3d95e5d6d" +checksum = "d2c25817869aab36130e4d0c7cf8630582e408bff34b95fb66a03512bb3defe5" dependencies = [ "phf", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] name = "oxc_ast_visit" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a02f6d1e34a893acd0d6a0994ff56c861b08d472476c1bea95f9c04c6da3426" +checksum = "e056ca12ae23492897b2d9d915581c03cd1b2d6158c52d67c67bcc3ceebdae18" dependencies = [ "oxc_allocator", "oxc_ast", + "oxc_data_structures", "oxc_span", "oxc_syntax", ] [[package]] name = "oxc_cfg" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869bb28669f0747c181d5f5e28d9aad063e6e4043af3222c9ab7358b9e8788f" +checksum = "424c8259dc5bbd4f38b63ca6498e3140bd0ddff9f105599cc060013c89c94160" dependencies = [ - "bitflags", - "itertools", + "bitflags 2.9.1", + "itertools 0.14.0", "nonmax", "oxc_index", "oxc_syntax", "petgraph", - "rustc-hash", + "rustc-hash 2.1.1", ] [[package]] name = "oxc_codegen" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88e275fbd0f26987ef15aa29fef129e75d8e3799e309797444c6ed4c5761ba2b" +checksum = "e28e1e25e206a06c8a2b40c78b51e7eadfd9f931494d72cc740bf6fba66890d1" dependencies = [ - "bitflags", + "bitflags 2.9.1", "cow-utils", "nonmax", "oxc_allocator", @@ -1965,24 +2631,25 @@ dependencies = [ "oxc_sourcemap", "oxc_span", "oxc_syntax", - "rustc-hash", + "rustc-hash 2.1.1", "ryu-js", ] [[package]] name = "oxc_data_structures" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caccf3f0c0515f32520b6207a0ef4bafd0858f94685e84a50f38c53464418e8b" +checksum = "cb7bba3e8f1e9b15d80b192f87b4e05aa6fbaa03e16fd62d6c087a2427caf8ab" dependencies = [ + "ropey", "rustversion", ] [[package]] name = "oxc_diagnostics" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79d4d0062c704ee11dbd56d6178f91ea17ccac05a59fe655b120a2b64d038739" +checksum = "893f091e2c224765d9b156b90c9ce09d724f60144549db05f685919585cf745e" dependencies = [ "cow-utils", "oxc-miette", @@ -1990,11 +2657,10 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e0e3cc7daeec1ed3ed75abc02a456d7046c5878c61bda972d26e39850f25298" +checksum = "31554a9681ebafe20e175b0a99fdee45ddf38285a5e9ca4bdefe223779963870" dependencies = [ - "cow-utils", "num-bigint", "num-traits", "oxc_ast", @@ -2004,38 +2670,64 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bb8e3cedd84c69241a0438d14ca09294ab95049b52dc7813bba017554c96fb" +checksum = "19c82ec9b051aab8fbbd68366ad90de958dd32365f9f445c89395ad42cf050fe" +dependencies = [ + "itoa", + "oxc_data_structures", + "ryu-js", +] [[package]] name = "oxc_index" version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fa07b0cfa997730afed43705766ef27792873fdf5215b1391949fec678d2392" +dependencies = [ + "rayon", + "serde", +] + +[[package]] +name = "oxc_isolated_declarations" +version = "0.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e65c8ab6a35eae3d5f438055e6240cb014be3d2833c4c5411f7b1110d899408a" +dependencies = [ + "bitflags 2.9.1", + "oxc_allocator", + "oxc_ast", + "oxc_ast_visit", + "oxc_diagnostics", + "oxc_ecmascript", + "oxc_span", + "oxc_syntax", + "rustc-hash 2.1.1", +] [[package]] name = "oxc_mangler" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3038ab2f2b76130ea02ff016da89fc6c2a4a3935da50a5f1a16ebd982873dc2f" +checksum = "e7e41bc4d7628015266d35f14e35db6e2a89d8d54235859acf56aa8146dbcef6" dependencies = [ "fixedbitset", - "itertools", + "itertools 0.14.0", "oxc_allocator", "oxc_ast", "oxc_data_structures", "oxc_index", "oxc_semantic", "oxc_span", - "rustc-hash", + "rustc-hash 2.1.1", ] [[package]] name = "oxc_minifier" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe473cd85aef3e71f7039c50f5fc85cc0e5a6a8fe98c49084aef4b993ffc7382" +checksum = "8b9e62020bc8ee278dfb29f396682a50adbe9981895bf10580133cddf50eea43" dependencies = [ "cow-utils", "oxc_allocator", @@ -2050,16 +2742,16 @@ dependencies = [ "oxc_span", "oxc_syntax", "oxc_traverse", - "rustc-hash", + "rustc-hash 2.1.1", ] [[package]] name = "oxc_parser" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3bb3f8ed289796dcd7fecc4cfec895fbe29c269cf63658b63f352ce8fd7caf7" +checksum = "120aa69d4df56d66fc5f0a525c5ff02369cee5f97289ea20b533b7f76530413b" dependencies = [ - "bitflags", + "bitflags 2.9.1", "cow-utils", "memchr", "num-bigint", @@ -2072,33 +2764,52 @@ dependencies = [ "oxc_regular_expression", "oxc_span", "oxc_syntax", - "rustc-hash", + "rustc-hash 2.1.1", "seq-macro", ] [[package]] name = "oxc_regular_expression" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e58c2970fa7dcb10a5c757706c5824c43f13abb908a4651b221033c96c1ddc" +checksum = "f22f6568dd7bb5e84eb45a22bda827d5735f09a95ca8e3e233be56516fdc3d9b" dependencies = [ - "bitflags", + "bitflags 2.9.1", "oxc_allocator", "oxc_ast_macros", "oxc_diagnostics", "oxc_span", "phf", - "rustc-hash", + "rustc-hash 2.1.1", "unicode-id-start", ] [[package]] -name = "oxc_semantic" -version = "0.72.3" +name = "oxc_resolver" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee61a7e935fa88d87b02c2279ffcf0704433006fa06a635e827fcdfc53b8f741" +checksum = "ce097520c87cb9aae8b43b39b333a6709342db75b88e76b5c6bcadf0cccf16ea" dependencies = [ - "itertools", + "cfg-if", + "indexmap 2.9.0", + "json-strip-comments", + "once_cell", + "papaya", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "simdutf8", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "oxc_semantic" +version = "0.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5345a0f4645e74bc85bfb3bdc6f0d85b0810fd49f9947c85bc4be16feb901a2" +dependencies = [ + "itertools 0.14.0", "oxc_allocator", "oxc_ast", "oxc_ast_visit", @@ -2110,7 +2821,7 @@ dependencies = [ "oxc_span", "oxc_syntax", "phf", - "rustc-hash", + "rustc-hash 2.1.1", "self_cell", ] @@ -2120,34 +2831,36 @@ version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24015d93ed1d8f0c2a0d9f534ca85690888990658a8fc4a87ff0c92640e73300" dependencies = [ - "base64-simd", + "base64-simd 0.8.0", "cfg-if", "cow-utils", - "rustc-hash", + "rayon", + "rustc-hash 2.1.1", "serde", "serde_json", ] [[package]] name = "oxc_span" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f290a8f173016c5b84327297bb3f2b9c158b0733703ac2f29d9e77f9b4821ddd" +checksum = "6a54f79470afa4c6cea26c69a0af0fe9ba61f4108b4254fe3170ae6fce04fa11" dependencies = [ "compact_str", "oxc-miette", "oxc_allocator", "oxc_ast_macros", "oxc_estree", + "serde", ] [[package]] name = "oxc_syntax" -version = "0.72.3" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d83f7a8a718db14fd6e8f864b70b0961e3b4ae44c9a28102262357c27aee944" +checksum = "b27a8e08726b8d2db468f69110a587c1b2e01fa82e0c58f3519dbcebaaee267f" dependencies = [ - "bitflags", + "bitflags 2.9.1", "cow-utils", "nonmax", "oxc_allocator", @@ -2157,16 +2870,70 @@ dependencies = [ "oxc_index", "oxc_span", "phf", - "rustc-hash", + "rustc-hash 2.1.1", "ryu-js", + "serde", "unicode-id-start", ] [[package]] -name = "oxc_traverse" -version = "0.72.3" +name = "oxc_transformer" +version = "0.73.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a82547d2081445a2661ee858140845624f7c83b285a59f0144bb1190fcd464e" +checksum = "e71275f58fd5cce88f19749c06e2b8faa6d742f886a88f985fdac65a7625b858" +dependencies = [ + "base64 0.22.1", + "compact_str", + "cow-utils", + "indexmap 2.9.0", + "itoa", + "memchr", + "oxc-browserslist", + "oxc_allocator", + "oxc_ast", + "oxc_ast_visit", + "oxc_data_structures", + "oxc_diagnostics", + "oxc_ecmascript", + "oxc_parser", + "oxc_regular_expression", + "oxc_semantic", + "oxc_span", + "oxc_syntax", + "oxc_traverse", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "sha1", +] + +[[package]] +name = "oxc_transformer_plugins" +version = "0.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07776f86bc1bd06ec25ec14ea2616b82ec237c57c8a7683b3d0eedacac80e0c3" +dependencies = [ + "cow-utils", + "itoa", + "oxc_allocator", + "oxc_ast", + "oxc_ast_visit", + "oxc_diagnostics", + "oxc_ecmascript", + "oxc_parser", + "oxc_semantic", + "oxc_span", + "oxc_syntax", + "oxc_transformer", + "oxc_traverse", + "rustc-hash 2.1.1", +] + +[[package]] +name = "oxc_traverse" +version = "0.73.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b85b10812142ec2df01b4bedd1a76e298883ffb1fa73a4e4a16013467e9f76" dependencies = [ "itoa", "oxc_allocator", @@ -2177,7 +2944,17 @@ dependencies = [ "oxc_semantic", "oxc_span", "oxc_syntax", - "rustc-hash", + "rustc-hash 2.1.1", +] + +[[package]] +name = "papaya" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6827e3fc394523c21d4464d02c0bb1c19966ea4a58a9844ad6d746214179d2bc" +dependencies = [ + "equivalent", + "seize", ] [[package]] @@ -2191,6 +2968,36 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "parcel_selectors" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54fd03f1ad26cb6b3ec1b7414fa78a3bd639e7dbb421b1a60513c96ce886a196" +dependencies = [ + "bitflags 2.9.1", + "cssparser", + "log", + "phf", + "phf_codegen", + "precomputed-hash", + "rustc-hash 2.1.1", + "smallvec", +] + +[[package]] +name = "parcel_sourcemap" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "485b74d7218068b2b7c0e3ff12fbc61ae11d57cb5d8224f525bd304c6be05bbb" +dependencies = [ + "base64-simd 0.7.0", + "data-url", + "rkyv", + "serde", + "serde_json", + "vlq", +] + [[package]] name = "parking_lot_core" version = "0.9.11" @@ -2204,6 +3011,25 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "parse-js" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2742b5e32dcb5930447ed9f9e401a7dfd883867fc079c4fac44ae8ba3593710e" +dependencies = [ + "aho-corasick 0.7.20", + "bumpalo", + "hashbrown 0.13.2", + "lazy_static", + "memchr", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "path-absolutize" version = "3.1.1" @@ -2222,6 +3048,12 @@ dependencies = [ "once_cell", ] +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "pbkdf2" version = "0.12.2" @@ -2260,6 +3092,16 @@ dependencies = [ "phf_shared", ] +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared", +] + [[package]] name = "phf_generator" version = "0.11.3" @@ -2280,7 +3122,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -2292,6 +3134,26 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pin-project" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.103", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -2340,6 +3202,12 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + [[package]] name = "proc-macro-error-attr2" version = "2.0.0" @@ -2359,7 +3227,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -2371,6 +3239,26 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "quick_cache" version = "0.6.14" @@ -2396,6 +3284,12 @@ version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.8.5" @@ -2454,11 +3348,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.12" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928fca9cf2aa042393a8325b9ead81d2f0df4cb12e1e24cef072922ccd99c5af" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags", + "bitflags 2.9.1", ] [[package]] @@ -2467,10 +3361,19 @@ version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ - "aho-corasick", + "aho-corasick 1.1.3", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -2479,17 +3382,42 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ - "aho-corasick", + "aho-corasick 1.1.3", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "regress" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ef7fa9ed0256d64a688a3747d0fef7a88851c18a5e1d57f115f38ec2e09366" +dependencies = [ + "hashbrown 0.15.4", + "memchr", +] + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + [[package]] name = "ring" version = "0.17.14" @@ -2504,6 +3432,35 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rlimit" version = "0.10.2" @@ -2513,12 +3470,326 @@ dependencies = [ "libc", ] +[[package]] +name = "rolldown" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "anyhow", + "append-only-vec", + "arcstr", + "commondir", + "css-module-lexer", + "dunce", + "futures", + "indexmap 2.9.0", + "itertools 0.14.0", + "itoa", + "memchr", + "notify", + "oxc", + "oxc_index", + "petgraph", + "rolldown_common", + "rolldown_debug", + "rolldown_ecmascript", + "rolldown_ecmascript_utils", + "rolldown_error", + "rolldown_fs", + "rolldown_loader_utils", + "rolldown_plugin", + "rolldown_plugin_data_uri", + "rolldown_resolver", + "rolldown_rstr", + "rolldown_sourcemap", + "rolldown_std_utils", + "rolldown_tracing", + "rolldown_utils", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "string_wizard", + "sugar_path", + "tokio", + "tracing", + "xxhash-rust", +] + +[[package]] +name = "rolldown-ariadne" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "324d1b9754f0cb535f4032a6a654d3a56047a500f557c16060f12f70b0089c57" +dependencies = [ + "unicode-width", + "yansi", +] + +[[package]] +name = "rolldown_common" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "anyhow", + "arcstr", + "bitflags 2.9.1", + "dashmap 6.1.0", + "derive_more", + "fast-glob", + "itertools 0.14.0", + "oxc", + "oxc_index", + "oxc_resolver", + "rolldown_ecmascript", + "rolldown_error", + "rolldown_fs", + "rolldown_rstr", + "rolldown_sourcemap", + "rolldown_std_utils", + "rolldown_utils", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "string_wizard", + "sugar_path", + "tokio", +] + +[[package]] +name = "rolldown_debug" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "dashmap 6.1.0", + "rolldown_debug_action", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "rolldown_debug_action" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "serde", + "ts-rs", +] + +[[package]] +name = "rolldown_ecmascript" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "arcstr", + "oxc", + "oxc_sourcemap", + "rolldown_error", + "self_cell", +] + +[[package]] +name = "rolldown_ecmascript_utils" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "oxc", + "rolldown_common", + "smallvec", +] + +[[package]] +name = "rolldown_error" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "anyhow", + "arcstr", + "bitflags 2.9.1", + "derive_more", + "heck", + "oxc", + "oxc_resolver", + "rolldown-ariadne", + "rolldown_utils", + "ropey", + "rustc-hash 2.1.1", + "sugar_path", +] + +[[package]] +name = "rolldown_fs" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "oxc_resolver", + "vfs", +] + +[[package]] +name = "rolldown_loader_utils" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "anyhow", + "rolldown_common", + "serde_json", +] + +[[package]] +name = "rolldown_plugin" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "anyhow", + "arcstr", + "async-trait", + "bitflags 2.9.1", + "dashmap 6.1.0", + "derive_more", + "oxc_index", + "rolldown_common", + "rolldown_debug", + "rolldown_ecmascript", + "rolldown_error", + "rolldown_resolver", + "rolldown_sourcemap", + "rolldown_utils", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "string_wizard", + "sugar_path", + "tokio", + "tracing", + "typedmap", +] + +[[package]] +name = "rolldown_plugin_data_uri" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "arcstr", + "base64-simd 0.8.0", + "rolldown_common", + "rolldown_plugin", + "rolldown_utils", + "urlencoding", +] + +[[package]] +name = "rolldown_resolver" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "arcstr", + "dashmap 6.1.0", + "itertools 0.14.0", + "oxc_resolver", + "rolldown_common", + "rolldown_fs", + "rolldown_utils", + "sugar_path", +] + +[[package]] +name = "rolldown_rstr" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "oxc", +] + +[[package]] +name = "rolldown_sourcemap" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "memchr", + "oxc", + "oxc_sourcemap", + "rolldown_utils", + "rustc-hash 2.1.1", +] + +[[package]] +name = "rolldown_std_utils" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "regex", +] + +[[package]] +name = "rolldown_tracing" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "tracing", + "tracing-chrome", + "tracing-subscriber", +] + +[[package]] +name = "rolldown_utils" +version = "0.1.0" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "anyhow", + "arcstr", + "async-scoped", + "base-encode", + "base64-simd 0.8.0", + "cow-utils", + "dashmap 6.1.0", + "fast-glob", + "form_urlencoded", + "futures", + "indexmap 2.9.0", + "infer", + "itoa", + "memchr", + "mime", + "nom", + "oxc", + "oxc_index", + "phf", + "rayon", + "regex", + "regress", + "rolldown_std_utils", + "rustc-hash 2.1.1", + "serde_json", + "simdutf8", + "sugar_path", + "xxhash-rust", +] + +[[package]] +name = "ropey" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93411e420bcd1a75ddd1dc3caf18c23155eda2c090631a85af21ba19e97093b5" +dependencies = [ + "smallvec", + "str_indices", +] + [[package]] name = "rustc-demangle" version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + [[package]] name = "rustc-hash" version = "2.1.1" @@ -2531,7 +3802,7 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" dependencies = [ - "bitflags", + "bitflags 2.9.1", "errno", "libc", "linux-raw-sys", @@ -2578,6 +3849,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd29631678d6fb0903b69223673e122c32e9ae559d0960a38d574695ebc0ea15" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2594,6 +3874,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "secp256k1" version = "0.29.1" @@ -2615,6 +3901,16 @@ dependencies = [ "cc", ] +[[package]] +name = "seize" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4b8d813387d566f627f3ea1b914c068aac94c40ae27ec43f5f33bde65abefe7" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "self_cell" version = "1.2.0" @@ -2653,7 +3949,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -2662,6 +3958,7 @@ version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ + "indexmap 2.9.0", "itoa", "memchr", "ryu", @@ -2726,7 +4023,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -2755,18 +4052,42 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "simd-abstraction" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" +dependencies = [ + "outref 0.1.0", +] + [[package]] name = "simd-adler32" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "siphasher" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + [[package]] name = "smallvec" version = "1.15.1" @@ -2801,6 +4122,23 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ae9eec00137a8eed469fb4148acd9fc6ac8c3f9b110f52cd34698c8b5bfa0e" +[[package]] +name = "str_indices" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d08889ec5408683408db66ad89e0e1f93dff55c73a4ccc71c427d5b277ee47e6" + +[[package]] +name = "string_wizard" +version = "0.0.26" +source = "git+https://github.com/rolldown/rolldown?branch=main#efbeae5f2f265cf7dcc224cad13d31e7fe61755f" +dependencies = [ + "oxc_index", + "oxc_sourcemap", + "rustc-hash 2.1.1", + "serde", +] + [[package]] name = "strsim" version = "0.11.1" @@ -2813,6 +4151,12 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "sugar_path" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8230d5b8a65a6d4d4a7e5ee8dbdd9312ba447a8b8329689a390a0945d69b57ce" + [[package]] name = "syn" version = "1.0.109" @@ -2826,9 +4170,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.102" +version = "2.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6397daf94fa90f058bd0fd88429dd9e5738999cca8d701813c80723add80462" +checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" dependencies = [ "proc-macro2", "quote", @@ -2862,9 +4206,15 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tempfile" version = "3.20.0" @@ -2878,6 +4228,15 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + [[package]] name = "testing_table" version = "0.3.0" @@ -2898,13 +4257,33 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + [[package]] name = "thiserror" version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" dependencies = [ - "thiserror-impl", + "thiserror-impl 2.0.12", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.103", ] [[package]] @@ -2915,17 +4294,16 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -2959,6 +4337,21 @@ dependencies = [ "time-core", ] +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.45.1" @@ -2982,7 +4375,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -3062,7 +4455,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ "async-compression", - "bitflags", + "bitflags 2.9.1", "bytes", "futures-core", "http", @@ -3107,7 +4500,18 @@ checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", +] + +[[package]] +name = "tracing-chrome" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0a738ed5d6450a9fb96e86a23ad808de2b727fd1394585da5cdd6788ffe724" +dependencies = [ + "serde_json", + "tracing-core", + "tracing-subscriber", ] [[package]] @@ -3130,15 +4534,81 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" +dependencies = [ + "serde", + "tracing-core", + "valuable", + "valuable-serde", +] + [[package]] name = "tracing-subscriber" version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "serde", + "serde_json", "sharded-slab", + "smallvec", "thread_local", + "tracing", "tracing-core", + "tracing-log", + "tracing-serde", + "valuable", + "valuable-serde", +] + +[[package]] +name = "ts-rs" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ef1b7a6d914a34127ed8e1fa927eb7088903787bcded4fa3eef8f85ee1568be" +dependencies = [ + "thiserror 2.0.12", + "ts-rs-macros", +] + +[[package]] +name = "ts-rs-macros" +version = "11.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9d4ed7b4c18cc150a6a0a1e9ea1ecfa688791220781af6e119f9599a8502a0a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.103", + "termcolor", +] + +[[package]] +name = "typedmap" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63278e72ed4f207eb3216c944cbafb35bdb656d2eab97ef73c0c165a1cd3e319" +dependencies = [ + "dashmap 6.1.0", ] [[package]] @@ -3165,12 +4635,24 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" +[[package]] +name = "unicode-segmentation" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" + [[package]] name = "unicode-width" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + [[package]] name = "untrusted" version = "0.9.0" @@ -3183,18 +4665,44 @@ version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d49784317cd0d1ee7ec5c716dd598ec5b4483ea832a2dced265471cc0f690ae" +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "valuable" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "valuable-serde" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee0548edecd1b907be7e67789923b7d02275b9ba4a33ebc33300e2c947a8cb1" +dependencies = [ + "serde", + "valuable", +] + [[package]] name = "value-log" version = "1.9.0" @@ -3206,7 +4714,7 @@ dependencies = [ "interval-heap", "log", "path-absolutize", - "rustc-hash", + "rustc-hash 2.1.1", "tempfile", "varint-rs", "xxhash-rust", @@ -3224,18 +4732,43 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" +[[package]] +name = "vfs" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ec343ec20aa715908fd028a4b8e7c99a349d13143224222e4d61c316d1e7f0a" +dependencies = [ + "filetime", +] + [[package]] name = "virtue" version = "0.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "051eb1abcf10076295e815102942cc58f9d5e3b4560e46e53c21e8ff6f3af7b1" +[[package]] +name = "vlq" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65dd7eed29412da847b0f78bcec0ac98588165988a8cfe41d4ea1d429f8ccfff" + [[package]] name = "vsimd" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c3082ca00d5a5ef149bb8b555a72ae84c9c59f7250f013ac822ac2e49b19c64" +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -3273,7 +4806,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", "wasm-bindgen-shared", ] @@ -3295,7 +4828,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3315,6 +4848,37 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + [[package]] name = "windows-core" version = "0.61.2" @@ -3336,7 +4900,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -3347,14 +4911,14 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] name = "windows-link" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3bfe459f85da17560875b8bf1423d6f113b7a87a5d942e7da0ac71be7c61f8b" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] name = "windows-result" @@ -3471,7 +5035,16 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags", + "bitflags 2.9.1", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", ] [[package]] @@ -3480,6 +5053,12 @@ version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "zerocopy" version = "0.8.25" @@ -3497,7 +5076,7 @@ checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] @@ -3517,7 +5096,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.102", + "syn 2.0.103", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index ca64be6b2..d0c70827c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,6 +22,7 @@ axum = "0.8.4" bincode = { version = "2.0.1", features = ["serde"] } bitcoin = { version = "0.32.6", features = ["serde"] } bitcoincore-rpc = "0.19.0" +brk_bundler = { version = "0.0.56", path = "crates/brk_bundler" } brk_cli = { version = "0.0.56", path = "crates/brk_cli" } brk_computer = { version = "0.0.56", path = "crates/brk_computer" } brk_core = { version = "0.0.56", path = "crates/brk_core" } diff --git a/README.md b/README.md index db8b23023..56687cbcf 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ In contrast, existing alternatives tend to be either [very costly](https://studi - [`brk_state`](https://crates.io/crates/brk_state): Various states used mainly by the computer - [`brk_store`](https://crates.io/crates/brk_store): A thin wrapper around [`fjall`](https://crates.io/crates/fjall) - [`brk_vec`](https://crates.io/crates/brk_vec): A push-only, truncable, compressable, saveable Vec +- [`brk_bundler`](https://crates.io/crates/brk_bundler): A crate that bundles the selected website for the server ## Hosting as a service diff --git a/crates/brk/Cargo.toml b/crates/brk/Cargo.toml index 14fd67838..5df0c0f99 100644 --- a/crates/brk/Cargo.toml +++ b/crates/brk/Cargo.toml @@ -10,6 +10,7 @@ version.workspace = true [features] full = [ + "bundler", "core", "computer", "exit", @@ -23,6 +24,7 @@ full = [ "store", "vec", ] +bundler = ["brk_bundler"] core = ["brk_core"] computer = ["brk_computer"] exit = ["brk_exit"] @@ -37,6 +39,7 @@ store = ["brk_store"] vec = ["brk_vec"] [dependencies] +brk_bundler = { workspace = true, optional = true } brk_cli = { workspace = true } brk_core = { workspace = true, optional = true } brk_computer = { workspace = true, optional = true } diff --git a/crates/brk/examples/main.rs b/crates/brk/examples/main.rs new file mode 100644 index 000000000..f328e4d9d --- /dev/null +++ b/crates/brk/examples/main.rs @@ -0,0 +1 @@ +fn main() {} diff --git a/crates/brk/src/lib.rs b/crates/brk/src/lib.rs index 3660413ff..c3659c520 100644 --- a/crates/brk/src/lib.rs +++ b/crates/brk/src/lib.rs @@ -1,5 +1,12 @@ #![doc = include_str!(concat!("../", env!("CARGO_PKG_README")))] +#[cfg(feature = "bundler")] +#[doc(inline)] +pub use brk_bundle as bundle; + +#[doc(inline)] +pub use brk_cli as cli; + #[cfg(feature = "core")] #[doc(inline)] pub use brk_core as core; diff --git a/crates/brk_bundler/Cargo.toml b/crates/brk_bundler/Cargo.toml new file mode 100644 index 000000000..073a8d60d --- /dev/null +++ b/crates/brk_bundler/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "brk_bundler" +description = "A crate that bundles the selected website for the server" +version.workspace = true +edition.workspace = true +license.workspace = true +homepage.workspace = true +repository.workspace = true + +[dependencies] +log = { workspace = true } +minify-html-onepass = "0.16.4" +notify = "8.0.0" +rolldown = { git = "https://github.com/rolldown/rolldown", branch = "main" } +sugar_path = { version = "1.2.0", features = ["cached_current_dir"] } +tokio = { workspace = true } diff --git a/crates/brk_bundler/src/lib.rs b/crates/brk_bundler/src/lib.rs new file mode 100644 index 000000000..02dbc9bb4 --- /dev/null +++ b/crates/brk_bundler/src/lib.rs @@ -0,0 +1,136 @@ +use std::{fs, io, path::Path, sync::Arc}; + +use log::error; +use minify_html_onepass::Cfg; +use notify::{EventKind, RecursiveMode, Watcher}; +use rolldown::{Bundler, BundlerOptions, RawMinifyOptions, SourceMapType}; +use sugar_path::SugarPath; +use tokio::sync::Mutex; + +const VERSION: &str = env!("CARGO_PKG_VERSION"); + +pub async fn bundle(websites_path: &Path, source_folder: &str, watch: bool) -> io::Result<()> { + let source_path = websites_path.join(source_folder); + let dist_path = websites_path.join("dist"); + + let _ = fs::remove_dir_all(&dist_path); + copy_dir_all(&source_path, &dist_path)?; + + let source_scripts = format!("./{source_folder}/scripts"); + let source_entry = format!("{source_scripts}/entry.js"); + + let absolute_websites_path = websites_path.absolutize(); + + let mut bundler = Bundler::new(BundlerOptions { + input: Some(vec![source_entry.into()]), + dir: Some("./dist/scripts".to_string()), + cwd: Some(absolute_websites_path), + minify: Some(RawMinifyOptions::Bool(true)), + sourcemap: Some(SourceMapType::File), + ..Default::default() + }); + + bundler.write().await.unwrap(); + + let absolute_source_path = source_path.absolutize(); + let absolute_source_path_clone = absolute_source_path.clone(); + let absolute_dist_path = dist_path.absolutize(); + let absolute_dist_path_clone = absolute_dist_path.clone(); + let absolute_source_scripts_path = websites_path.join(source_scripts).absolutize(); + let absolute_source_index_path = source_path.join("index.html").absolutize(); + let absolute_source_index_path_clone = absolute_source_index_path.clone(); + let absolute_dist_index_path = dist_path.join("index.html").absolutize(); + let absolute_source_sw_path = source_path.join("service-worker.js").absolutize(); + let absolute_source_sw_path_clone = absolute_source_sw_path.clone(); + let absolute_dist_sw_path = dist_path.join("service-worker.js").absolutize(); + + let write_index = move || { + let mut contents = fs::read_to_string(&absolute_source_index_path).unwrap(); + + if let Ok(entry) = fs::read_to_string(absolute_dist_path_clone.join("scripts/entry.js")) { + let start = entry.find("main").unwrap(); + let end = entry.find(".js").unwrap(); + let main_hashed = &entry[start..end]; + contents = contents.replace("/scripts/main.js", &format!("/scripts/{main_hashed}.js")); + } + + if let Ok(contents) = minify_html_onepass::in_place_str( + contents.as_mut_str(), + &Cfg { + minify_js: false, + minify_css: false, + }, + ) { + let _ = fs::write(&absolute_dist_index_path, contents); + } + }; + + let write_sw = move || { + let contents = fs::read_to_string(&absolute_source_sw_path) + .unwrap() + .replace("__VERSION__", &format!("v{VERSION}")); + let _ = fs::write(&absolute_dist_sw_path, contents); + }; + + write_index(); + write_sw(); + + if !watch { + return Ok(()); + } + + tokio::spawn(async move { + let mut watcher = notify::recommended_watcher( + move |res: Result| match res { + Ok(event) => match event.kind { + EventKind::Create(_) => event.paths, + EventKind::Modify(_) => event.paths, + _ => vec![], + } + .into_iter() + .filter(|path| path.starts_with(&absolute_source_path)) + .filter(|path| !path.starts_with(&absolute_source_scripts_path)) + .for_each(|source_path| { + let suffix = source_path.strip_prefix(&absolute_source_path).unwrap(); + let dist_path = absolute_dist_path.join(suffix); + + if source_path == absolute_source_index_path_clone { + write_index(); + } else if source_path == absolute_source_sw_path_clone { + write_sw(); + } else { + let _ = fs::copy(&source_path, &dist_path); + } + }), + Err(e) => error!("watch error: {:?}", e), + }, + ) + .unwrap(); + + if watch { + watcher + .watch(&absolute_source_path_clone, RecursiveMode::Recursive) + .unwrap(); + + let watcher = + rolldown::Watcher::new(vec![Arc::new(Mutex::new(bundler))], None).unwrap(); + watcher.start().await; + } + }); + + Ok(()) +} + +fn copy_dir_all(src: impl AsRef, dst: impl AsRef) -> io::Result<()> { + fs::create_dir_all(&dst)?; + for entry in fs::read_dir(src)? { + let entry = entry?; + let ty = entry.file_type()?; + if ty.is_dir() { + copy_dir_all(entry.path(), dst.as_ref().join(entry.file_name()))?; + } else { + fs::copy(entry.path(), dst.as_ref().join(entry.file_name()))?; + } + } + Ok(()) +} diff --git a/crates/brk_cli/src/run.rs b/crates/brk_cli/src/run.rs index 29d50cf5f..be68a939f 100644 --- a/crates/brk_cli/src/run.rs +++ b/crates/brk_cli/src/run.rs @@ -63,8 +63,9 @@ pub fn run(config: RunConfig) -> color_eyre::Result<()> { let server = Server::new(served_indexer, served_computer, config.website())?; + let watch = config.watch(); let opt = Some(tokio::spawn(async move { - server.serve().await.unwrap(); + server.serve(watch).await.unwrap(); })); sleep(Duration::from_secs(1)); @@ -178,6 +179,11 @@ pub struct RunConfig { #[arg(long, value_name = "SECONDS")] delay: Option, + /// DEV: Activate to watch the selected website's folder for changes, default: false, saved + #[serde(default, deserialize_with = "default_on_error")] + #[arg(long, value_name = "BOOL")] + watch: Option, + /// DEV: Activate checking address hashes for collisions when indexing, default: false, saved #[serde(default, deserialize_with = "default_on_error")] #[arg(long, value_name = "BOOL")] @@ -255,6 +261,10 @@ impl RunConfig { config_saved.check_collisions = Some(check_collisions); } + if let Some(watch) = config_args.watch.take() { + config_saved.watch = Some(watch); + } + if config_args != RunConfig::default() { dbg!(config_args); panic!("Didn't consume the full config") @@ -267,19 +277,6 @@ impl RunConfig { config.write(&path)?; - // info!("Configuration {{"); - // info!(" bitcoindir: {:?}", config.bitcoindir); - // info!(" brkdir: {:?}", config.brkdir); - // info!(" services: {:?}", config.services); - // info!(" website: {:?}", config.website); - // info!(" rpcconnect: {:?}", config.rpcconnect); - // info!(" rpcport: {:?}", config.rpcport); - // info!(" rpccookiefile: {:?}", config.rpccookiefile); - // info!(" rpcuser: {:?}", config.rpcuser); - // info!(" rpcpassword: {:?}", config.rpcpassword); - // info!(" delay: {:?}", config.delay); - // info!("}}"); - Ok(config) } @@ -448,6 +445,10 @@ impl RunConfig { pub fn check_collisions(&self) -> bool { self.check_collisions.is_some_and(|b| b) } + + pub fn watch(&self) -> bool { + self.watch.is_some_and(|b| b) + } } #[derive( diff --git a/crates/brk_logger/src/lib.rs b/crates/brk_logger/src/lib.rs index cbcb0d7ac..2e30eadf2 100644 --- a/crates/brk_logger/src/lib.rs +++ b/crates/brk_logger/src/lib.rs @@ -25,7 +25,7 @@ pub fn init(path: Option<&Path>) { .unwrap() }); - Builder::from_env(Env::default().default_filter_or("info,fjall=off,lsm_tree=off")) + Builder::from_env(Env::default().default_filter_or("info,fjall=off,lsm_tree=off,rolldown=off")) .format(move |buf, record| { let date_time = Timestamp::now() .to_zoned(tz::TimeZone::system()) @@ -80,5 +80,9 @@ fn write( args: impl Display, ) -> Result<(), std::io::Error> { writeln!(buf, "{} {} {} {}", date_time, dash, level, args) - // writeln!(buf, "{} {} {} {} {}", date_time, _target, level, dash, args) + // writeln!( + // buf, + // "{} {} {} {} {}", + // date_time, _target, level, dash, args + // ) } diff --git a/crates/brk_server/Cargo.toml b/crates/brk_server/Cargo.toml index d29e2d080..1b71d053d 100644 --- a/crates/brk_server/Cargo.toml +++ b/crates/brk_server/Cargo.toml @@ -10,6 +10,7 @@ repository.workspace = true [dependencies] axum = { workspace = true } bitcoincore-rpc = { workspace = true } +brk_bundler = { workspace = true } brk_computer = { workspace = true } brk_exit = { workspace = true } brk_core = { workspace = true } @@ -25,7 +26,7 @@ color-eyre = { workspace = true } jiff = { workspace = true } log = { workspace = true } minreq = { workspace = true } -oxc = { version = "0.72.3", features = ["codegen", "minifier"] } +oxc = { version = "0.73.0", features = ["codegen", "minifier"] } serde = { workspace = true } tokio = { workspace = true } tower-http = { version = "0.6.6", features = ["compression-full", "trace"] } diff --git a/crates/brk_server/examples/main.rs b/crates/brk_server/examples/main.rs index bc917c751..701d4585f 100644 --- a/crates/brk_server/examples/main.rs +++ b/crates/brk_server/examples/main.rs @@ -51,7 +51,7 @@ pub fn main() -> color_eyre::Result<()> { let server = Server::new(served_indexer, served_computer, Website::Default)?; let server = tokio::spawn(async move { - server.serve().await.unwrap(); + server.serve(true).await.unwrap(); }); if process { diff --git a/crates/brk_server/src/files/file.rs b/crates/brk_server/src/files/file.rs index 768d09ace..94461a9b5 100644 --- a/crates/brk_server/src/files/file.rs +++ b/crates/brk_server/src/files/file.rs @@ -32,16 +32,12 @@ fn any_handler( app_state: AppState, path: Option>, ) -> Response { - let website_path = app_state - .websites_path - .as_ref() - .expect("Should never reach here is websites_path is None") - .join(app_state.website.to_folder_name()); + let dist_path = app_state.dist_path(); if let Some(path) = path.as_ref() { let path = path.0.replace("..", "").replace("\\", ""); - let mut path = website_path.join(&path); + let mut path = dist_path.join(&path); if !path.exists() || path.is_dir() { if path.extension().is_some() { @@ -55,13 +51,13 @@ fn any_handler( return response; } else { - path = website_path.join("index.html"); + path = dist_path.join("index.html"); } } path_to_response(&headers, &path) } else { - path_to_response(&headers, &website_path.join("index.html")) + path_to_response(&headers, &dist_path.join("index.html")) } } diff --git a/crates/brk_server/src/lib.rs b/crates/brk_server/src/lib.rs index ffddfe728..b93453bc4 100644 --- a/crates/brk_server/src/lib.rs +++ b/crates/brk_server/src/lib.rs @@ -19,6 +19,7 @@ use axum::{ routing::get, serve, }; +use brk_bundler::bundle; use brk_computer::Computer; use brk_core::dot_brk_path; use brk_indexer::Indexer; @@ -45,6 +46,15 @@ pub struct AppState { websites_path: Option, } +impl AppState { + pub fn dist_path(&self) -> PathBuf { + self.websites_path + .as_ref() + .expect("Should never reach here is websites_path is None") + .join("dist") + } +} + pub const VERSION: &str = env!("CARGO_PKG_VERSION"); const DEV_PATH: &str = "../.."; @@ -103,9 +113,13 @@ impl Server { })) } - pub async fn serve(self) -> color_eyre::Result<()> { + pub async fn serve(self, watch: bool) -> color_eyre::Result<()> { let state = self.0; + if let Some(websites_path) = state.websites_path.clone() { + bundle(&websites_path, state.website.to_folder_name(), watch).await?; + } + let compression_layer = CompressionLayer::new() .br(true) .deflate(true) diff --git a/crates/brk_server/src/traits/header_map.rs b/crates/brk_server/src/traits/header_map.rs index ec433b802..00fe45c4a 100644 --- a/crates/brk_server/src/traits/header_map.rs +++ b/crates/brk_server/src/traits/header_map.rs @@ -167,7 +167,7 @@ impl HeaderMapExtended for HeaderMap { fn insert_content_type(&mut self, path: &Path) { match path.extension().unwrap().to_str().unwrap() { "js" => self.insert_content_type_application_javascript(), - "json" => self.insert_content_type_application_json(), + "json" | "map" => self.insert_content_type_application_json(), "html" => self.insert_content_type_text_html(), "css" => self.insert_content_type_text_css(), "toml" | "txt" => self.insert_content_type_text_plain(), diff --git a/websites/default/assets/fonts/geist_mono_var_1_4_01.woff2 b/websites/default/assets/fonts/geist_mono_var_1_4_01.woff2 deleted file mode 100644 index a36fa26bf81281a02fffb541fb885e1414b9df57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62100 zcmV(|K+(TUo6#xJL0wLf40P+?90RR9100000000000000000000 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%0Dq}<0ksyoR^*Bd>4KL2p5xn-yqM&7du` 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 literal 0 HcmV?d00001 diff --git a/websites/default/assets/fonts/geist_mono_var_v1_5_0.woff2 b/websites/default/assets/fonts/geist_mono_var_v1_5_0.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b96b7d48641edd6327b0a02a3400b846a469f6ec GIT binary patch literal 66316 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 z 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 + @@ -12,7 +12,7 @@ /> - + @@ -281,7 +281,7 @@ @font-face { font-family: "Geist mono"; - src: url("./assets/fonts/geist_mono_var_1_4_01.woff2") format("woff2"); + src: url("./assets/fonts/geist_mono_var_v1_5_0.woff2") format("woff2"); font-weight: 100 900; font-display: block; font-style: normal; @@ -1103,6 +1103,268 @@ } } } + + #charts { + display: flex; + flex-direction: column; + height: 100%; + width: 100%; + min-height: 0; + padding: var(--main-padding); + + header { + flex-shrink: 0; + display: flex; + + white-space: nowrap; + overflow-x: auto; + padding-bottom: 1rem; + margin-bottom: -2rem; + padding-left: var(--main-padding); + margin-left: var(--negative-main-padding); + padding-right: var(--main-padding); + margin-right: var(--negative-main-padding); + + & > * { + flex: 1; + } + } + + .chart { + flex: 1; + } + + > .chart > legend, + > fieldset { + z-index: 20; + } + + .lightweight-chart { + z-index: 40; + } + } + + #table { + width: 100%; + display: flex; + flex-direction: column; + gap: 2rem; + padding: var(--main-padding); + + > div { + display: flex; + font-size: var(--font-size-xs); + line--line-height: var(--line-height-xs); + font-weight: 450; + margin-left: var(--negative-main-padding); + margin-right: var(--negative-main-padding); + + table { + z-index: 10; + border-top-width: 1px; + border-style: dashed !important; + /* width: 100%; */ + line-height: var(--line-height-sm); + text-transform: uppercase; + table-layout: auto; + border-collapse: separate; + border-spacing: 0; + /* border: 3px solid purple; */ + /* min-height: 100%; */ + } + + th { + font-weight: 600; + } + + th, + td { + /* border-top: 1px; */ + border-right: 1px; + border-bottom: 1px; + border-color: var(--off-color); + border-style: dashed !important; + padding: 0.25rem 0.75rem; + } + + td { + text-transform: lowercase; + } + + a { + margin: -0.2rem 0; + font-size: 1.2rem; + } + + th:first-child { + padding-left: var(--main-padding); + } + + th[scope="col"] { + position: sticky; + top: 0; + background-color: var(--background-color); + + > div { + display: flex; + flex-direction: column; + padding-top: 0.275rem; + + > div { + display: flex; + gap: 0.25rem; + text-transform: lowercase; + color: var(--off-color); + text-align: left; + + &:first-child { + gap: 0.5rem; + } + + &:last-child { + gap: 1rem; + } + + > span { + width: 100%; + } + + > button { + padding: 0 0.25rem; + margin: 0 -0.25rem; + font-size: 0.75rem; + line-height: 0; + } + } + } + + &:first-child { + button { + display: none; + } + } + + &:nth-child(2) { + button:nth-of-type(1) { + display: none; + } + } + + &:last-child { + button:nth-of-type(2) { + display: none; + } + } + } + + select { + margin-right: -4px; + /* width: 100%; */ + } + + tbody { + text-align: right; + } + + > button { + padding: 1rem; + min-width: 10rem; + display: flex; + flex-direction: column; + flex: 1; + position: relative; + border-top-width: 1px; + width: 100%; + border-bottom-width: 1px; + border-style: dashed !important; + + > span { + text-align: left; + position: sticky; + top: 2rem; + left: 0; + right: 0; + } + } + } + } + + #simulation { + min-height: 0; + width: 100%; + + > div { + display: flex; + flex-direction: column; + gap: 2rem; + padding: var(--main-padding); + } + + @media (max-width: 767px) { + overflow-y: auto; + + > div:first-child { + border-bottom: 1px; + } + } + + @media (min-width: 768px) { + display: flex; + flex-direction: column; + height: 100%; + flex-direction: row; + + > div { + flex: 1; + overflow-y: auto; + padding-bottom: var(--bottom-area); + } + + > div:first-child { + max-width: var(--default-main-width); + border-right: 1px; + } + } + + header { + margin-bottom: 0.5rem; + } + + > div:last-child { + display: flex; + flex-direction: column; + gap: 1.5rem; + overflow-x: hidden; + + p { + text-wrap: pretty; + } + } + + label { + > span { + display: block; + } + small { + font-size: var(--font-size-sm); + line-height: var(--line-height-sm); + display: block; + } + } + + .chart { + flex: none; + height: 400px; + + .lightweight-chart { + margin-left: calc(var(--negative-main-padding) * 0.75); + + fieldset { + margin-left: -0.5rem; + } + } + } + } @@ -1113,7 +1375,7 @@ // @ts-check const preferredColorSchemeMatchMedia = window.matchMedia( - "(prefers-color-scheme: dark)" + "(prefers-color-scheme: dark)", ); const themeColor = window.document.createElement("meta"); @@ -1123,7 +1385,7 @@ /** @param {boolean} dark */ function updateThemeColor(dark) { const theme = getComputedStyle( - window.document.documentElement + window.document.documentElement, ).getPropertyValue(dark ? "--black" : "--white"); themeColor.content = theme; } @@ -1133,7 +1395,7 @@ "change", ({ matches }) => { updateThemeColor(matches); - } + }, ); if ("standalone" in window.navigator && !!window.navigator.standalone) { diff --git a/websites/default/misc/tailwindTo550.js b/websites/default/misc/tailwindTo550.js deleted file mode 100644 index e884a0bd1..000000000 --- a/websites/default/misc/tailwindTo550.js +++ /dev/null @@ -1,46 +0,0 @@ -(async () => { - const theme = await ( - await fetch( - "https://github.com/tailwindlabs/tailwindcss/blob/main/packages/tailwindcss/theme.css", - ) - ).text(); - - console.log( - [ - "red", - "orange", - "amber", - "yellow", - "lime", - "green", - "emerald", - "teal", - "cyan", - "sky", - "blue", - "indigo", - "violet", - "purple", - "fuchsia", - "pink", - "rose", - ] - .map((color) => { - const [a, b] = [500, 600].map((shade) => { - const regExp = new RegExp( - `(?<=${`${color}-${shade}: oklch\(`})(.*?)(?=\\s*${`\);`})`, - "g", - ); - let res = regExp.exec(theme)?.[2]; - if (!res) throw "err"; - res = res.replace("(", ""); - res = res.replace(")", ""); - // return res - return res.split(" ").map((s) => Number(s)); - }); - const mult = 10_000; - return `--${color}: oklch(${[0, 1, 2].map((i) => Math.round(((a[i] + b[i]) / 2) * mult) / mult).join(" ")})`; - }) - .join(";\n"), - ); -})(); diff --git a/websites/default/packages/lightweight-charts/v5.0.7-treeshaked/script.js b/websites/default/packages/lightweight-charts/v5.0.7-treeshaked/script.js deleted file mode 100644 index bf8d1ba41..000000000 --- a/websites/default/packages/lightweight-charts/v5.0.7-treeshaked/script.js +++ /dev/null @@ -1,8 +0,0 @@ -// @ts-nocheck -/*! - * @license - * TradingView Lightweight Charts™ v5.0.7-dev+202506071500 - * Copyright (c) 2025 TradingView, Inc. - * Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0 - */ -const t={title:"",visible:!0,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:"",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:"#B2B5BE",baseLineStyle:0,priceFormat:{type:"price",precision:2,minMove:.01}};var i,s;function n(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function e(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(s,i+e),t.lineTo(n,i+e),t.stroke()}function r(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function h(t){if(void 0===t)throw new Error("Value is undefined");return t}function l(t){if(null===t)throw new Error("Value is null");return t}function a(t){return l(h(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(i||(i={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(s||(s={}));class o{constructor(){this.t=[]}i(t,i,s){const n={h:t,l:i,o:!0===s};this.t.push(n)}_(t){const i=this.t.findIndex((i=>t===i.h));i>-1&&this.t.splice(i,1)}u(t){this.t=this.t.filter((i=>i.l!==t))}p(t,i,s){const n=[...this.t];this.t=this.t.filter((t=>!t.o)),n.forEach((n=>n.h(t,i,s)))}v(){return this.t.length>0}m(){this.t=[]}}function _(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&Object.prototype.hasOwnProperty.call(s,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:_(t[i],s[i]));return t}function u(t){return"number"==typeof t&&isFinite(t)}function c(t){return"number"==typeof t&&t%1==0}function d(t){return"string"==typeof t}function f(t){return"boolean"==typeof t}function p(t){const i=t;if(!i||"object"!=typeof i)return i;let s,n,e;for(n in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(n)&&(e=i[n],s[n]=e&&"object"==typeof e?p(e):e);return s}function v(t){return null!==t}function m(t){return null===t?void 0:t}const w="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function g(t,i,s){return void 0===i&&(i=w),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class b{constructor(t){this.M={S:1,C:5,P:NaN,k:"",T:"",R:"",D:"",V:0,I:0,A:0,B:0,L:0},this.O=t}N(){const t=this.M,i=this.F(),s=this.W();return t.P===i&&t.T===s||(t.P=i,t.T=s,t.k=g(i,s),t.B=2.5/12*i,t.V=t.B,t.I=i/12*t.C,t.A=i/12*t.C,t.L=0),t.R=this.H(),t.D=this.$(),this.M}H(){return this.O.N().layout.textColor}$(){return this.O.U()}F(){return this.O.N().layout.fontSize}W(){return this.O.N().layout.fontFamily}}function M(t){return t<0?0:t>255?255:Math.round(t)||0}function S(t){return.199*t[0]+.687*t[1]+.114*t[2]}class x{constructor(t,i){this.j=new Map,this.Y=t,i&&(this.j=i)}X(t,i){if("transparent"===t)return t;const s=this.Z(t),n=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*n})`}q(t){const i=this.Z(t);return{G:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,K:S(i)>160?"black":"white"}}J(t){return S(this.Z(t))}tt(t,i,s){const[n,e,r,h]=this.Z(t),[l,a,o,_]=this.Z(i),u=[M(n+s*(l-n)),M(e+s*(a-e)),M(r+s*(o-r)),(c=h+s*(_-h),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}Z(t){const i=this.j.get(t);if(i)return i;const s=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const s=window.getComputedStyle(i).color;return document.body.removeChild(i),s}(t),n=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!n){if(this.Y.length)for(const i of this.Y){const s=i(t);if(s)return this.j.set(t,s),s}throw new Error(`Failed to parse color: ${t}`)}const e=[parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10),n[4]?parseFloat(n[4]):1];return this.j.set(t,e),e}}class C{constructor(){this.it=[]}st(t){this.it=t}nt(t,i,s){this.it.forEach((n=>{n.nt(t,i,s)}))}}class y{nt(t,i,s){t.useBitmapCoordinateSpace((t=>this.et(t,i,s)))}}class P extends y{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.rt||null===this.rt.lt)return;const n=this.rt.lt,e=this.rt,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let l=n.to-1;l>=n.from;--l){const n=e.ot[l],a=Math.round(n._t*i)+r,o=n.ut*s,_=h*s+r;t.moveTo(a,o),t.arc(a,o,_,0,2*Math.PI)}t.fill()};e.ct>0&&(t.fillStyle=e.dt,h(e.ft+e.ct)),t.fillStyle=e.vt,h(e.ft)}}function k(){return{ot:[{_t:0,ut:0,wt:0,gt:0}],vt:"",dt:"",ft:0,ct:0,lt:null}}const T={from:0,to:1};class R{constructor(t,i,s){this.bt=new C,this.Mt=[],this.St=[],this.xt=!0,this.O=t,this.Ct=i,this.yt=s,this.bt.st(this.Mt)}Pt(t){this.kt(),this.xt=!0}Tt(){return this.xt&&(this.Rt(),this.xt=!1),this.bt}kt(){const t=this.yt.Dt();t.length!==this.Mt.length&&(this.St=t.map(k),this.Mt=this.St.map((t=>{const i=new P;return i.ht(t),i})),this.bt.st(this.Mt))}Rt(){const t=2===this.Ct.N().mode||!this.Ct.Et(),i=this.yt.Vt(),s=this.Ct.zt(),n=this.O.It();this.kt(),i.forEach(((i,e)=>{const r=this.St[e],h=i.At(s),l=i.Bt();!t&&null!==h&&i.Et()&&null!==l?(r.vt=h.Lt,r.ft=h.ft,r.ct=h.Ot,r.ot[0].gt=h.gt,r.ot[0].ut=i.Ft().Nt(h.gt,l.Wt),r.dt=h.Ht??this.O.$t(r.ot[0].ut/i.Ft().Ut()),r.ot[0].wt=s,r.ot[0]._t=n.jt(s),r.lt=T):r.lt=null}))}}class D extends y{constructor(t){super(),this.Yt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:r}){if(null===this.Yt)return;const h=this.Yt.Xt.Et,l=this.Yt.Zt.Et;if(!h&&!l)return;const a=Math.round(this.Yt._t*s),o=Math.round(this.Yt.ut*r);t.lineCap="butt",h&&a>=0&&(t.lineWidth=Math.floor(this.Yt.Xt.ct*s),t.strokeStyle=this.Yt.Xt.R,t.fillStyle=this.Yt.Xt.R,n(t,this.Yt.Xt.qt),function(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(i+e,s),t.lineTo(i+e,n),t.stroke()}(t,a,0,i.height)),l&&o>=0&&(t.lineWidth=Math.floor(this.Yt.Zt.ct*r),t.strokeStyle=this.Yt.Zt.R,t.fillStyle=this.Yt.Zt.R,n(t,this.Yt.Zt.qt),e(t,o,0,i.width))}}class E{constructor(t,i){this.xt=!0,this.Gt={Xt:{ct:1,qt:0,R:"",Et:!1},Zt:{ct:1,qt:0,R:"",Et:!1},_t:0,ut:0},this.Kt=new D(this.Gt),this.Jt=t,this.yt=i}Pt(){this.xt=!0}Tt(t){return this.xt&&(this.Rt(),this.xt=!1),this.Kt}Rt(){const t=this.Jt.Et(),i=this.yt.Qt().N().crosshair,s=this.Gt;if(2===i.mode)return s.Zt.Et=!1,void(s.Xt.Et=!1);s.Zt.Et=t&&this.Jt.ti(this.yt),s.Xt.Et=t&&this.Jt.ii(),s.Zt.ct=i.horzLine.width,s.Zt.qt=i.horzLine.style,s.Zt.R=i.horzLine.color,s.Xt.ct=i.vertLine.width,s.Xt.qt=i.vertLine.style,s.Xt.R=i.vertLine.color,s._t=this.Jt.si(),s.ut=this.Jt.ni()}}function V(t,i,s,n,e,r){t.fillRect(i+r,s,n-2*r,r),t.fillRect(i+r,s+e-r,n-2*r,r),t.fillRect(i,s,r,e),t.fillRect(i+n-r,s,r,e)}function z(t,i,s,n,e,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,s,n,e),t.restore()}function I(t,i,s,n,e,r){t.beginPath(),t.roundRect?t.roundRect(i,s,n,e,r):(t.lineTo(i+n-r[1],s),0!==r[1]&&t.arcTo(i+n,s,i+n,s+r[1],r[1]),t.lineTo(i+n,s+e-r[2]),0!==r[2]&&t.arcTo(i+n,s+e,i+n-r[2],s+e,r[2]),t.lineTo(i+r[3],s+e),0!==r[3]&&t.arcTo(i,s+e,i,s+e-r[3],r[3]),t.lineTo(i,s+r[0]),0!==r[0]&&t.arcTo(i,s,i+r[0],s,r[0]))}function A(t,i,s,n,e,r,h=0,l=[0,0,0,0],a=""){if(t.save(),!h||!a||a===r)return I(t,i,s,n,e,l),t.fillStyle=r,t.fill(),void t.restore();const o=h/2;var _;I(t,i+o,s+o,n-h,e-h,(_=-o,l.map((t=>0===t?t:t+_)))),"transparent"!==r&&(t.fillStyle=r,t.fill()),"transparent"!==a&&(t.lineWidth=h,t.strokeStyle=a,t.closePath(),t.stroke()),t.restore()}function B(t,i,s,n,e,r,h){t.save(),t.globalCompositeOperation="copy";const l=t.createLinearGradient(0,0,0,e);l.addColorStop(0,r),l.addColorStop(1,h),t.fillStyle=l,t.fillRect(i,s,n,e),t.restore()}class L{constructor(t,i){this.ht(t,i)}ht(t,i){this.Yt=t,this.ei=i}Ut(t,i){return this.Yt.Et?t.P+t.B+t.V:0}nt(t,i,s,n){if(!this.Yt.Et||0===this.Yt.ri.length)return;const e=this.Yt.R,r=this.ei.G,h=t.useBitmapCoordinateSpace((t=>{const h=t.context;h.font=i.k;const l=this.hi(t,i,s,n),a=l.li;return l.ai?A(h,a.oi,a._i,a.ui,a.ci,r,a.di,[a.ft,0,0,a.ft],r):A(h,a.fi,a._i,a.ui,a.ci,r,a.di,[0,a.ft,a.ft,0],r),this.Yt.pi&&(h.fillStyle=e,h.fillRect(a.fi,a.mi,a.wi-a.fi,a.gi)),this.Yt.bi&&(h.fillStyle=i.D,h.fillRect(l.ai?a.Mi-a.di:0,a._i,a.di,a.Si-a._i)),l}));t.useMediaCoordinateSpace((({context:t})=>{const s=h.xi;t.font=i.k,t.textAlign=h.ai?"right":"left",t.textBaseline="middle",t.fillStyle=e,t.fillText(this.Yt.ri,s.Ci,(s._i+s.Si)/2+s.yi)}))}hi(t,i,s,n){const{context:e,bitmapSize:r,mediaSize:h,horizontalPixelRatio:l,verticalPixelRatio:a}=t,o=this.Yt.pi||!this.Yt.Pi?i.C:0,_=this.Yt.ki?i.S:0,u=i.B+this.ei.Ti,c=i.V+this.ei.Ri,d=i.I,f=i.A,p=this.Yt.ri,v=i.P,m=s.Di(e,p),w=Math.ceil(s.Ei(e,p)),g=v+u+c,b=i.S+d+f+w+o,M=Math.max(1,Math.floor(a));let S=Math.round(g*a);S%2!=M%2&&(S+=1);const x=_>0?Math.max(1,Math.floor(_*l)):0,C=Math.round(b*l),y=Math.round(o*l),P=this.ei.Vi??this.ei.zi,k=Math.round(P*a)-Math.floor(.5*a),T=Math.floor(k+M/2-S/2),R=T+S,D="right"===n,E=D?h.width-_:_,V=D?r.width-x:x;let z,I,A;return D?(z=V-C,I=V-y,A=E-o-d-_):(z=V+C,I=V+y,A=E+o+d),{ai:D,li:{_i:T,mi:k,Si:R,ui:C,ci:S,ft:2*l,di:x,oi:z,fi:V,wi:I,gi:M,Mi:r.width},xi:{_i:T/a,Si:R/a,Ci:A,yi:m}}}}class O{constructor(t){this.Ii={zi:0,G:"#000",Ri:0,Ti:0},this.Ai={ri:"",Et:!1,pi:!0,Pi:!1,Ht:"",R:"#FFF",bi:!1,ki:!1},this.Bi={ri:"",Et:!1,pi:!1,Pi:!0,Ht:"",R:"#FFF",bi:!0,ki:!0},this.xt=!0,this.Li=new(t||L)(this.Ai,this.Ii),this.Oi=new(t||L)(this.Bi,this.Ii)}ri(){return this.Ni(),this.Ai.ri}zi(){return this.Ni(),this.Ii.zi}Pt(){this.xt=!0}Ut(t,i=!1){return Math.max(this.Li.Ut(t,i),this.Oi.Ut(t,i))}Fi(){return this.Ii.Vi||0}Wi(t){this.Ii.Vi=t}Hi(){return this.Ni(),this.Ai.Et||this.Bi.Et}$i(){return this.Ni(),this.Ai.Et}Tt(t){return this.Ni(),this.Ai.pi=this.Ai.pi&&t.N().ticksVisible,this.Bi.pi=this.Bi.pi&&t.N().ticksVisible,this.Li.ht(this.Ai,this.Ii),this.Oi.ht(this.Bi,this.Ii),this.Li}Ui(){return this.Ni(),this.Li.ht(this.Ai,this.Ii),this.Oi.ht(this.Bi,this.Ii),this.Oi}Ni(){this.xt&&(this.Ai.pi=!0,this.Bi.pi=!1,this.ji(this.Ai,this.Bi,this.Ii))}}class N extends O{constructor(t,i,s){super(),this.Jt=t,this.Yi=i,this.Xi=s}ji(t,i,s){if(t.Et=!1,2===this.Jt.N().mode)return;const n=this.Jt.N().horzLine;if(!n.labelVisible)return;const e=this.Yi.Bt();if(!this.Jt.Et()||this.Yi.Zi()||null===e)return;const r=this.Yi.qi().q(n.labelBackgroundColor);s.G=r.G,t.R=r.K;const h=2/12*this.Yi.P();s.Ti=h,s.Ri=h;const l=this.Xi(this.Yi);s.zi=l.zi,t.ri=this.Yi.Gi(l.gt,e),t.Et=!0}}const F=/[1-9]/g;class W{constructor(){this.Yt=null}ht(t){this.Yt=t}nt(t,i){if(null===this.Yt||!1===this.Yt.Et||0===this.Yt.ri.length)return;const s=t.useMediaCoordinateSpace((({context:t})=>(t.font=i.k,Math.round(i.Ki.Ei(t,l(this.Yt).ri,F)))));if(s<=0)return;const n=i.Ji,e=s+2*n,r=e/2,h=this.Yt.Qi;let a=this.Yt.zi,o=Math.floor(a-r)+.5;o<0?(a+=Math.abs(0-o),o=Math.floor(a-r)+.5):o+e>h&&(a-=Math.abs(h-(o+e)),o=Math.floor(a-r)+.5);const _=o+e,u=Math.ceil(0+i.S+i.C+i.B+i.P+i.V);t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:s,verticalPixelRatio:n})=>{const e=l(this.Yt);t.fillStyle=e.G;const r=Math.round(o*s),h=Math.round(0*n),a=Math.round(_*s),c=Math.round(u*n),d=Math.round(2*s);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-d),t.arcTo(r,c,r+d,c,d),t.lineTo(a-d,c),t.arcTo(a,c,a,c-d,d),t.lineTo(a,h),t.fill(),e.pi){const r=Math.round(e.zi*s),l=h,a=Math.round((l+i.C)*n);t.fillStyle=e.R;const o=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(r-_,l,o,a-l)}})),t.useMediaCoordinateSpace((({context:t})=>{const s=l(this.Yt),e=0+i.S+i.C+i.B+i.P/2;t.font=i.k,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.R;const r=i.Ki.Di(t,"Apr0");t.translate(o+n,e+r),t.fillText(s.ri,0,0)}))}}class H{constructor(t,i,s){this.xt=!0,this.Kt=new W,this.Gt={Et:!1,G:"#4c525e",R:"white",ri:"",Qi:0,zi:NaN,pi:!0},this.Ct=t,this.ts=i,this.Xi=s}Pt(){this.xt=!0}Tt(){return this.xt&&(this.Rt(),this.xt=!1),this.Kt.ht(this.Gt),this.Kt}Rt(){const t=this.Gt;if(t.Et=!1,2===this.Ct.N().mode)return;const i=this.Ct.N().vertLine;if(!i.labelVisible)return;const s=this.ts.It();if(s.Zi())return;t.Qi=s.Qi();const n=this.Xi();if(null===n)return;t.zi=n.zi;const e=s.ss(this.Ct.zt());t.ri=s.ns(l(e)),t.Et=!0;const r=this.ts.qi().q(i.labelBackgroundColor);t.G=r.G,t.R=r.K,t.pi=s.N().ticksVisible}}class ${constructor(){this.es=null,this.rs=0}hs(){return this.rs}ls(t){this.rs=t}Ft(){return this.es}os(t){this.es=t}_s(t){return[]}us(){return[]}Et(){return!0}}var U;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}(U||(U={}));class j extends ${constructor(t,i){super(),this.yt=null,this.cs=NaN,this.ds=0,this.fs=!1,this.ps=new Map,this.vs=!1,this.ws=new WeakMap,this.gs=new WeakMap,this.bs=NaN,this.Ms=NaN,this.Ss=NaN,this.xs=NaN,this.ts=t,this.Cs=i;this.ys=((t,i)=>s=>{const n=i(),e=t();if(s===l(this.yt).Ps())return{gt:e,zi:n};{const t=l(s.Bt());return{gt:s.ks(n,t),zi:n}}})((()=>this.cs),(()=>this.Ms));const s=((t,i)=>()=>{const s=this.ts.It().Ts(t()),n=i();return s&&Number.isFinite(n)?{wt:s,zi:n}:null})((()=>this.ds),(()=>this.si()));this.Rs=new H(this,t,s)}N(){return this.Cs}Ds(t,i){this.Ss=t,this.xs=i}Es(){this.Ss=NaN,this.xs=NaN}Vs(){return this.Ss}zs(){return this.xs}Is(t,i,s){this.vs||(this.vs=!0),this.fs=!0,this.As(t,i,s)}zt(){return this.ds}si(){return this.bs}ni(){return this.Ms}Et(){return this.fs}Bs(){this.fs=!1,this.Ls(),this.cs=NaN,this.bs=NaN,this.Ms=NaN,this.yt=null,this.Es(),this.Os()}Ns(t){let i=this.ws.get(t);i||(i=new E(this,t),this.ws.set(t,i));let s=this.gs.get(t);return s||(s=new R(this.ts,this,t),this.gs.set(t,s)),[i,s]}ti(t){return t===this.yt&&this.Cs.horzLine.visible}ii(){return this.Cs.vertLine.visible}Fs(t,i){this.fs&&this.yt===t||this.ps.clear();const s=[];return this.yt===t&&s.push(this.Ws(this.ps,i,this.ys)),s}us(){return this.fs?[this.Rs]:[]}Hs(){return this.yt}Os(){this.ts.$s().forEach((t=>{this.ws.get(t)?.Pt(),this.gs.get(t)?.Pt()})),this.ps.forEach((t=>t.Pt())),this.Rs.Pt()}Us(t){return t&&!t.Ps().Zi()?t.Ps():null}As(t,i,s){this.js(t,i,s)&&this.Os()}js(t,i,s){const n=this.bs,e=this.Ms,r=this.cs,h=this.ds,l=this.yt,a=this.Us(s);this.ds=t,this.bs=isNaN(t)?NaN:this.ts.It().jt(t),this.yt=s;const o=null!==a?a.Bt():null;return null!==a&&null!==o?(this.cs=i,this.Ms=a.Nt(i,o)):(this.cs=NaN,this.Ms=NaN),n!==this.bs||e!==this.Ms||h!==this.ds||r!==this.cs||l!==this.yt}Ls(){const t=this.ts.Ys().map((t=>t.Zs().Xs())).filter(v),i=0===t.length?null:Math.max(...t);this.ds=null!==i?i:NaN}Ws(t,i,s){let n=t.get(i);return void 0===n&&(n=new N(this,i,s),t.set(i,n)),n}}function Y(t){return"left"===t||"right"===t}class X{constructor(t){this.qs=new Map,this.Gs=[],this.Ks=t}Js(t,i){const s=function(t,i){return void 0===t?i:{Qs:Math.max(t.Qs,i.Qs),tn:t.tn||i.tn}}(this.qs.get(t),i);this.qs.set(t,s)}sn(){return this.Ks}nn(t){const i=this.qs.get(t);return void 0===i?{Qs:this.Ks}:{Qs:Math.max(this.Ks,i.Qs),tn:i.tn}}en(){this.rn(),this.Gs=[{hn:0}]}ln(t){this.rn(),this.Gs=[{hn:1,Wt:t}]}an(t){this._n(),this.Gs.push({hn:5,Wt:t})}rn(){this._n(),this.Gs.push({hn:6})}un(){this.rn(),this.Gs=[{hn:4}]}cn(t){this.rn(),this.Gs.push({hn:2,Wt:t})}dn(t){this.rn(),this.Gs.push({hn:3,Wt:t})}fn(){return this.Gs}pn(t){for(const i of t.Gs)this.vn(i);this.Ks=Math.max(this.Ks,t.Ks),t.qs.forEach(((t,i)=>{this.Js(i,t)}))}static mn(){return new X(2)}static wn(){return new X(3)}vn(t){switch(t.hn){case 0:this.en();break;case 1:this.ln(t.Wt);break;case 2:this.cn(t.Wt);break;case 3:this.dn(t.Wt);break;case 4:this.un();break;case 5:this.an(t.Wt);break;case 6:this._n()}}_n(){const t=this.Gs.findIndex((t=>5===t.hn));-1!==t&&this.Gs.splice(t,1)}}const Z=".";function q(t,i){if(!u(t))return"n/a";if(!c(i))throw new TypeError("invalid length");if(i<0||i>16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}class G{constructor(t,i){if(i||(i=1),u(t)&&c(t)||(t=100),t<0)throw new TypeError("invalid base");this.Yi=t,this.gn=i,this.bn()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.Mn(t)}bn(){if(this.Sn=0,this.Yi>0&&this.gn>0){let t=this.Yi;for(;t>1;)t/=10,this.Sn++}}Mn(t){const i=this.Yi/this.gn;let s=Math.floor(t),n="";const e=void 0!==this.Sn?this.Sn:NaN;if(i>1){let r=+(Math.round(t*i)-s*i).toFixed(this.Sn);r>=i&&(r-=i,s+=1),n=Z+q(+r.toFixed(this.Sn)*this.gn,e)}else s=Math.round(s*i)/i,e>0&&(n=Z+q(0,e));return s.toFixed(0)+n}}class K extends G{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class J{constructor(t){this.xn=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.Cn(t):t<999995?i+this.Cn(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.Cn(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.Cn(t/1e9)+"B")}Cn(t){let i;const s=Math.pow(10,this.xn);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.xn).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,((t,i)=>i))}}const Q=/[2-9]/g;class tt{constructor(t=50){this.yn=0,this.Pn=1,this.kn=1,this.Tn={},this.Rn=new Map,this.Dn=t}En(){this.yn=0,this.Rn.clear(),this.Pn=1,this.kn=1,this.Tn={}}Ei(t,i,s){return this.Vn(t,i,s).width}Di(t,i,s){const n=this.Vn(t,i,s);return((n.actualBoundingBoxAscent||0)-(n.actualBoundingBoxDescent||0))/2}Vn(t,i,s){const n=s||Q,e=String(i).replace(n,"0");if(this.Rn.has(e))return h(this.Rn.get(e)).zn;if(this.yn===this.Dn){const t=this.Tn[this.kn];delete this.Tn[this.kn],this.Rn.delete(t),this.kn++,this.yn--}t.save(),t.textBaseline="middle";const r=t.measureText(e);return t.restore(),0===r.width&&i.length||(this.Rn.set(e,{zn:r,In:this.Pn}),this.Tn[this.Pn]=e,this.yn++,this.Pn++),r}}class it{constructor(t){this.An=null,this.M=null,this.Bn="right",this.Ln=t}On(t,i,s){this.An=t,this.M=i,this.Bn=s}nt(t){null!==this.M&&null!==this.An&&this.An.nt(t,this.M,this.Ln,this.Bn)}}class st{constructor(t,i,s){this.Nn=t,this.Ln=new tt(50),this.Fn=i,this.O=s,this.F=-1,this.Kt=new it(this.Ln)}Tt(){const t=this.O.Wn(this.Fn);if(null===t)return null;const i=t.Hn(this.Fn)?t.$n():this.Fn.Ft();if(null===i)return null;const s=t.Un(i);if("overlay"===s)return null;const n=this.O.jn();return n.P!==this.F&&(this.F=n.P,this.Ln.En()),this.Kt.On(this.Nn.Ui(),n,s),this.Kt}}class nt extends y{constructor(){super(...arguments),this.Yt=null}ht(t){this.Yt=t}Yn(t,i){if(!this.Yt?.Et)return null;const{ut:s,ct:n,Xn:e}=this.Yt;return i>=s-n-7&&i<=s+n+7?{Zn:this.Yt,Xn:e}:null}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:r}){if(null===this.Yt)return;if(!1===this.Yt.Et)return;const h=Math.round(this.Yt.ut*r);h<0||h>i.height||(t.lineCap="butt",t.strokeStyle=this.Yt.R,t.lineWidth=Math.floor(this.Yt.ct*s),n(t,this.Yt.qt),e(t,h,0,i.width))}}class et{constructor(t){this.qn={ut:0,R:"rgba(0, 0, 0, 0)",ct:1,qt:0,Et:!1},this.Gn=new nt,this.xt=!0,this.Kn=t,this.Jn=t.Qt(),this.Gn.ht(this.qn)}Pt(){this.xt=!0}Tt(){return this.Kn.Et()?(this.xt&&(this.Qn(),this.xt=!1),this.Gn):null}}class rt extends et{constructor(t){super(t)}Qn(){this.qn.Et=!1;const t=this.Kn.Ft(),i=t.te().te;if(2!==i&&3!==i)return;const s=this.Kn.N();if(!s.baseLineVisible||!this.Kn.Et())return;const n=this.Kn.Bt();null!==n&&(this.qn.Et=!0,this.qn.ut=t.Nt(n.Wt,n.Wt),this.qn.R=s.baseLineColor,this.qn.ct=s.baseLineWidth,this.qn.qt=s.baseLineStyle)}}class ht extends y{constructor(){super(...arguments),this.Yt=null}ht(t){this.Yt=t}ie(){return this.Yt}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const n=this.Yt;if(null===n)return;const e=Math.max(1,Math.floor(i)),r=e%2/2,h=Math.round(n.se.x*i)+r,l=n.se.y*s;t.fillStyle=n.ne,t.beginPath();const a=Math.max(2,1.5*n.ee)*i;t.arc(h,l,a,0,2*Math.PI,!1),t.fill(),t.fillStyle=n.re,t.beginPath(),t.arc(h,l,n.ft*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=e,t.strokeStyle=n.he,t.beginPath(),t.arc(h,l,n.ft*i+e/2,0,2*Math.PI,!1),t.stroke()}}const lt=[{le:0,ae:.25,oe:4,_e:10,ue:.25,ce:0,de:.4,fe:.8},{le:.25,ae:.525,oe:10,_e:14,ue:0,ce:0,de:.8,fe:0},{le:.525,ae:1,oe:14,_e:14,ue:0,ce:0,de:0,fe:0}];class at{constructor(t){this.Kt=new ht,this.xt=!0,this.pe=!0,this.ve=performance.now(),this.me=this.ve-1,this.we=t}ge(){this.me=this.ve-1,this.Pt()}be(){if(this.Pt(),2===this.we.N().lastPriceAnimation){const t=performance.now(),i=this.me-t;if(i>0)return void(i<650&&(this.me+=2600));this.ve=t,this.me=t+2600}}Pt(){this.xt=!0}Me(){this.pe=!0}Et(){return 0!==this.we.N().lastPriceAnimation}Se(){switch(this.we.N().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.me}}Tt(){return this.xt?(this.Rt(),this.xt=!1,this.pe=!1):this.pe&&(this.xe(),this.pe=!1),this.Kt}Rt(){this.Kt.ht(null);const t=this.we.Qt().It(),i=t.Ce(),s=this.we.Bt();if(null===i||null===s)return;const n=this.we.ye(!0);if(n.Pe||!i.ke(n.Te))return;const e={x:t.jt(n.Te),y:this.we.Ft().Nt(n.gt,s.Wt)},r=n.R,h=this.we.N().lineWidth,l=this.Re(this.De(),r);this.Kt.ht({ne:r,ee:h,re:l.re,he:l.he,ft:l.ft,se:e})}xe(){const t=this.Kt.ie();if(null!==t){const i=this.Re(this.De(),t.ne);t.re=i.re,t.he=i.he,t.ft=i.ft}}De(){return this.Se()?performance.now()-this.ve:2599}Ee(t,i,s,n){const e=s+(n-s)*i;return this.we.Qt().qi().X(t,e)}Re(t,i){const s=t%2600/2600;let n;for(const t of lt)if(s>=t.le&&s<=t.ae){n=t;break}r(void 0!==n,"Last price animation internal logic error");const e=(s-n.le)/(n.ae-n.le);return{re:this.Ee(i,e,n.ue,n.ce),he:this.Ee(i,e,n.de,n.fe),ft:(h=e,l=n.oe,a=n._e,l+(a-l)*h)};var h,l,a}}class ot extends et{constructor(t){super(t)}Qn(){const t=this.qn;t.Et=!1;const i=this.Kn.N();if(!i.priceLineVisible||!this.Kn.Et())return;const s=this.Kn.ye(0===i.priceLineSource);s.Pe||(t.Et=!0,t.ut=s.zi,t.R=this.Kn.Ve(s.R),t.ct=i.priceLineWidth,t.qt=i.priceLineStyle)}}class _t extends O{constructor(t){super(),this.Jt=t}ji(t,i,s){t.Et=!1,i.Et=!1;const n=this.Jt;if(!n.Et())return;const e=n.N(),r=e.lastValueVisible,h=""!==n.ze(),l=0===e.seriesLastValueMode,a=n.ye(!1);if(a.Pe)return;r&&(t.ri=this.Ie(a,r,l),t.Et=0!==t.ri.length),(h||l)&&(i.ri=this.Ae(a,r,h,l),i.Et=i.ri.length>0);const o=n.Ve(a.R),_=this.Jt.Qt().qi().q(o);s.G=_.G,s.zi=a.zi,i.Ht=n.Qt().$t(a.zi/n.Ft().Ut()),t.Ht=o,t.R=_.K,i.R=_.K}Ae(t,i,s,n){let e="";const r=this.Jt.ze();return s&&0!==r.length&&(e+=`${r} `),i&&n&&(e+=this.Jt.Ft().Be()?t.Le:t.Oe),e.trim()}Ie(t,i,s){return i?s?this.Jt.Ft().Be()?t.Oe:t.Le:t.ri:""}}function ut(t,i,s,n){const e=Number.isFinite(i),r=Number.isFinite(s);return e&&r?t(i,s):e||r?e?i:s:n}class ct{constructor(t,i){this.Ne=t,this.Fe=i}We(t){return null!==t&&(this.Ne===t.Ne&&this.Fe===t.Fe)}He(){return new ct(this.Ne,this.Fe)}$e(){return this.Ne}Ue(){return this.Fe}je(){return this.Fe-this.Ne}Zi(){return this.Fe===this.Ne||Number.isNaN(this.Fe)||Number.isNaN(this.Ne)}pn(t){return null===t?this:new ct(ut(Math.min,this.$e(),t.$e(),-1/0),ut(Math.max,this.Ue(),t.Ue(),1/0))}Ye(t){if(!u(t))return;if(0===this.Fe-this.Ne)return;const i=.5*(this.Fe+this.Ne);let s=this.Fe-i,n=this.Ne-i;s*=t,n*=t,this.Fe=i+s,this.Ne=i+n}Xe(t){u(t)&&(this.Fe+=t,this.Ne+=t)}Ze(){return{minValue:this.Ne,maxValue:this.Fe}}static qe(t){return null===t?null:new ct(t.minValue,t.maxValue)}}class dt{constructor(t,i){this.Ge=t,this.Ke=i||null}Je(){return this.Ge}Qe(){return this.Ke}Ze(){return{priceRange:null===this.Ge?null:this.Ge.Ze(),margins:this.Ke||void 0}}static qe(t){return null===t?null:new dt(ct.qe(t.priceRange),t.margins)}}class ft extends et{constructor(t,i){super(t),this.tr=i}Qn(){const t=this.qn;t.Et=!1;const i=this.tr.N();if(!this.Kn.Et()||!i.lineVisible)return;const s=this.tr.ir();null!==s&&(t.Et=!0,t.ut=s,t.R=i.color,t.ct=i.lineWidth,t.qt=i.lineStyle,t.Xn=this.tr.N().id)}}class pt extends O{constructor(t,i){super(),this.we=t,this.tr=i}ji(t,i,s){t.Et=!1,i.Et=!1;const n=this.tr.N(),e=n.axisLabelVisible,r=""!==n.title,h=this.we;if(!e||!h.Et())return;const l=this.tr.ir();if(null===l)return;r&&(i.ri=n.title,i.Et=!0),i.Ht=h.Qt().$t(l/h.Ft().Ut()),t.ri=this.sr(n.price),t.Et=!0;const a=this.we.Qt().qi().q(n.axisLabelColor||n.color);s.G=a.G;const o=n.axisLabelTextColor||a.K;t.R=o,i.R=o,s.zi=l}sr(t){const i=this.we.Bt();return null===i?"":this.we.Ft().Gi(t,i.Wt)}}class vt{constructor(t,i){this.we=t,this.Cs=i,this.nr=new ft(t,this),this.Nn=new pt(t,this),this.er=new st(this.Nn,t,t.Qt())}rr(t){_(this.Cs,t),this.Pt(),this.we.Qt().hr()}N(){return this.Cs}lr(){return this.nr}ar(){return this.er}_r(){return this.Nn}Pt(){this.nr.Pt(),this.Nn.Pt()}ir(){const t=this.we,i=t.Ft();if(t.Qt().It().Zi()||i.Zi())return null;const s=t.Bt();return null===s?null:i.Nt(this.Cs.price,s.Wt)}}class mt extends ${constructor(t){super(),this.ts=t}Qt(){return this.ts}}const wt={Bar:(t,i,s,n)=>{const e=i.upColor,r=i.downColor,h=l(t(s,n)),o=a(h.Wt[0])<=a(h.Wt[3]);return{ur:h.R??(o?e:r)}},Candlestick:(t,i,s,n)=>{const e=i.upColor,r=i.downColor,h=i.borderUpColor,o=i.borderDownColor,_=i.wickUpColor,u=i.wickDownColor,c=l(t(s,n)),d=a(c.Wt[0])<=a(c.Wt[3]);return{ur:c.R??(d?e:r),cr:c.Ht??(d?h:o),dr:c.pr??(d?_:u)}},Custom:(t,i,s,n)=>({ur:l(t(s,n)).R??i.color}),Area:(t,i,s,n)=>{const e=l(t(s,n));return{ur:e.vt??i.lineColor,vt:e.vt??i.lineColor,vr:e.vr??i.topColor,mr:e.mr??i.bottomColor}},Baseline:(t,i,s,n)=>{const e=l(t(s,n));return{ur:e.Wt[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,wr:e.wr??i.topLineColor,gr:e.gr??i.bottomLineColor,br:e.br??i.topFillColor1,Mr:e.Mr??i.topFillColor2,Sr:e.Sr??i.bottomFillColor1,Cr:e.Cr??i.bottomFillColor2}},Line:(t,i,s,n)=>{const e=l(t(s,n));return{ur:e.R??i.color,vt:e.R??i.color}},Histogram:(t,i,s,n)=>({ur:l(t(s,n)).R??i.color})};class gt{constructor(t){this.yr=(t,i)=>void 0!==i?i.Wt:this.we.Zs().Pr(t),this.we=t,this.kr=wt[t.Tr()]}Rr(t,i){return this.kr(this.yr,this.we.N(),t,i)}}function bt(t,i,s,n,e=0,r=i.length){let h=r-e;for(;0>1,l=e+r;n(i[l],s)===t?(e=l+1,h-=r+1):h=r}return e}const Mt=bt.bind(null,!0),St=bt.bind(null,!1);var xt;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(xt||(xt={}));const Ct=30;class yt{constructor(){this.Dr=[],this.Er=new Map,this.Vr=new Map,this.zr=[]}Ir(){return this.Ar()>0?this.Dr[this.Dr.length-1]:null}Br(){return this.Ar()>0?this.Lr(0):null}Xs(){return this.Ar()>0?this.Lr(this.Dr.length-1):null}Ar(){return this.Dr.length}Zi(){return 0===this.Ar()}ke(t){return null!==this.Or(t,0)}Pr(t){return this.Nr(t)}Nr(t,i=0){const s=this.Or(t,i);return null===s?null:{...this.Fr(s),Te:this.Lr(s)}}Wr(){return this.Dr}Hr(t,i,s){if(this.Zi())return null;let n=null;for(const e of s){n=Pt(n,this.$r(t,i,e))}return n}ht(t){this.Vr.clear(),this.Er.clear(),this.Dr=t,this.zr=t.map((t=>t.Te))}Ur(){return this.zr}Lr(t){return this.Dr[t].Te}Fr(t){return this.Dr[t]}Or(t,i){const s=this.jr(t);if(null===s&&0!==i)switch(i){case-1:return this.Yr(t);case 1:return this.Xr(t);default:throw new TypeError("Unknown search mode")}return s}Yr(t){let i=this.Zr(t);return i>0&&(i-=1),i!==this.Dr.length&&this.Lr(i)t.Tet.Te>i))}Gr(t,i,s){let n=null;for(let e=t;en.Jr&&(n.Jr=t)))}return n}$r(t,i,s){if(this.Zi())return null;let n=null;const e=l(this.Br()),r=l(this.Xs()),h=Math.max(t,e),a=Math.min(i,r),o=Math.ceil(h/Ct)*Ct,_=Math.max(o,Math.floor(a/Ct)*Ct);{const t=this.Zr(h),e=this.qr(Math.min(a,o,i));n=Pt(n,this.Gr(t,e,s))}let u=this.Er.get(s);void 0===u&&(u=new Map,this.Er.set(s,u));for(let t=Math.max(o+1,h);t<_;t+=Ct){const i=Math.floor(t/Ct);let e=u.get(i);if(void 0===e){const t=this.Zr(i*Ct),n=this.qr((i+1)*Ct-1);e=this.Gr(t,n,s),u.set(i,e)}n=Pt(n,e)}{const t=this.Zr(_),i=this.qr(a);n=Pt(n,this.Gr(t,i,s))}return n}}function Pt(t,i){if(null===t)return i;if(null===i)return t;return{Kr:Math.min(t.Kr,i.Kr),Jr:Math.max(t.Jr,i.Jr)}}class kt{constructor(t){this.Qr=t}nt(t,i,s){this.Qr.draw(t)}th(t,i,s){this.Qr.drawBackground?.(t)}}class Tt{constructor(t){this.Rn=null,this.ih=t}Tt(){const t=this.ih.renderer();if(null===t)return null;if(this.Rn?.sh===t)return this.Rn.nh;const i=new kt(t);return this.Rn={sh:t,nh:i},i}eh(){return this.ih.zOrder?.()??"normal"}}class Rt{constructor(t){this.rh=null,this.hh=t}ah(){return this.hh}Os(){this.hh.updateAllViews?.()}Ns(){const t=this.hh.paneViews?.()??[];if(this.rh?.sh===t)return this.rh.nh;const i=t.map((t=>new Tt(t)));return this.rh={sh:t,nh:i},i}Yn(t,i){return this.hh.hitTest?.(t,i)??null}}class Dt extends Rt{_s(){return[]}}class Et{constructor(t){this.Qr=t}nt(t,i,s){this.Qr.draw(t)}th(t,i,s){this.Qr.drawBackground?.(t)}}class Vt{constructor(t){this.Rn=null,this.ih=t}Tt(){const t=this.ih.renderer();if(null===t)return null;if(this.Rn?.sh===t)return this.Rn.nh;const i=new Et(t);return this.Rn={sh:t,nh:i},i}eh(){return this.ih.zOrder?.()??"normal"}}function zt(t){return{ri:t.text(),zi:t.coordinate(),Vi:t.fixedCoordinate?.(),R:t.textColor(),G:t.backColor(),Et:t.visible?.()??!0,pi:t.tickVisible?.()??!0}}class It{constructor(t,i){this.Kt=new W,this.oh=t,this._h=i}Tt(){return this.Kt.ht({Qi:this._h.Qi(),...zt(this.oh)}),this.Kt}}class At extends O{constructor(t,i){super(),this.oh=t,this.Yi=i}ji(t,i,s){const n=zt(this.oh);s.G=n.G,t.R=n.R;const e=2/12*this.Yi.P();s.Ti=e,s.Ri=e,s.zi=n.zi,s.Vi=n.Vi,t.ri=n.ri,t.Et=n.Et,t.pi=n.pi}}class Bt extends Rt{constructor(t,i){super(t),this.uh=null,this.dh=null,this.fh=null,this.ph=null,this.we=i}us(){const t=this.hh.timeAxisViews?.()??[];if(this.uh?.sh===t)return this.uh.nh;const i=this.we.Qt().It(),s=t.map((t=>new It(t,i)));return this.uh={sh:t,nh:s},s}Fs(){const t=this.hh.priceAxisViews?.()??[];if(this.dh?.sh===t)return this.dh.nh;const i=this.we.Ft(),s=t.map((t=>new At(t,i)));return this.dh={sh:t,nh:s},s}mh(){const t=this.hh.priceAxisPaneViews?.()??[];if(this.fh?.sh===t)return this.fh.nh;const i=t.map((t=>new Vt(t)));return this.fh={sh:t,nh:i},i}wh(){const t=this.hh.timeAxisPaneViews?.()??[];if(this.ph?.sh===t)return this.ph.nh;const i=t.map((t=>new Vt(t)));return this.ph={sh:t,nh:i},i}gh(t,i){return this.hh.autoscaleInfo?.(t,i)??null}}function Lt(t,i,s,n){t.forEach((t=>{i(t).forEach((t=>{t.eh()===s&&n.push(t)}))}))}function Ot(t){return t.Ns()}function Nt(t){return t.mh()}function Ft(t){return t.wh()}const Wt=["Area","Line","Baseline"];class Ht extends mt{constructor(t,i,s,n,e){super(t),this.Yt=new yt,this.nr=new ot(this),this.bh=[],this.Mh=new rt(this),this.Sh=null,this.xh=null,this.Ch=null,this.yh=[],this.Cs=s,this.Ph=i;const r=new _t(this);this.ps=[r],this.er=new st(r,this,t),Wt.includes(this.Ph)&&(this.Sh=new at(this)),this.kh(),this.ih=n(this,this.Qt(),e)}m(){null!==this.Ch&&clearTimeout(this.Ch)}Ve(t){return this.Cs.priceLineColor||t}ye(t){const i={Pe:!0},s=this.Ft();if(this.Qt().It().Zi()||s.Zi()||this.Yt.Zi())return i;const n=this.Qt().It().Ce(),e=this.Bt();if(null===n||null===e)return i;let r,h;if(t){const t=this.Yt.Ir();if(null===t)return i;r=t,h=t.Te}else{const t=this.Yt.Nr(n.Mi(),-1);if(null===t)return i;if(r=this.Yt.Pr(t.Te),null===r)return i;h=t.Te}const l=r.Wt[3],a=this.Th().Rr(h,{Wt:r}),o=s.Nt(l,e.Wt);return{Pe:!1,gt:l,ri:s.Gi(l,e.Wt),Le:s.Rh(l),Oe:s.Dh(l,e.Wt),R:a.ur,zi:o,Te:h}}Th(){return null!==this.xh||(this.xh=new gt(this)),this.xh}N(){return this.Cs}rr(t){const i=t.priceScaleId;void 0!==i&&i!==this.Cs.priceScaleId&&this.Qt().Eh(this,i),_(this.Cs,t),void 0!==t.priceFormat&&(this.kh(),this.Qt().Vh()),this.Qt().zh(this),this.Qt().Ih(),this.ih.Pt("options")}ht(t,i){this.Yt.ht(t),this.ih.Pt("data"),null!==this.Sh&&(i&&i.Ah?this.Sh.be():0===t.length&&this.Sh.ge());const s=this.Qt().Wn(this);this.Qt().Bh(s),this.Qt().zh(this),this.Qt().Ih(),this.Qt().hr()}Lh(t){const i=new vt(this,t);return this.bh.push(i),this.Qt().zh(this),i}Oh(t){const i=this.bh.indexOf(t);-1!==i&&this.bh.splice(i,1),this.Qt().zh(this)}Nh(){return this.bh}Tr(){return this.Ph}Bt(){const t=this.Fh();return null===t?null:{Wt:t.Wt[3],Wh:t.wt}}Fh(){const t=this.Qt().It().Ce();if(null===t)return null;const i=t.Hh();return this.Yt.Nr(i,1)}Zs(){return this.Yt}$h(t){const i=this.Yt.Pr(t);return null===i?null:"Bar"===this.Ph||"Candlestick"===this.Ph||"Custom"===this.Ph?{Uh:i.Wt[0],jh:i.Wt[1],Yh:i.Wt[2],Xh:i.Wt[3]}:i.Wt[3]}Zh(t){const i=[];Lt(this.yh,Ot,"top",i);const s=this.Sh;return null!==s&&s.Et()?(null===this.Ch&&s.Se()&&(this.Ch=setTimeout((()=>{this.Ch=null,this.Qt().qh()}),0)),s.Me(),i.unshift(s),i):i}Ns(){const t=[];this.Gh()||t.push(this.Mh),t.push(this.ih,this.nr);const i=this.bh.map((t=>t.lr()));return t.push(...i),Lt(this.yh,Ot,"normal",t),t}Kh(){return this.Jh(Ot,"bottom")}Qh(t){return this.Jh(Nt,t)}tl(t){return this.Jh(Ft,t)}il(t,i){return this.yh.map((s=>s.Yn(t,i))).filter((t=>null!==t))}_s(){return[this.er,...this.bh.map((t=>t.ar()))]}Fs(t,i){if(i!==this.es&&!this.Gh())return[];const s=[...this.ps];for(const t of this.bh)s.push(t._r());return this.yh.forEach((t=>{s.push(...t.Fs())})),s}us(){const t=[];return this.yh.forEach((i=>{t.push(...i.us())})),t}gh(t,i){if(void 0!==this.Cs.autoscaleInfoProvider){const s=this.Cs.autoscaleInfoProvider((()=>{const s=this.sl(t,i);return null===s?null:s.Ze()}));return dt.qe(s)}return this.sl(t,i)}nl(){return this.Cs.priceFormat.minMove}el(){return this.rl}Os(){this.ih.Pt();for(const t of this.ps)t.Pt();for(const t of this.bh)t.Pt();this.nr.Pt(),this.Mh.Pt(),this.Sh?.Pt(),this.yh.forEach((t=>t.Os()))}Ft(){return l(super.Ft())}At(t){if(!(("Line"===this.Ph||"Area"===this.Ph||"Baseline"===this.Ph)&&this.Cs.crosshairMarkerVisible))return null;const i=this.Yt.Pr(t);if(null===i)return null;return{gt:i.Wt[3],ft:this.hl(),Ht:this.ll(),Ot:this.al(),Lt:this.ol(t)}}ze(){return this.Cs.title}Et(){return this.Cs.visible}_l(t){this.yh.push(new Bt(t,this))}ul(t){this.yh=this.yh.filter((i=>i.ah()!==t))}cl(){if("Custom"===this.Ph)return t=>this.ih.dl(t)}fl(){if("Custom"===this.Ph)return t=>this.ih.pl(t)}vl(){return this.Yt.Ur()}Gh(){return!Y(this.Ft().ml())}sl(t,i){if(!c(t)||!c(i)||this.Yt.Zi())return null;const s="Line"===this.Ph||"Area"===this.Ph||"Baseline"===this.Ph||"Histogram"===this.Ph?[3]:[2,1],n=this.Yt.Hr(t,i,s);let e=null!==n?new ct(n.Kr,n.Jr):null,r=null;if("Histogram"===this.Tr()){const t=this.Cs.base,i=new ct(t,t);e=null!==e?e.pn(i):i}return this.yh.forEach((s=>{const n=s.gh(t,i);if(n?.priceRange){const t=new ct(n.priceRange.minValue,n.priceRange.maxValue);e=null!==e?e.pn(t):t}n?.margins&&(r=n.margins)})),new dt(e,r)}hl(){switch(this.Ph){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerRadius}return 0}ll(){switch(this.Ph){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}al(){switch(this.Ph){case"Line":case"Area":case"Baseline":return this.Cs.crosshairMarkerBorderWidth}return 0}ol(t){switch(this.Ph){case"Line":case"Area":case"Baseline":{const t=this.Cs.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Th().Rr(t).ur}kh(){switch(this.Cs.priceFormat.type){case"custom":this.rl={format:this.Cs.priceFormat.formatter};break;case"volume":this.rl=new J(this.Cs.priceFormat.precision);break;case"percent":this.rl=new K(this.Cs.priceFormat.precision);break;default:{const t=Math.pow(10,this.Cs.priceFormat.precision);this.rl=new G(t,this.Cs.priceFormat.minMove*t)}}null!==this.es&&this.es.wl()}Jh(t,i){const s=[];return Lt(this.yh,t,i,s),s}}const $t=[3],Ut=[0,1,2,3];class jt{constructor(t){this.Cs=t}gl(t,i,s){let n=t;if(0===this.Cs.mode)return n;const e=s.Ps(),r=e.Bt();if(null===r)return n;const h=e.Nt(t,r),l=s.bl().filter((t=>t instanceof Ht)).reduce(((t,n)=>{if(s.Hn(n)||!n.Et())return t;const e=n.Ft(),r=n.Zs();if(e.Zi()||!r.ke(i))return t;const h=r.Pr(i);if(null===h)return t;const l=a(n.Bt()),o=3===this.Cs.mode?Ut:$t;return t.concat(o.map((t=>e.Nt(h.Wt[t],l.Wt))))}),[]);if(0===l.length)return n;l.sort(((t,i)=>Math.abs(t-h)-Math.abs(i-h)));const o=l[0];return n=e.ks(o,r),n}}function Yt(t,i,s){return Math.min(Math.max(t,i),s)}function Xt(t,i,s){return i-t<=s}class Zt extends y{constructor(){super(...arguments),this.Yt=null}ht(t){this.Yt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.Yt)return;const r=Math.max(1,Math.floor(s));t.lineWidth=r,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,(()=>{const h=l(this.Yt);if(h.Ml){t.strokeStyle=h.Sl,n(t,h.xl),t.beginPath();for(const n of h.Cl){const e=Math.round(n.yl*s);t.moveTo(e,-r),t.lineTo(e,i.height+r)}t.stroke()}if(h.Pl){t.strokeStyle=h.kl,n(t,h.Tl),t.beginPath();for(const s of h.Rl){const n=Math.round(s.yl*e);t.moveTo(-r,n),t.lineTo(i.width+r,n)}t.stroke()}}))}}class qt{constructor(t){this.Kt=new Zt,this.xt=!0,this.yt=t}Pt(){this.xt=!0}Tt(){if(this.xt){const t=this.yt.Qt().N().grid,i={Pl:t.horzLines.visible,Ml:t.vertLines.visible,kl:t.horzLines.color,Sl:t.vertLines.color,Tl:t.horzLines.style,xl:t.vertLines.style,Rl:this.yt.Ps().Dl(),Cl:(this.yt.Qt().It().Dl()||[]).map((t=>({yl:t.coord})))};this.Kt.ht(i),this.xt=!1}return this.Kt}}class Gt{constructor(t){this.ih=new qt(t)}lr(){return this.ih}}const Kt={El:4,Vl:1e-4};function Jt(t,i){const s=100*(t-i)/i;return i<0?-s:s}function Qt(t,i){const s=Jt(t.$e(),i),n=Jt(t.Ue(),i);return new ct(s,n)}function ti(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function ii(t,i){const s=ti(t.$e(),i),n=ti(t.Ue(),i);return new ct(s,n)}function si(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.log10(s+i.Vl)+i.El;return t<0?-n:n}function ni(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.pow(10,s-i.El)-i.Vl;return t<0?-n:n}function ei(t,i){if(null===t)return null;const s=si(t.$e(),i),n=si(t.Ue(),i);return new ct(s,n)}function ri(t,i){if(null===t)return null;const s=ni(t.$e(),i),n=ni(t.Ue(),i);return new ct(s,n)}function hi(t){if(null===t)return Kt;const i=Math.abs(t.Ue()-t.$e());if(i>=1||i<1e-15)return Kt;const s=Math.ceil(Math.abs(Math.log10(i))),n=Kt.El+s;return{El:n,Vl:1/Math.pow(10,n)}}class li{constructor(t,i){if(this.zl=t,this.Il=i,function(t){if(t<0)return!1;for(let i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.zl))this.Al=[2,2.5,2];else{this.Al=[];for(let t=this.zl;1!==t;){if(t%2==0)this.Al.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.Al.push(2,2.5),t/=5}if(this.Al.length>100)throw new Error("something wrong with base")}}}Bl(t,i,s){const n=0===this.zl?0:1/this.zl;let e=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),r=0,h=this.Il[0];for(;;){const t=Xt(e,n,1e-14)&&e>n+1e-14,i=Xt(e,s*h,1e-14),l=Xt(e,1,1e-14);if(!(t&&i&&l))break;e/=h,h=this.Il[++r%this.Il.length]}if(e<=n+1e-14&&(e=n),e=Math.max(1,e),this.Al.length>0&&(l=e,a=1,o=1e-14,Math.abs(l-a)n+1e-14;)e/=h,h=this.Al[++r%this.Al.length];var l,a,o;return e}}class ai{constructor(t,i,s,n){this.Ll=[],this.Yi=t,this.zl=i,this.Ol=s,this.Nl=n}Bl(t,i){if(t=n?1:-1;let _=null,u=0;for(let c=s-a;c>n;c-=i){const s=this.Nl(c,t,!0);null!==_&&Math.abs(s-_)r||(u0&&h[0].yl-l.yl0&&a.yl-h[h.length-1].yll(t.hs())-l(i.hs())))}var _i;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(_i||(_i={}));const ui=new K,ci=new G(100,1);class di{constructor(t,i,s,n,e){this.Ql=0,this.ta=null,this.Ge=null,this.ia=null,this.sa={na:!1,ea:null},this.ra=!1,this.ha=0,this.la=0,this.aa=new o,this.oa=new o,this._a=[],this.ua=null,this.ca=null,this.da=null,this.fa=null,this.pa=null,this.rl=ci,this.va=hi(null),this.ma=t,this.Cs=i,this.wa=s,this.ga=n,this.ba=e,this.Ma=new ai(this,100,this.Sa.bind(this),this.xa.bind(this))}ml(){return this.ma}N(){return this.Cs}rr(t){if(_(this.Cs,t),this.wl(),void 0!==t.mode&&this.Ca({te:t.mode}),void 0!==t.scaleMargins){const i=h(t.scaleMargins.top),s=h(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(s<0||s>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${s}`);if(i+s>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+s}`);this.ya(),this.da=null}}Pa(){return this.Cs.autoScale}ka(){return this.ra}Gl(){return 1===this.Cs.mode}Be(){return 2===this.Cs.mode}Ta(){return 3===this.Cs.mode}Jl(){return this.va}te(){return{tn:this.Cs.autoScale,Ra:this.Cs.invertScale,te:this.Cs.mode}}Ca(t){const i=this.te();let s=null;void 0!==t.tn&&(this.Cs.autoScale=t.tn),void 0!==t.te&&(this.Cs.mode=t.te,2!==t.te&&3!==t.te||(this.Cs.autoScale=!0),this.sa.na=!1),1===i.te&&t.te!==i.te&&(!function(t,i){if(null===t)return!1;const s=ni(t.$e(),i),n=ni(t.Ue(),i);return isFinite(s)&&isFinite(n)}(this.Ge,this.va)?this.Cs.autoScale=!0:(s=ri(this.Ge,this.va),null!==s&&this.Da(s))),1===t.te&&t.te!==i.te&&(s=ei(this.Ge,this.va),null!==s&&this.Da(s));const n=i.te!==this.Cs.mode;n&&(2===i.te||this.Be())&&this.wl(),n&&(3===i.te||this.Ta())&&this.wl(),void 0!==t.Ra&&i.Ra!==t.Ra&&(this.Cs.invertScale=t.Ra,this.Ea()),this.oa.p(i,this.te())}Va(){return this.oa}P(){return this.wa.fontSize}Ut(){return this.Ql}za(t){this.Ql!==t&&(this.Ql=t,this.ya(),this.da=null)}Ia(){if(this.ta)return this.ta;const t=this.Ut()-this.Aa()-this.Ba();return this.ta=t,t}Je(){return this.La(),this.Ge}Da(t,i){const s=this.Ge;(i||null===s&&null!==t||null!==s&&!s.We(t))&&(this.da=null,this.Ge=t)}Oa(t){this.Da(t),this.Na(null!==t)}Zi(){return this.La(),0===this.Ql||!this.Ge||this.Ge.Zi()}Fa(t){return this.Ra()?t:this.Ut()-1-t}Nt(t,i){return this.Be()?t=Jt(t,i):this.Ta()&&(t=ti(t,i)),this.xa(t,i)}Wa(t,i,s){this.La();const n=this.Ba(),e=l(this.Je()),r=e.$e(),h=e.Ue(),a=this.Ia()-1,o=this.Ra(),_=a/(h-r),u=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.Ha();for(let s=u;st.Os()))}Ul(){return this.Cs.ensureEdgeTickMarksVisible&&this.Pa()}Yl(){return this.P()/2}wl(){this.da=null;let t=1/0;this.ua=null;for(const i of this._a)i.hs()si(t,this.va):null}uo(t,i,s){return void 0===i?(void 0===s&&(s=this.el()),s.format(t)):i(t)}sr(t,i){return this.uo(t,this.ga.priceFormatter,i)}lo(t,i){return this.uo(t,this.ga.percentageFormatter,i)}}function fi(t){return t instanceof Ht}class pi{constructor(t,i){this._a=[],this.co=new Map,this.Ql=0,this.do=0,this.fo=1e3,this.ca=null,this.po=new o,this.yh=[],this._h=t,this.ts=i,this.vo=new Gt(this);const s=i.N();this.mo=this.wo("left",s.leftPriceScale),this.bo=this.wo("right",s.rightPriceScale),this.mo.Va().i(this.Mo.bind(this,this.mo),this),this.bo.Va().i(this.Mo.bind(this,this.bo),this),this.So(s)}So(t){if(t.leftPriceScale&&this.mo.rr(t.leftPriceScale),t.rightPriceScale&&this.bo.rr(t.rightPriceScale),t.localization&&(this.mo.wl(),this.bo.wl()),t.overlayPriceScales){const i=Array.from(this.co.values());for(const s of i){const i=l(s[0].Ft());i.rr(t.overlayPriceScales),t.localization&&i.wl()}}}xo(t){switch(t){case"left":return this.mo;case"right":return this.bo}return this.co.has(t)?h(this.co.get(t))[0].Ft():null}m(){this.Qt().Co().u(this),this.mo.Va().u(this),this.bo.Va().u(this),this._a.forEach((t=>{t.m&&t.m()})),this.yh=this.yh.filter((t=>{const i=t.ah();return i.detached&&i.detached(),!1})),this.po.p()}yo(){return this.fo}Po(t){this.fo=t}Qt(){return this.ts}Qi(){return this.do}Ut(){return this.Ql}ko(t){this.do=t,this.To()}za(t){this.Ql=t,this.mo.za(t),this.bo.za(t),this._a.forEach((i=>{if(this.Hn(i)){const s=i.Ft();null!==s&&s.za(t)}})),this.To()}Ro(){return this._a.filter(fi)}bl(){return this._a}Hn(t){const i=t.Ft();return null===i||this.mo!==i&&this.bo!==i}qa(t,i,s){this.Do(t,i,s?t.hs():this._a.length)}Ka(t,i){const s=this._a.indexOf(t);r(-1!==s,"removeDataSource: invalid data source"),this._a.splice(s,1),i||this._a.forEach(((t,i)=>t.ls(i)));const n=l(t.Ft()).ml();if(this.co.has(n)){const i=h(this.co.get(n)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.co.delete(n))}const e=t.Ft();e&&e.bl().indexOf(t)>=0&&(e.Ka(t),this.Eo(e)),this.ca=null}Un(t){return t===this.mo?"left":t===this.bo?"right":"overlay"}Vo(){return this.mo}zo(){return this.bo}Io(t,i){t.io(i)}Ao(t,i){t.so(i),this.To()}Bo(t){t.no()}Lo(t,i){t.eo(i)}Oo(t,i){t.ro(i),this.To()}No(t){t.ho()}To(){this._a.forEach((t=>{t.Os()}))}Ps(){let t=null;return this.ts.N().rightPriceScale.visible&&0!==this.bo.bl().length?t=this.bo:this.ts.N().leftPriceScale.visible&&0!==this.mo.bl().length?t=this.mo:0!==this._a.length&&(t=this._a[0].Ft()),null===t&&(t=this.bo),t}$n(){let t=null;return this.ts.N().rightPriceScale.visible?t=this.bo:this.ts.N().leftPriceScale.visible&&(t=this.mo),t}Eo(t){null!==t&&t.Pa()&&this.Fo(t)}Wo(t){const i=this._h.Ce();t.Ca({tn:!0}),null!==i&&t.oo(i),this.To()}Ho(){this.Fo(this.mo),this.Fo(this.bo)}$o(){this.Eo(this.mo),this.Eo(this.bo),this._a.forEach((t=>{this.Hn(t)&&this.Eo(t.Ft())})),this.To(),this.ts.hr()}Dt(){return null===this.ca&&(this.ca=oi(this._a)),this.ca}Uo(t,i){i=Yt(i,0,this._a.length-1);const s=this._a.indexOf(t);r(-1!==s,"setSeriesOrder: invalid data source"),this._a.splice(s,1),this._a.splice(i,0,t),this._a.forEach(((t,i)=>t.ls(i))),this.ca=null;for(const t of[this.mo,this.bo])t.Ga(),t.wl();this.ts.hr()}Vt(){return this.Dt().filter(fi)}jo(){return this.po}Yo(){return this.vo}_l(t){this.yh.push(new Dt(t))}ul(t){this.yh=this.yh.filter((i=>i.ah()!==t)),t.detached&&t.detached(),this.ts.hr()}Xo(){return this.yh}il(t,i){return this.yh.map((s=>s.Yn(t,i))).filter((t=>null!==t))}Fo(t){const i=t.ao();if(i&&i.length>0&&!this._h.Zi()){const i=this._h.Ce();null!==i&&t.oo(i)}t.Os()}Do(t,i,s){let n=this.xo(i);if(null===n&&(n=this.wo(i,this.ts.N().overlayPriceScales)),this._a.splice(s,0,t),!Y(i)){const s=this.co.get(i)||[];s.push(t),this.co.set(i,s)}t.ls(s),n.qa(t),t.os(n),this.Eo(n),this.ca=null}Mo(t,i,s){i.te!==s.te&&this.Fo(t)}wo(t,i){const s={visible:!0,autoScale:!0,...p(i)},n=new di(t,s,this.ts.N().layout,this.ts.N().localization,this.ts.qi());return n.za(this.Ut()),n}}function vi(t){return{Zo:t.Zo,qo:{Xn:t.Go.externalId},Ko:t.Go.cursorStyle}}function mi(t,i,s,n){for(const e of t){const t=e.Tt(n);if(null!==t&&t.Yn){const n=t.Yn(i,s);if(null!==n)return{Jo:e,qo:n}}}return null}function wi(t){return void 0!==t.Ns}function gi(t,i,s){const n=[t,...t.Dt()],e=function(t,i,s){let n,e;for(const l of t){const t=l.il?.(i,s)??[];for(const i of t)r=i.zOrder,h=n?.zOrder,(!h||"top"===r&&"top"!==h||"normal"===r&&"bottom"===h)&&(n=i,e=l)}var r,h;return n&&e?{Go:n,Zo:e}:null}(n,i,s);if("top"===e?.Go.zOrder)return vi(e);for(const r of n){if(e&&e.Zo===r&&"bottom"!==e.Go.zOrder&&!e.Go.isBackground)return vi(e);if(wi(r)){const n=mi(r.Ns(t),i,s,t);if(null!==n)return{Zo:r,Jo:n.Jo,qo:n.qo}}if(e&&e.Zo===r&&"bottom"!==e.Go.zOrder&&e.Go.isBackground)return vi(e)}return e?.Go?vi(e):null}class bi{constructor(t,i,s=50){this.yn=0,this.Pn=1,this.kn=1,this.Rn=new Map,this.Tn=new Map,this.Qo=t,this.t_=i,this.Dn=s}i_(t){const i=t.time,s=this.t_.cacheKey(i),n=this.Rn.get(s);if(void 0!==n)return n.s_;if(this.yn===this.Dn){const t=this.Tn.get(this.kn);this.Tn.delete(this.kn),this.Rn.delete(h(t)),this.kn++,this.yn--}const e=this.Qo(t);return this.Rn.set(s,{s_:e,In:this.Pn}),this.Tn.set(this.Pn,s),this.yn++,this.Pn++,e}}class Mi{constructor(t,i){r(t<=i,"right should be >= left"),this.n_=t,this.e_=i}Hh(){return this.n_}Mi(){return this.e_}r_(){return this.e_-this.n_+1}ke(t){return this.n_<=t&&t<=this.e_}We(t){return this.n_===t.Hh()&&this.e_===t.Mi()}}function Si(t,i){return null===t||null===i?t===i:t.We(i)}class xi{constructor(){this.h_=new Map,this.Rn=null,this.l_=!1}a_(t){this.l_=t,this.Rn=null}o_(t,i){this.__(i),this.Rn=null;for(let s=i;s{t<=s[0].index?i.push(n):s.splice(Mt(s,t,(i=>i.index!i||s.has(t.index);for(const i of Array.from(this.h_.keys()).sort(((t,i)=>i-t))){if(!this.h_.get(i))continue;const s=n;n=[];const r=s.length;let l=0;const a=h(this.h_.get(i)),o=a.length;let _=1/0,u=-1/0;for(let i=0;i=t&&o-u>=t&&e(h))n.push(h),u=o;else if(this.l_)return s}for(;li.weight?t:i}class Pi{constructor(t,i,s,n){this.do=0,this.b_=null,this.M_=[],this.pa=null,this.fa=null,this.S_=new xi,this.x_=new Map,this.C_=Ci.g_(),this.y_=!0,this.P_=new o,this.k_=new o,this.T_=new o,this.R_=null,this.D_=null,this.E_=new Map,this.V_=-1,this.z_=[],this.Cs=i,this.ga=s,this.I_=i.rightOffset,this.A_=i.barSpacing,this.ts=t,this.t_=n,this.B_(),this.S_.a_(i.uniformDistribution),this.L_()}N(){return this.Cs}O_(t){_(this.ga,t),this.N_(),this.B_()}rr(t,i){_(this.Cs,t),this.Cs.fixLeftEdge&&this.F_(),this.Cs.fixRightEdge&&this.W_(),void 0!==t.barSpacing&&this.ts.cn(t.barSpacing),void 0!==t.rightOffset&&this.ts.dn(t.rightOffset),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ts.cn(t.barSpacing??this.A_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.Cs.ignoreWhitespaceIndices&&this.L_(),this.N_(),this.B_(),this.T_.p()}Ts(t){return this.M_[t]?.time??null}ss(t){return this.M_[t]??null}H_(t,i){if(this.M_.length<1)return null;if(this.t_.key(t)>this.t_.key(this.M_[this.M_.length-1].time))return i?this.M_.length-1:null;const s=Mt(this.M_,this.t_.key(t),((t,i)=>this.t_.key(t.time)0}Ce(){return this.j_(),this.C_.m_()}Y_(){return this.j_(),this.C_.w_()}X_(){const t=this.Ce();if(null===t)return null;const i={from:t.Hh(),to:t.Mi()};return this.Z_(i)}Z_(t){const i=Math.round(t.from),s=Math.round(t.to),n=l(this.q_()),e=l(this.G_());return{from:l(this.ss(Math.max(n,i))),to:l(this.ss(Math.min(e,s)))}}K_(t){return{from:l(this.H_(t.from,!0)),to:l(this.H_(t.to,!0))}}Qi(){return this.do}ko(t){if(!isFinite(t)||t<=0)return;if(this.do===t)return;const i=this.Y_(),s=this.do;if(this.do=t,this.y_=!0,this.Cs.lockVisibleTimeRangeOnResize&&0!==s){const i=this.A_*t/s;this.A_=i}if(this.Cs.fixLeftEdge&&null!==i&&i.Hh()<=0){const i=s-t;this.I_-=Math.round(i/this.A_)+1,this.y_=!0}this.J_(),this.Q_()}jt(t){if(this.Zi()||!c(t))return 0;const i=this.tu()+this.I_-t;return this.do-(i+.5)*this.A_-1}iu(t,i){const s=this.tu(),n=void 0===i?0:i.from,e=void 0===i?t.length:i.to;for(let i=n;ii/2&&!_?s.needAlignCoordinate=!1:s.needAlignCoordinate=u&&t.index<=a||c&&t.index>=o,d++}return this.z_.length=d,this.D_=this.z_,this.z_}cu(){this.y_=!0,this.cn(this.Cs.barSpacing),this.dn(this.Cs.rightOffset)}du(t){this.y_=!0,this.b_=t,this.Q_(),this.F_()}fu(t,i){const s=this.nu(t),n=this.lu(),e=n+i*(n/10);this.cn(e),this.Cs.rightBarStaysOnScroll||this.dn(this.ou()+(s-this.nu(t)))}io(t){this.pa&&this.ho(),null===this.fa&&null===this.R_&&(this.Zi()||(this.fa=t,this.pu()))}so(t){if(null===this.R_)return;const i=Yt(this.do-t,0,this.do),s=Yt(this.do-l(this.fa),0,this.do);0!==i&&0!==s&&this.cn(this.R_.lu*i/s)}no(){null!==this.fa&&(this.fa=null,this.vu())}eo(t){null===this.pa&&null===this.R_&&(this.Zi()||(this.pa=t,this.pu()))}ro(t){if(null===this.pa)return;const i=(this.pa-t)/this.lu();this.I_=l(this.R_).ou+i,this.y_=!0,this.Q_()}ho(){null!==this.pa&&(this.pa=null,this.vu())}mu(){this.wu(this.Cs.rightOffset)}wu(t,i=400){if(!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this.I_,n=performance.now();this.ts.an({gu:t=>(t-n)/i>=1,bu:e=>{const r=(e-n)/i;return r>=1?t:s+(t-s)*r}})}Pt(t,i){this.y_=!0,this.M_=t,this.S_.o_(t,i),this.Q_()}Mu(){return this.P_}Su(){return this.k_}xu(){return this.T_}tu(){return this.b_||0}Cu(t){const i=t.r_();this.au(this.do/i),this.I_=t.Mi()-this.tu(),this.Q_(),this.y_=!0,this.ts.hu(),this.ts.hr()}yu(){const t=this.q_(),i=this.G_();null!==t&&null!==i&&this.Cu(new Mi(t,i+this.Cs.rightOffset))}Pu(t){const i=new Mi(t.from,t.to);this.Cu(i)}ns(t){return void 0!==this.ga.timeFormatter?this.ga.timeFormatter(t.originalTime):this.t_.formatHorzItem(t.time)}L_(){if(!this.Cs.ignoreWhitespaceIndices)return;this.E_.clear();const t=this.ts.Ys();for(const i of t)for(const t of i.vl())this.E_.set(t,!0);this.V_++}_u(){const t=this.ts.N().handleScroll,i=this.ts.N().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}q_(){return 0===this.M_.length?null:0}G_(){return 0===this.M_.length?null:this.M_.length-1}ku(t){return(this.do-1-t)/this.A_}nu(t){const i=this.ku(t),s=this.tu()+this.I_-i;return Math.round(1e6*s)/1e6}au(t){const i=this.A_;this.A_=t,this.J_(),i!==this.A_&&(this.y_=!0,this.Tu())}j_(){if(!this.y_)return;if(this.y_=!1,this.Zi())return void this.Ru(Ci.g_());const t=this.tu(),i=this.do/this.A_,s=this.I_+t,n=new Mi(s-i+1,s);this.Ru(new Ci(n))}J_(){const t=Yt(this.A_,this.Du(),this.Eu());this.A_!==t&&(this.A_=t,this.y_=!0)}Eu(){return this.Cs.maxBarSpacing>0?this.Cs.maxBarSpacing:.5*this.do}Du(){return this.Cs.fixLeftEdge&&this.Cs.fixRightEdge&&0!==this.M_.length?this.do/this.M_.length:this.Cs.minBarSpacing}Q_(){const t=this.Vu();null!==t&&this.I_i&&(this.I_=i,this.y_=!0)}Vu(){const t=this.q_(),i=this.b_;if(null===t||null===i)return null;return t-i-1+(this.Cs.fixLeftEdge?this.do/this.A_:Math.min(2,this.M_.length))}zu(){return this.Cs.fixRightEdge?0:this.do/this.A_-Math.min(2,this.M_.length)}pu(){this.R_={lu:this.lu(),ou:this.ou()}}vu(){this.R_=null}uu(t){let i=this.x_.get(t.weight);return void 0===i&&(i=new bi((t=>this.Iu(t)),this.t_),this.x_.set(t.weight,i)),i.i_(t)}Iu(t){return this.t_.formatTickmark(t,this.ga)}Ru(t){const i=this.C_;this.C_=t,Si(i.m_(),this.C_.m_())||this.P_.p(),Si(i.w_(),this.C_.w_())||this.k_.p(),this.Tu()}Tu(){this.D_=null}N_(){this.Tu(),this.x_.clear()}B_(){this.t_.updateFormatter(this.ga)}F_(){if(!this.Cs.fixLeftEdge)return;const t=this.q_();if(null===t)return;const i=this.Ce();if(null===i)return;const s=i.Hh()-t;if(s<0){const t=this.I_-s-1;this.dn(t)}this.J_()}W_(){this.Q_(),this.J_()}eu(t){return!this.Cs.ignoreWhitespaceIndices||(this.E_.get(t)||!1)}ru(t){const i=function*(t){const i=Math.round(t),s=is)break}return t}}var ki,Ti,Ri,Di,Ei;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(ki||(ki={}));class Vi{constructor(t,i,s){this.Au=[],this.Bu=[],this.do=0,this.Lu=null,this.Ou=new o,this.Nu=new o,this.Fu=null,this.Wu=t,this.Cs=i,this.t_=s,this.ba=new x(this.Cs.layout.colorParsers),this.Hu=new b(this),this._h=new Pi(this,i.timeScale,this.Cs.localization,s),this.Ct=new j(this,i.crosshair),this.$u=new jt(i.crosshair),this.Uu(0),this.Au[0].Po(2e3),this.ju=this.Yu(0),this.Xu=this.Yu(1)}Vh(){this.Zu(X.wn())}hr(){this.Zu(X.mn())}qh(){this.Zu(new X(1))}zh(t){const i=this.qu(t);this.Zu(i)}Gu(){return this.Lu}Ku(t){if(this.Lu?.Zo===t?.Zo&&this.Lu?.qo?.Xn===t?.qo?.Xn)return;const i=this.Lu;this.Lu=t,null!==i&&this.zh(i.Zo),null!==t&&t.Zo!==i?.Zo&&this.zh(t.Zo)}N(){return this.Cs}rr(t){_(this.Cs,t),this.Au.forEach((i=>i.So(t))),void 0!==t.timeScale&&this._h.rr(t.timeScale),void 0!==t.localization&&this._h.O_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Ou.p(),this.ju=this.Yu(0),this.Xu=this.Yu(1),this.Vh()}Ju(t,i,s=0){const n=this.Au[s];if(void 0===n)return;if("left"===t)return _(this.Cs,{leftPriceScale:i}),n.So({leftPriceScale:i}),this.Ou.p(),void this.Vh();if("right"===t)return _(this.Cs,{rightPriceScale:i}),n.So({rightPriceScale:i}),this.Ou.p(),void this.Vh();const e=this.Qu(t,s);null!==e&&(e.Ft.rr(i),this.Ou.p())}Qu(t,i){const s=this.Au[i];if(void 0===s)return null;const n=s.xo(t);return null!==n?{Hs:s,Ft:n}:null}It(){return this._h}$s(){return this.Au}tc(){return this.Ct}sc(){return this.Nu}nc(t,i){t.za(i),this.hu()}ko(t){this.do=t,this._h.ko(this.do),this.Au.forEach((i=>i.ko(t))),this.hu()}ec(t){1!==this.Au.length&&(r(t>=0&&t=0&&tt+i.yo()),0),e=this.Au.reduce(((t,i)=>t+i.Ut()),0),h=e-30*(this.Au.length-1);i=Math.min(h,Math.max(30,i));const l=n/e,a=s.Ut();s.Po(i*l);let o=i-a,_=this.Au.length-1;for(const t of this.Au)if(t!==s){const i=Math.min(h,Math.max(30,t.Ut()-o/_));o-=t.Ut()-i,_-=1;const s=i*l;t.Po(s)}this.Vh()}hc(t,i){r(t>=0&&t=0&&ithis.t_.key(e),a=null!==t&&t>r&&!l,o=this._h.N().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||o)&&this._h.N().shiftVisibleRangeOnNewBar;if(a&&!_){const i=t-r;this._h.dn(this._h.ou()-i)}}this._h.du(t)}Bh(t){null!==t&&t.$o()}Wn(t){if(function(t){return t instanceof pi}(t))return t;const i=this.Au.find((i=>i.Dt().includes(t)));return void 0===i?null:i}hu(){this.Au.forEach((t=>t.$o())),this.Ih()}m(){this.Au.forEach((t=>t.m())),this.Au.length=0,this.Cs.localization.priceFormatter=void 0,this.Cs.localization.percentageFormatter=void 0,this.Cs.localization.timeFormatter=void 0}Mc(){return this.Hu}jn(){return this.Hu.N()}Co(){return this.Ou}Sc(t,i){const s=this.Uu(i);this.xc(t,s),this.Bu.push(t),1===this.Bu.length?this.Vh():this.hr()}Cc(t){const i=this.Wn(t),s=this.Bu.indexOf(t);r(-1!==s,"Series not found");const n=l(i);this.Bu.splice(s,1),n.Ka(t),t.m&&t.m(),this._h.L_(),this.yc(n)}Eh(t,i){const s=l(this.Wn(t));s.Ka(t,!0),s.qa(t,i,!0)}yu(){const t=X.mn();t.en(),this.Zu(t)}Pc(t){const i=X.mn();i.ln(t),this.Zu(i)}un(){const t=X.mn();t.un(),this.Zu(t)}cn(t){const i=X.mn();i.cn(t),this.Zu(i)}dn(t){const i=X.mn();i.dn(t),this.Zu(i)}an(t){const i=X.mn();i.an(t),this.Zu(i)}rn(){const t=X.mn();t.rn(),this.Zu(t)}kc(){return this.Cs.rightPriceScale.visible?"right":"left"}Tc(t,i){r(i>=0,"Index should be greater or equal to 0");if(i===this.Rc(t))return;const s=l(this.Wn(t));s.Ka(t);const n=this.Uu(i);this.xc(t,n),0===s.bl().length&&this.yc(s)}Dc(){return this.Xu}U(){return this.ju}$t(t){const i=this.Xu,s=this.ju;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Fu||this.Fu.vr!==s||this.Fu.mr!==i)this.Fu={vr:s,mr:i,Ec:new Map};else{const i=this.Fu.Ec.get(t);if(void 0!==i)return i}const n=this.ba.tt(s,i,t/100);return this.Fu.Ec.set(t,n),n}Vc(t){return this.Au.indexOf(t)}qi(){return this.ba}Uu(t){if(r(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.Au.length,t))i.Ro().includes(t)))}lc(t,i){const s=new X(i);if(null!==t){const n=this.Au.indexOf(t);s.Js(n,{Qs:i})}return s}qu(t,i){return void 0===i&&(i=2),this.lc(this.Wn(t),i)}Zu(t){this.Wu&&this.Wu(t),this.Au.forEach((t=>t.Yo().lr().Pt()))}xc(t,i){const s=t.N().priceScaleId,n=void 0!==s?s:this.kc();i.qa(t,n),Y(n)||t.rr(t.N())}Yu(t){const i=this.Cs.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}yc(t){0===t.bl().length&&this.Au.length>1&&(this.Au.splice(this.Vc(t),1),this.Vh())}}function zi(t){return!u(t)&&!d(t)}function Ii(t){return u(t)}!function(t){t[t.Disabled=0]="Disabled",t[t.Continuous=1]="Continuous",t[t.OnDataUpdate=2]="OnDataUpdate"}(Ti||(Ti={})),function(t){t[t.LastBar=0]="LastBar",t[t.LastVisible=1]="LastVisible"}(Ri||(Ri={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(Di||(Di={})),function(t){t[t.Year=0]="Year",t[t.Month=1]="Month",t[t.DayOfMonth=2]="DayOfMonth",t[t.Time=3]="Time",t[t.TimeWithSeconds=4]="TimeWithSeconds"}(Ei||(Ei={}));const Ai=t=>t.getUTCFullYear();function Bi(t,i,s){return i.replace(/yyyy/g,(t=>q(Ai(t),4))(t)).replace(/yy/g,(t=>q(Ai(t)%100,2))(t)).replace(/MMMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"long"}))(t,s)).replace(/MMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"short"}))(t,s)).replace(/MM/g,(t=>q((t=>t.getUTCMonth()+1)(t),2))(t)).replace(/dd/g,(t=>q((t=>t.getUTCDate())(t),2))(t))}class Li{constructor(t="yyyy-MM-dd",i="default"){this.zc=t,this.Ic=i}i_(t){return Bi(t,this.zc,this.Ic)}}class Oi{constructor(t){this.Ac=t||"%h:%m:%s"}i_(t){return this.Ac.replace("%h",q(t.getUTCHours(),2)).replace("%m",q(t.getUTCMinutes(),2)).replace("%s",q(t.getUTCSeconds(),2))}}const Ni={Bc:"yyyy-MM-dd",Lc:"%h:%m:%s",Oc:" ",Nc:"default"};class Fi{constructor(t={}){const i={...Ni,...t};this.Fc=new Li(i.Bc,i.Nc),this.Wc=new Oi(i.Lc),this.Hc=i.Oc}i_(t){return`${this.Fc.i_(t)}${this.Hc}${this.Wc.i_(t)}`}}function Wi(t){return 60*t*60*1e3}function Hi(t){return 60*t*1e3}const $i=[{$c:(Ui=1,1e3*Ui),Uc:10},{$c:Hi(1),Uc:20},{$c:Hi(5),Uc:21},{$c:Hi(30),Uc:22},{$c:Wi(1),Uc:30},{$c:Wi(3),Uc:31},{$c:Wi(6),Uc:32},{$c:Wi(12),Uc:33}];var Ui;function ji(t,i){if(t.getUTCFullYear()!==i.getUTCFullYear())return 70;if(t.getUTCMonth()!==i.getUTCMonth())return 60;if(t.getUTCDate()!==i.getUTCDate())return 50;for(let s=$i.length-1;s>=0;--s)if(Math.floor(i.getTime()/$i[s].$c)!==Math.floor(t.getTime()/$i[s].$c))return $i[s].Uc;return 0}function Yi(t){let i=t;if(d(t)&&(i=Zi(t)),!zi(i))throw new Error("time must be of type BusinessDay");const s=new Date(Date.UTC(i.year,i.month-1,i.day,0,0,0,0));return{jc:Math.round(s.getTime()/1e3),Yc:i}}function Xi(t){if(!Ii(t))throw new Error("time must be of type isUTCTimestamp");return{jc:t}}function Zi(t){const i=new Date(t);if(isNaN(i.getTime()))throw new Error(`Invalid date string=${t}, expected format=yyyy-mm-dd`);return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function qi(t){d(t.time)&&(t.time=Zi(t.time))}class Gi{options(){return this.Cs}setOptions(t){this.Cs=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(qi)}(t):qi(t)}createConverterToInternalObj(t){return l(function(t){return 0===t.length?null:zi(t[0].time)||d(t[0].time)?Yi:Xi}(t))}key(t){return"object"==typeof t&&"jc"in t?t.jc:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.Yc?new Date(1e3*i.jc).getTime():new Date(Date.UTC(i.Yc.year,i.Yc.month-1,i.Yc.day)).getTime()}convertHorzItemToInternal(t){return Ii(i=t)?Xi(i):zi(i)?Yi(i):Yi(Zi(i));var i}updateFormatter(t){if(!this.Cs)return;const i=t.dateFormat;this.Cs.timeScale.timeVisible?this.Xc=new Fi({Bc:i,Lc:this.Cs.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Oc:" ",Nc:t.locale}):this.Xc=new Li(i,t.locale)}formatHorzItem(t){const i=t;return this.Xc.i_(new Date(1e3*i.jc))}formatTickmark(t,i){const s=function(t,i,s){switch(t){case 0:case 10:return i?s?4:3:2;case 20:case 21:case 22:case 30:case 31:case 32:case 33:return i?3:2;case 50:return 2;case 60:return 1;case 70:return 0}}(t.weight,this.Cs.timeScale.timeVisible,this.Cs.timeScale.secondsVisible),n=this.Cs.timeScale;if(void 0!==n.tickMarkFormatter){const e=n.tickMarkFormatter(t.originalTime,s,i.locale);if(null!==e)return e}return function(t,i,s){const n={};switch(i){case 0:n.year="numeric";break;case 1:n.month="short";break;case 2:n.day="numeric";break;case 3:n.hour12=!1,n.hour="2-digit",n.minute="2-digit";break;case 4:n.hour12=!1,n.hour="2-digit",n.minute="2-digit",n.second="2-digit"}const e=void 0===t.Yc?new Date(1e3*t.jc):new Date(Date.UTC(t.Yc.year,t.Yc.month-1,t.Yc.day));return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()).toLocaleString(s,n)}(t.time,s,i.locale)}maxTickMarkWeight(t){let i=t.reduce(yi,t[0]).weight;return i>30&&i<50&&(i=30),i}fillWeightsForPoints(t,i){!function(t,i=0){if(0===t.length)return;let s=0===i?null:t[i-1].time.jc,n=null!==s?new Date(1e3*s):null,e=0;for(let r=i;r1){const i=Math.ceil(e/(t.length-1)),s=new Date(1e3*(t[0].time.jc-i));t[0].timeWeight=ji(new Date(1e3*t[0].time.jc),s)}}(t,i)}static Zc(t){return _({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}function Ki(t){var i=t.width,s=t.height;if(i<0)throw new Error("Negative width is not allowed for Size");if(s<0)throw new Error("Negative height is not allowed for Size");return{width:i,height:s}}function Ji(t,i){return t.width===i.width&&t.height===i.height}var Qi=function(){function t(t){var i=this;this._resolutionListener=function(){return i._onResolutionChanged()},this._resolutionMediaQueryList=null,this._observers=[],this._window=t,this._installResolutionListener()}return t.prototype.dispose=function(){this._uninstallResolutionListener(),this._window=null},Object.defineProperty(t.prototype,"value",{get:function(){return this._window.devicePixelRatio},enumerable:!1,configurable:!0}),t.prototype.subscribe=function(t){var i=this,s={next:t};return this._observers.push(s),{unsubscribe:function(){i._observers=i._observers.filter((function(t){return t!==s}))}}},t.prototype._installResolutionListener=function(){if(null!==this._resolutionMediaQueryList)throw new Error("Resolution listener is already installed");var t=this._window.devicePixelRatio;this._resolutionMediaQueryList=this._window.matchMedia("all and (resolution: ".concat(t,"dppx)")),this._resolutionMediaQueryList.addListener(this._resolutionListener)},t.prototype._uninstallResolutionListener=function(){null!==this._resolutionMediaQueryList&&(this._resolutionMediaQueryList.removeListener(this._resolutionListener),this._resolutionMediaQueryList=null)},t.prototype._reinstallResolutionListener=function(){this._uninstallResolutionListener(),this._installResolutionListener()},t.prototype._onResolutionChanged=function(){var t=this;this._observers.forEach((function(i){return i.next(t._window.devicePixelRatio)})),this._reinstallResolutionListener()},t}();var ts=function(){function t(t,i,s){var n;this._canvasElement=null,this._bitmapSizeChangedListeners=[],this._suggestedBitmapSize=null,this._suggestedBitmapSizeChangedListeners=[],this._devicePixelRatioObservable=null,this._canvasElementResizeObserver=null,this._canvasElement=t,this._canvasElementClientSize=Ki({width:this._canvasElement.clientWidth,height:this._canvasElement.clientHeight}),this._transformBitmapSize=null!=i?i:function(t){return t},this._allowResizeObserver=null===(n=null==s?void 0:s.allowResizeObserver)||void 0===n||n,this._chooseAndInitObserver()}return t.prototype.dispose=function(){var t,i;if(null===this._canvasElement)throw new Error("Object is disposed");null===(t=this._canvasElementResizeObserver)||void 0===t||t.disconnect(),this._canvasElementResizeObserver=null,null===(i=this._devicePixelRatioObservable)||void 0===i||i.dispose(),this._devicePixelRatioObservable=null,this._suggestedBitmapSizeChangedListeners.length=0,this._bitmapSizeChangedListeners.length=0,this._canvasElement=null},Object.defineProperty(t.prototype,"canvasElement",{get:function(){if(null===this._canvasElement)throw new Error("Object is disposed");return this._canvasElement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canvasElementClientSize",{get:function(){return this._canvasElementClientSize},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bitmapSize",{get:function(){return Ki({width:this.canvasElement.width,height:this.canvasElement.height})},enumerable:!1,configurable:!0}),t.prototype.resizeCanvasElement=function(t){this._canvasElementClientSize=Ki(t),this.canvasElement.style.width="".concat(this._canvasElementClientSize.width,"px"),this.canvasElement.style.height="".concat(this._canvasElementClientSize.height,"px"),this._invalidateBitmapSize()},t.prototype.subscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners=this._bitmapSizeChangedListeners.filter((function(i){return i!==t}))},Object.defineProperty(t.prototype,"suggestedBitmapSize",{get:function(){return this._suggestedBitmapSize},enumerable:!1,configurable:!0}),t.prototype.subscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners=this._suggestedBitmapSizeChangedListeners.filter((function(i){return i!==t}))},t.prototype.applySuggestedBitmapSize=function(){if(null!==this._suggestedBitmapSize){var t=this._suggestedBitmapSize;this._suggestedBitmapSize=null,this._resizeBitmap(t),this._emitSuggestedBitmapSizeChanged(t,this._suggestedBitmapSize)}},t.prototype._resizeBitmap=function(t){var i=this.bitmapSize;Ji(i,t)||(this.canvasElement.width=t.width,this.canvasElement.height=t.height,this._emitBitmapSizeChanged(i,t))},t.prototype._emitBitmapSizeChanged=function(t,i){var s=this;this._bitmapSizeChangedListeners.forEach((function(n){return n.call(s,t,i)}))},t.prototype._suggestNewBitmapSize=function(t){var i=this._suggestedBitmapSize,s=Ki(this._transformBitmapSize(t,this._canvasElementClientSize)),n=Ji(this.bitmapSize,s)?null:s;null===i&&null===n||null!==i&&null!==n&&Ji(i,n)||(this._suggestedBitmapSize=n,this._emitSuggestedBitmapSizeChanged(i,n))},t.prototype._emitSuggestedBitmapSizeChanged=function(t,i){var s=this;this._suggestedBitmapSizeChangedListeners.forEach((function(n){return n.call(s,t,i)}))},t.prototype._chooseAndInitObserver=function(){var t=this;this._allowResizeObserver?new Promise((function(t){var i=new ResizeObserver((function(s){t(s.every((function(t){return"devicePixelContentBoxSize"in t}))),i.disconnect()}));i.observe(document.body,{box:"device-pixel-content-box"})})).catch((function(){return!1})).then((function(i){return i?t._initResizeObserver():t._initDevicePixelRatioObservable()})):this._initDevicePixelRatioObservable()},t.prototype._initDevicePixelRatioObservable=function(){var t=this;if(null!==this._canvasElement){var i=is(this._canvasElement);if(null===i)throw new Error("No window is associated with the canvas");this._devicePixelRatioObservable=function(t){return new Qi(t)}(i),this._devicePixelRatioObservable.subscribe((function(){return t._invalidateBitmapSize()})),this._invalidateBitmapSize()}},t.prototype._invalidateBitmapSize=function(){var t,i;if(null!==this._canvasElement){var s=is(this._canvasElement);if(null!==s){var n=null!==(i=null===(t=this._devicePixelRatioObservable)||void 0===t?void 0:t.value)&&void 0!==i?i:s.devicePixelRatio,e=this._canvasElement.getClientRects(),r=void 0!==e[0]?function(t,i){return Ki({width:Math.round(t.left*i+t.width*i)-Math.round(t.left*i),height:Math.round(t.top*i+t.height*i)-Math.round(t.top*i)})}(e[0],n):Ki({width:this._canvasElementClientSize.width*n,height:this._canvasElementClientSize.height*n});this._suggestNewBitmapSize(r)}}},t.prototype._initResizeObserver=function(){var t=this;null!==this._canvasElement&&(this._canvasElementResizeObserver=new ResizeObserver((function(i){var s=i.find((function(i){return i.target===t._canvasElement}));if(s&&s.devicePixelContentBoxSize&&s.devicePixelContentBoxSize[0]){var n=s.devicePixelContentBoxSize[0],e=Ki({width:n.inlineSize,height:n.blockSize});t._suggestNewBitmapSize(e)}})),this._canvasElementResizeObserver.observe(this._canvasElement,{box:"device-pixel-content-box"}))},t}();function is(t){return t.ownerDocument.defaultView}var ss=function(){function t(t,i,s){if(0===i.width||0===i.height)throw new TypeError("Rendering target could only be created on a media with positive width and height");if(this._mediaSize=i,0===s.width||0===s.height)throw new TypeError("Rendering target could only be created using a bitmap with positive integer width and height");this._bitmapSize=s,this._context=t}return t.prototype.useMediaCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),this._context.scale(this._horizontalPixelRatio,this._verticalPixelRatio),t({context:this._context,mediaSize:this._mediaSize})}finally{this._context.restore()}},t.prototype.useBitmapCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),t({context:this._context,mediaSize:this._mediaSize,bitmapSize:this._bitmapSize,horizontalPixelRatio:this._horizontalPixelRatio,verticalPixelRatio:this._verticalPixelRatio})}finally{this._context.restore()}},Object.defineProperty(t.prototype,"_horizontalPixelRatio",{get:function(){return this._bitmapSize.width/this._mediaSize.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_verticalPixelRatio",{get:function(){return this._bitmapSize.height/this._mediaSize.height},enumerable:!1,configurable:!0}),t}();function ns(t,i){var s=t.canvasElementClientSize;if(0===s.width||0===s.height)return null;var n=t.bitmapSize;if(0===n.width||0===n.height)return null;var e=t.canvasElement.getContext("2d",i);return null===e?null:new ss(e,s,n)}const es="undefined"!=typeof window;function rs(){return!!es&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function hs(){return!!es&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function ls(t){return t+t%2}function as(t){es&&void 0!==window.chrome&&t.addEventListener("mousedown",(t=>{if(1===t.button)return t.preventDefault(),!1}))}class os{constructor(t,i,s){this.qc=0,this.Gc=null,this.Kc={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.Jc=0,this.Qc=null,this.td={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.sd=null,this.nd=!1,this.ed=null,this.rd=null,this.hd=!1,this.ld=!1,this.ad=!1,this.od=null,this._d=null,this.ud=null,this.dd=null,this.fd=null,this.pd=null,this.vd=null,this.md=0,this.wd=!1,this.gd=!1,this.bd=!1,this.Md=0,this.Sd=null,this.xd=!hs(),this.Cd=t=>{this.yd(t)},this.Pd=t=>{if(this.kd(t)){const i=this.Td(t);if(++this.Jc,this.Qc&&this.Jc>1){const{Rd:s}=this.Dd(cs(t),this.td);s<30&&!this.ad&&this.Ed(i,this.zd.Vd),this.Id()}}else{const i=this.Td(t);if(++this.qc,this.Gc&&this.qc>1){const{Rd:s}=this.Dd(cs(t),this.Kc);s<5&&!this.ld&&this.Ad(i,this.zd.Bd),this.Ld()}}},this.Od=t,this.zd=i,this.Cs=s,this.Nd()}m(){null!==this.od&&(this.od(),this.od=null),null!==this._d&&(this._d(),this._d=null),null!==this.dd&&(this.dd(),this.dd=null),null!==this.fd&&(this.fd(),this.fd=null),null!==this.pd&&(this.pd(),this.pd=null),null!==this.ud&&(this.ud(),this.ud=null),this.Fd(),this.Ld()}Wd(t){this.dd&&this.dd();const i=this.Hd.bind(this);if(this.dd=()=>{this.Od.removeEventListener("mousemove",i)},this.Od.addEventListener("mousemove",i),this.kd(t))return;const s=this.Td(t);this.Ad(s,this.zd.$d),this.xd=!0}Ld(){null!==this.Gc&&clearTimeout(this.Gc),this.qc=0,this.Gc=null,this.Kc={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}Id(){null!==this.Qc&&clearTimeout(this.Qc),this.Jc=0,this.Qc=null,this.td={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}Hd(t){if(this.bd||null!==this.rd)return;if(this.kd(t))return;const i=this.Td(t);this.Ad(i,this.zd.Ud),this.xd=!0}jd(t){const i=fs(t.changedTouches,l(this.Sd));if(null===i)return;if(this.Md=ds(t),null!==this.vd)return;if(this.gd)return;this.wd=!0;const s=this.Dd(cs(i),l(this.rd)),{Yd:n,Xd:e,Rd:r}=s;if(this.hd||!(r<5)){if(!this.hd){const t=.5*n,i=e>=t&&!this.Cs.Zd(),s=t>e&&!this.Cs.qd();i||s||(this.gd=!0),this.hd=!0,this.ad=!0,this.Fd(),this.Id()}if(!this.gd){const s=this.Td(t,i);this.Ed(s,this.zd.Gd),us(t)}}}Kd(t){if(0!==t.button)return;const i=this.Dd(cs(t),l(this.ed)),{Rd:s}=i;if(s>=5&&(this.ld=!0,this.Ld()),this.ld){const i=this.Td(t);this.Ad(i,this.zd.Jd)}}Dd(t,i){const s=Math.abs(i._t-t._t),n=Math.abs(i.ut-t.ut);return{Yd:s,Xd:n,Rd:s+n}}Qd(t){let i=fs(t.changedTouches,l(this.Sd));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Sd=null,this.Md=ds(t),this.Fd(),this.rd=null,this.pd&&(this.pd(),this.pd=null);const s=this.Td(t,i);if(this.Ed(s,this.zd.tf),++this.Jc,this.Qc&&this.Jc>1){const{Rd:t}=this.Dd(cs(i),this.td);t<30&&!this.ad&&this.Ed(s,this.zd.Vd),this.Id()}else this.ad||(this.Ed(s,this.zd.if),this.zd.if&&us(t));0===this.Jc&&us(t),0===t.touches.length&&this.nd&&(this.nd=!1,us(t))}yd(t){if(0!==t.button)return;const i=this.Td(t);if(this.ed=null,this.bd=!1,this.fd&&(this.fd(),this.fd=null),rs()){this.Od.ownerDocument.documentElement.removeEventListener("mouseleave",this.Cd)}if(!this.kd(t))if(this.Ad(i,this.zd.sf),++this.qc,this.Gc&&this.qc>1){const{Rd:s}=this.Dd(cs(t),this.Kc);s<5&&!this.ld&&this.Ad(i,this.zd.Bd),this.Ld()}else this.ld||this.Ad(i,this.zd.nf)}Fd(){null!==this.sd&&(clearTimeout(this.sd),this.sd=null)}ef(t){if(null!==this.Sd)return;const i=t.changedTouches[0];this.Sd=i.identifier,this.Md=ds(t);const s=this.Od.ownerDocument.documentElement;this.ad=!1,this.hd=!1,this.gd=!1,this.rd=cs(i),this.pd&&(this.pd(),this.pd=null);{const i=this.jd.bind(this),n=this.Qd.bind(this);this.pd=()=>{s.removeEventListener("touchmove",i),s.removeEventListener("touchend",n)},s.addEventListener("touchmove",i,{passive:!1}),s.addEventListener("touchend",n,{passive:!1}),this.Fd(),this.sd=setTimeout(this.rf.bind(this,t),240)}const n=this.Td(t,i);this.Ed(n,this.zd.hf),this.Qc||(this.Jc=0,this.Qc=setTimeout(this.Id.bind(this),500),this.td=cs(i))}lf(t){if(0!==t.button)return;const i=this.Od.ownerDocument.documentElement;rs()&&i.addEventListener("mouseleave",this.Cd),this.ld=!1,this.ed=cs(t),this.fd&&(this.fd(),this.fd=null);{const t=this.Kd.bind(this),s=this.yd.bind(this);this.fd=()=>{i.removeEventListener("mousemove",t),i.removeEventListener("mouseup",s)},i.addEventListener("mousemove",t),i.addEventListener("mouseup",s)}if(this.bd=!0,this.kd(t))return;const s=this.Td(t);this.Ad(s,this.zd.af),this.Gc||(this.qc=0,this.Gc=setTimeout(this.Ld.bind(this),500),this.Kc=cs(t))}Nd(){this.Od.addEventListener("mouseenter",this.Wd.bind(this)),this.Od.addEventListener("touchcancel",this.Fd.bind(this));{const t=this.Od.ownerDocument,i=t=>{this.zd._f&&(t.composed&&this.Od.contains(t.composedPath()[0])||t.target&&this.Od.contains(t.target)||this.zd._f())};this._d=()=>{t.removeEventListener("touchstart",i)},this.od=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}hs()&&(this.ud=()=>{this.Od.removeEventListener("dblclick",this.Pd)},this.Od.addEventListener("dblclick",this.Pd)),this.Od.addEventListener("mouseleave",this.uf.bind(this)),this.Od.addEventListener("touchstart",this.ef.bind(this),{passive:!0}),as(this.Od),this.Od.addEventListener("mousedown",this.lf.bind(this)),this.cf(),this.Od.addEventListener("touchmove",(()=>{}),{passive:!1})}cf(){void 0===this.zd.df&&void 0===this.zd.ff&&void 0===this.zd.pf||(this.Od.addEventListener("touchstart",(t=>this.vf(t.touches)),{passive:!0}),this.Od.addEventListener("touchmove",(t=>{if(2===t.touches.length&&null!==this.vd&&void 0!==this.zd.ff){const i=_s(t.touches[0],t.touches[1])/this.md;this.zd.ff(this.vd,i),us(t)}}),{passive:!1}),this.Od.addEventListener("touchend",(t=>{this.vf(t.touches)})))}vf(t){1===t.length&&(this.wd=!1),2!==t.length||this.wd||this.nd?this.mf():this.wf(t)}wf(t){const i=this.Od.getBoundingClientRect()||{left:0,top:0};this.vd={_t:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ut:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.md=_s(t[0],t[1]),void 0!==this.zd.df&&this.zd.df(),this.Fd()}mf(){null!==this.vd&&(this.vd=null,void 0!==this.zd.pf&&this.zd.pf())}uf(t){if(this.dd&&this.dd(),this.kd(t))return;if(!this.xd)return;const i=this.Td(t);this.Ad(i,this.zd.gf),this.xd=!hs()}rf(t){const i=fs(t.touches,l(this.Sd));if(null===i)return;const s=this.Td(t,i);this.Ed(s,this.zd.bf),this.ad=!0,this.nd=!0}kd(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:ds(t){"touchstart"!==t.type&&us(t)}}}}function _s(t,i){const s=t.clientX-i.clientX,n=t.clientY-i.clientY;return Math.sqrt(s*s+n*n)}function us(t){t.cancelable&&t.preventDefault()}function cs(t){return{_t:t.pageX,ut:t.pageY}}function ds(t){return t.timeStamp||performance.now()}function fs(t,i){for(let s=0;s!1,qd:()=>!0}),this.yf={Hf:s,Wf:t}}Af(){this.If.style.background=this.Rf.N().layout.panes.separatorColor}$f(t){null!==this.yf&&(this.yf.Hf.style.backgroundColor=this.Rf.N().layout.panes.separatorHoverColor)}Uf(t){null!==this.yf&&null===this.Tf&&(this.yf.Hf.style.backgroundColor="")}jf(t){if(null===this.yf)return;const i=this.Df.Zf().yo()+this.Vf.Zf().yo(),s=i/(this.Df.Of().height+this.Vf.Of().height),n=30*s;i<=2*n||(this.Tf={qf:t.pageY,Gf:this.Df.Zf().yo(),Kf:i-n,Jf:i,Qf:s,tp:n},this.yf.Wf.style.display="block")}Yf(t){const i=this.Tf;if(null===i)return;const s=(t.pageY-i.qf)*i.Qf,n=Yt(i.Gf+s,i.tp,i.Kf);this.Df.Zf().Po(n),this.Vf.Zf().Po(i.Jf-n),this.Rf.Qt().Vh()}Xf(t){null!==this.Tf&&null!==this.yf&&(this.Tf=null,this.yf.Wf.style.display="none")}}function vs(t,i){return t.ip-i.ip}function ms(t,i,s){const n=(t.ip-i.ip)/(t.wt-i.wt);return Math.sign(n)*Math.min(Math.abs(n),s)}class ws{constructor(t,i,s,n){this.sp=null,this.np=null,this.ep=null,this.rp=null,this.hp=null,this.lp=0,this.ap=0,this.op=t,this._p=i,this.up=s,this.gn=n}cp(t,i){if(null!==this.sp){if(this.sp.wt===i)return void(this.sp.ip=t);if(Math.abs(this.sp.ip-t)50)return;let s=0;const n=ms(this.sp,this.np,this._p),e=vs(this.sp,this.np),r=[n],h=[e];if(s+=e,null!==this.ep){const t=ms(this.np,this.ep,this._p);if(Math.sign(t)===Math.sign(n)){const i=vs(this.np,this.ep);if(r.push(t),h.push(i),s+=i,null!==this.rp){const t=ms(this.ep,this.rp,this._p);if(Math.sign(t)===Math.sign(n)){const i=vs(this.ep,this.rp);r.push(t),h.push(i),s+=i}}}}let l=0;for(let t=0;t160?"dark":"light"}Sp(){return this.wp.N().layout.attributionLogo}Cp(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}gp(){this.Mp()&&(this.bp(),this.fs=this.Sp(),this.fs&&(this.vp=this.xp(),this.pp=document.createElement("style"),this.pp.innerText="a#tv-attr-logo{--fill:#131722;--stroke:#fff;position:absolute;left:10px;bottom:10px;height:19px;width:35px;margin:0;padding:0;border:0;z-index:3;}a#tv-attr-logo[data-dark]{--fill:#D1D4DC;--stroke:#131722;}",this.fp=document.createElement("a"),this.fp.href=`https://www.tradingview.com/?utm_medium=lwc-link&utm_campaign=lwc-chart${this.Cp()}`,this.fp.title="Charting by TradingView",this.fp.id="tv-attr-logo",this.fp.target="_blank",this.fp.innerHTML='',this.fp.toggleAttribute("data-dark","dark"===this.vp),this.mp.appendChild(this.pp),this.mp.appendChild(this.fp)))}}function bs(t,i){const s=l(t.ownerDocument).createElement("canvas");t.appendChild(s);const n=new ts(s,(e={options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})}).transform,e.options);var e;return n.resizeCanvasElement(i),n}function Ms(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function Ss(t,i,s,n){t.th&&t.th(i,s,n)}function xs(t,i,s,n){t.nt(i,s,n)}function Cs(t,i,s,n){const e=t(s,n);for(const t of e){const s=t.Tt(n);null!==s&&i(s)}}function ys(t,i){return s=>{if(!function(t){return void 0!==t.Ft}(s))return[];return(s.Ft()?.ml()??"")!==i?[]:s.Qh?.(t)??[]}}function Ps(t,i,s,n){if(!t.length)return;let e=0;const r=t[0].Ut(n,!0);let h=1===i?s/2-(t[0].Fi()-r/2):t[0].Fi()-r/2-s/2;h=Math.max(0,h);for(let r=1;ru-o:_s)&&h>0){const n=1===i?-1-r:r-s,l=Math.min(n,h);for(let s=e;s{this.Dp||this.yt.Vp().Qt().hr()},this.zp=()=>{this.Dp||this.yt.Vp().Qt().hr()},this.yt=t,this.Cs=i,this.wa=i.layout,this.Hu=s,this.Ip="left"===n,this.Ap=ys("normal",n),this.Bp=ys("top",n),this.Lp=ys("bottom",n),this.If=document.createElement("div"),this.If.style.height="100%",this.If.style.overflow="hidden",this.If.style.width="25px",this.If.style.left="0",this.If.style.position="relative",this.Op=bs(this.If,Ki({width:16,height:16})),this.Op.subscribeSuggestedBitmapSizeChanged(this.Ep);const e=this.Op.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Np=bs(this.If,Ki({width:16,height:16})),this.Np.subscribeSuggestedBitmapSizeChanged(this.zp);const r=this.Np.canvasElement;r.style.position="absolute",r.style.zIndex="2",r.style.left="0",r.style.top="0";const h={af:this.jf.bind(this),hf:this.jf.bind(this),Jd:this.Yf.bind(this),Gd:this.Yf.bind(this),_f:this.Fp.bind(this),sf:this.Xf.bind(this),tf:this.Xf.bind(this),Bd:this.Wp.bind(this),Vd:this.Wp.bind(this),$d:this.Hp.bind(this),gf:this.Uf.bind(this)};this.Pf=new os(this.Np.canvasElement,h,{Zd:()=>!this.Cs.handleScroll.vertTouchDrag,qd:()=>!0})}m(){this.Pf.m(),this.Np.unsubscribeSuggestedBitmapSizeChanged(this.zp),Ms(this.Np.canvasElement),this.Np.dispose(),this.Op.unsubscribeSuggestedBitmapSizeChanged(this.Ep),Ms(this.Op.canvasElement),this.Op.dispose(),null!==this.Yi&&this.Yi.Qa().u(this),this.Yi=null}Lf(){return this.If}P(){return this.wa.fontSize}$p(){const t=this.Hu.N();return this.Tp!==t.k&&(this.kp.En(),this.Tp=t.k),t}Up(){if(null===this.Yi)return 0;let t=0;const i=this.$p(),s=l(this.Op.canvasElement.getContext("2d",{colorSpace:this.yt.Vp().N().layout.colorSpace}));s.save();const n=this.Yi.Dl();s.font=this.jp(),n.length>0&&(t=Math.max(this.kp.Ei(s,n[0].Zl),this.kp.Ei(s,n[n.length-1].Zl)));const e=this.Yp();for(let i=e.length;i--;){const n=this.kp.Ei(s,e[i].ri());n>t&&(t=n)}const r=this.Yi.Bt();if(null!==r&&null!==this.yp&&(2!==(h=this.Cs.crosshair).mode&&h.horzLine.visible&&h.horzLine.labelVisible)){const i=this.Yi.ks(1,r),n=this.Yi.ks(this.yp.height-2,r);t=Math.max(t,this.kp.Ei(s,this.Yi.Gi(Math.floor(Math.min(i,n))+.11111111111111,r)),this.kp.Ei(s,this.Yi.Gi(Math.ceil(Math.max(i,n))-.11111111111111,r)))}var h;s.restore();const a=t||34;return ls(Math.ceil(i.S+i.C+i.I+i.A+5+a))}Xp(t){null!==this.yp&&Ji(this.yp,t)||(this.yp=t,this.Dp=!0,this.Op.resizeCanvasElement(t),this.Np.resizeCanvasElement(t),this.Dp=!1,this.If.style.width=`${t.width}px`,this.If.style.height=`${t.height}px`)}Zp(){return l(this.yp).width}os(t){this.Yi!==t&&(null!==this.Yi&&this.Yi.Qa().u(this),this.Yi=t,t.Qa().i(this.aa.bind(this),this))}Ft(){return this.Yi}En(){const t=this.yt.Zf();this.yt.Vp().Qt().Wo(t,l(this.Ft()))}qp(t){if(null===this.yp)return;const i={colorSpace:this.yt.Vp().N().layout.colorSpace};if(1!==t){this.Gp(),this.Op.applySuggestedBitmapSize();const t=ns(this.Op,i);null!==t&&(t.useBitmapCoordinateSpace((t=>{this.Kp(t),this.Jp(t)})),this.yt.Qp(t,this.Lp),this.tv(t),this.yt.Qp(t,this.Ap),this.iv(t))}this.Np.applySuggestedBitmapSize();const s=ns(this.Np,i);null!==s&&(s.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.sv(s),this.yt.Qp(s,this.Bp))}Nf(){return this.Op.bitmapSize}Ff(t,i,s){const n=this.Nf();n.width>0&&n.height>0&&t.drawImage(this.Op.canvasElement,i,s)}Pt(){this.Yi?.Dl()}jf(t){if(null===this.Yi||this.Yi.Zi()||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.yt.Vp().Qt(),s=this.yt.Zf();this.Pp=!0,i.Io(s,this.Yi,t.localY)}Yf(t){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.yt.Vp().Qt(),s=this.yt.Zf(),n=this.Yi;i.Ao(s,n,t.localY)}Fp(){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const t=this.yt.Vp().Qt(),i=this.yt.Zf(),s=this.Yi;this.Pp&&(this.Pp=!1,t.Bo(i,s))}Xf(t){if(null===this.Yi||!this.Cs.handleScale.axisPressedMouseMove.price)return;const i=this.yt.Vp().Qt(),s=this.yt.Zf();this.Pp=!1,i.Bo(s,this.Yi)}Wp(t){this.Cs.handleScale.axisDoubleClickReset.price&&this.En()}Hp(t){if(null===this.Yi)return;!this.yt.Vp().Qt().N().handleScale.axisPressedMouseMove.price||this.Yi.Be()||this.Yi.Ta()||this.nv(1)}Uf(t){this.nv(0)}Yp(){const t=[],i=null===this.Yi?void 0:this.Yi;return(s=>{for(let n=0;n{t.fillStyle=s.borderColor;const l=Math.max(1,Math.floor(h)),a=Math.floor(.5*h),o=Math.round(n.C*r);t.beginPath();for(const s of i)t.rect(Math.floor(e*r),Math.round(s.yl*h)-a,o,l);t.fill()})),t.useMediaCoordinateSpace((({context:t})=>{t.font=this.jp(),t.fillStyle=s.textColor??this.wa.textColor,t.textAlign=this.Ip?"right":"left",t.textBaseline="middle";const r=this.Ip?Math.round(e-n.I):Math.round(e+n.C+n.I),h=i.map((i=>this.kp.Di(t,i.Zl)));for(let s=i.length;s--;){const n=i[s];t.fillText(n.Zl,r,n.yl+h[s])}}))}Gp(){if(null===this.yp||null===this.Yi)return;let t=this.yp.height/2;const i=[],s=this.Yi.Dt().slice(),n=this.yt.Zf(),e=this.$p();this.Yi===n.$n()&&this.yt.Zf().Dt().forEach((t=>{n.Hn(t)&&s.push(t)}));const r=this.Yi.bl()[0],h=this.Yi;s.forEach((s=>{const e=s.Fs(n,h);e.forEach((t=>{t.Wi(null),t.Hi()&&i.push(t)})),r===s&&e.length>0&&(t=e[0].zi())})),i.forEach((t=>t.Wi(t.zi())));this.Yi.N().alignLabels&&this.ev(i,e,t)}ev(t,i,s){if(null===this.yp)return;const n=t.filter((t=>t.zi()<=s)),e=t.filter((t=>t.zi()>s));n.sort(((t,i)=>i.zi()-t.zi())),n.length&&e.length&&e.push(n[0]),e.sort(((t,i)=>t.zi()-i.zi()));for(const s of t){const t=Math.floor(s.Ut(i)/2),n=s.zi();n>-t&&nthis.yp.height-t&&n{if(i.$i()){i.Tt(l(this.Yi)).nt(t,s,this.kp,n)}}))}sv(t){if(null===this.yp||null===this.Yi)return;const i=this.yt.Vp().Qt(),s=[],n=this.yt.Zf(),e=i.tc().Fs(n,this.Yi);e.length&&s.push(e);const r=this.$p(),h=this.Ip?"right":"left";s.forEach((i=>{i.forEach((i=>{i.Tt(l(this.Yi)).nt(t,r,this.kp,h)}))}))}nv(t){this.If.style.cursor=1===t?"ns-resize":"default"}aa(){const t=this.Up();this.Rp{this.Dp||null===this.wv||this.ts().hr()},this.zp=()=>{this.Dp||null===this.wv||this.ts().hr()},this.wp=t,this.wv=i,this.wv.jo().i(this.gv.bind(this),this,!0),this.bv=document.createElement("td"),this.bv.style.padding="0",this.bv.style.position="relative";const s=document.createElement("div");s.style.width="100%",s.style.height="100%",s.style.position="relative",s.style.overflow="hidden",this.Mv=document.createElement("td"),this.Mv.style.padding="0",this.Sv=document.createElement("td"),this.Sv.style.padding="0",this.bv.appendChild(s),this.Op=bs(s,Ki({width:16,height:16})),this.Op.subscribeSuggestedBitmapSizeChanged(this.Ep);const n=this.Op.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Np=bs(s,Ki({width:16,height:16})),this.Np.subscribeSuggestedBitmapSizeChanged(this.zp);const e=this.Np.canvasElement;e.style.position="absolute",e.style.zIndex="2",e.style.left="0",e.style.top="0",this.zf=document.createElement("tr"),this.zf.appendChild(this.Mv),this.zf.appendChild(this.bv),this.zf.appendChild(this.Sv),this.xv(),this.Pf=new os(this.Np.canvasElement,this,{Zd:()=>null===this.fv&&!this.wp.N().handleScroll.vertTouchDrag,qd:()=>null===this.fv&&!this.wp.N().handleScroll.horzTouchDrag})}m(){null!==this.rv&&this.rv.m(),null!==this.hv&&this.hv.m(),this.lv=null,this.Np.unsubscribeSuggestedBitmapSizeChanged(this.zp),Ms(this.Np.canvasElement),this.Np.dispose(),this.Op.unsubscribeSuggestedBitmapSizeChanged(this.Ep),Ms(this.Op.canvasElement),this.Op.dispose(),null!==this.wv&&(this.wv.jo().u(this),this.wv.m()),this.Pf.m()}Zf(){return l(this.wv)}Cv(t){null!==this.wv&&this.wv.jo().u(this),this.wv=t,null!==this.wv&&this.wv.jo().i(Vs.prototype.gv.bind(this),this,!0),this.xv(),this.wp.Ef().indexOf(this)===this.wp.Ef().length-1?(this.lv=this.lv??new gs(this.bv,this.wp),this.lv.Pt()):(this.lv?.bp(),this.lv=null)}Vp(){return this.wp}Lf(){return this.zf}xv(){if(null!==this.wv&&(this.yv(),0!==this.ts().Ys().length)){if(null!==this.rv){const t=this.wv.Vo();this.rv.os(l(t))}if(null!==this.hv){const t=this.wv.zo();this.hv.os(l(t))}}}Pv(){null!==this.rv&&this.rv.Pt(),null!==this.hv&&this.hv.Pt()}yo(){return null!==this.wv?this.wv.yo():0}Po(t){this.wv&&this.wv.Po(t)}$d(t){if(!this.wv)return;this.kv();const i=t.localX,s=t.localY;this.Tv(i,s,t)}af(t){this.kv(),this.Rv(),this.Tv(t.localX,t.localY,t)}Ud(t){if(!this.wv)return;this.kv();const i=t.localX,s=t.localY;this.Tv(i,s,t)}nf(t){null!==this.wv&&(this.kv(),this.Dv(t))}Bd(t){null!==this.wv&&this.Ev(this.uv,t)}Vd(t){this.Bd(t)}Jd(t){this.kv(),this.Vv(t),this.Tv(t.localX,t.localY,t)}sf(t){null!==this.wv&&(this.kv(),this.dv=!1,this.zv(t))}if(t){null!==this.wv&&this.Dv(t)}bf(t){if(this.dv=!0,null===this.fv){const i={x:t.localX,y:t.localY};this.Iv(i,i,t)}}gf(t){null!==this.wv&&(this.kv(),this.wv.Qt().Ku(null),this.Av())}Bv(){return this._v}Lv(){return this.uv}df(){this.cv=1,this.ts().rn()}ff(t,i){if(!this.wp.N().handleScale.pinch)return;const s=5*(i-this.cv);this.cv=i,this.ts().oc(t._t,s)}hf(t){this.dv=!1,this.pv=null!==this.fv,this.Rv();const i=this.ts().tc();null!==this.fv&&i.Et()&&(this.vv={x:i.si(),y:i.ni()},this.fv={x:t.localX,y:t.localY})}Gd(t){if(null===this.wv)return;const i=t.localX,s=t.localY;if(null===this.fv)this.Vv(t);else{this.pv=!1;const n=l(this.vv),e=n.x+(i-this.fv.x),r=n.y+(s-this.fv.y);this.Tv(e,r,t)}}tf(t){0===this.Vp().N().trackingMode.exitMode&&(this.pv=!0),this.Ov(),this.zv(t)}Yn(t,i){const s=this.wv;return null===s?null:gi(s,t,i)}Nv(t,i){l("left"===i?this.rv:this.hv).Xp(Ki({width:t,height:this.yp.height}))}Of(){return this.yp}Xp(t){Ji(this.yp,t)||(this.yp=t,this.Dp=!0,this.Op.resizeCanvasElement(t),this.Np.resizeCanvasElement(t),this.Dp=!1,this.bv.style.width=t.width+"px",this.bv.style.height=t.height+"px")}Fv(){const t=l(this.wv);t.Eo(t.Vo()),t.Eo(t.zo());for(const i of t.bl())if(t.Hn(i)){const s=i.Ft();null!==s&&t.Eo(s),i.Os()}for(const i of t.Xo())i.Os()}Nf(){return this.Op.bitmapSize}Ff(t,i,s){const n=this.Nf();n.width>0&&n.height>0&&t.drawImage(this.Op.canvasElement,i,s)}qp(t){if(0===t)return;if(null===this.wv)return;t>1&&this.Fv(),null!==this.rv&&this.rv.qp(t),null!==this.hv&&this.hv.qp(t);const i={colorSpace:this.wp.N().layout.colorSpace};if(1!==t){this.Op.applySuggestedBitmapSize();const t=ns(this.Op,i);null!==t&&(t.useBitmapCoordinateSpace((t=>{this.Kp(t)})),this.wv&&(this.Wv(t,Ts),this.Hv(t),this.Wv(t,Rs),this.Wv(t,Ds)))}this.Np.applySuggestedBitmapSize();const s=ns(this.Np,i);null!==s&&(s.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.$v(s),this.Wv(s,Es),this.Wv(s,Ds))}Uv(){return this.rv}jv(){return this.hv}Qp(t,i){this.Wv(t,i)}gv(){null!==this.wv&&this.wv.jo().u(this),this.wv=null}Dv(t){this.Ev(this._v,t)}Ev(t,i){const s=i.localX,n=i.localY;t.v()&&t.p(this.ts().It().su(s),{x:s,y:n},i)}Kp({context:t,bitmapSize:i}){const{width:s,height:n}=i,e=this.ts(),r=e.U(),h=e.Dc();r===h?z(t,0,0,s,n,h):B(t,0,0,s,n,r,h)}Hv(t){const i=l(this.wv),s=i.Yo().lr().Tt(i);null!==s&&s.nt(t,!1)}$v(t){this.Yv(t,Rs,xs,this.ts().tc())}Wv(t,i){const s=l(this.wv),n=s.Dt(),e=s.Xo();for(const s of e)this.Yv(t,i,Ss,s);for(const s of n)this.Yv(t,i,Ss,s);for(const s of e)this.Yv(t,i,xs,s);for(const s of n)this.Yv(t,i,xs,s)}Yv(t,i,s,n){const e=l(this.wv),r=e.Qt().Gu(),h=null!==r&&r.Zo===n,a=null!==r&&h&&void 0!==r.qo?r.qo.Zn:void 0;Cs(i,(i=>s(i,t,h,a)),n,e)}yv(){if(null===this.wv)return;const t=this.wp,i=this.wv.Vo().N().visible,s=this.wv.zo().N().visible;i||null===this.rv||(this.Mv.removeChild(this.rv.Lf()),this.rv.m(),this.rv=null),s||null===this.hv||(this.Sv.removeChild(this.hv.Lf()),this.hv.m(),this.hv=null);const n=t.Qt().Mc();i&&null===this.rv&&(this.rv=new ks(this,t.N(),n,"left"),this.Mv.appendChild(this.rv.Lf())),s&&null===this.hv&&(this.hv=new ks(this,t.N(),n,"right"),this.Sv.appendChild(this.hv.Lf()))}Xv(t){return t.Mf&&this.dv||null!==this.fv}Zv(t){return Math.max(0,Math.min(t,this.yp.width-1))}qv(t){return Math.max(0,Math.min(t,this.yp.height-1))}Tv(t,i,s){this.ts().mc(this.Zv(t),this.qv(i),s,l(this.wv))}Av(){this.ts().gc()}Ov(){this.pv&&(this.fv=null,this.Av())}Iv(t,i,s){this.fv=t,this.pv=!1,this.Tv(i.x,i.y,s);const n=this.ts().tc();this.vv={x:n.si(),y:n.ni()}}ts(){return this.wp.Qt()}zv(t){if(!this.ov)return;const i=this.ts(),s=this.Zf();if(i.No(s,s.Ps()),this.av=null,this.ov=!1,i.dc(),null!==this.mv){const t=performance.now(),s=i.It();this.mv.le(s.ou(),t),this.mv.gu(t)||i.an(this.mv)}}kv(){this.fv=null}Rv(){if(!this.wv)return;if(this.ts().rn(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)l(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.wv.Ps().Zi()&&this.ts().It().Zi()}Vv(t){if(null===this.wv)return;const i=this.ts(),s=i.It();if(s.Zi())return;const n=this.wp.N(),e=n.handleScroll,r=n.kineticScroll;if((!e.pressedMouseMove||t.Mf)&&(!e.horzTouchDrag&&!e.vertTouchDrag||!t.Mf))return;const h=this.wv.Ps(),l=performance.now();if(null!==this.av||this.Xv(t)||(this.av={x:t.clientX,y:t.clientY,jc:l,Gv:t.localX,Kv:t.localY}),null!==this.av&&!this.ov&&(this.av.x!==t.clientX||this.av.y!==t.clientY)){if(t.Mf&&r.touch||!t.Mf&&r.mouse){const t=s.lu();this.mv=new ws(.2/t,7/t,.997,15/t),this.mv.cp(s.ou(),this.av.jc)}else this.mv=null;h.Zi()||i.Lo(this.wv,h,t.localY),i.uc(t.localX),this.ov=!0}this.ov&&(h.Zi()||i.Oo(this.wv,h,t.localY),i.cc(t.localX),null!==this.mv&&this.mv.cp(s.ou(),l))}}class zs{constructor(t,i,s,n,e){this.xt=!0,this.yp=Ki({width:0,height:0}),this.Ep=()=>this.qp(3),this.Ip="left"===t,this.Hu=s.Mc,this.Cs=i,this.Jv=n,this.Qv=e,this.If=document.createElement("div"),this.If.style.width="25px",this.If.style.height="100%",this.If.style.overflow="hidden",this.Op=bs(this.If,Ki({width:16,height:16})),this.Op.subscribeSuggestedBitmapSizeChanged(this.Ep)}m(){this.Op.unsubscribeSuggestedBitmapSizeChanged(this.Ep),Ms(this.Op.canvasElement),this.Op.dispose()}Lf(){return this.If}Of(){return this.yp}Xp(t){Ji(this.yp,t)||(this.yp=t,this.Op.resizeCanvasElement(t),this.If.style.width=`${t.width}px`,this.If.style.height=`${t.height}px`,this.xt=!0)}qp(t){if(t<3&&!this.xt)return;if(0===this.yp.width||0===this.yp.height)return;this.xt=!1,this.Op.applySuggestedBitmapSize();const i=ns(this.Op,{colorSpace:this.Cs.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace((t=>{this.Kp(t),this.Jp(t)}))}Nf(){return this.Op.bitmapSize}Ff(t,i,s){const n=this.Nf();n.width>0&&n.height>0&&t.drawImage(this.Op.canvasElement,i,s)}Jp({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){if(!this.Jv())return;t.fillStyle=this.Cs.timeScale.borderColor;const e=Math.floor(this.Hu.N().S*s),r=Math.floor(this.Hu.N().S*n),h=this.Ip?i.width-e:0;t.fillRect(h,0,e,r)}Kp({context:t,bitmapSize:i}){z(t,0,0,i.width,i.height,this.Qv())}}function Is(t){return i=>i.tl?.(t)??[]}const As=Is("normal"),Bs=Is("top"),Ls=Is("bottom");class Os{constructor(t,i){this.tm=null,this.im=null,this.M=null,this.sm=!1,this.yp=Ki({width:0,height:0}),this.nm=new o,this.kp=new tt(5),this.Dp=!1,this.Ep=()=>{this.Dp||this.wp.Qt().hr()},this.zp=()=>{this.Dp||this.wp.Qt().hr()},this.wp=t,this.t_=i,this.Cs=t.N().layout,this.fp=document.createElement("tr"),this.rm=document.createElement("td"),this.rm.style.padding="0",this.hm=document.createElement("td"),this.hm.style.padding="0",this.If=document.createElement("td"),this.If.style.height="25px",this.If.style.padding="0",this.lm=document.createElement("div"),this.lm.style.width="100%",this.lm.style.height="100%",this.lm.style.position="relative",this.lm.style.overflow="hidden",this.If.appendChild(this.lm),this.Op=bs(this.lm,Ki({width:16,height:16})),this.Op.subscribeSuggestedBitmapSizeChanged(this.Ep);const s=this.Op.canvasElement;s.style.position="absolute",s.style.zIndex="1",s.style.left="0",s.style.top="0",this.Np=bs(this.lm,Ki({width:16,height:16})),this.Np.subscribeSuggestedBitmapSizeChanged(this.zp);const n=this.Np.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.fp.appendChild(this.rm),this.fp.appendChild(this.If),this.fp.appendChild(this.hm),this.am(),this.wp.Qt().Co().i(this.am.bind(this),this),this.Pf=new os(this.Np.canvasElement,this,{Zd:()=>!0,qd:()=>!this.wp.N().handleScroll.horzTouchDrag})}m(){this.Pf.m(),null!==this.tm&&this.tm.m(),null!==this.im&&this.im.m(),this.Np.unsubscribeSuggestedBitmapSizeChanged(this.zp),Ms(this.Np.canvasElement),this.Np.dispose(),this.Op.unsubscribeSuggestedBitmapSizeChanged(this.Ep),Ms(this.Op.canvasElement),this.Op.dispose()}Lf(){return this.fp}om(){return this.tm}_m(){return this.im}af(t){if(this.sm)return;this.sm=!0;const i=this.wp.Qt();!i.It().Zi()&&this.wp.N().handleScale.axisPressedMouseMove.time&&i.ac(t.localX)}hf(t){this.af(t)}_f(){const t=this.wp.Qt();!t.It().Zi()&&this.sm&&(this.sm=!1,this.wp.N().handleScale.axisPressedMouseMove.time&&t.vc())}Jd(t){const i=this.wp.Qt();!i.It().Zi()&&this.wp.N().handleScale.axisPressedMouseMove.time&&i.fc(t.localX)}Gd(t){this.Jd(t)}sf(){this.sm=!1;const t=this.wp.Qt();t.It().Zi()&&!this.wp.N().handleScale.axisPressedMouseMove.time||t.vc()}tf(){this.sf()}Bd(){this.wp.N().handleScale.axisDoubleClickReset.time&&this.wp.Qt().un()}Vd(){this.Bd()}$d(){this.wp.Qt().N().handleScale.axisPressedMouseMove.time&&this.nv(1)}gf(){this.nv(0)}Of(){return this.yp}um(){return this.nm}dm(t,i,s){Ji(this.yp,t)||(this.yp=t,this.Dp=!0,this.Op.resizeCanvasElement(t),this.Np.resizeCanvasElement(t),this.Dp=!1,this.If.style.width=`${t.width}px`,this.If.style.height=`${t.height}px`,this.nm.p(t)),null!==this.tm&&this.tm.Xp(Ki({width:i,height:t.height})),null!==this.im&&this.im.Xp(Ki({width:s,height:t.height}))}fm(){const t=this.pm();return Math.ceil(t.S+t.C+t.P+t.B+t.V+t.vm)}Pt(){this.wp.Qt().It().Dl()}Nf(){return this.Op.bitmapSize}Ff(t,i,s){const n=this.Nf();n.width>0&&n.height>0&&t.drawImage(this.Op.canvasElement,i,s)}qp(t){if(0===t)return;const i={colorSpace:this.Cs.colorSpace};if(1!==t){this.Op.applySuggestedBitmapSize();const s=ns(this.Op,i);null!==s&&(s.useBitmapCoordinateSpace((t=>{this.Kp(t),this.Jp(t),this.wm(s,Ls)})),this.tv(s),this.wm(s,As)),null!==this.tm&&this.tm.qp(t),null!==this.im&&this.im.qp(t)}this.Np.applySuggestedBitmapSize();const s=ns(this.Np,i);null!==s&&(s.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.gm([...this.wp.Qt().Ys(),this.wp.Qt().tc()],s),this.wm(s,Bs))}wm(t,i){const s=this.wp.Qt().Ys();for(const n of s)Cs(i,(i=>Ss(i,t,!1,void 0)),n,void 0);for(const n of s)Cs(i,(i=>xs(i,t,!1,void 0)),n,void 0)}Kp({context:t,bitmapSize:i}){z(t,0,0,i.width,i.height,this.wp.Qt().Dc())}Jp({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.wp.N().timeScale.borderVisible){t.fillStyle=this.bm();const n=Math.max(1,Math.floor(this.pm().S*s));t.fillRect(0,0,i.width,n)}}tv(t){const i=this.wp.Qt().It(),s=i.Dl();if(!s||0===s.length)return;const n=this.t_.maxTickMarkWeight(s),e=this.pm(),r=i.N();r.borderVisible&&r.ticksVisible&&t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:i,verticalPixelRatio:n})=>{t.strokeStyle=this.bm(),t.fillStyle=this.bm();const r=Math.max(1,Math.floor(i)),h=Math.floor(.5*i);t.beginPath();const l=Math.round(e.C*n);for(let n=s.length;n--;){const e=Math.round(s[n].coord*i);t.rect(e-h,0,r,l)}t.fill()})),t.useMediaCoordinateSpace((({context:t})=>{const i=e.S+e.C+e.B+e.P/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.H(),t.font=this.jp();for(const e of s)if(e.weight=n){const s=e.needAlignCoordinate?this.Mm(t,e.coord,e.label):e.coord;t.fillText(e.label,s,i)}}))}Mm(t,i,s){const n=this.kp.Ei(t,s),e=n/2,r=Math.floor(i-e)+.5;return r<0?i+=Math.abs(0-r):r+n>this.yp.width&&(i-=Math.abs(this.yp.width-(r+n))),i}gm(t,i){const s=this.pm();for(const n of t)for(const t of n.us())t.Tt().nt(i,s)}bm(){return this.wp.N().timeScale.borderColor}H(){return this.Cs.textColor}F(){return this.Cs.fontSize}jp(){return g(this.F(),this.Cs.fontFamily)}Sm(){return g(this.F(),this.Cs.fontFamily,"bold")}pm(){null===this.M&&(this.M={S:1,L:NaN,B:NaN,V:NaN,Ji:NaN,C:5,P:NaN,k:"",Ki:new tt,vm:0});const t=this.M,i=this.jp();if(t.k!==i){const s=this.F();t.P=s,t.k=i,t.B=3*s/12,t.V=3*s/12,t.Ji=9*s/12,t.L=0,t.vm=4*s/12,t.Ki.En()}return this.M}nv(t){this.If.style.cursor=1===t?"ew-resize":"default"}am(){const t=this.wp.Qt(),i=t.N();i.leftPriceScale.visible||null===this.tm||(this.rm.removeChild(this.tm.Lf()),this.tm.m(),this.tm=null),i.rightPriceScale.visible||null===this.im||(this.hm.removeChild(this.im.Lf()),this.im.m(),this.im=null);const s={Mc:this.wp.Qt().Mc()},n=()=>i.leftPriceScale.borderVisible&&t.It().N().borderVisible,e=()=>t.Dc();i.leftPriceScale.visible&&null===this.tm&&(this.tm=new zs("left",i,s,n,e),this.rm.appendChild(this.tm.Lf())),i.rightPriceScale.visible&&null===this.im&&(this.im=new zs("right",i,s,n,e),this.hm.appendChild(this.im.Lf()))}}const Ns=!!es&&!!navigator.userAgentData&&navigator.userAgentData.brands.some((t=>t.brand.includes("Chromium")))&&!!es&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class Fs{constructor(t,i,s){var n;this.xm=[],this.Cm=[],this.ym=0,this.Ql=0,this.do=0,this.Pm=0,this.km=0,this.Tm=null,this.Rm=!1,this._v=new o,this.uv=new o,this.Nu=new o,this.Dm=null,this.Em=null,this.mp=t,this.Cs=i,this.t_=s,this.fp=document.createElement("div"),this.fp.classList.add("tv-lightweight-charts"),this.fp.style.overflow="hidden",this.fp.style.direction="ltr",this.fp.style.width="100%",this.fp.style.height="100%",(n=this.fp).style.userSelect="none",n.style.webkitUserSelect="none",n.style.msUserSelect="none",n.style.MozUserSelect="none",n.style.webkitTapHighlightColor="transparent",this.Vm=document.createElement("table"),this.Vm.setAttribute("cellspacing","0"),this.fp.appendChild(this.Vm),this.zm=this.Im.bind(this),Ws(this.Cs)&&this.Am(!0),this.ts=new Vi(this.Wu.bind(this),this.Cs,s),this.Qt().sc().i(this.Bm.bind(this),this),this.Lm=new Os(this,this.t_),this.Vm.appendChild(this.Lm.Lf());const e=i.autoSize&&this.Om();let r=this.Cs.width,h=this.Cs.height;if(e||0===r||0===h){const i=t.getBoundingClientRect();r=r||i.width,h=h||i.height}this.Nm(r,h),this.Fm(),t.appendChild(this.fp),this.Wm(),this.ts.It().xu().i(this.ts.Vh.bind(this.ts),this),this.ts.Co().i(this.ts.Vh.bind(this.ts),this)}Qt(){return this.ts}N(){return this.Cs}Ef(){return this.xm}Hm(){return this.Lm}m(){this.Am(!1),0!==this.ym&&window.cancelAnimationFrame(this.ym),this.ts.sc().u(this),this.ts.It().xu().u(this),this.ts.Co().u(this),this.ts.m();for(const t of this.xm)this.Vm.removeChild(t.Lf()),t.Bv().u(this),t.Lv().u(this),t.m();this.xm=[];for(const t of this.Cm)this.$m(t);this.Cm=[],l(this.Lm).m(),null!==this.fp.parentElement&&this.fp.parentElement.removeChild(this.fp),this.Nu.m(),this._v.m(),this.uv.m(),this.Um()}Nm(t,i,s=!1){if(this.Ql===i&&this.do===t)return;const n=function(t){const i=Math.floor(t.width),s=Math.floor(t.height);return Ki({width:i-i%2,height:s-s%2})}(Ki({width:t,height:i}));this.Ql=n.height,this.do=n.width;const e=this.Ql+"px",r=this.do+"px";l(this.fp).style.height=e,l(this.fp).style.width=r,this.Vm.style.height=e,this.Vm.style.width=r,s?this.jm(X.wn(),performance.now()):this.ts.Vh()}qp(t){void 0===t&&(t=X.wn());for(let i=0;i{t.Pt()}))}Xm(t){(void 0!==t.autoSize||!this.Dm||void 0===t.width&&void 0===t.height)&&(t.autoSize&&!this.Dm&&this.Om(),!1===t.autoSize&&null!==this.Dm&&this.Um(),t.autoSize||void 0===t.width&&void 0===t.height||this.Nm(t.width||this.do,t.height||this.Ql))}qm(t){let i=0,s=0;const n=this.xm[0],e=(i,s)=>{let n=0;for(let e=0;e{l("left"===i?this.Lm.om():this.Lm._m()).Ff(l(t),s,n)};if(this.Cs.timeScale.visible){const i=this.Lm.Nf();if(null!==t){let e=0;this.Km()&&(r("left",e,s),e=l(n.Uv()).Nf().width),this.Lm.Ff(t,e,s),e+=i.width,this.Jm()&&r("right",e,s)}s+=i.height}return Ki({width:i,height:s})}nw(){let t=0,i=0,s=0;for(const n of this.xm)this.Km()&&(i=Math.max(i,l(n.Uv()).Up(),this.Cs.leftPriceScale.minimumWidth)),this.Jm()&&(s=Math.max(s,l(n.jv()).Up(),this.Cs.rightPriceScale.minimumWidth)),t+=n.yo();i=ls(i),s=ls(s);const n=this.do,e=this.Ql,r=Math.max(n-i-s,0),h=1*this.Cm.length,a=this.Cs.timeScale.visible;let o=a?Math.max(this.Lm.fm(),this.Cs.timeScale.minimumHeight):0;var _;o=(_=o)+_%2;const u=h+o,c=e{t.Pv()})),3===this.Tm?.sn()&&(this.Tm.pn(t),this.rw(),this.hw(this.Tm),this.lw(this.Tm,i),t=this.Tm,this.Tm=null)),this.qp(t)}lw(t,i){for(const s of t.fn())this.vn(s,i)}hw(t){const i=this.ts.$s();for(let s=0;s{if(this.Rm=!1,this.ym=0,null!==this.Tm){const i=this.Tm;this.Tm=null,this.jm(i,t);for(const s of i.fn())if(5===s.hn&&!s.Wt.gu(t)){this.Qt().an(s.Wt);break}}})))}rw(){this.Fm()}$m(t){this.Vm.removeChild(t.Lf()),t.m()}Fm(){const t=this.ts.$s(),i=t.length,s=this.xm.length;for(let t=i;t0){const t=new ps(this,n-1,n);this.Cm.push(t),this.Vm.insertBefore(t.Lf(),this.Lm.Lf())}this.Vm.insertBefore(i.Lf(),this.Lm.Lf())}for(let s=0;s{const s=i.Zs().Nr(t);null!==s&&e.set(i,s)}))}let r;if(null!==t){const i=this.ts.It().ss(t)?.originalTime;void 0!==i&&(r=i)}const h=this.Qt().Gu(),l=null!==h&&h.Zo instanceof Ht?h.Zo:void 0,a=null!==h&&void 0!==h.qo?h.qo.Xn:void 0,o=this.uw(n);return{cw:r,Te:t??void 0,dw:i??void 0,fw:-1!==o?o:void 0,pw:l,mw:e,ww:a,gw:s??void 0}}uw(t){let i=-1;if(t)i=this.xm.indexOf(t);else{const t=this.Qt().tc().Hs();null!==t&&(i=this.Qt().$s().indexOf(t))}return i}aw(t,i,s,n){this._v.p((()=>this._w(i,s,n,t)))}ow(t,i,s,n){this.uv.p((()=>this._w(i,s,n,t)))}Bm(t,i,s){this.tw(this.Qt().Gu()?.Ko??null),this.Nu.p((()=>this._w(t,i,s)))}Wm(){const t=this.Cs.timeScale.visible?"":"none";this.Lm.Lf().style.display=t}Km(){return this.xm[0].Zf().Vo().N().visible}Jm(){return this.xm[0].Zf().zo().N().visible}Om(){return"ResizeObserver"in window&&(this.Dm=new ResizeObserver((t=>{const i=t[t.length-1];i&&this.Nm(i.contentRect.width,i.contentRect.height)})),this.Dm.observe(this.mp,{box:"border-box"}),!0)}Um(){null!==this.Dm&&this.Dm.disconnect(),this.Dm=null}}function Ws(t){return Boolean(t.handleScroll.mouseWheel||t.handleScale.mouseWheel)}function Hs(t){return function(t){return void 0!==t.open}(t)||function(t){return void 0!==t.value}(t)}function $s(t,i,s,n){const e=s.value,r={Te:i,wt:t,Wt:[e,e,e,e],cw:n};return void 0!==s.color&&(r.R=s.color),r}function Us(t,i,s,n){const e=s.value,r={Te:i,wt:t,Wt:[e,e,e,e],cw:n};return void 0!==s.lineColor&&(r.vt=s.lineColor),void 0!==s.topColor&&(r.vr=s.topColor),void 0!==s.bottomColor&&(r.mr=s.bottomColor),r}function js(t,i,s,n){const e=s.value,r={Te:i,wt:t,Wt:[e,e,e,e],cw:n};return void 0!==s.topLineColor&&(r.wr=s.topLineColor),void 0!==s.bottomLineColor&&(r.gr=s.bottomLineColor),void 0!==s.topFillColor1&&(r.br=s.topFillColor1),void 0!==s.topFillColor2&&(r.Mr=s.topFillColor2),void 0!==s.bottomFillColor1&&(r.Sr=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(r.Cr=s.bottomFillColor2),r}function Ys(t,i,s,n){const e={Te:i,wt:t,Wt:[s.open,s.high,s.low,s.close],cw:n};return void 0!==s.color&&(e.R=s.color),e}function Xs(t,i,s,n){const e={Te:i,wt:t,Wt:[s.open,s.high,s.low,s.close],cw:n};return void 0!==s.color&&(e.R=s.color),void 0!==s.borderColor&&(e.Ht=s.borderColor),void 0!==s.wickColor&&(e.pr=s.wickColor),e}function Zs(t,i,s,n,e){const r=h(e)(s),l=Math.max(...r),a=Math.min(...r),o=r[r.length-1],_=[o,l,a,o],{time:u,color:c,...d}=s;return{Te:i,wt:t,Wt:_,cw:n,ie:d,R:c}}function qs(t){return void 0!==t.Wt}function Gs(t,i){return void 0!==i.customValues&&(t.bw=i.customValues),t}function Ks(t){return(i,s,n,e,r,h)=>function(t,i){return i?i(t):void 0===(s=t).open&&void 0===s.value;var s}(n,h)?Gs({wt:i,Te:s,cw:e},n):Gs(t(i,s,n,e,r),n)}function Js(t){return{Candlestick:Ks(Xs),Bar:Ks(Ys),Area:Ks(Us),Baseline:Ks(js),Histogram:Ks($s),Line:Ks($s),Custom:Ks(Zs)}[t]}function Qs(t){return{Te:0,Mw:new Map,Wh:t}}function tn(t,i){if(void 0!==t&&0!==t.length)return{Sw:i.key(t[0].wt),xw:i.key(t[t.length-1].wt)}}function sn(t){let i;return t.forEach((t=>{void 0===i&&(i=t.cw)})),h(i)}class nn{constructor(t){this.Cw=new Map,this.yw=new Map,this.Pw=new Map,this.kw=[],this.t_=t}m(){this.Cw.clear(),this.yw.clear(),this.Pw.clear(),this.kw=[]}Tw(t,i){let s=0!==this.Cw.size,n=!1;const e=this.yw.get(t);if(void 0!==e)if(1===this.yw.size)s=!1,n=!0,this.Cw.clear();else for(const i of this.kw)i.pointData.Mw.delete(t)&&(n=!0);let r=[];if(0!==i.length){const s=i.map((t=>t.time)),e=this.t_.createConverterToInternalObj(i),h=Js(t.Tr()),l=t.cl(),a=t.fl();r=i.map(((i,r)=>{const o=e(i.time),_=this.t_.key(o);let u=this.Cw.get(_);void 0===u&&(u=Qs(o),this.Cw.set(_,u),n=!0);const c=h(o,u.Te,i,s[r],l,a);return u.Mw.set(t,c),c}))}s&&this.Rw(),this.Dw(t,r);let h=-1;if(n){const t=[];this.Cw.forEach((i=>{t.push({timeWeight:0,time:i.Wh,pointData:i,originalTime:sn(i.Mw)})})),t.sort(((t,i)=>this.t_.key(t.time)-this.t_.key(i.time))),h=this.Ew(t)}return this.Vw(t,h,function(t,i,s){const n=tn(t,s),e=tn(i,s);if(void 0!==n&&void 0!==e)return{zw:!1,Ah:n.xw>=e.xw&&n.Sw>=e.Sw}}(this.yw.get(t),e,this.t_))}Cc(t){return this.Tw(t,[])}Iw(t,i,s){const n=i;!function(t){void 0===t.cw&&(t.cw=t.time)}(n),this.t_.preprocessData(i);const e=this.t_.createConverterToInternalObj([i])(i.time),r=this.Pw.get(t);if(!s&&void 0!==r&&this.t_.key(e)this.t_.key(t.time)this.t_.key(n.wt)?qs(i)&&s.push(i):qs(i)?s[s.length-1]=i:s.splice(-1,1),this.Pw.set(t,i.wt)}Aw(t,i,s){const n=this.yw.get(t);if(void 0===n)return;const e=Mt(n,s,((t,i)=>t.Te{0!==i.length&&(t=Math.max(t,i[i.length-1].Te))})),t}Vw(t,i,s){const n={Ro:new Map,It:{tu:this.Lw()}};if(-1!==i)this.yw.forEach(((i,e)=>{n.Ro.set(e,{ie:i,Ow:e===t?s:void 0})})),this.yw.has(t)||n.Ro.set(t,{ie:[],Ow:s}),n.It.Nw=this.kw,n.It.Fw=i;else{const i=this.yw.get(t);n.Ro.set(t,{ie:i||[],Ow:s})}return n}}function en(t,i){t.Te=i,t.Mw.forEach((t=>{t.Te=i}))}function rn(t,i){return t.wt({...t,...this.Kn.Th().Rr(t.wt)})))}Gw(){this.jw=null}Xw(){this.Hw&&(this.Kw(),this.Hw=!1),this.$w&&(this.qw(),this.$w=!1),this.Ww&&(this.Jw(),this.Ww=!1)}Jw(){const t=this.Kn.Ft(),i=this.Jn.It();if(this.Gw(),i.Zi()||t.Zi())return;const s=i.Ce();if(null===s)return;if(0===this.Kn.Zs().Ar())return;const n=this.Kn.Bt();null!==n&&(this.jw=function(t,i,s){const n=i.Hh(),e=i.Mi(),r=Mt(t,n,rn),h=St(t,e,hn);if(!s)return{from:r,to:h};let l=r,a=h;return r>0&&r=n&&(l=r-1),h>0&&h{const s=t.Bt();return null===s?null:t.Ft().Nt(i,s.Wt)}))}dl(t){return this.ih.priceValueBuilder(t)}pl(t){return this.ih.isWhitespace(t)}Kw(){const t=this.Kn.Th();this.Uw=this.Kn.Zs().Wr().map((i=>({wt:i.Te,_t:NaN,...t.Rr(i.Te),sg:i.ie})))}Qw(t,i){i.iu(this.Uw,m(this.jw))}tg(){this.ih.update({bars:this.Uw.map(_n),barSpacing:this.Jn.It().lu(),visibleRange:this.jw},this.Kn.N())}}function _n(t){return{x:t._t,time:t.wt,originalData:t.sg,barColor:t.ur}}const un={color:"#2196f3"},cn=(t,i,s)=>{const n=a(s);return new on(t,i,n)};function dn(t){const i={value:t.Wt[3],time:t.cw};return void 0!==t.bw&&(i.customValues=t.bw),i}function fn(t){const i=dn(t);return void 0!==t.R&&(i.color=t.R),i}function pn(t){const i=dn(t);return void 0!==t.vt&&(i.lineColor=t.vt),void 0!==t.vr&&(i.topColor=t.vr),void 0!==t.mr&&(i.bottomColor=t.mr),i}function vn(t){const i=dn(t);return void 0!==t.wr&&(i.topLineColor=t.wr),void 0!==t.gr&&(i.bottomLineColor=t.gr),void 0!==t.br&&(i.topFillColor1=t.br),void 0!==t.Mr&&(i.topFillColor2=t.Mr),void 0!==t.Sr&&(i.bottomFillColor1=t.Sr),void 0!==t.Cr&&(i.bottomFillColor2=t.Cr),i}function mn(t){const i={open:t.Wt[0],high:t.Wt[1],low:t.Wt[2],close:t.Wt[3],time:t.cw};return void 0!==t.bw&&(i.customValues=t.bw),i}function wn(t){const i=mn(t);return void 0!==t.R&&(i.color=t.R),i}function gn(t){const i=mn(t),{R:s,Ht:n,pr:e}=t;return void 0!==s&&(i.color=s),void 0!==n&&(i.borderColor=n),void 0!==e&&(i.wickColor=e),i}function bn(t){return{Area:pn,Line:fn,Baseline:vn,Histogram:fn,Bar:wn,Candlestick:gn,Custom:Mn}[t]}function Mn(t){const i=t.cw;return{...t.ie,time:i}}const Sn={vertLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},horzLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},mode:1},xn={vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},Cn={background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:12,fontFamily:w,panes:{enableResize:!0,separatorColor:"#E0E3EB",separatorHoverColor:"rgba(178, 181, 189, 0.2)"},attributionLogo:!0,colorSpace:"srgb",colorParsers:[]},yn={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,ticksVisible:!1,scaleMargins:{bottom:.1,top:.2},minimumWidth:0,ensureEdgeTickMarksVisible:!1},Pn={rightOffset:0,barSpacing:6,minBarSpacing:.5,maxBarSpacing:0,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0,allowShiftVisibleRangeOnWhitespaceReplacement:!1,ticksVisible:!1,uniformDistribution:!1,minimumHeight:0,allowBoldLabels:!0,ignoreWhitespaceIndices:!1};function kn(){return{width:0,height:0,autoSize:!1,layout:Cn,crosshair:Sn,grid:xn,overlayPriceScales:{...yn},leftPriceScale:{...yn,visible:!1},rightPriceScale:{...yn,visible:!0},timeScale:Pn,localization:{locale:es?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:{time:!0,price:!0},mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}}}class Tn{constructor(t,i,s){this.Rf=t,this.ng=i,this.eg=s??0}applyOptions(t){this.Rf.Qt().Ju(this.ng,t,this.eg)}options(){return this.Yi().N()}width(){return Y(this.ng)?this.Rf.Gm(this.ng):0}setVisibleRange(t){this.setAutoScale(!1),this.Yi().Oa(new ct(t.from,t.to))}getVisibleRange(){const t=this.Yi().Je();return null===t?null:{from:t.$e(),to:t.Ue()}}setAutoScale(t){this.applyOptions({autoScale:t})}Yi(){return l(this.Rf.Qt().Qu(this.ng,this.eg)).Ft}}class Rn{constructor(t,i,s,n){this.Rf=t,this.yt=s,this.rg=i,this.hg=n}getHeight(){return this.yt.Ut()}setHeight(t){const i=this.Rf.Qt(),s=i.Vc(this.yt);i.rc(s,t)}paneIndex(){return this.Rf.Qt().Vc(this.yt)}moveTo(t){const i=this.paneIndex();i!==t&&(r(t>=0&&tthis.rg(t)))??[]}getHTMLElement(){return this.Rf.Ef()[this.paneIndex()].Lf()}attachPrimitive(t){this.yt._l(t),t.attached&&t.attached({chart:this.hg,requestUpdate:()=>this.yt.Qt().Vh()})}detachPrimitive(t){this.yt.ul(t)}priceScale(t){if(null===this.yt.xo(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Tn(this.Rf,t,this.paneIndex())}}const Dn={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class En{constructor(t){this.tr=t}applyOptions(t){this.tr.rr(t)}options(){return this.tr.N()}lg(){return this.tr}}class Vn{constructor(t,i,s,n,e,r){this.ag=new o,this.Kn=t,this.og=i,this._g=s,this.t_=e,this.hg=n,this.ug=r}m(){this.ag.m()}priceFormatter(){return this.Kn.el()}priceToCoordinate(t){const i=this.Kn.Bt();return null===i?null:this.Kn.Ft().Nt(t,i.Wt)}coordinateToPrice(t){const i=this.Kn.Bt();return null===i?null:this.Kn.Ft().ks(t,i.Wt)}barsInLogicalRange(t){if(null===t)return null;const i=new Ci(new Mi(t.from,t.to)).m_(),s=this.Kn.Zs();if(s.Zi())return null;const n=s.Nr(i.Hh(),1),e=s.Nr(i.Mi(),-1),r=l(s.Br()),h=l(s.Xs());if(null!==n&&null!==e&&n.Te>e.Te)return{barsBefore:t.from-r,barsAfter:h-t.to};const a={barsBefore:null===n||n.Te===r?t.from-r:n.Te-r,barsAfter:null===e||e.Te===h?h-t.to:h-e.Te};return null!==n&&null!==e&&(a.from=n.cw,a.to=e.cw),a}setData(t){this.t_,this.Kn.Tr(),this.og.cg(this.Kn,t),this.dg("full")}update(t,i=!1){this.Kn.Tr(),this.og.fg(this.Kn,t,i),this.dg("update")}dataByIndex(t,i){const s=this.Kn.Zs().Nr(t,i);if(null===s)return null;return bn(this.seriesType())(s)}data(){const t=bn(this.seriesType());return this.Kn.Zs().Wr().map((i=>t(i)))}subscribeDataChanged(t){this.ag.i(t)}unsubscribeDataChanged(t){this.ag._(t)}applyOptions(t){this.Kn.rr(t)}options(){return p(this.Kn.N())}priceScale(){return this._g.priceScale(this.Kn.Ft().ml(),this.getPane().paneIndex())}createPriceLine(t){const i=_(p(Dn),t),s=this.Kn.Lh(i);return new En(s)}removePriceLine(t){this.Kn.Oh(t.lg())}priceLines(){return this.Kn.Nh().map((t=>new En(t)))}seriesType(){return this.Kn.Tr()}attachPrimitive(t){this.Kn._l(t),t.attached&&t.attached({chart:this.hg,series:this,requestUpdate:()=>this.Kn.Qt().Vh(),horzScaleBehavior:this.t_})}detachPrimitive(t){this.Kn.ul(t),t.detached&&t.detached(),this.Kn.Qt().Vh()}getPane(){const t=this.Kn,i=l(this.Kn.Qt().Wn(t));return this.ug(i)}moveToPane(t){this.Kn.Qt().Tc(this.Kn,t)}seriesOrder(){const t=this.Kn.Qt().Wn(this.Kn);return null===t?-1:t.Ro().indexOf(this.Kn)}setSeriesOrder(t){const i=this.Kn.Qt().Wn(this.Kn);null!==i&&i.Uo(this.Kn,t)}dg(t){this.ag.v()&&this.ag.p(t)}}class zn{constructor(t,i,s){this.pg=new o,this.k_=new o,this.nm=new o,this.ts=t,this._h=t.It(),this.Lm=i,this._h.Mu().i(this.vg.bind(this)),this._h.Su().i(this.mg.bind(this)),this.Lm.um().i(this.wg.bind(this)),this.t_=s}m(){this._h.Mu().u(this),this._h.Su().u(this),this.Lm.um().u(this),this.pg.m(),this.k_.m(),this.nm.m()}scrollPosition(){return this._h.ou()}scrollToPosition(t,i){i?this._h.wu(t,1e3):this.ts.dn(t)}scrollToRealTime(){this._h.mu()}getVisibleRange(){const t=this._h.X_();return null===t?null:{from:t.from.originalTime,to:t.to.originalTime}}setVisibleRange(t){const i={from:this.t_.convertHorzItemToInternal(t.from),to:this.t_.convertHorzItemToInternal(t.to)},s=this._h.K_(i);this.ts.Pc(s)}getVisibleLogicalRange(){const t=this._h.Y_();return null===t?null:{from:t.Hh(),to:t.Mi()}}setVisibleLogicalRange(t){r(t.from<=t.to,"The from index cannot be after the to index."),this.ts.Pc(t)}resetTimeScale(){this.ts.un()}fitContent(){this.ts.yu()}logicalToCoordinate(t){const i=this.ts.It();return i.Zi()?null:i.jt(t)}coordinateToLogical(t){return this._h.Zi()?null:this._h.su(t)}timeToIndex(t,i){const s=this.t_.convertHorzItemToInternal(t);return this._h.H_(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this._h.jt(i)}coordinateToTime(t){const i=this.ts.It(),s=i.su(t),n=i.ss(s);return null===n?null:n.originalTime}width(){return this.Lm.Of().width}height(){return this.Lm.Of().height}subscribeVisibleTimeRangeChange(t){this.pg.i(t)}unsubscribeVisibleTimeRangeChange(t){this.pg._(t)}subscribeVisibleLogicalRangeChange(t){this.k_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.k_._(t)}subscribeSizeChange(t){this.nm.i(t)}unsubscribeSizeChange(t){this.nm._(t)}applyOptions(t){this._h.rr(t)}options(){return{...p(this._h.N()),barSpacing:this._h.lu()}}vg(){this.pg.v()&&this.pg.p(this.getVisibleRange())}mg(){this.k_.v()&&this.k_.p(this.getVisibleLogicalRange())}wg(t){this.nm.p(t.width,t.height)}}function In(t){if(void 0===t||"custom"===t.type)return;const i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=function(t){if(t>=1)return 0;let i=0;for(;i<8;i++){const s=Math.round(t);if(Math.abs(s-t)<1e-8)return i;t*=10}return i}(i.minMove))}function An(t){return function(t){if(f(t.handleScale)){const i=t.handleScale;t.handleScale={axisDoubleClickReset:{time:i,price:i},axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale){const{axisPressedMouseMove:i,axisDoubleClickReset:s}=t.handleScale;f(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),f(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;f(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Bn{constructor(t,i,s){this.gg=new Map,this.bg=new Map,this.Mg=new o,this.Sg=new o,this.xg=new o,this.Au=new WeakMap,this.Cg=new nn(i);const n=void 0===s?p(kn()):_(p(kn()),An(s));this.yg=i,this.Rf=new Fs(t,n,i),this.Rf.Bv().i((t=>{this.Mg.v()&&this.Mg.p(this.Pg(t()))}),this),this.Rf.Lv().i((t=>{this.Sg.v()&&this.Sg.p(this.Pg(t()))}),this),this.Rf.sc().i((t=>{this.xg.v()&&this.xg.p(this.Pg(t()))}),this);const e=this.Rf.Qt();this.kg=new zn(e,this.Rf.Hm(),this.yg)}remove(){this.Rf.Bv().u(this),this.Rf.Lv().u(this),this.Rf.sc().u(this),this.kg.m(),this.Rf.m(),this.gg.clear(),this.bg.clear(),this.Mg.m(),this.Sg.m(),this.xg.m(),this.Cg.m()}resize(t,i,s){this.autoSizeActive()||this.Rf.Nm(t,i,s)}addCustomSeries(t,i={},s=0){const n=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...un,...t.defaultOptions()},Tg:cn,Rg:t}))(a(t));return this.Dg(n,i,s)}addSeries(t,i={},s=0){return this.Dg(t,i,s)}removeSeries(t){const i=h(this.gg.get(t)),s=this.Cg.Cc(i);this.Rf.Qt().Cc(i),this.Eg(s),this.gg.delete(t),this.bg.delete(i)}cg(t,i){this.Eg(this.Cg.Tw(t,i))}fg(t,i,s){this.Eg(this.Cg.Iw(t,i,s))}subscribeClick(t){this.Mg.i(t)}unsubscribeClick(t){this.Mg._(t)}subscribeCrosshairMove(t){this.xg.i(t)}unsubscribeCrosshairMove(t){this.xg._(t)}subscribeDblClick(t){this.Sg.i(t)}unsubscribeDblClick(t){this.Sg._(t)}priceScale(t,i=0){return new Tn(this.Rf,t,i)}timeScale(){return this.kg}applyOptions(t){this.Rf.rr(An(t))}options(){return this.Rf.N()}takeScreenshot(){return this.Rf.Zm()}removePane(t){this.Rf.Qt().ec(t)}swapPanes(t,i){this.Rf.Qt().hc(t,i)}autoSizeActive(){return this.Rf.Qm()}chartElement(){return this.Rf.Hf()}panes(){return this.Rf.Qt().$s().map((t=>this.Vg(t)))}paneSize(t=0){const i=this.Rf.sw(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const n=this.gg.get(s);if(void 0===n)return;const e=this.Rf.Qt().Wn(n);null!==e&&this.Rf.Qt().wc(t,i,e)}clearCrosshairPosition(){this.Rf.Qt().gc(!0)}horzBehaviour(){return this.yg}Dg(i,s={},n=0){r(void 0!==i.Tg),In(s.priceFormat),"Candlestick"===i.type&&function(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}(s);const e=_(p(t),p(i.defaultOptions),s),h=i.Tg,l=new Ht(this.Rf.Qt(),i.type,e,h,i.Rg);this.Rf.Qt().Sc(l,n);const a=new Vn(l,this,this,this,this.yg,(t=>this.Vg(t)));return this.gg.set(a,l),this.bg.set(l,a),a}Eg(t){const i=this.Rf.Qt();i.bc(t.It.tu,t.It.Nw,t.It.Fw),t.Ro.forEach(((t,i)=>i.ht(t.ie,t.Ow))),i.It().L_(),i.hu()}zg(t){return h(this.bg.get(t))}Pg(t){const i=new Map;t.mw.forEach(((t,s)=>{const n=s.Tr(),e=bn(n)(t);if("Custom"!==n)r(Hs(e));else{const t=s.fl();r(!t||!1===t(e))}i.set(this.zg(s),e)}));const s=void 0!==t.pw&&this.bg.has(t.pw)?this.zg(t.pw):void 0;return{time:t.cw,logical:t.Te,point:t.dw,paneIndex:t.fw,hoveredSeries:s,hoveredObjectId:t.ww,seriesData:i,sourceEvent:t.gw}}Vg(t){let i=this.Au.get(t);return i||(i=new Rn(this.Rf,(t=>this.zg(t)),t,this),this.Au.set(t,i)),i}}function Ln(t,i,s){const n=function(t){if(d(t)){const i=document.getElementById(t);return r(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}(t),e=new Bn(n,i,s);return i.setOptions(e.options()),e}function On(t,i){return Ln(t,new Gi,Gi.Zc(i))}function Nn(){return Gi}class Fn extends ln{constructor(t,i){super(t,i,!0)}Qw(t,i,s){i.iu(this.Uw,m(this.jw)),t.Wa(this.Uw,s,m(this.jw))}Ig(t,i){return{wt:t,gt:i,_t:NaN,ut:NaN}}Kw(){const t=this.Kn.Th();this.Uw=this.Kn.Zs().Wr().map((i=>{const s=i.Wt[3];return this.Ag(i.Te,s,t)}))}}function Wn(t,i,s,n,e,r,h){if(0===i.length||n.from>=i.length||n.to<=0)return;const{context:l,horizontalPixelRatio:a,verticalPixelRatio:o}=t,_=i[n.from];let u=r(t,_),c=_;if(n.to-n.from<2){const i=e/2;l.beginPath();const s={_t:_._t-i,ut:_.ut},n={_t:_._t+i,ut:_.ut};l.moveTo(s._t*a,s.ut*o),l.lineTo(n._t*a,n.ut*o),h(t,u,s,n)}else{const e=(i,s)=>{h(t,u,c,s),l.beginPath(),u=i,c=s};let d=c;l.beginPath(),l.moveTo(_._t*a,_.ut*o);for(let h=n.from+1;h=n.from;--s){const n=i[s];if(n){const i=e(t,n);i!==a&&(l.beginPath(),null!==a&&l.fill(),l.fillStyle=i,a=i);const s=Math.round(n._t*r)+o,u=n.ut*h;l.moveTo(s,u),l.arc(s,u,_,0,2*Math.PI)}}l.fill()}(t,i,a,s,_)}}class Zn extends Xn{Ng(t,i){return i.vt}}class qn extends Fn{constructor(){super(...arguments),this.Zw=new Zn}Ag(t,i,s){return{...this.Ig(t,i),...s.Rr(t)}}tg(){const t=this.Kn.N(),i={ot:this.Uw,qt:t.lineStyle,Lg:t.lineVisible?t.lineType:void 0,ct:t.lineWidth,Og:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,lt:this.jw,Bg:this.Jn.It().lu()};this.Zw.ht(i)}}const Gn={type:"Line",isBuiltIn:!0,defaultOptions:{color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},Tg:(t,i)=>new qn(t,i)};function Kn(t,i,s,n,e){const{context:r,horizontalPixelRatio:h,verticalPixelRatio:l}=i;r.lineTo(e._t*h,t*l),r.lineTo(n._t*h,t*l),r.closePath(),r.fillStyle=s,r.fill()}class Jn extends y{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et(t){if(null===this.rt)return;const{ot:i,lt:s,Bg:e,ct:r,qt:h,Lg:l}=this.rt,a=this.rt.Fg??(this.rt.Wg?0:t.mediaSize.height);if(null===s)return;const o=t.context;o.lineCap="butt",o.lineJoin="round",o.lineWidth=r,n(o,h),o.lineWidth=1,Wn(t,i,l,s,e,this.Hg.bind(this),Kn.bind(null,a))}}class Qn{$g(t,i){const s=this.Ug,{jg:n,Yg:e,Xg:r,Zg:h,Fg:l,qg:a,Gg:o}=i;if(void 0===this.Kg||void 0===s||s.jg!==n||s.Yg!==e||s.Xg!==r||s.Zg!==h||s.Fg!==l||s.qg!==a||s.Gg!==o){const{verticalPixelRatio:s}=t,_=l||a>0?s:1,u=a*_,c=o===t.bitmapSize.height?o:o*_,d=(l??0)*_,f=t.context.createLinearGradient(0,u,0,c);if(f.addColorStop(0,n),null!=l){const t=Yt((d-u)/(c-u),0,1);f.addColorStop(t,e),f.addColorStop(t,r)}f.addColorStop(1,h),this.Kg=f,this.Ug=i}return this.Kg}}class te extends Jn{constructor(){super(...arguments),this.Jg=new Qn}Hg(t,i){const s=this.rt;return this.Jg.$g(t,{jg:i.br,Yg:i.Mr,Xg:i.Sr,Zg:i.Cr,Fg:s.Fg,qg:s.qg??0,Gg:s.Gg??t.bitmapSize.height})}}class ie extends Xn{constructor(){super(...arguments),this.Qg=new Qn}Ng(t,i){const s=this.rt;return this.Qg.$g(t,{jg:i.wr,Yg:i.wr,Xg:i.gr,Zg:i.gr,Fg:s.Fg,qg:s.qg??0,Gg:s.Gg??t.bitmapSize.height})}}class se extends Fn{constructor(t,i){super(t,i),this.Zw=new C,this.tb=new te,this.ib=new ie,this.Zw.st([this.tb,this.ib])}Ag(t,i,s){return{...this.Ig(t,i),...s.Rr(t)}}tg(){const t=this.Kn.Bt();if(null===t)return;const i=this.Kn.N(),s=this.Kn.Ft().Nt(i.baseValue.price,t.Wt),n=this.Jn.It().lu();if(null===this.jw||0===this.Uw.length)return;let e,r;if(i.relativeGradient){e=this.Uw[this.jw.from].ut,r=this.Uw[this.jw.from].ut;for(let t=this.jw.from;tr&&(r=i.ut)}}this.tb.ht({ot:this.Uw,ct:i.lineWidth,qt:i.lineStyle,Lg:i.lineType,Fg:s,qg:e,Gg:r,Wg:!1,lt:this.jw,Bg:n}),this.ib.ht({ot:this.Uw,ct:i.lineWidth,qt:i.lineStyle,Lg:i.lineVisible?i.lineType:void 0,Og:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,Fg:s,qg:e,Gg:r,lt:this.jw,Bg:n})}}const ne={type:"Baseline",isBuiltIn:!0,defaultOptions:{baseValue:{type:"price",price:0},relativeGradient:!1,topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},Tg:(t,i)=>new se(t,i)};class ee extends y{constructor(){super(...arguments),this.Yt=null,this.sb=0}ht(t){this.Yt=t}et(t){if(null===this.Yt||0===this.Yt.Zs.length||null===this.Yt.lt)return;const{horizontalPixelRatio:i}=t;if(this.sb=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const s=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),n=Math.floor(t*s*i),e=Math.floor(t*i),r=Math.min(n,e);return Math.max(Math.floor(i),r)}(this.Yt.lu,i),this.sb>=2){Math.floor(i)%2!=this.sb%2&&this.sb--}const s=this.Yt.Zs;this.Yt.nb&&this.eb(t,s,this.Yt.lt),this.Yt.bi&&this.Jp(t,s,this.Yt.lt);const n=this.rb(i);(!this.Yt.bi||this.sb>2*n)&&this.hb(t,s,this.Yt.lt)}eb(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:r}=t;let h="",l=Math.min(Math.floor(e),Math.floor(this.Yt.lu*e));l=Math.max(Math.floor(e),Math.min(l,this.sb));const a=Math.floor(.5*l);let o=null;for(let t=s.from;t2*l)V(n,o,u,_-o+1,c-u+1,l);else{const t=_-o+1;n.fillRect(o,u,t,c-u+1)}a=_}}hb(t,i,s){if(null===this.Yt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:r}=t;let h="";const l=this.rb(e);for(let t=s.from;to||n.fillRect(_,a,u-_+1,o-a+1)}}}class re extends ln{constructor(t,i){super(t,i,!1)}Qw(t,i,s){i.iu(this.Uw,m(this.jw)),t.$a(this.Uw,s,m(this.jw))}lb(t,i,s){return{wt:t,Uh:i.Wt[0],jh:i.Wt[1],Yh:i.Wt[2],Xh:i.Wt[3],_t:NaN,Ua:NaN,ja:NaN,Ya:NaN,Xa:NaN}}Kw(){const t=this.Kn.Th();this.Uw=this.Kn.Zs().Wr().map((i=>this.Ag(i.Te,i,t)))}}class he extends re{constructor(){super(...arguments),this.Zw=new ee}Ag(t,i,s){return{...this.lb(t,i,s),...s.Rr(t)}}tg(){const t=this.Kn.N();this.Zw.ht({Zs:this.Uw,lu:this.Jn.It().lu(),nb:t.wickVisible,bi:t.borderVisible,lt:this.jw})}}const le={type:"Candlestick",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},Tg:(t,i)=>new he(t,i)},ae={...t,color:"#2196f3"};export{ne as BaselineSeries,le as CandlestickSeries,Di as ColorType,U as CrosshairMode,Ti as LastPriceAnimationMode,Gn as LineSeries,s as LineStyle,i as LineType,xt as MismatchDirection,Ri as PriceLineSource,_i as PriceScaleMode,Ei as TickMarkType,ki as TrackingModeExitMode,On as createChart,Ln as createChartEx,ae as customSeriesDefaultOptions,Nn as defaultHorzScaleBehavior,zi as isBusinessDay,Ii as isUTCTimestamp}; diff --git a/websites/default/packages/lightweight-charts/v5.0.7/script.js b/websites/default/packages/lightweight-charts/v5.0.7/script.js new file mode 100644 index 000000000..ba19baaa2 --- /dev/null +++ b/websites/default/packages/lightweight-charts/v5.0.7/script.js @@ -0,0 +1,8 @@ +// @ts-nocheck +/*! + * @license + * TradingView Lightweight Charts™ v5.0.7 + * Copyright (c) 2025 TradingView, Inc. + * Licensed under Apache License 2.0 https://www.apache.org/licenses/LICENSE-2.0 + */ +const t={title:"",visible:!0,lastValueVisible:!0,priceLineVisible:!0,priceLineSource:0,priceLineWidth:1,priceLineColor:"",priceLineStyle:2,baseLineVisible:!0,baseLineWidth:1,baseLineColor:"#B2B5BE",baseLineStyle:0,priceFormat:{type:"price",precision:2,minMove:.01}};var i,s;function n(t,i){const s={0:[],1:[t.lineWidth,t.lineWidth],2:[2*t.lineWidth,2*t.lineWidth],3:[6*t.lineWidth,6*t.lineWidth],4:[t.lineWidth,4*t.lineWidth]}[i];t.setLineDash(s)}function e(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(s,i+e),t.lineTo(n,i+e),t.stroke()}function r(t,i){if(!t)throw new Error("Assertion failed"+(i?": "+i:""))}function h(t){if(void 0===t)throw new Error("Value is undefined");return t}function a(t){if(null===t)throw new Error("Value is null");return t}function l(t){return a(h(t))}!function(t){t[t.Simple=0]="Simple",t[t.WithSteps=1]="WithSteps",t[t.Curved=2]="Curved"}(i||(i={})),function(t){t[t.Solid=0]="Solid",t[t.Dotted=1]="Dotted",t[t.Dashed=2]="Dashed",t[t.LargeDashed=3]="LargeDashed",t[t.SparseDotted=4]="SparseDotted"}(s||(s={}));class o{constructor(){this.t=[]}i(t,i,s){const n={h:t,l:i,o:!0===s};this.t.push(n)}_(t){const i=this.t.findIndex((i=>t===i.h));i>-1&&this.t.splice(i,1)}u(t){this.t=this.t.filter((i=>i.l!==t))}p(t,i,s){const n=[...this.t];this.t=this.t.filter((t=>!t.o)),n.forEach((n=>n.h(t,i,s)))}v(){return this.t.length>0}m(){this.t=[]}}function _(t,...i){for(const s of i)for(const i in s)void 0!==s[i]&&Object.prototype.hasOwnProperty.call(s,i)&&!["__proto__","constructor","prototype"].includes(i)&&("object"!=typeof s[i]||void 0===t[i]||Array.isArray(s[i])?t[i]=s[i]:_(t[i],s[i]));return t}function u(t){return"number"==typeof t&&isFinite(t)}function c(t){return"number"==typeof t&&t%1==0}function d(t){return"string"==typeof t}function f(t){return"boolean"==typeof t}function p(t){const i=t;if(!i||"object"!=typeof i)return i;let s,n,e;for(n in s=Array.isArray(i)?[]:{},i)i.hasOwnProperty(n)&&(e=i[n],s[n]=e&&"object"==typeof e?p(e):e);return s}function v(t){return null!==t}function m(t){return null===t?void 0:t}const w="-apple-system, BlinkMacSystemFont, 'Trebuchet MS', Roboto, Ubuntu, sans-serif";function g(t,i,s){return void 0===i&&(i=w),`${s=void 0!==s?`${s} `:""}${t}px ${i}`}class M{constructor(t){this.M={S:1,C:5,P:NaN,k:"",T:"",R:"",D:"",V:0,B:0,I:0,A:0,O:0},this.L=t}N(){const t=this.M,i=this.W(),s=this.F();return t.P===i&&t.T===s||(t.P=i,t.T=s,t.k=g(i,s),t.A=2.5/12*i,t.V=t.A,t.B=i/12*t.C,t.I=i/12*t.C,t.O=0),t.R=this.H(),t.D=this.U(),this.M}H(){return this.L.N().layout.textColor}U(){return this.L.$()}W(){return this.L.N().layout.fontSize}F(){return this.L.N().layout.fontFamily}}function b(t){return t<0?0:t>255?255:Math.round(t)||0}function x(t){return.199*t[0]+.687*t[1]+.114*t[2]}class S{constructor(t,i){this.j=new Map,this.q=t,i&&(this.j=i)}Y(t,i){if("transparent"===t)return t;const s=this.K(t),n=s[3];return`rgba(${s[0]}, ${s[1]}, ${s[2]}, ${i*n})`}X(t){const i=this.K(t);return{Z:`rgb(${i[0]}, ${i[1]}, ${i[2]})`,G:x(i)>160?"black":"white"}}J(t){return x(this.K(t))}tt(t,i,s){const[n,e,r,h]=this.K(t),[a,l,o,_]=this.K(i),u=[b(n+s*(a-n)),b(e+s*(l-e)),b(r+s*(o-r)),(c=h+s*(_-h),c<=0||c>1?Math.min(Math.max(c,0),1):Math.round(1e4*c)/1e4)];var c;return`rgba(${u[0]}, ${u[1]}, ${u[2]}, ${u[3]})`}K(t){const i=this.j.get(t);if(i)return i;const s=function(t){const i=document.createElement("div");i.style.display="none",document.body.appendChild(i),i.style.color=t;const s=window.getComputedStyle(i).color;return document.body.removeChild(i),s}(t),n=s.match(/^rgba?\s*\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d*\.?\d+))?\)$/);if(!n){if(this.q.length)for(const i of this.q){const s=i(t);if(s)return this.j.set(t,s),s}throw new Error(`Failed to parse color: ${t}`)}const e=[parseInt(n[1],10),parseInt(n[2],10),parseInt(n[3],10),n[4]?parseFloat(n[4]):1];return this.j.set(t,e),e}}class C{constructor(){this.it=[]}st(t){this.it=t}nt(t,i,s){this.it.forEach((n=>{n.nt(t,i,s)}))}}class y{nt(t,i,s){t.useBitmapCoordinateSpace((t=>this.et(t,i,s)))}}class P extends y{constructor(){super(...arguments),this.rt=null}ht(t){this.rt=t}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.rt||null===this.rt.lt)return;const n=this.rt.lt,e=this.rt,r=Math.max(1,Math.floor(i))%2/2,h=h=>{t.beginPath();for(let a=n.to-1;a>=n.from;--a){const n=e.ot[a],l=Math.round(n._t*i)+r,o=n.ut*s,_=h*s+r;t.moveTo(l,o),t.arc(l,o,_,0,2*Math.PI)}t.fill()};e.ct>0&&(t.fillStyle=e.dt,h(e.ft+e.ct)),t.fillStyle=e.vt,h(e.ft)}}function k(){return{ot:[{_t:0,ut:0,wt:0,gt:0}],vt:"",dt:"",ft:0,ct:0,lt:null}}const T={from:0,to:1};class R{constructor(t,i,s){this.Mt=new C,this.bt=[],this.xt=[],this.St=!0,this.L=t,this.Ct=i,this.yt=s,this.Mt.st(this.bt)}Pt(t){this.kt(),this.St=!0}Tt(){return this.St&&(this.Rt(),this.St=!1),this.Mt}kt(){const t=this.yt.Dt();t.length!==this.bt.length&&(this.xt=t.map(k),this.bt=this.xt.map((t=>{const i=new P;return i.ht(t),i})),this.Mt.st(this.bt))}Rt(){const t=2===this.Ct.N().mode||!this.Ct.Vt(),i=this.yt.Et(),s=this.Ct.Bt(),n=this.L.It();this.kt(),i.forEach(((i,e)=>{const r=this.xt[e],h=i.At(s),a=i.zt();!t&&null!==h&&i.Vt()&&null!==a?(r.vt=h.Ot,r.ft=h.ft,r.ct=h.Lt,r.ot[0].gt=h.gt,r.ot[0].ut=i.Wt().Nt(h.gt,a.Ft),r.dt=h.Ht??this.L.Ut(r.ot[0].ut/i.Wt().$t()),r.ot[0].wt=s,r.ot[0]._t=n.jt(s),r.lt=T):r.lt=null}))}}class D extends y{constructor(t){super(),this.qt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:r}){if(null===this.qt)return;const h=this.qt.Yt.Vt,a=this.qt.Kt.Vt;if(!h&&!a)return;const l=Math.round(this.qt._t*s),o=Math.round(this.qt.ut*r);t.lineCap="butt",h&&l>=0&&(t.lineWidth=Math.floor(this.qt.Yt.ct*s),t.strokeStyle=this.qt.Yt.R,t.fillStyle=this.qt.Yt.R,n(t,this.qt.Yt.Xt),function(t,i,s,n){t.beginPath();const e=t.lineWidth%2?.5:0;t.moveTo(i+e,s),t.lineTo(i+e,n),t.stroke()}(t,l,0,i.height)),a&&o>=0&&(t.lineWidth=Math.floor(this.qt.Kt.ct*r),t.strokeStyle=this.qt.Kt.R,t.fillStyle=this.qt.Kt.R,n(t,this.qt.Kt.Xt),e(t,o,0,i.width))}}class V{constructor(t,i){this.St=!0,this.Zt={Yt:{ct:1,Xt:0,R:"",Vt:!1},Kt:{ct:1,Xt:0,R:"",Vt:!1},_t:0,ut:0},this.Gt=new D(this.Zt),this.Jt=t,this.yt=i}Pt(){this.St=!0}Tt(t){return this.St&&(this.Rt(),this.St=!1),this.Gt}Rt(){const t=this.Jt.Vt(),i=this.yt.Qt().N().crosshair,s=this.Zt;if(2===i.mode)return s.Kt.Vt=!1,void(s.Yt.Vt=!1);s.Kt.Vt=t&&this.Jt.ti(this.yt),s.Yt.Vt=t&&this.Jt.ii(),s.Kt.ct=i.horzLine.width,s.Kt.Xt=i.horzLine.style,s.Kt.R=i.horzLine.color,s.Yt.ct=i.vertLine.width,s.Yt.Xt=i.vertLine.style,s.Yt.R=i.vertLine.color,s._t=this.Jt.si(),s.ut=this.Jt.ni()}}function E(t,i,s,n,e,r){t.fillRect(i+r,s,n-2*r,r),t.fillRect(i+r,s+e-r,n-2*r,r),t.fillRect(i,s,r,e),t.fillRect(i+n-r,s,r,e)}function B(t,i,s,n,e,r){t.save(),t.globalCompositeOperation="copy",t.fillStyle=r,t.fillRect(i,s,n,e),t.restore()}function I(t,i,s,n,e,r){t.beginPath(),t.roundRect?t.roundRect(i,s,n,e,r):(t.lineTo(i+n-r[1],s),0!==r[1]&&t.arcTo(i+n,s,i+n,s+r[1],r[1]),t.lineTo(i+n,s+e-r[2]),0!==r[2]&&t.arcTo(i+n,s+e,i+n-r[2],s+e,r[2]),t.lineTo(i+r[3],s+e),0!==r[3]&&t.arcTo(i,s+e,i,s+e-r[3],r[3]),t.lineTo(i,s+r[0]),0!==r[0]&&t.arcTo(i,s,i+r[0],s,r[0]))}function A(t,i,s,n,e,r,h=0,a=[0,0,0,0],l=""){if(t.save(),!h||!l||l===r)return I(t,i,s,n,e,a),t.fillStyle=r,t.fill(),void t.restore();const o=h/2;var _;I(t,i+o,s+o,n-h,e-h,(_=-o,a.map((t=>0===t?t:t+_)))),"transparent"!==r&&(t.fillStyle=r,t.fill()),"transparent"!==l&&(t.lineWidth=h,t.strokeStyle=l,t.closePath(),t.stroke()),t.restore()}function z(t,i,s,n,e,r,h){t.save(),t.globalCompositeOperation="copy";const a=t.createLinearGradient(0,0,0,e);a.addColorStop(0,r),a.addColorStop(1,h),t.fillStyle=a,t.fillRect(i,s,n,e),t.restore()}class O{constructor(t,i){this.ht(t,i)}ht(t,i){this.qt=t,this.ei=i}$t(t,i){return this.qt.Vt?t.P+t.A+t.V:0}nt(t,i,s,n){if(!this.qt.Vt||0===this.qt.ri.length)return;const e=this.qt.R,r=this.ei.Z,h=t.useBitmapCoordinateSpace((t=>{const h=t.context;h.font=i.k;const a=this.hi(t,i,s,n),l=a.ai;return a.li?A(h,l.oi,l._i,l.ui,l.ci,r,l.di,[l.ft,0,0,l.ft],r):A(h,l.fi,l._i,l.ui,l.ci,r,l.di,[0,l.ft,l.ft,0],r),this.qt.pi&&(h.fillStyle=e,h.fillRect(l.fi,l.mi,l.wi-l.fi,l.gi)),this.qt.Mi&&(h.fillStyle=i.D,h.fillRect(a.li?l.bi-l.di:0,l._i,l.di,l.xi-l._i)),a}));t.useMediaCoordinateSpace((({context:t})=>{const s=h.Si;t.font=i.k,t.textAlign=h.li?"right":"left",t.textBaseline="middle",t.fillStyle=e,t.fillText(this.qt.ri,s.Ci,(s._i+s.xi)/2+s.yi)}))}hi(t,i,s,n){const{context:e,bitmapSize:r,mediaSize:h,horizontalPixelRatio:a,verticalPixelRatio:l}=t,o=this.qt.pi||!this.qt.Pi?i.C:0,_=this.qt.ki?i.S:0,u=i.A+this.ei.Ti,c=i.V+this.ei.Ri,d=i.B,f=i.I,p=this.qt.ri,v=i.P,m=s.Di(e,p),w=Math.ceil(s.Vi(e,p)),g=v+u+c,M=i.S+d+f+w+o,b=Math.max(1,Math.floor(l));let x=Math.round(g*l);x%2!=b%2&&(x+=1);const S=_>0?Math.max(1,Math.floor(_*a)):0,C=Math.round(M*a),y=Math.round(o*a),P=this.ei.Ei??this.ei.Bi,k=Math.round(P*l)-Math.floor(.5*l),T=Math.floor(k+b/2-x/2),R=T+x,D="right"===n,V=D?h.width-_:_,E=D?r.width-S:S;let B,I,A;return D?(B=E-C,I=E-y,A=V-o-d-_):(B=E+C,I=E+y,A=V+o+d),{li:D,ai:{_i:T,mi:k,xi:R,ui:C,ci:x,ft:2*a,di:S,oi:B,fi:E,wi:I,gi:b,bi:r.width},Si:{_i:T/l,xi:R/l,Ci:A,yi:m}}}}class L{constructor(t){this.Ii={Bi:0,Z:"#000",Ri:0,Ti:0},this.Ai={ri:"",Vt:!1,pi:!0,Pi:!1,Ht:"",R:"#FFF",Mi:!1,ki:!1},this.zi={ri:"",Vt:!1,pi:!1,Pi:!0,Ht:"",R:"#FFF",Mi:!0,ki:!0},this.St=!0,this.Oi=new(t||O)(this.Ai,this.Ii),this.Li=new(t||O)(this.zi,this.Ii)}ri(){return this.Ni(),this.Ai.ri}Bi(){return this.Ni(),this.Ii.Bi}Pt(){this.St=!0}$t(t,i=!1){return Math.max(this.Oi.$t(t,i),this.Li.$t(t,i))}Wi(){return this.Ii.Ei||0}Fi(t){this.Ii.Ei=t}Hi(){return this.Ni(),this.Ai.Vt||this.zi.Vt}Ui(){return this.Ni(),this.Ai.Vt}Tt(t){return this.Ni(),this.Ai.pi=this.Ai.pi&&t.N().ticksVisible,this.zi.pi=this.zi.pi&&t.N().ticksVisible,this.Oi.ht(this.Ai,this.Ii),this.Li.ht(this.zi,this.Ii),this.Oi}$i(){return this.Ni(),this.Oi.ht(this.Ai,this.Ii),this.Li.ht(this.zi,this.Ii),this.Li}Ni(){this.St&&(this.Ai.pi=!0,this.zi.pi=!1,this.ji(this.Ai,this.zi,this.Ii))}}class N extends L{constructor(t,i,s){super(),this.Jt=t,this.qi=i,this.Yi=s}ji(t,i,s){if(t.Vt=!1,2===this.Jt.N().mode)return;const n=this.Jt.N().horzLine;if(!n.labelVisible)return;const e=this.qi.zt();if(!this.Jt.Vt()||this.qi.Ki()||null===e)return;const r=this.qi.Xi().X(n.labelBackgroundColor);s.Z=r.Z,t.R=r.G;const h=2/12*this.qi.P();s.Ti=h,s.Ri=h;const a=this.Yi(this.qi);s.Bi=a.Bi,t.ri=this.qi.Zi(a.gt,e),t.Vt=!0}}const W=/[1-9]/g;class F{constructor(){this.qt=null}ht(t){this.qt=t}nt(t,i){if(null===this.qt||!1===this.qt.Vt||0===this.qt.ri.length)return;const s=t.useMediaCoordinateSpace((({context:t})=>(t.font=i.k,Math.round(i.Gi.Vi(t,a(this.qt).ri,W)))));if(s<=0)return;const n=i.Ji,e=s+2*n,r=e/2,h=this.qt.Qi;let l=this.qt.Bi,o=Math.floor(l-r)+.5;o<0?(l+=Math.abs(0-o),o=Math.floor(l-r)+.5):o+e>h&&(l-=Math.abs(h-(o+e)),o=Math.floor(l-r)+.5);const _=o+e,u=Math.ceil(0+i.S+i.C+i.A+i.P+i.V);t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:s,verticalPixelRatio:n})=>{const e=a(this.qt);t.fillStyle=e.Z;const r=Math.round(o*s),h=Math.round(0*n),l=Math.round(_*s),c=Math.round(u*n),d=Math.round(2*s);if(t.beginPath(),t.moveTo(r,h),t.lineTo(r,c-d),t.arcTo(r,c,r+d,c,d),t.lineTo(l-d,c),t.arcTo(l,c,l,c-d,d),t.lineTo(l,h),t.fill(),e.pi){const r=Math.round(e.Bi*s),a=h,l=Math.round((a+i.C)*n);t.fillStyle=e.R;const o=Math.max(1,Math.floor(s)),_=Math.floor(.5*s);t.fillRect(r-_,a,o,l-a)}})),t.useMediaCoordinateSpace((({context:t})=>{const s=a(this.qt),e=0+i.S+i.C+i.A+i.P/2;t.font=i.k,t.textAlign="left",t.textBaseline="middle",t.fillStyle=s.R;const r=i.Gi.Di(t,"Apr0");t.translate(o+n,e+r),t.fillText(s.ri,0,0)}))}}class H{constructor(t,i,s){this.St=!0,this.Gt=new F,this.Zt={Vt:!1,Z:"#4c525e",R:"white",ri:"",Qi:0,Bi:NaN,pi:!0},this.Ct=t,this.ts=i,this.Yi=s}Pt(){this.St=!0}Tt(){return this.St&&(this.Rt(),this.St=!1),this.Gt.ht(this.Zt),this.Gt}Rt(){const t=this.Zt;if(t.Vt=!1,2===this.Ct.N().mode)return;const i=this.Ct.N().vertLine;if(!i.labelVisible)return;const s=this.ts.It();if(s.Ki())return;t.Qi=s.Qi();const n=this.Yi();if(null===n)return;t.Bi=n.Bi;const e=s.ss(this.Ct.Bt());t.ri=s.ns(a(e)),t.Vt=!0;const r=this.ts.Xi().X(i.labelBackgroundColor);t.Z=r.Z,t.R=r.G,t.pi=s.N().ticksVisible}}class U{constructor(){this.es=null,this.rs=0}hs(){return this.rs}ls(t){this.rs=t}Wt(){return this.es}_s(t){this.es=t}us(t){return[]}cs(){return[]}Vt(){return!0}}var $;!function(t){t[t.Normal=0]="Normal",t[t.Magnet=1]="Magnet",t[t.Hidden=2]="Hidden",t[t.MagnetOHLC=3]="MagnetOHLC"}($||($={}));class j extends U{constructor(t,i){super(),this.yt=null,this.ds=NaN,this.fs=0,this.ps=!1,this.vs=new Map,this.ws=!1,this.gs=new WeakMap,this.Ms=new WeakMap,this.bs=NaN,this.xs=NaN,this.Ss=NaN,this.Cs=NaN,this.ts=t,this.ys=i;this.Ps=((t,i)=>s=>{const n=i(),e=t();if(s===a(this.yt).ks())return{gt:e,Bi:n};{const t=a(s.zt());return{gt:s.Ts(n,t),Bi:n}}})((()=>this.ds),(()=>this.xs));const s=((t,i)=>()=>{const s=this.ts.It().Rs(t()),n=i();return s&&Number.isFinite(n)?{wt:s,Bi:n}:null})((()=>this.fs),(()=>this.si()));this.Ds=new H(this,t,s)}N(){return this.ys}Vs(t,i){this.Ss=t,this.Cs=i}Es(){this.Ss=NaN,this.Cs=NaN}Bs(){return this.Ss}Is(){return this.Cs}As(t,i,s){this.ws||(this.ws=!0),this.ps=!0,this.zs(t,i,s)}Bt(){return this.fs}si(){return this.bs}ni(){return this.xs}Vt(){return this.ps}Os(){this.ps=!1,this.Ls(),this.ds=NaN,this.bs=NaN,this.xs=NaN,this.yt=null,this.Es(),this.Ns()}Ws(t){let i=this.gs.get(t);i||(i=new V(this,t),this.gs.set(t,i));let s=this.Ms.get(t);return s||(s=new R(this.ts,this,t),this.Ms.set(t,s)),[i,s]}ti(t){return t===this.yt&&this.ys.horzLine.visible}ii(){return this.ys.vertLine.visible}Fs(t,i){this.ps&&this.yt===t||this.vs.clear();const s=[];return this.yt===t&&s.push(this.Hs(this.vs,i,this.Ps)),s}cs(){return this.ps?[this.Ds]:[]}Us(){return this.yt}Ns(){this.ts.$s().forEach((t=>{this.gs.get(t)?.Pt(),this.Ms.get(t)?.Pt()})),this.vs.forEach((t=>t.Pt())),this.Ds.Pt()}js(t){return t&&!t.ks().Ki()?t.ks():null}zs(t,i,s){this.qs(t,i,s)&&this.Ns()}qs(t,i,s){const n=this.bs,e=this.xs,r=this.ds,h=this.fs,a=this.yt,l=this.js(s);this.fs=t,this.bs=isNaN(t)?NaN:this.ts.It().jt(t),this.yt=s;const o=null!==l?l.zt():null;return null!==l&&null!==o?(this.ds=i,this.xs=l.Nt(i,o)):(this.ds=NaN,this.xs=NaN),n!==this.bs||e!==this.xs||h!==this.fs||r!==this.ds||a!==this.yt}Ls(){const t=this.ts.Ys().map((t=>t.Xs().Ks())).filter(v),i=0===t.length?null:Math.max(...t);this.fs=null!==i?i:NaN}Hs(t,i,s){let n=t.get(i);return void 0===n&&(n=new N(this,i,s),t.set(i,n)),n}}function q(t){return"left"===t||"right"===t}class Y{constructor(t){this.Zs=new Map,this.Gs=[],this.Js=t}Qs(t,i){const s=function(t,i){return void 0===t?i:{tn:Math.max(t.tn,i.tn),sn:t.sn||i.sn}}(this.Zs.get(t),i);this.Zs.set(t,s)}nn(){return this.Js}en(t){const i=this.Zs.get(t);return void 0===i?{tn:this.Js}:{tn:Math.max(this.Js,i.tn),sn:i.sn}}rn(){this.hn(),this.Gs=[{an:0}]}ln(t){this.hn(),this.Gs=[{an:1,Ft:t}]}_n(t){this.un(),this.Gs.push({an:5,Ft:t})}hn(){this.un(),this.Gs.push({an:6})}cn(){this.hn(),this.Gs=[{an:4}]}dn(t){this.hn(),this.Gs.push({an:2,Ft:t})}fn(t){this.hn(),this.Gs.push({an:3,Ft:t})}pn(){return this.Gs}vn(t){for(const i of t.Gs)this.mn(i);this.Js=Math.max(this.Js,t.Js),t.Zs.forEach(((t,i)=>{this.Qs(i,t)}))}static wn(){return new Y(2)}static gn(){return new Y(3)}mn(t){switch(t.an){case 0:this.rn();break;case 1:this.ln(t.Ft);break;case 2:this.dn(t.Ft);break;case 3:this.fn(t.Ft);break;case 4:this.cn();break;case 5:this._n(t.Ft);break;case 6:this.un()}}un(){const t=this.Gs.findIndex((t=>5===t.an));-1!==t&&this.Gs.splice(t,1)}}const K=".";function X(t,i){if(!u(t))return"n/a";if(!c(i))throw new TypeError("invalid length");if(i<0||i>16)throw new TypeError("invalid length");if(0===i)return t.toString();return("0000000000000000"+t.toString()).slice(-i)}class Z{constructor(t,i){if(i||(i=1),u(t)&&c(t)||(t=100),t<0)throw new TypeError("invalid base");this.qi=t,this.Mn=i,this.bn()}format(t){const i=t<0?"−":"";return t=Math.abs(t),i+this.xn(t)}bn(){if(this.Sn=0,this.qi>0&&this.Mn>0){let t=this.qi;for(;t>1;)t/=10,this.Sn++}}xn(t){const i=this.qi/this.Mn;let s=Math.floor(t),n="";const e=void 0!==this.Sn?this.Sn:NaN;if(i>1){let r=+(Math.round(t*i)-s*i).toFixed(this.Sn);r>=i&&(r-=i,s+=1),n=K+X(+r.toFixed(this.Sn)*this.Mn,e)}else s=Math.round(s*i)/i,e>0&&(n=K+X(0,e));return s.toFixed(0)+n}}class G extends Z{constructor(t=100){super(t)}format(t){return`${super.format(t)}%`}}class J{constructor(t){this.Cn=t}format(t){let i="";return t<0&&(i="-",t=-t),t<995?i+this.yn(t):t<999995?i+this.yn(t/1e3)+"K":t<999999995?(t=1e3*Math.round(t/1e3),i+this.yn(t/1e6)+"M"):(t=1e6*Math.round(t/1e6),i+this.yn(t/1e9)+"B")}yn(t){let i;const s=Math.pow(10,this.Cn);return i=(t=Math.round(t*s)/s)>=1e-15&&t<1?t.toFixed(this.Cn).replace(/\.?0+$/,""):String(t),i.replace(/(\.[1-9]*)0+$/,((t,i)=>i))}}const Q=/[2-9]/g;class tt{constructor(t=50){this.Pn=0,this.kn=1,this.Tn=1,this.Rn={},this.Dn=new Map,this.Vn=t}En(){this.Pn=0,this.Dn.clear(),this.kn=1,this.Tn=1,this.Rn={}}Vi(t,i,s){return this.Bn(t,i,s).width}Di(t,i,s){const n=this.Bn(t,i,s);return((n.actualBoundingBoxAscent||0)-(n.actualBoundingBoxDescent||0))/2}Bn(t,i,s){const n=s||Q,e=String(i).replace(n,"0");if(this.Dn.has(e))return h(this.Dn.get(e)).In;if(this.Pn===this.Vn){const t=this.Rn[this.Tn];delete this.Rn[this.Tn],this.Dn.delete(t),this.Tn++,this.Pn--}t.save(),t.textBaseline="middle";const r=t.measureText(e);return t.restore(),0===r.width&&i.length||(this.Dn.set(e,{In:r,An:this.kn}),this.Rn[this.kn]=e,this.Pn++,this.kn++),r}}class it{constructor(t){this.zn=null,this.M=null,this.On="right",this.Ln=t}Nn(t,i,s){this.zn=t,this.M=i,this.On=s}nt(t){null!==this.M&&null!==this.zn&&this.zn.nt(t,this.M,this.Ln,this.On)}}class st{constructor(t,i,s){this.Wn=t,this.Ln=new tt(50),this.Fn=i,this.L=s,this.W=-1,this.Gt=new it(this.Ln)}Tt(){const t=this.L.Hn(this.Fn);if(null===t)return null;const i=t.Un(this.Fn)?t.$n():this.Fn.Wt();if(null===i)return null;const s=t.jn(i);if("overlay"===s)return null;const n=this.L.qn();return n.P!==this.W&&(this.W=n.P,this.Ln.En()),this.Gt.Nn(this.Wn.$i(),n,s),this.Gt}}class nt extends y{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}Yn(t,i){if(!this.qt?.Vt)return null;const{ut:s,ct:n,Kn:e}=this.qt;return i>=s-n-7&&i<=s+n+7?{Xn:this.qt,Kn:e}:null}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:r}){if(null===this.qt)return;if(!1===this.qt.Vt)return;const h=Math.round(this.qt.ut*r);h<0||h>i.height||(t.lineCap="butt",t.strokeStyle=this.qt.R,t.lineWidth=Math.floor(this.qt.ct*s),n(t,this.qt.Xt),e(t,h,0,i.width))}}class et{constructor(t){this.Zn={ut:0,R:"rgba(0, 0, 0, 0)",ct:1,Xt:0,Vt:!1},this.Gn=new nt,this.St=!0,this.Jn=t,this.Qn=t.Qt(),this.Gn.ht(this.Zn)}Pt(){this.St=!0}Tt(){return this.Jn.Vt()?(this.St&&(this.te(),this.St=!1),this.Gn):null}}class rt extends et{constructor(t){super(t)}te(){this.Zn.Vt=!1;const t=this.Jn.Wt(),i=t.ie().ie;if(2!==i&&3!==i)return;const s=this.Jn.N();if(!s.baseLineVisible||!this.Jn.Vt())return;const n=this.Jn.zt();null!==n&&(this.Zn.Vt=!0,this.Zn.ut=t.Nt(n.Ft,n.Ft),this.Zn.R=s.baseLineColor,this.Zn.ct=s.baseLineWidth,this.Zn.Xt=s.baseLineStyle)}}class ht extends y{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}se(){return this.qt}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){const n=this.qt;if(null===n)return;const e=Math.max(1,Math.floor(i)),r=e%2/2,h=Math.round(n.ne.x*i)+r,a=n.ne.y*s;t.fillStyle=n.ee,t.beginPath();const l=Math.max(2,1.5*n.re)*i;t.arc(h,a,l,0,2*Math.PI,!1),t.fill(),t.fillStyle=n.he,t.beginPath(),t.arc(h,a,n.ft*i,0,2*Math.PI,!1),t.fill(),t.lineWidth=e,t.strokeStyle=n.ae,t.beginPath(),t.arc(h,a,n.ft*i+e/2,0,2*Math.PI,!1),t.stroke()}}const at=[{le:0,oe:.25,_e:4,ue:10,ce:.25,de:0,fe:.4,pe:.8},{le:.25,oe:.525,_e:10,ue:14,ce:0,de:0,fe:.8,pe:0},{le:.525,oe:1,_e:14,ue:14,ce:0,de:0,fe:0,pe:0}];class lt{constructor(t){this.Gt=new ht,this.St=!0,this.ve=!0,this.me=performance.now(),this.we=this.me-1,this.ge=t}Me(){this.we=this.me-1,this.Pt()}be(){if(this.Pt(),2===this.ge.N().lastPriceAnimation){const t=performance.now(),i=this.we-t;if(i>0)return void(i<650&&(this.we+=2600));this.me=t,this.we=t+2600}}Pt(){this.St=!0}xe(){this.ve=!0}Vt(){return 0!==this.ge.N().lastPriceAnimation}Se(){switch(this.ge.N().lastPriceAnimation){case 0:return!1;case 1:return!0;case 2:return performance.now()<=this.we}}Tt(){return this.St?(this.Rt(),this.St=!1,this.ve=!1):this.ve&&(this.Ce(),this.ve=!1),this.Gt}Rt(){this.Gt.ht(null);const t=this.ge.Qt().It(),i=t.ye(),s=this.ge.zt();if(null===i||null===s)return;const n=this.ge.Pe(!0);if(n.ke||!i.Te(n.Re))return;const e={x:t.jt(n.Re),y:this.ge.Wt().Nt(n.gt,s.Ft)},r=n.R,h=this.ge.N().lineWidth,a=this.De(this.Ve(),r);this.Gt.ht({ee:r,re:h,he:a.he,ae:a.ae,ft:a.ft,ne:e})}Ce(){const t=this.Gt.se();if(null!==t){const i=this.De(this.Ve(),t.ee);t.he=i.he,t.ae=i.ae,t.ft=i.ft}}Ve(){return this.Se()?performance.now()-this.me:2599}Ee(t,i,s,n){const e=s+(n-s)*i;return this.ge.Qt().Xi().Y(t,e)}De(t,i){const s=t%2600/2600;let n;for(const t of at)if(s>=t.le&&s<=t.oe){n=t;break}r(void 0!==n,"Last price animation internal logic error");const e=(s-n.le)/(n.oe-n.le);return{he:this.Ee(i,e,n.ce,n.de),ae:this.Ee(i,e,n.fe,n.pe),ft:(h=e,a=n._e,l=n.ue,a+(l-a)*h)};var h,a,l}}class ot extends et{constructor(t){super(t)}te(){const t=this.Zn;t.Vt=!1;const i=this.Jn.N();if(!i.priceLineVisible||!this.Jn.Vt())return;const s=this.Jn.Pe(0===i.priceLineSource);s.ke||(t.Vt=!0,t.ut=s.Bi,t.R=this.Jn.Be(s.R),t.ct=i.priceLineWidth,t.Xt=i.priceLineStyle)}}class _t extends L{constructor(t){super(),this.Jt=t}ji(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.Jt;if(!n.Vt())return;const e=n.N(),r=e.lastValueVisible,h=""!==n.Ie(),a=0===e.seriesLastValueMode,l=n.Pe(!1);if(l.ke)return;r&&(t.ri=this.Ae(l,r,a),t.Vt=0!==t.ri.length),(h||a)&&(i.ri=this.ze(l,r,h,a),i.Vt=i.ri.length>0);const o=n.Be(l.R),_=this.Jt.Qt().Xi().X(o);s.Z=_.Z,s.Bi=l.Bi,i.Ht=n.Qt().Ut(l.Bi/n.Wt().$t()),t.Ht=o,t.R=_.G,i.R=_.G}ze(t,i,s,n){let e="";const r=this.Jt.Ie();return s&&0!==r.length&&(e+=`${r} `),i&&n&&(e+=this.Jt.Wt().Oe()?t.Le:t.Ne),e.trim()}Ae(t,i,s){return i?s?this.Jt.Wt().Oe()?t.Ne:t.Le:t.ri:""}}function ut(t,i,s,n){const e=Number.isFinite(i),r=Number.isFinite(s);return e&&r?t(i,s):e||r?e?i:s:n}class ct{constructor(t,i){this.We=t,this.Fe=i}He(t){return null!==t&&(this.We===t.We&&this.Fe===t.Fe)}Ue(){return new ct(this.We,this.Fe)}$e(){return this.We}je(){return this.Fe}qe(){return this.Fe-this.We}Ki(){return this.Fe===this.We||Number.isNaN(this.Fe)||Number.isNaN(this.We)}vn(t){return null===t?this:new ct(ut(Math.min,this.$e(),t.$e(),-1/0),ut(Math.max,this.je(),t.je(),1/0))}Ye(t){if(!u(t))return;if(0===this.Fe-this.We)return;const i=.5*(this.Fe+this.We);let s=this.Fe-i,n=this.We-i;s*=t,n*=t,this.Fe=i+s,this.We=i+n}Ke(t){u(t)&&(this.Fe+=t,this.We+=t)}Xe(){return{minValue:this.We,maxValue:this.Fe}}static Ze(t){return null===t?null:new ct(t.minValue,t.maxValue)}}class dt{constructor(t,i){this.Ge=t,this.Je=i||null}Qe(){return this.Ge}tr(){return this.Je}Xe(){return{priceRange:null===this.Ge?null:this.Ge.Xe(),margins:this.Je||void 0}}static Ze(t){return null===t?null:new dt(ct.Ze(t.priceRange),t.margins)}}class ft extends et{constructor(t,i){super(t),this.ir=i}te(){const t=this.Zn;t.Vt=!1;const i=this.ir.N();if(!this.Jn.Vt()||!i.lineVisible)return;const s=this.ir.sr();null!==s&&(t.Vt=!0,t.ut=s,t.R=i.color,t.ct=i.lineWidth,t.Xt=i.lineStyle,t.Kn=this.ir.N().id)}}class pt extends L{constructor(t,i){super(),this.ge=t,this.ir=i}ji(t,i,s){t.Vt=!1,i.Vt=!1;const n=this.ir.N(),e=n.axisLabelVisible,r=""!==n.title,h=this.ge;if(!e||!h.Vt())return;const a=this.ir.sr();if(null===a)return;r&&(i.ri=n.title,i.Vt=!0),i.Ht=h.Qt().Ut(a/h.Wt().$t()),t.ri=this.nr(n.price),t.Vt=!0;const l=this.ge.Qt().Xi().X(n.axisLabelColor||n.color);s.Z=l.Z;const o=n.axisLabelTextColor||l.G;t.R=o,i.R=o,s.Bi=a}nr(t){const i=this.ge.zt();return null===i?"":this.ge.Wt().Zi(t,i.Ft)}}class vt{constructor(t,i){this.ge=t,this.ys=i,this.er=new ft(t,this),this.Wn=new pt(t,this),this.rr=new st(this.Wn,t,t.Qt())}hr(t){_(this.ys,t),this.Pt(),this.ge.Qt().ar()}N(){return this.ys}lr(){return this.er}_r(){return this.rr}ur(){return this.Wn}Pt(){this.er.Pt(),this.Wn.Pt()}sr(){const t=this.ge,i=t.Wt();if(t.Qt().It().Ki()||i.Ki())return null;const s=t.zt();return null===s?null:i.Nt(this.ys.price,s.Ft)}}class mt extends U{constructor(t){super(),this.ts=t}Qt(){return this.ts}}const wt={Bar:(t,i,s,n)=>{const e=i.upColor,r=i.downColor,h=a(t(s,n)),o=l(h.Ft[0])<=l(h.Ft[3]);return{cr:h.R??(o?e:r)}},Candlestick:(t,i,s,n)=>{const e=i.upColor,r=i.downColor,h=i.borderUpColor,o=i.borderDownColor,_=i.wickUpColor,u=i.wickDownColor,c=a(t(s,n)),d=l(c.Ft[0])<=l(c.Ft[3]);return{cr:c.R??(d?e:r),dr:c.Ht??(d?h:o),pr:c.vr??(d?_:u)}},Custom:(t,i,s,n)=>({cr:a(t(s,n)).R??i.color}),Area:(t,i,s,n)=>{const e=a(t(s,n));return{cr:e.vt??i.lineColor,vt:e.vt??i.lineColor,mr:e.mr??i.topColor,wr:e.wr??i.bottomColor}},Baseline:(t,i,s,n)=>{const e=a(t(s,n));return{cr:e.Ft[3]>=i.baseValue.price?i.topLineColor:i.bottomLineColor,gr:e.gr??i.topLineColor,Mr:e.Mr??i.bottomLineColor,br:e.br??i.topFillColor1,Sr:e.Sr??i.topFillColor2,Cr:e.Cr??i.bottomFillColor1,yr:e.yr??i.bottomFillColor2}},Line:(t,i,s,n)=>{const e=a(t(s,n));return{cr:e.R??i.color,vt:e.R??i.color}},Histogram:(t,i,s,n)=>({cr:a(t(s,n)).R??i.color})};class gt{constructor(t){this.Pr=(t,i)=>void 0!==i?i.Ft:this.ge.Xs().kr(t),this.ge=t,this.Tr=wt[t.Rr()]}Dr(t,i){return this.Tr(this.Pr,this.ge.N(),t,i)}}function Mt(t,i,s,n,e=0,r=i.length){let h=r-e;for(;0>1,a=e+r;n(i[a],s)===t?(e=a+1,h-=r+1):h=r}return e}const bt=Mt.bind(null,!0),xt=Mt.bind(null,!1);var St;!function(t){t[t.NearestLeft=-1]="NearestLeft",t[t.None=0]="None",t[t.NearestRight=1]="NearestRight"}(St||(St={}));const Ct=30;class yt{constructor(){this.Vr=[],this.Er=new Map,this.Br=new Map,this.Ir=[]}Ar(){return this.zr()>0?this.Vr[this.Vr.length-1]:null}Or(){return this.zr()>0?this.Lr(0):null}Ks(){return this.zr()>0?this.Lr(this.Vr.length-1):null}zr(){return this.Vr.length}Ki(){return 0===this.zr()}Te(t){return null!==this.Nr(t,0)}kr(t){return this.Wr(t)}Wr(t,i=0){const s=this.Nr(t,i);return null===s?null:{...this.Fr(s),Re:this.Lr(s)}}Hr(){return this.Vr}Ur(t,i,s){if(this.Ki())return null;let n=null;for(const e of s){n=Pt(n,this.$r(t,i,e))}return n}ht(t){this.Br.clear(),this.Er.clear(),this.Vr=t,this.Ir=t.map((t=>t.Re))}jr(){return this.Ir}Lr(t){return this.Vr[t].Re}Fr(t){return this.Vr[t]}Nr(t,i){const s=this.qr(t);if(null===s&&0!==i)switch(i){case-1:return this.Yr(t);case 1:return this.Kr(t);default:throw new TypeError("Unknown search mode")}return s}Yr(t){let i=this.Xr(t);return i>0&&(i-=1),i!==this.Vr.length&&this.Lr(i)t.Ret.Re>i))}Gr(t,i,s){let n=null;for(let e=t;en.Qr&&(n.Qr=t)))}return n}$r(t,i,s){if(this.Ki())return null;let n=null;const e=a(this.Or()),r=a(this.Ks()),h=Math.max(t,e),l=Math.min(i,r),o=Math.ceil(h/Ct)*Ct,_=Math.max(o,Math.floor(l/Ct)*Ct);{const t=this.Xr(h),e=this.Zr(Math.min(l,o,i));n=Pt(n,this.Gr(t,e,s))}let u=this.Er.get(s);void 0===u&&(u=new Map,this.Er.set(s,u));for(let t=Math.max(o+1,h);t<_;t+=Ct){const i=Math.floor(t/Ct);let e=u.get(i);if(void 0===e){const t=this.Xr(i*Ct),n=this.Zr((i+1)*Ct-1);e=this.Gr(t,n,s),u.set(i,e)}n=Pt(n,e)}{const t=this.Xr(_),i=this.Zr(l);n=Pt(n,this.Gr(t,i,s))}return n}}function Pt(t,i){if(null===t)return i;if(null===i)return t;return{Jr:Math.min(t.Jr,i.Jr),Qr:Math.max(t.Qr,i.Qr)}}class kt{constructor(t){this.th=t}nt(t,i,s){this.th.draw(t)}ih(t,i,s){this.th.drawBackground?.(t)}}class Tt{constructor(t){this.Dn=null,this.sh=t}Tt(){const t=this.sh.renderer();if(null===t)return null;if(this.Dn?.nh===t)return this.Dn.eh;const i=new kt(t);return this.Dn={nh:t,eh:i},i}rh(){return this.sh.zOrder?.()??"normal"}}class Rt{constructor(t){this.hh=null,this.ah=t}oh(){return this.ah}Ns(){this.ah.updateAllViews?.()}Ws(){const t=this.ah.paneViews?.()??[];if(this.hh?.nh===t)return this.hh.eh;const i=t.map((t=>new Tt(t)));return this.hh={nh:t,eh:i},i}Yn(t,i){return this.ah.hitTest?.(t,i)??null}}let Dt=class extends Rt{us(){return[]}};class Vt{constructor(t){this.th=t}nt(t,i,s){this.th.draw(t)}ih(t,i,s){this.th.drawBackground?.(t)}}class Et{constructor(t){this.Dn=null,this.sh=t}Tt(){const t=this.sh.renderer();if(null===t)return null;if(this.Dn?.nh===t)return this.Dn.eh;const i=new Vt(t);return this.Dn={nh:t,eh:i},i}rh(){return this.sh.zOrder?.()??"normal"}}function Bt(t){return{ri:t.text(),Bi:t.coordinate(),Ei:t.fixedCoordinate?.(),R:t.textColor(),Z:t.backColor(),Vt:t.visible?.()??!0,pi:t.tickVisible?.()??!0}}class It{constructor(t,i){this.Gt=new F,this._h=t,this.uh=i}Tt(){return this.Gt.ht({Qi:this.uh.Qi(),...Bt(this._h)}),this.Gt}}class At extends L{constructor(t,i){super(),this._h=t,this.qi=i}ji(t,i,s){const n=Bt(this._h);s.Z=n.Z,t.R=n.R;const e=2/12*this.qi.P();s.Ti=e,s.Ri=e,s.Bi=n.Bi,s.Ei=n.Ei,t.ri=n.ri,t.Vt=n.Vt,t.pi=n.pi}}class zt extends Rt{constructor(t,i){super(t),this.dh=null,this.fh=null,this.ph=null,this.mh=null,this.ge=i}cs(){const t=this.ah.timeAxisViews?.()??[];if(this.dh?.nh===t)return this.dh.eh;const i=this.ge.Qt().It(),s=t.map((t=>new It(t,i)));return this.dh={nh:t,eh:s},s}Fs(){const t=this.ah.priceAxisViews?.()??[];if(this.fh?.nh===t)return this.fh.eh;const i=this.ge.Wt(),s=t.map((t=>new At(t,i)));return this.fh={nh:t,eh:s},s}wh(){const t=this.ah.priceAxisPaneViews?.()??[];if(this.ph?.nh===t)return this.ph.eh;const i=t.map((t=>new Et(t)));return this.ph={nh:t,eh:i},i}gh(){const t=this.ah.timeAxisPaneViews?.()??[];if(this.mh?.nh===t)return this.mh.eh;const i=t.map((t=>new Et(t)));return this.mh={nh:t,eh:i},i}Mh(t,i){return this.ah.autoscaleInfo?.(t,i)??null}}function Ot(t,i,s,n){t.forEach((t=>{i(t).forEach((t=>{t.rh()===s&&n.push(t)}))}))}function Lt(t){return t.Ws()}function Nt(t){return t.wh()}function Wt(t){return t.gh()}const Ft=["Area","Line","Baseline"];class Ht extends mt{constructor(t,i,s,n,e){super(t),this.qt=new yt,this.er=new ot(this),this.bh=[],this.xh=new rt(this),this.Sh=null,this.Ch=null,this.yh=null,this.Ph=[],this.ys=s,this.kh=i;const r=new _t(this);this.vs=[r],this.rr=new st(r,this,t),Ft.includes(this.kh)&&(this.Sh=new lt(this)),this.Th(),this.sh=n(this,this.Qt(),e)}m(){null!==this.yh&&clearTimeout(this.yh)}Be(t){return this.ys.priceLineColor||t}Pe(t){const i={ke:!0},s=this.Wt();if(this.Qt().It().Ki()||s.Ki()||this.qt.Ki())return i;const n=this.Qt().It().ye(),e=this.zt();if(null===n||null===e)return i;let r,h;if(t){const t=this.qt.Ar();if(null===t)return i;r=t,h=t.Re}else{const t=this.qt.Wr(n.bi(),-1);if(null===t)return i;if(r=this.qt.kr(t.Re),null===r)return i;h=t.Re}const a=r.Ft[3],l=this.Rh().Dr(h,{Ft:r}),o=s.Nt(a,e.Ft);return{ke:!1,gt:a,ri:s.Zi(a,e.Ft),Le:s.Dh(a),Ne:s.Vh(a,e.Ft),R:l.cr,Bi:o,Re:h}}Rh(){return null!==this.Ch||(this.Ch=new gt(this)),this.Ch}N(){return this.ys}hr(t){const i=t.priceScaleId;void 0!==i&&i!==this.ys.priceScaleId&&this.Qt().Eh(this,i),_(this.ys,t),void 0!==t.priceFormat&&(this.Th(),this.Qt().Bh()),this.Qt().Ih(this),this.Qt().Ah(),this.sh.Pt("options")}ht(t,i){this.qt.ht(t),this.sh.Pt("data"),null!==this.Sh&&(i&&i.zh?this.Sh.be():0===t.length&&this.Sh.Me());const s=this.Qt().Hn(this);this.Qt().Oh(s),this.Qt().Ih(this),this.Qt().Ah(),this.Qt().ar()}Lh(t){const i=new vt(this,t);return this.bh.push(i),this.Qt().Ih(this),i}Nh(t){const i=this.bh.indexOf(t);-1!==i&&this.bh.splice(i,1),this.Qt().Ih(this)}Wh(){return this.bh}Rr(){return this.kh}zt(){const t=this.Fh();return null===t?null:{Ft:t.Ft[3],Hh:t.wt}}Fh(){const t=this.Qt().It().ye();if(null===t)return null;const i=t.Uh();return this.qt.Wr(i,1)}Xs(){return this.qt}$h(t){const i=this.qt.kr(t);return null===i?null:"Bar"===this.kh||"Candlestick"===this.kh||"Custom"===this.kh?{jh:i.Ft[0],qh:i.Ft[1],Yh:i.Ft[2],Kh:i.Ft[3]}:i.Ft[3]}Xh(t){const i=[];Ot(this.Ph,Lt,"top",i);const s=this.Sh;return null!==s&&s.Vt()?(null===this.yh&&s.Se()&&(this.yh=setTimeout((()=>{this.yh=null,this.Qt().Zh()}),0)),s.xe(),i.unshift(s),i):i}Ws(){const t=[];this.Gh()||t.push(this.xh),t.push(this.sh,this.er);const i=this.bh.map((t=>t.lr()));return t.push(...i),Ot(this.Ph,Lt,"normal",t),t}Jh(){return this.Qh(Lt,"bottom")}ta(t){return this.Qh(Nt,t)}ia(t){return this.Qh(Wt,t)}sa(t,i){return this.Ph.map((s=>s.Yn(t,i))).filter((t=>null!==t))}us(){return[this.rr,...this.bh.map((t=>t._r()))]}Fs(t,i){if(i!==this.es&&!this.Gh())return[];const s=[...this.vs];for(const t of this.bh)s.push(t.ur());return this.Ph.forEach((t=>{s.push(...t.Fs())})),s}cs(){const t=[];return this.Ph.forEach((i=>{t.push(...i.cs())})),t}Mh(t,i){if(void 0!==this.ys.autoscaleInfoProvider){const s=this.ys.autoscaleInfoProvider((()=>{const s=this.na(t,i);return null===s?null:s.Xe()}));return dt.Ze(s)}return this.na(t,i)}ea(){return this.ys.priceFormat.minMove}ra(){return this.ha}Ns(){this.sh.Pt();for(const t of this.vs)t.Pt();for(const t of this.bh)t.Pt();this.er.Pt(),this.xh.Pt(),this.Sh?.Pt(),this.Ph.forEach((t=>t.Ns()))}Wt(){return a(super.Wt())}At(t){if(!(("Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh)&&this.ys.crosshairMarkerVisible))return null;const i=this.qt.kr(t);if(null===i)return null;return{gt:i.Ft[3],ft:this.aa(),Ht:this.la(),Lt:this.oa(),Ot:this._a(t)}}Ie(){return this.ys.title}Vt(){return this.ys.visible}ua(t){this.Ph.push(new zt(t,this))}ca(t){this.Ph=this.Ph.filter((i=>i.oh()!==t))}da(){if("Custom"===this.kh)return t=>this.sh.fa(t)}pa(){if("Custom"===this.kh)return t=>this.sh.va(t)}ma(){return this.qt.jr()}Gh(){return!q(this.Wt().wa())}na(t,i){if(!c(t)||!c(i)||this.qt.Ki())return null;const s="Line"===this.kh||"Area"===this.kh||"Baseline"===this.kh||"Histogram"===this.kh?[3]:[2,1],n=this.qt.Ur(t,i,s);let e=null!==n?new ct(n.Jr,n.Qr):null,r=null;if("Histogram"===this.Rr()){const t=this.ys.base,i=new ct(t,t);e=null!==e?e.vn(i):i}return this.Ph.forEach((s=>{const n=s.Mh(t,i);if(n?.priceRange){const t=new ct(n.priceRange.minValue,n.priceRange.maxValue);e=null!==e?e.vn(t):t}n?.margins&&(r=n.margins)})),new dt(e,r)}aa(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.ys.crosshairMarkerRadius}return 0}la(){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.ys.crosshairMarkerBorderColor;if(0!==t.length)return t}}return null}oa(){switch(this.kh){case"Line":case"Area":case"Baseline":return this.ys.crosshairMarkerBorderWidth}return 0}_a(t){switch(this.kh){case"Line":case"Area":case"Baseline":{const t=this.ys.crosshairMarkerBackgroundColor;if(0!==t.length)return t}}return this.Rh().Dr(t).cr}Th(){switch(this.ys.priceFormat.type){case"custom":this.ha={format:this.ys.priceFormat.formatter};break;case"volume":this.ha=new J(this.ys.priceFormat.precision);break;case"percent":this.ha=new G(this.ys.priceFormat.precision);break;default:{const t=Math.pow(10,this.ys.priceFormat.precision);this.ha=new Z(t,this.ys.priceFormat.minMove*t)}}null!==this.es&&this.es.ga()}Qh(t,i){const s=[];return Ot(this.Ph,t,i,s),s}}const Ut=[3],$t=[0,1,2,3];class jt{constructor(t){this.ys=t}Ma(t,i,s){let n=t;if(0===this.ys.mode)return n;const e=s.ks(),r=e.zt();if(null===r)return n;const h=e.Nt(t,r),a=s.ba().filter((t=>t instanceof Ht)).reduce(((t,n)=>{if(s.Un(n)||!n.Vt())return t;const e=n.Wt(),r=n.Xs();if(e.Ki()||!r.Te(i))return t;const h=r.kr(i);if(null===h)return t;const a=l(n.zt()),o=3===this.ys.mode?$t:Ut;return t.concat(o.map((t=>e.Nt(h.Ft[t],a.Ft))))}),[]);if(0===a.length)return n;a.sort(((t,i)=>Math.abs(t-h)-Math.abs(i-h)));const o=a[0];return n=e.Ts(o,r),n}}function qt(t,i,s){return Math.min(Math.max(t,i),s)}function Yt(t,i,s){return i-t<=s}function Kt(t){const i=Math.ceil(t);return i%2==0?i-1:i}class Xt extends y{constructor(){super(...arguments),this.qt=null}ht(t){this.qt=t}et({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:e}){if(null===this.qt)return;const r=Math.max(1,Math.floor(s));t.lineWidth=r,function(t,i){t.save(),t.lineWidth%2&&t.translate(.5,.5),i(),t.restore()}(t,(()=>{const h=a(this.qt);if(h.xa){t.strokeStyle=h.Sa,n(t,h.Ca),t.beginPath();for(const n of h.ya){const e=Math.round(n.Pa*s);t.moveTo(e,-r),t.lineTo(e,i.height+r)}t.stroke()}if(h.ka){t.strokeStyle=h.Ta,n(t,h.Ra),t.beginPath();for(const s of h.Da){const n=Math.round(s.Pa*e);t.moveTo(-r,n),t.lineTo(i.width+r,n)}t.stroke()}}))}}class Zt{constructor(t){this.Gt=new Xt,this.St=!0,this.yt=t}Pt(){this.St=!0}Tt(){if(this.St){const t=this.yt.Qt().N().grid,i={ka:t.horzLines.visible,xa:t.vertLines.visible,Ta:t.horzLines.color,Sa:t.vertLines.color,Ra:t.horzLines.style,Ca:t.vertLines.style,Da:this.yt.ks().Va(),ya:(this.yt.Qt().It().Va()||[]).map((t=>({Pa:t.coord})))};this.Gt.ht(i),this.St=!1}return this.Gt}}class Gt{constructor(t){this.sh=new Zt(t)}lr(){return this.sh}}const Jt={Ea:4,Ba:1e-4};function Qt(t,i){const s=100*(t-i)/i;return i<0?-s:s}function ti(t,i){const s=Qt(t.$e(),i),n=Qt(t.je(),i);return new ct(s,n)}function ii(t,i){const s=100*(t-i)/i+100;return i<0?-s:s}function si(t,i){const s=ii(t.$e(),i),n=ii(t.je(),i);return new ct(s,n)}function ni(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.log10(s+i.Ba)+i.Ea;return t<0?-n:n}function ei(t,i){const s=Math.abs(t);if(s<1e-15)return 0;const n=Math.pow(10,s-i.Ea)-i.Ba;return t<0?-n:n}function ri(t,i){if(null===t)return null;const s=ni(t.$e(),i),n=ni(t.je(),i);return new ct(s,n)}function hi(t,i){if(null===t)return null;const s=ei(t.$e(),i),n=ei(t.je(),i);return new ct(s,n)}function ai(t){if(null===t)return Jt;const i=Math.abs(t.je()-t.$e());if(i>=1||i<1e-15)return Jt;const s=Math.ceil(Math.abs(Math.log10(i))),n=Jt.Ea+s;return{Ea:n,Ba:1/Math.pow(10,n)}}class li{constructor(t,i){if(this.Ia=t,this.Aa=i,function(t){if(t<0)return!1;for(let i=t;i>1;i/=10)if(i%10!=0)return!1;return!0}(this.Ia))this.za=[2,2.5,2];else{this.za=[];for(let t=this.Ia;1!==t;){if(t%2==0)this.za.push(2),t/=2;else{if(t%5!=0)throw new Error("unexpected base");this.za.push(2,2.5),t/=5}if(this.za.length>100)throw new Error("something wrong with base")}}}Oa(t,i,s){const n=0===this.Ia?0:1/this.Ia;let e=Math.pow(10,Math.max(0,Math.ceil(Math.log10(t-i)))),r=0,h=this.Aa[0];for(;;){const t=Yt(e,n,1e-14)&&e>n+1e-14,i=Yt(e,s*h,1e-14),a=Yt(e,1,1e-14);if(!(t&&i&&a))break;e/=h,h=this.Aa[++r%this.Aa.length]}if(e<=n+1e-14&&(e=n),e=Math.max(1,e),this.za.length>0&&(a=e,l=1,o=1e-14,Math.abs(a-l)n+1e-14;)e/=h,h=this.za[++r%this.za.length];var a,l,o;return e}}class oi{constructor(t,i,s,n){this.La=[],this.qi=t,this.Ia=i,this.Na=s,this.Wa=n}Oa(t,i){if(t=n?1:-1;let _=null,u=0;for(let c=s-l;c>n;c-=i){const s=this.Wa(c,t,!0);null!==_&&Math.abs(s-_)r||(u0&&h[0].Pa-a.Pa0&&l.Pa-h[h.length-1].Paa(t.hs())-a(i.hs())))}var ui;!function(t){t[t.Normal=0]="Normal",t[t.Logarithmic=1]="Logarithmic",t[t.Percentage=2]="Percentage",t[t.IndexedTo100=3]="IndexedTo100"}(ui||(ui={}));const ci=new G,di=new Z(100,1);class fi{constructor(t,i,s,n,e){this.tl=0,this.il=null,this.Ge=null,this.sl=null,this.nl={el:!1,rl:null},this.hl=!1,this.al=0,this.ll=0,this.ol=new o,this._l=new o,this.ul=[],this.cl=null,this.dl=null,this.fl=null,this.pl=null,this.vl=null,this.ha=di,this.ml=ai(null),this.wl=t,this.ys=i,this.gl=s,this.Ml=n,this.bl=e,this.xl=new oi(this,100,this.Sl.bind(this),this.Cl.bind(this))}wa(){return this.wl}N(){return this.ys}hr(t){if(_(this.ys,t),this.ga(),void 0!==t.mode&&this.yl({ie:t.mode}),void 0!==t.scaleMargins){const i=h(t.scaleMargins.top),s=h(t.scaleMargins.bottom);if(i<0||i>1)throw new Error(`Invalid top margin - expect value between 0 and 1, given=${i}`);if(s<0||s>1)throw new Error(`Invalid bottom margin - expect value between 0 and 1, given=${s}`);if(i+s>1)throw new Error(`Invalid margins - sum of margins must be less than 1, given=${i+s}`);this.Pl(),this.fl=null}}kl(){return this.ys.autoScale}Tl(){return this.hl}Ga(){return 1===this.ys.mode}Oe(){return 2===this.ys.mode}Rl(){return 3===this.ys.mode}Qa(){return this.ml}ie(){return{sn:this.ys.autoScale,Dl:this.ys.invertScale,ie:this.ys.mode}}yl(t){const i=this.ie();let s=null;void 0!==t.sn&&(this.ys.autoScale=t.sn),void 0!==t.ie&&(this.ys.mode=t.ie,2!==t.ie&&3!==t.ie||(this.ys.autoScale=!0),this.nl.el=!1),1===i.ie&&t.ie!==i.ie&&(!function(t,i){if(null===t)return!1;const s=ei(t.$e(),i),n=ei(t.je(),i);return isFinite(s)&&isFinite(n)}(this.Ge,this.ml)?this.ys.autoScale=!0:(s=hi(this.Ge,this.ml),null!==s&&this.Vl(s))),1===t.ie&&t.ie!==i.ie&&(s=ri(this.Ge,this.ml),null!==s&&this.Vl(s));const n=i.ie!==this.ys.mode;n&&(2===i.ie||this.Oe())&&this.ga(),n&&(3===i.ie||this.Rl())&&this.ga(),void 0!==t.Dl&&i.Dl!==t.Dl&&(this.ys.invertScale=t.Dl,this.El()),this._l.p(i,this.ie())}Bl(){return this._l}P(){return this.gl.fontSize}$t(){return this.tl}Il(t){this.tl!==t&&(this.tl=t,this.Pl(),this.fl=null)}Al(){if(this.il)return this.il;const t=this.$t()-this.zl()-this.Ol();return this.il=t,t}Qe(){return this.Ll(),this.Ge}Vl(t,i){const s=this.Ge;(i||null===s&&null!==t||null!==s&&!s.He(t))&&(this.fl=null,this.Ge=t)}Nl(t){this.Vl(t),this.Wl(null!==t)}Ki(){return this.Ll(),0===this.tl||!this.Ge||this.Ge.Ki()}Fl(t){return this.Dl()?t:this.$t()-1-t}Nt(t,i){return this.Oe()?t=Qt(t,i):this.Rl()&&(t=ii(t,i)),this.Cl(t,i)}Hl(t,i,s){this.Ll();const n=this.Ol(),e=a(this.Qe()),r=e.$e(),h=e.je(),l=this.Al()-1,o=this.Dl(),_=l/(h-r),u=void 0===s?0:s.from,c=void 0===s?t.length:s.to,d=this.Ul();for(let s=u;st.Ns()))}ja(){return this.ys.ensureEdgeTickMarksVisible&&this.kl()}Ya(){return this.P()/2}ga(){this.fl=null;let t=1/0;this.cl=null;for(const i of this.ul)i.hs()ni(t,this.ml):null}co(t,i,s){return void 0===i?(void 0===s&&(s=this.ra()),s.format(t)):i(t)}nr(t,i){return this.co(t,this.Ml.priceFormatter,i)}lo(t,i){return this.co(t,this.Ml.percentageFormatter,i)}}function pi(t){return t instanceof Ht}class vi{constructor(t,i){this.ul=[],this.do=new Map,this.tl=0,this.fo=0,this.po=1e3,this.dl=null,this.vo=new o,this.Ph=[],this.uh=t,this.ts=i,this.mo=new Gt(this);const s=i.N();this.wo=this.Mo("left",s.leftPriceScale),this.bo=this.Mo("right",s.rightPriceScale),this.wo.Bl().i(this.xo.bind(this,this.wo),this),this.bo.Bl().i(this.xo.bind(this,this.bo),this),this.So(s)}So(t){if(t.leftPriceScale&&this.wo.hr(t.leftPriceScale),t.rightPriceScale&&this.bo.hr(t.rightPriceScale),t.localization&&(this.wo.ga(),this.bo.ga()),t.overlayPriceScales){const i=Array.from(this.do.values());for(const s of i){const i=a(s[0].Wt());i.hr(t.overlayPriceScales),t.localization&&i.ga()}}}Co(t){switch(t){case"left":return this.wo;case"right":return this.bo}return this.do.has(t)?h(this.do.get(t))[0].Wt():null}m(){this.Qt().yo().u(this),this.wo.Bl().u(this),this.bo.Bl().u(this),this.ul.forEach((t=>{t.m&&t.m()})),this.Ph=this.Ph.filter((t=>{const i=t.oh();return i.detached&&i.detached(),!1})),this.vo.p()}Po(){return this.po}ko(t){this.po=t}Qt(){return this.ts}Qi(){return this.fo}$t(){return this.tl}To(t){this.fo=t,this.Ro()}Il(t){this.tl=t,this.wo.Il(t),this.bo.Il(t),this.ul.forEach((i=>{if(this.Un(i)){const s=i.Wt();null!==s&&s.Il(t)}})),this.Ro()}Do(){return this.ul.filter(pi)}ba(){return this.ul}Un(t){const i=t.Wt();return null===i||this.wo!==i&&this.bo!==i}Zl(t,i,s){this.Vo(t,i,s?t.hs():this.ul.length)}Jl(t,i){const s=this.ul.indexOf(t);r(-1!==s,"removeDataSource: invalid data source"),this.ul.splice(s,1),i||this.ul.forEach(((t,i)=>t.ls(i)));const n=a(t.Wt()).wa();if(this.do.has(n)){const i=h(this.do.get(n)),s=i.indexOf(t);-1!==s&&(i.splice(s,1),0===i.length&&this.do.delete(n))}const e=t.Wt();e&&e.ba().indexOf(t)>=0&&(e.Jl(t),this.Eo(e)),this.dl=null}jn(t){return t===this.wo?"left":t===this.bo?"right":"overlay"}Bo(){return this.wo}Io(){return this.bo}Ao(t,i){t.so(i)}zo(t,i){t.no(i),this.Ro()}Oo(t){t.eo()}Lo(t,i){t.ro(i)}No(t,i){t.ho(i),this.Ro()}Wo(t){t.ao()}Ro(){this.ul.forEach((t=>{t.Ns()}))}ks(){let t=null;return this.ts.N().rightPriceScale.visible&&0!==this.bo.ba().length?t=this.bo:this.ts.N().leftPriceScale.visible&&0!==this.wo.ba().length?t=this.wo:0!==this.ul.length&&(t=this.ul[0].Wt()),null===t&&(t=this.bo),t}$n(){let t=null;return this.ts.N().rightPriceScale.visible?t=this.bo:this.ts.N().leftPriceScale.visible&&(t=this.wo),t}Eo(t){null!==t&&t.kl()&&this.Fo(t)}Ho(t){const i=this.uh.ye();t.yl({sn:!0}),null!==i&&t._o(i),this.Ro()}Uo(){this.Fo(this.wo),this.Fo(this.bo)}$o(){this.Eo(this.wo),this.Eo(this.bo),this.ul.forEach((t=>{this.Un(t)&&this.Eo(t.Wt())})),this.Ro(),this.ts.ar()}Dt(){return null===this.dl&&(this.dl=_i(this.ul)),this.dl}jo(t,i){i=qt(i,0,this.ul.length-1);const s=this.ul.indexOf(t);r(-1!==s,"setSeriesOrder: invalid data source"),this.ul.splice(s,1),this.ul.splice(i,0,t),this.ul.forEach(((t,i)=>t.ls(i))),this.dl=null;for(const t of[this.wo,this.bo])t.Gl(),t.ga();this.ts.ar()}Et(){return this.Dt().filter(pi)}qo(){return this.vo}Yo(){return this.mo}ua(t){this.Ph.push(new Dt(t))}ca(t){this.Ph=this.Ph.filter((i=>i.oh()!==t)),t.detached&&t.detached(),this.ts.ar()}Ko(){return this.Ph}sa(t,i){return this.Ph.map((s=>s.Yn(t,i))).filter((t=>null!==t))}Fo(t){const i=t.oo();if(i&&i.length>0&&!this.uh.Ki()){const i=this.uh.ye();null!==i&&t._o(i)}t.Ns()}Vo(t,i,s){let n=this.Co(i);if(null===n&&(n=this.Mo(i,this.ts.N().overlayPriceScales)),this.ul.splice(s,0,t),!q(i)){const s=this.do.get(i)||[];s.push(t),this.do.set(i,s)}t.ls(s),n.Zl(t),t._s(n),this.Eo(n),this.dl=null}xo(t,i,s){i.ie!==s.ie&&this.Fo(t)}Mo(t,i){const s={visible:!0,autoScale:!0,...p(i)},n=new fi(t,s,this.ts.N().layout,this.ts.N().localization,this.ts.Xi());return n.Il(this.$t()),n}}function mi(t){return{Xo:t.Xo,Zo:{Kn:t.Go.externalId},Jo:t.Go.cursorStyle}}function wi(t,i,s,n){for(const e of t){const t=e.Tt(n);if(null!==t&&t.Yn){const n=t.Yn(i,s);if(null!==n)return{Qo:e,Zo:n}}}return null}function gi(t){return void 0!==t.Ws}function Mi(t,i,s){const n=[t,...t.Dt()],e=function(t,i,s){let n,e;for(const a of t){const t=a.sa?.(i,s)??[];for(const i of t)r=i.zOrder,h=n?.zOrder,(!h||"top"===r&&"top"!==h||"normal"===r&&"bottom"===h)&&(n=i,e=a)}var r,h;return n&&e?{Go:n,Xo:e}:null}(n,i,s);if("top"===e?.Go.zOrder)return mi(e);for(const r of n){if(e&&e.Xo===r&&"bottom"!==e.Go.zOrder&&!e.Go.isBackground)return mi(e);if(gi(r)){const n=wi(r.Ws(t),i,s,t);if(null!==n)return{Xo:r,Qo:n.Qo,Zo:n.Zo}}if(e&&e.Xo===r&&"bottom"!==e.Go.zOrder&&e.Go.isBackground)return mi(e)}return e?.Go?mi(e):null}class bi{constructor(t,i,s=50){this.Pn=0,this.kn=1,this.Tn=1,this.Dn=new Map,this.Rn=new Map,this.t_=t,this.i_=i,this.Vn=s}s_(t){const i=t.time,s=this.i_.cacheKey(i),n=this.Dn.get(s);if(void 0!==n)return n.n_;if(this.Pn===this.Vn){const t=this.Rn.get(this.Tn);this.Rn.delete(this.Tn),this.Dn.delete(h(t)),this.Tn++,this.Pn--}const e=this.t_(t);return this.Dn.set(s,{n_:e,An:this.kn}),this.Rn.set(this.kn,s),this.Pn++,this.kn++,e}}class xi{constructor(t,i){r(t<=i,"right should be >= left"),this.e_=t,this.r_=i}Uh(){return this.e_}bi(){return this.r_}h_(){return this.r_-this.e_+1}Te(t){return this.e_<=t&&t<=this.r_}He(t){return this.e_===t.Uh()&&this.r_===t.bi()}}function Si(t,i){return null===t||null===i?t===i:t.He(i)}class Ci{constructor(){this.a_=new Map,this.Dn=null,this.l_=!1}o_(t){this.l_=t,this.Dn=null}__(t,i){this.u_(i),this.Dn=null;for(let s=i;s{t<=s[0].index?i.push(n):s.splice(bt(s,t,(i=>i.index!i||s.has(t.index);for(const i of Array.from(this.a_.keys()).sort(((t,i)=>i-t))){if(!this.a_.get(i))continue;const s=n;n=[];const r=s.length;let a=0;const l=h(this.a_.get(i)),o=l.length;let _=1/0,u=-1/0;for(let i=0;i=t&&o-u>=t&&e(h))n.push(h),u=o;else if(this.l_)return s}for(;ai.weight?t:i}class ki{constructor(t,i,s,n){this.fo=0,this.b_=null,this.x_=[],this.vl=null,this.pl=null,this.S_=new Ci,this.C_=new Map,this.y_=yi.M_(),this.P_=!0,this.k_=new o,this.T_=new o,this.R_=new o,this.D_=null,this.V_=null,this.E_=new Map,this.B_=-1,this.I_=[],this.ys=i,this.Ml=s,this.A_=i.rightOffset,this.z_=i.barSpacing,this.ts=t,this.i_=n,this.O_(),this.S_.o_(i.uniformDistribution),this.L_()}N(){return this.ys}N_(t){_(this.Ml,t),this.W_(),this.O_()}hr(t,i){_(this.ys,t),this.ys.fixLeftEdge&&this.F_(),this.ys.fixRightEdge&&this.H_(),void 0!==t.barSpacing&&this.ts.dn(t.barSpacing),void 0!==t.rightOffset&&this.ts.fn(t.rightOffset),void 0===t.minBarSpacing&&void 0===t.maxBarSpacing||this.ts.dn(t.barSpacing??this.z_),void 0!==t.ignoreWhitespaceIndices&&t.ignoreWhitespaceIndices!==this.ys.ignoreWhitespaceIndices&&this.L_(),this.W_(),this.O_(),this.R_.p()}Rs(t){return this.x_[t]?.time??null}ss(t){return this.x_[t]??null}U_(t,i){if(this.x_.length<1)return null;if(this.i_.key(t)>this.i_.key(this.x_[this.x_.length-1].time))return i?this.x_.length-1:null;const s=bt(this.x_,this.i_.key(t),((t,i)=>this.i_.key(t.time)0}ye(){return this.q_(),this.y_.w_()}Y_(){return this.q_(),this.y_.g_()}K_(){const t=this.ye();if(null===t)return null;const i={from:t.Uh(),to:t.bi()};return this.X_(i)}X_(t){const i=Math.round(t.from),s=Math.round(t.to),n=a(this.Z_()),e=a(this.G_());return{from:a(this.ss(Math.max(n,i))),to:a(this.ss(Math.min(e,s)))}}J_(t){return{from:a(this.U_(t.from,!0)),to:a(this.U_(t.to,!0))}}Qi(){return this.fo}To(t){if(!isFinite(t)||t<=0)return;if(this.fo===t)return;const i=this.Y_(),s=this.fo;if(this.fo=t,this.P_=!0,this.ys.lockVisibleTimeRangeOnResize&&0!==s){const i=this.z_*t/s;this.z_=i}if(this.ys.fixLeftEdge&&null!==i&&i.Uh()<=0){const i=s-t;this.A_-=Math.round(i/this.z_)+1,this.P_=!0}this.Q_(),this.tu()}jt(t){if(this.Ki()||!c(t))return 0;const i=this.iu()+this.A_-t;return this.fo-(i+.5)*this.z_-1}su(t,i){const s=this.iu(),n=void 0===i?0:i.from,e=void 0===i?t.length:i.to;for(let i=n;ii/2&&!_?s.needAlignCoordinate=!1:s.needAlignCoordinate=u&&t.index<=l||c&&t.index>=o,d++}return this.I_.length=d,this.V_=this.I_,this.I_}du(){this.P_=!0,this.dn(this.ys.barSpacing),this.fn(this.ys.rightOffset)}fu(t){this.P_=!0,this.b_=t,this.tu(),this.F_()}pu(t,i){const s=this.eu(t),n=this.lu(),e=n+i*(n/10);this.dn(e),this.ys.rightBarStaysOnScroll||this.fn(this._u()+(s-this.eu(t)))}so(t){this.vl&&this.ao(),null===this.pl&&null===this.D_&&(this.Ki()||(this.pl=t,this.vu()))}no(t){if(null===this.D_)return;const i=qt(this.fo-t,0,this.fo),s=qt(this.fo-a(this.pl),0,this.fo);0!==i&&0!==s&&this.dn(this.D_.lu*i/s)}eo(){null!==this.pl&&(this.pl=null,this.mu())}ro(t){null===this.vl&&null===this.D_&&(this.Ki()||(this.vl=t,this.vu()))}ho(t){if(null===this.vl)return;const i=(this.vl-t)/this.lu();this.A_=a(this.D_)._u+i,this.P_=!0,this.tu()}ao(){null!==this.vl&&(this.vl=null,this.mu())}wu(){this.gu(this.ys.rightOffset)}gu(t,i=400){if(!isFinite(t))throw new RangeError("offset is required and must be finite number");if(!isFinite(i)||i<=0)throw new RangeError("animationDuration (optional) must be finite positive number");const s=this.A_,n=performance.now();this.ts._n({Mu:t=>(t-n)/i>=1,bu:e=>{const r=(e-n)/i;return r>=1?t:s+(t-s)*r}})}Pt(t,i){this.P_=!0,this.x_=t,this.S_.__(t,i),this.tu()}xu(){return this.k_}Su(){return this.T_}Cu(){return this.R_}iu(){return this.b_||0}yu(t){const i=t.h_();this.ou(this.fo/i),this.A_=t.bi()-this.iu(),this.tu(),this.P_=!0,this.ts.au(),this.ts.ar()}Pu(){const t=this.Z_(),i=this.G_();null!==t&&null!==i&&this.yu(new xi(t,i+this.ys.rightOffset))}ku(t){const i=new xi(t.from,t.to);this.yu(i)}ns(t){return void 0!==this.Ml.timeFormatter?this.Ml.timeFormatter(t.originalTime):this.i_.formatHorzItem(t.time)}L_(){if(!this.ys.ignoreWhitespaceIndices)return;this.E_.clear();const t=this.ts.Ys();for(const i of t)for(const t of i.ma())this.E_.set(t,!0);this.B_++}uu(){const t=this.ts.N().handleScroll,i=this.ts.N().handleScale;return!(t.horzTouchDrag||t.mouseWheel||t.pressedMouseMove||t.vertTouchDrag||i.axisDoubleClickReset.time||i.axisPressedMouseMove.time||i.mouseWheel||i.pinch)}Z_(){return 0===this.x_.length?null:0}G_(){return 0===this.x_.length?null:this.x_.length-1}Tu(t){return(this.fo-1-t)/this.z_}eu(t){const i=this.Tu(t),s=this.iu()+this.A_-i;return Math.round(1e6*s)/1e6}ou(t){const i=this.z_;this.z_=t,this.Q_(),i!==this.z_&&(this.P_=!0,this.Ru())}q_(){if(!this.P_)return;if(this.P_=!1,this.Ki())return void this.Du(yi.M_());const t=this.iu(),i=this.fo/this.z_,s=this.A_+t,n=new xi(s-i+1,s);this.Du(new yi(n))}Q_(){const t=qt(this.z_,this.Vu(),this.Eu());this.z_!==t&&(this.z_=t,this.P_=!0)}Eu(){return this.ys.maxBarSpacing>0?this.ys.maxBarSpacing:.5*this.fo}Vu(){return this.ys.fixLeftEdge&&this.ys.fixRightEdge&&0!==this.x_.length?this.fo/this.x_.length:this.ys.minBarSpacing}tu(){const t=this.Bu();null!==t&&this.A_i&&(this.A_=i,this.P_=!0)}Bu(){const t=this.Z_(),i=this.b_;if(null===t||null===i)return null;return t-i-1+(this.ys.fixLeftEdge?this.fo/this.z_:Math.min(2,this.x_.length))}Iu(){return this.ys.fixRightEdge?0:this.fo/this.z_-Math.min(2,this.x_.length)}vu(){this.D_={lu:this.lu(),_u:this._u()}}mu(){this.D_=null}cu(t){let i=this.C_.get(t.weight);return void 0===i&&(i=new bi((t=>this.Au(t)),this.i_),this.C_.set(t.weight,i)),i.s_(t)}Au(t){return this.i_.formatTickmark(t,this.Ml)}Du(t){const i=this.y_;this.y_=t,Si(i.w_(),this.y_.w_())||this.k_.p(),Si(i.g_(),this.y_.g_())||this.T_.p(),this.Ru()}Ru(){this.V_=null}W_(){this.Ru(),this.C_.clear()}O_(){this.i_.updateFormatter(this.Ml)}F_(){if(!this.ys.fixLeftEdge)return;const t=this.Z_();if(null===t)return;const i=this.ye();if(null===i)return;const s=i.Uh()-t;if(s<0){const t=this.A_-s-1;this.fn(t)}this.Q_()}H_(){this.tu(),this.Q_()}ru(t){return!this.ys.ignoreWhitespaceIndices||(this.E_.get(t)||!1)}hu(t){const i=function*(t){const i=Math.round(t),s=is)break}return t}}var Ti,Ri,Di,Vi,Ei;!function(t){t[t.OnTouchEnd=0]="OnTouchEnd",t[t.OnNextTap=1]="OnNextTap"}(Ti||(Ti={}));class Bi{constructor(t,i,s){this.zu=[],this.Ou=[],this.fo=0,this.Lu=null,this.Nu=new o,this.Wu=new o,this.Fu=null,this.Hu=t,this.ys=i,this.i_=s,this.bl=new S(this.ys.layout.colorParsers),this.Uu=new M(this),this.uh=new ki(this,i.timeScale,this.ys.localization,s),this.Ct=new j(this,i.crosshair),this.$u=new jt(i.crosshair),this.ju(0),this.zu[0].ko(2e3),this.qu=this.Yu(0),this.Ku=this.Yu(1)}Bh(){this.Xu(Y.gn())}ar(){this.Xu(Y.wn())}Zh(){this.Xu(new Y(1))}Ih(t){const i=this.Zu(t);this.Xu(i)}Gu(){return this.Lu}Ju(t){if(this.Lu?.Xo===t?.Xo&&this.Lu?.Zo?.Kn===t?.Zo?.Kn)return;const i=this.Lu;this.Lu=t,null!==i&&this.Ih(i.Xo),null!==t&&t.Xo!==i?.Xo&&this.Ih(t.Xo)}N(){return this.ys}hr(t){_(this.ys,t),this.zu.forEach((i=>i.So(t))),void 0!==t.timeScale&&this.uh.hr(t.timeScale),void 0!==t.localization&&this.uh.N_(t.localization),(t.leftPriceScale||t.rightPriceScale)&&this.Nu.p(),this.qu=this.Yu(0),this.Ku=this.Yu(1),this.Bh()}Qu(t,i,s=0){const n=this.zu[s];if(void 0===n)return;if("left"===t)return _(this.ys,{leftPriceScale:i}),n.So({leftPriceScale:i}),this.Nu.p(),void this.Bh();if("right"===t)return _(this.ys,{rightPriceScale:i}),n.So({rightPriceScale:i}),this.Nu.p(),void this.Bh();const e=this.tc(t,s);null!==e&&(e.Wt.hr(i),this.Nu.p())}tc(t,i){const s=this.zu[i];if(void 0===s)return null;const n=s.Co(t);return null!==n?{Us:s,Wt:n}:null}It(){return this.uh}$s(){return this.zu}sc(){return this.Ct}nc(){return this.Wu}ec(t,i){t.Il(i),this.au()}To(t){this.fo=t,this.uh.To(this.fo),this.zu.forEach((i=>i.To(t))),this.au()}rc(t){1!==this.zu.length&&(r(t>=0&&t=0&&tt+i.Po()),0),e=this.zu.reduce(((t,i)=>t+i.$t()),0),h=e-30*(this.zu.length-1);i=Math.min(h,Math.max(30,i));const a=n/e,l=s.$t();s.ko(i*a);let o=i-l,_=this.zu.length-1;for(const t of this.zu)if(t!==s){const i=Math.min(h,Math.max(30,t.$t()-o/_));o-=t.$t()-i,_-=1;const s=i*a;t.ko(s)}this.Bh()}ac(t,i){r(t>=0&&t=0&&ithis.i_.key(e),l=null!==t&&t>r&&!a,o=this.uh.N().allowShiftVisibleRangeOnWhitespaceReplacement,_=i&&(!(void 0===s)||o)&&this.uh.N().shiftVisibleRangeOnNewBar;if(l&&!_){const i=t-r;this.uh.fn(this.uh._u()-i)}}this.uh.fu(t)}Oh(t){null!==t&&t.$o()}Hn(t){if(function(t){return t instanceof vi}(t))return t;const i=this.zu.find((i=>i.Dt().includes(t)));return void 0===i?null:i}au(){this.zu.forEach((t=>t.$o())),this.Ah()}m(){this.zu.forEach((t=>t.m())),this.zu.length=0,this.ys.localization.priceFormatter=void 0,this.ys.localization.percentageFormatter=void 0,this.ys.localization.timeFormatter=void 0}xc(){return this.Uu}qn(){return this.Uu.N()}yo(){return this.Nu}Sc(t,i){const s=this.ju(i);this.Cc(t,s),this.Ou.push(t),1===this.Ou.length?this.Bh():this.ar()}yc(t){const i=this.Hn(t),s=this.Ou.indexOf(t);r(-1!==s,"Series not found");const n=a(i);this.Ou.splice(s,1),n.Jl(t),t.m&&t.m(),this.uh.L_(),this.Pc(n)}Eh(t,i){const s=a(this.Hn(t));s.Jl(t,!0),s.Zl(t,i,!0)}Pu(){const t=Y.wn();t.rn(),this.Xu(t)}kc(t){const i=Y.wn();i.ln(t),this.Xu(i)}cn(){const t=Y.wn();t.cn(),this.Xu(t)}dn(t){const i=Y.wn();i.dn(t),this.Xu(i)}fn(t){const i=Y.wn();i.fn(t),this.Xu(i)}_n(t){const i=Y.wn();i._n(t),this.Xu(i)}hn(){const t=Y.wn();t.hn(),this.Xu(t)}Tc(){return this.ys.rightPriceScale.visible?"right":"left"}Rc(t,i){r(i>=0,"Index should be greater or equal to 0");if(i===this.Dc(t))return;const s=a(this.Hn(t));s.Jl(t);const n=this.ju(i);this.Cc(t,n),0===s.ba().length&&this.Pc(s)}Vc(){return this.Ku}$(){return this.qu}Ut(t){const i=this.Ku,s=this.qu;if(i===s)return i;if(t=Math.max(0,Math.min(100,Math.round(100*t))),null===this.Fu||this.Fu.mr!==s||this.Fu.wr!==i)this.Fu={mr:s,wr:i,Ec:new Map};else{const i=this.Fu.Ec.get(t);if(void 0!==i)return i}const n=this.bl.tt(s,i,t/100);return this.Fu.Ec.set(t,n),n}Bc(t){return this.zu.indexOf(t)}Xi(){return this.bl}ju(t){if(r(t>=0,"Index should be greater or equal to 0"),(t=Math.min(this.zu.length,t))i.Do().includes(t)))}lc(t,i){const s=new Y(i);if(null!==t){const n=this.zu.indexOf(t);s.Qs(n,{tn:i})}return s}Zu(t,i){return void 0===i&&(i=2),this.lc(this.Hn(t),i)}Xu(t){this.Hu&&this.Hu(t),this.zu.forEach((t=>t.Yo().lr().Pt()))}Cc(t,i){const s=t.N().priceScaleId,n=void 0!==s?s:this.Tc();i.Zl(t,n),q(n)||t.hr(t.N())}Yu(t){const i=this.ys.layout;return"gradient"===i.background.type?0===t?i.background.topColor:i.background.bottomColor:i.background.color}Pc(t){0===t.ba().length&&this.zu.length>1&&(this.zu.splice(this.Bc(t),1),this.Bh())}}function Ii(t){return!u(t)&&!d(t)}function Ai(t){return u(t)}!function(t){t[t.Disabled=0]="Disabled",t[t.Continuous=1]="Continuous",t[t.OnDataUpdate=2]="OnDataUpdate"}(Ri||(Ri={})),function(t){t[t.LastBar=0]="LastBar",t[t.LastVisible=1]="LastVisible"}(Di||(Di={})),function(t){t.Solid="solid",t.VerticalGradient="gradient"}(Vi||(Vi={})),function(t){t[t.Year=0]="Year",t[t.Month=1]="Month",t[t.DayOfMonth=2]="DayOfMonth",t[t.Time=3]="Time",t[t.TimeWithSeconds=4]="TimeWithSeconds"}(Ei||(Ei={}));const zi=t=>t.getUTCFullYear();function Oi(t,i,s){return i.replace(/yyyy/g,(t=>X(zi(t),4))(t)).replace(/yy/g,(t=>X(zi(t)%100,2))(t)).replace(/MMMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"long"}))(t,s)).replace(/MMM/g,((t,i)=>new Date(t.getUTCFullYear(),t.getUTCMonth(),1).toLocaleString(i,{month:"short"}))(t,s)).replace(/MM/g,(t=>X((t=>t.getUTCMonth()+1)(t),2))(t)).replace(/dd/g,(t=>X((t=>t.getUTCDate())(t),2))(t))}class Li{constructor(t="yyyy-MM-dd",i="default"){this.Ic=t,this.Ac=i}s_(t){return Oi(t,this.Ic,this.Ac)}}class Ni{constructor(t){this.zc=t||"%h:%m:%s"}s_(t){return this.zc.replace("%h",X(t.getUTCHours(),2)).replace("%m",X(t.getUTCMinutes(),2)).replace("%s",X(t.getUTCSeconds(),2))}}const Wi={Oc:"yyyy-MM-dd",Lc:"%h:%m:%s",Nc:" ",Wc:"default"};class Fi{constructor(t={}){const i={...Wi,...t};this.Fc=new Li(i.Oc,i.Wc),this.Hc=new Ni(i.Lc),this.Uc=i.Nc}s_(t){return`${this.Fc.s_(t)}${this.Uc}${this.Hc.s_(t)}`}}function Hi(t){return 60*t*60*1e3}function Ui(t){return 60*t*1e3}const $i=[{$c:(ji=1,1e3*ji),jc:10},{$c:Ui(1),jc:20},{$c:Ui(5),jc:21},{$c:Ui(30),jc:22},{$c:Hi(1),jc:30},{$c:Hi(3),jc:31},{$c:Hi(6),jc:32},{$c:Hi(12),jc:33}];var ji;function qi(t,i){if(t.getUTCFullYear()!==i.getUTCFullYear())return 70;if(t.getUTCMonth()!==i.getUTCMonth())return 60;if(t.getUTCDate()!==i.getUTCDate())return 50;for(let s=$i.length-1;s>=0;--s)if(Math.floor(i.getTime()/$i[s].$c)!==Math.floor(t.getTime()/$i[s].$c))return $i[s].jc;return 0}function Yi(t){let i=t;if(d(t)&&(i=Xi(t)),!Ii(i))throw new Error("time must be of type BusinessDay");const s=new Date(Date.UTC(i.year,i.month-1,i.day,0,0,0,0));return{qc:Math.round(s.getTime()/1e3),Yc:i}}function Ki(t){if(!Ai(t))throw new Error("time must be of type isUTCTimestamp");return{qc:t}}function Xi(t){const i=new Date(t);if(isNaN(i.getTime()))throw new Error(`Invalid date string=${t}, expected format=yyyy-mm-dd`);return{day:i.getUTCDate(),month:i.getUTCMonth()+1,year:i.getUTCFullYear()}}function Zi(t){d(t.time)&&(t.time=Xi(t.time))}class Gi{options(){return this.ys}setOptions(t){this.ys=t,this.updateFormatter(t.localization)}preprocessData(t){Array.isArray(t)?function(t){t.forEach(Zi)}(t):Zi(t)}createConverterToInternalObj(t){return a(function(t){return 0===t.length?null:Ii(t[0].time)||d(t[0].time)?Yi:Ki}(t))}key(t){return"object"==typeof t&&"qc"in t?t.qc:this.key(this.convertHorzItemToInternal(t))}cacheKey(t){const i=t;return void 0===i.Yc?new Date(1e3*i.qc).getTime():new Date(Date.UTC(i.Yc.year,i.Yc.month-1,i.Yc.day)).getTime()}convertHorzItemToInternal(t){return Ai(i=t)?Ki(i):Ii(i)?Yi(i):Yi(Xi(i));var i}updateFormatter(t){if(!this.ys)return;const i=t.dateFormat;this.ys.timeScale.timeVisible?this.Kc=new Fi({Oc:i,Lc:this.ys.timeScale.secondsVisible?"%h:%m:%s":"%h:%m",Nc:" ",Wc:t.locale}):this.Kc=new Li(i,t.locale)}formatHorzItem(t){const i=t;return this.Kc.s_(new Date(1e3*i.qc))}formatTickmark(t,i){const s=function(t,i,s){switch(t){case 0:case 10:return i?s?4:3:2;case 20:case 21:case 22:case 30:case 31:case 32:case 33:return i?3:2;case 50:return 2;case 60:return 1;case 70:return 0}}(t.weight,this.ys.timeScale.timeVisible,this.ys.timeScale.secondsVisible),n=this.ys.timeScale;if(void 0!==n.tickMarkFormatter){const e=n.tickMarkFormatter(t.originalTime,s,i.locale);if(null!==e)return e}return function(t,i,s){const n={};switch(i){case 0:n.year="numeric";break;case 1:n.month="short";break;case 2:n.day="numeric";break;case 3:n.hour12=!1,n.hour="2-digit",n.minute="2-digit";break;case 4:n.hour12=!1,n.hour="2-digit",n.minute="2-digit",n.second="2-digit"}const e=void 0===t.Yc?new Date(1e3*t.qc):new Date(Date.UTC(t.Yc.year,t.Yc.month-1,t.Yc.day));return new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds()).toLocaleString(s,n)}(t.time,s,i.locale)}maxTickMarkWeight(t){let i=t.reduce(Pi,t[0]).weight;return i>30&&i<50&&(i=30),i}fillWeightsForPoints(t,i){!function(t,i=0){if(0===t.length)return;let s=0===i?null:t[i-1].time.qc,n=null!==s?new Date(1e3*s):null,e=0;for(let r=i;r1){const i=Math.ceil(e/(t.length-1)),s=new Date(1e3*(t[0].time.qc-i));t[0].timeWeight=qi(new Date(1e3*t[0].time.qc),s)}}(t,i)}static Xc(t){return _({localization:{dateFormat:"dd MMM 'yy"}},t??{})}}function Ji(t){var i=t.width,s=t.height;if(i<0)throw new Error("Negative width is not allowed for Size");if(s<0)throw new Error("Negative height is not allowed for Size");return{width:i,height:s}}function Qi(t,i){return t.width===i.width&&t.height===i.height}var ts=function(){function t(t){var i=this;this._resolutionListener=function(){return i._onResolutionChanged()},this._resolutionMediaQueryList=null,this._observers=[],this._window=t,this._installResolutionListener()}return t.prototype.dispose=function(){this._uninstallResolutionListener(),this._window=null},Object.defineProperty(t.prototype,"value",{get:function(){return this._window.devicePixelRatio},enumerable:!1,configurable:!0}),t.prototype.subscribe=function(t){var i=this,s={next:t};return this._observers.push(s),{unsubscribe:function(){i._observers=i._observers.filter((function(t){return t!==s}))}}},t.prototype._installResolutionListener=function(){if(null!==this._resolutionMediaQueryList)throw new Error("Resolution listener is already installed");var t=this._window.devicePixelRatio;this._resolutionMediaQueryList=this._window.matchMedia("all and (resolution: ".concat(t,"dppx)")),this._resolutionMediaQueryList.addListener(this._resolutionListener)},t.prototype._uninstallResolutionListener=function(){null!==this._resolutionMediaQueryList&&(this._resolutionMediaQueryList.removeListener(this._resolutionListener),this._resolutionMediaQueryList=null)},t.prototype._reinstallResolutionListener=function(){this._uninstallResolutionListener(),this._installResolutionListener()},t.prototype._onResolutionChanged=function(){var t=this;this._observers.forEach((function(i){return i.next(t._window.devicePixelRatio)})),this._reinstallResolutionListener()},t}();var is=function(){function t(t,i,s){var n;this._canvasElement=null,this._bitmapSizeChangedListeners=[],this._suggestedBitmapSize=null,this._suggestedBitmapSizeChangedListeners=[],this._devicePixelRatioObservable=null,this._canvasElementResizeObserver=null,this._canvasElement=t,this._canvasElementClientSize=Ji({width:this._canvasElement.clientWidth,height:this._canvasElement.clientHeight}),this._transformBitmapSize=null!=i?i:function(t){return t},this._allowResizeObserver=null===(n=null==s?void 0:s.allowResizeObserver)||void 0===n||n,this._chooseAndInitObserver()}return t.prototype.dispose=function(){var t,i;if(null===this._canvasElement)throw new Error("Object is disposed");null===(t=this._canvasElementResizeObserver)||void 0===t||t.disconnect(),this._canvasElementResizeObserver=null,null===(i=this._devicePixelRatioObservable)||void 0===i||i.dispose(),this._devicePixelRatioObservable=null,this._suggestedBitmapSizeChangedListeners.length=0,this._bitmapSizeChangedListeners.length=0,this._canvasElement=null},Object.defineProperty(t.prototype,"canvasElement",{get:function(){if(null===this._canvasElement)throw new Error("Object is disposed");return this._canvasElement},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"canvasElementClientSize",{get:function(){return this._canvasElementClientSize},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bitmapSize",{get:function(){return Ji({width:this.canvasElement.width,height:this.canvasElement.height})},enumerable:!1,configurable:!0}),t.prototype.resizeCanvasElement=function(t){this._canvasElementClientSize=Ji(t),this.canvasElement.style.width="".concat(this._canvasElementClientSize.width,"px"),this.canvasElement.style.height="".concat(this._canvasElementClientSize.height,"px"),this._invalidateBitmapSize()},t.prototype.subscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeBitmapSizeChanged=function(t){this._bitmapSizeChangedListeners=this._bitmapSizeChangedListeners.filter((function(i){return i!==t}))},Object.defineProperty(t.prototype,"suggestedBitmapSize",{get:function(){return this._suggestedBitmapSize},enumerable:!1,configurable:!0}),t.prototype.subscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners.push(t)},t.prototype.unsubscribeSuggestedBitmapSizeChanged=function(t){this._suggestedBitmapSizeChangedListeners=this._suggestedBitmapSizeChangedListeners.filter((function(i){return i!==t}))},t.prototype.applySuggestedBitmapSize=function(){if(null!==this._suggestedBitmapSize){var t=this._suggestedBitmapSize;this._suggestedBitmapSize=null,this._resizeBitmap(t),this._emitSuggestedBitmapSizeChanged(t,this._suggestedBitmapSize)}},t.prototype._resizeBitmap=function(t){var i=this.bitmapSize;Qi(i,t)||(this.canvasElement.width=t.width,this.canvasElement.height=t.height,this._emitBitmapSizeChanged(i,t))},t.prototype._emitBitmapSizeChanged=function(t,i){var s=this;this._bitmapSizeChangedListeners.forEach((function(n){return n.call(s,t,i)}))},t.prototype._suggestNewBitmapSize=function(t){var i=this._suggestedBitmapSize,s=Ji(this._transformBitmapSize(t,this._canvasElementClientSize)),n=Qi(this.bitmapSize,s)?null:s;null===i&&null===n||null!==i&&null!==n&&Qi(i,n)||(this._suggestedBitmapSize=n,this._emitSuggestedBitmapSizeChanged(i,n))},t.prototype._emitSuggestedBitmapSizeChanged=function(t,i){var s=this;this._suggestedBitmapSizeChangedListeners.forEach((function(n){return n.call(s,t,i)}))},t.prototype._chooseAndInitObserver=function(){var t=this;this._allowResizeObserver?new Promise((function(t){var i=new ResizeObserver((function(s){t(s.every((function(t){return"devicePixelContentBoxSize"in t}))),i.disconnect()}));i.observe(document.body,{box:"device-pixel-content-box"})})).catch((function(){return!1})).then((function(i){return i?t._initResizeObserver():t._initDevicePixelRatioObservable()})):this._initDevicePixelRatioObservable()},t.prototype._initDevicePixelRatioObservable=function(){var t=this;if(null!==this._canvasElement){var i=ss(this._canvasElement);if(null===i)throw new Error("No window is associated with the canvas");this._devicePixelRatioObservable=function(t){return new ts(t)}(i),this._devicePixelRatioObservable.subscribe((function(){return t._invalidateBitmapSize()})),this._invalidateBitmapSize()}},t.prototype._invalidateBitmapSize=function(){var t,i;if(null!==this._canvasElement){var s=ss(this._canvasElement);if(null!==s){var n=null!==(i=null===(t=this._devicePixelRatioObservable)||void 0===t?void 0:t.value)&&void 0!==i?i:s.devicePixelRatio,e=this._canvasElement.getClientRects(),r=void 0!==e[0]?function(t,i){return Ji({width:Math.round(t.left*i+t.width*i)-Math.round(t.left*i),height:Math.round(t.top*i+t.height*i)-Math.round(t.top*i)})}(e[0],n):Ji({width:this._canvasElementClientSize.width*n,height:this._canvasElementClientSize.height*n});this._suggestNewBitmapSize(r)}}},t.prototype._initResizeObserver=function(){var t=this;null!==this._canvasElement&&(this._canvasElementResizeObserver=new ResizeObserver((function(i){var s=i.find((function(i){return i.target===t._canvasElement}));if(s&&s.devicePixelContentBoxSize&&s.devicePixelContentBoxSize[0]){var n=s.devicePixelContentBoxSize[0],e=Ji({width:n.inlineSize,height:n.blockSize});t._suggestNewBitmapSize(e)}})),this._canvasElementResizeObserver.observe(this._canvasElement,{box:"device-pixel-content-box"}))},t}();function ss(t){return t.ownerDocument.defaultView}var ns=function(){function t(t,i,s){if(0===i.width||0===i.height)throw new TypeError("Rendering target could only be created on a media with positive width and height");if(this._mediaSize=i,0===s.width||0===s.height)throw new TypeError("Rendering target could only be created using a bitmap with positive integer width and height");this._bitmapSize=s,this._context=t}return t.prototype.useMediaCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),this._context.scale(this._horizontalPixelRatio,this._verticalPixelRatio),t({context:this._context,mediaSize:this._mediaSize})}finally{this._context.restore()}},t.prototype.useBitmapCoordinateSpace=function(t){try{return this._context.save(),this._context.setTransform(1,0,0,1,0,0),t({context:this._context,mediaSize:this._mediaSize,bitmapSize:this._bitmapSize,horizontalPixelRatio:this._horizontalPixelRatio,verticalPixelRatio:this._verticalPixelRatio})}finally{this._context.restore()}},Object.defineProperty(t.prototype,"_horizontalPixelRatio",{get:function(){return this._bitmapSize.width/this._mediaSize.width},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"_verticalPixelRatio",{get:function(){return this._bitmapSize.height/this._mediaSize.height},enumerable:!1,configurable:!0}),t}();function es(t,i){var s=t.canvasElementClientSize;if(0===s.width||0===s.height)return null;var n=t.bitmapSize;if(0===n.width||0===n.height)return null;var e=t.canvasElement.getContext("2d",i);return null===e?null:new ns(e,s,n)}const rs="undefined"!=typeof window;function hs(){return!!rs&&window.navigator.userAgent.toLowerCase().indexOf("firefox")>-1}function as(){return!!rs&&/iPhone|iPad|iPod/.test(window.navigator.platform)}function ls(t){return t+t%2}function os(t){rs&&void 0!==window.chrome&&t.addEventListener("mousedown",(t=>{if(1===t.button)return t.preventDefault(),!1}))}class _s{constructor(t,i,s){this.Zc=0,this.Gc=null,this.Jc={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.Qc=0,this.td=null,this.sd={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY},this.nd=null,this.ed=!1,this.rd=null,this.hd=null,this.ad=!1,this.ld=!1,this.od=!1,this._d=null,this.ud=null,this.dd=null,this.fd=null,this.pd=null,this.vd=null,this.md=null,this.wd=0,this.gd=!1,this.Md=!1,this.bd=!1,this.xd=0,this.Sd=null,this.Cd=!as(),this.yd=t=>{this.Pd(t)},this.kd=t=>{if(this.Td(t)){const i=this.Rd(t);if(++this.Qc,this.td&&this.Qc>1){const{Dd:s}=this.Vd(ds(t),this.sd);s<30&&!this.od&&this.Ed(i,this.Id.Bd),this.Ad()}}else{const i=this.Rd(t);if(++this.Zc,this.Gc&&this.Zc>1){const{Dd:s}=this.Vd(ds(t),this.Jc);s<5&&!this.ld&&this.zd(i,this.Id.Od),this.Ld()}}},this.Nd=t,this.Id=i,this.ys=s,this.Wd()}m(){null!==this._d&&(this._d(),this._d=null),null!==this.ud&&(this.ud(),this.ud=null),null!==this.fd&&(this.fd(),this.fd=null),null!==this.pd&&(this.pd(),this.pd=null),null!==this.vd&&(this.vd(),this.vd=null),null!==this.dd&&(this.dd(),this.dd=null),this.Fd(),this.Ld()}Hd(t){this.fd&&this.fd();const i=this.Ud.bind(this);if(this.fd=()=>{this.Nd.removeEventListener("mousemove",i)},this.Nd.addEventListener("mousemove",i),this.Td(t))return;const s=this.Rd(t);this.zd(s,this.Id.$d),this.Cd=!0}Ld(){null!==this.Gc&&clearTimeout(this.Gc),this.Zc=0,this.Gc=null,this.Jc={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}Ad(){null!==this.td&&clearTimeout(this.td),this.Qc=0,this.td=null,this.sd={_t:Number.NEGATIVE_INFINITY,ut:Number.POSITIVE_INFINITY}}Ud(t){if(this.bd||null!==this.hd)return;if(this.Td(t))return;const i=this.Rd(t);this.zd(i,this.Id.jd),this.Cd=!0}qd(t){const i=ps(t.changedTouches,a(this.Sd));if(null===i)return;if(this.xd=fs(t),null!==this.md)return;if(this.Md)return;this.gd=!0;const s=this.Vd(ds(i),a(this.hd)),{Yd:n,Kd:e,Dd:r}=s;if(this.ad||!(r<5)){if(!this.ad){const t=.5*n,i=e>=t&&!this.ys.Xd(),s=t>e&&!this.ys.Zd();i||s||(this.Md=!0),this.ad=!0,this.od=!0,this.Fd(),this.Ad()}if(!this.Md){const s=this.Rd(t,i);this.Ed(s,this.Id.Gd),cs(t)}}}Jd(t){if(0!==t.button)return;const i=this.Vd(ds(t),a(this.rd)),{Dd:s}=i;if(s>=5&&(this.ld=!0,this.Ld()),this.ld){const i=this.Rd(t);this.zd(i,this.Id.Qd)}}Vd(t,i){const s=Math.abs(i._t-t._t),n=Math.abs(i.ut-t.ut);return{Yd:s,Kd:n,Dd:s+n}}tf(t){let i=ps(t.changedTouches,a(this.Sd));if(null===i&&0===t.touches.length&&(i=t.changedTouches[0]),null===i)return;this.Sd=null,this.xd=fs(t),this.Fd(),this.hd=null,this.vd&&(this.vd(),this.vd=null);const s=this.Rd(t,i);if(this.Ed(s,this.Id.if),++this.Qc,this.td&&this.Qc>1){const{Dd:t}=this.Vd(ds(i),this.sd);t<30&&!this.od&&this.Ed(s,this.Id.Bd),this.Ad()}else this.od||(this.Ed(s,this.Id.sf),this.Id.sf&&cs(t));0===this.Qc&&cs(t),0===t.touches.length&&this.ed&&(this.ed=!1,cs(t))}Pd(t){if(0!==t.button)return;const i=this.Rd(t);if(this.rd=null,this.bd=!1,this.pd&&(this.pd(),this.pd=null),hs()){this.Nd.ownerDocument.documentElement.removeEventListener("mouseleave",this.yd)}if(!this.Td(t))if(this.zd(i,this.Id.nf),++this.Zc,this.Gc&&this.Zc>1){const{Dd:s}=this.Vd(ds(t),this.Jc);s<5&&!this.ld&&this.zd(i,this.Id.Od),this.Ld()}else this.ld||this.zd(i,this.Id.ef)}Fd(){null!==this.nd&&(clearTimeout(this.nd),this.nd=null)}rf(t){if(null!==this.Sd)return;const i=t.changedTouches[0];this.Sd=i.identifier,this.xd=fs(t);const s=this.Nd.ownerDocument.documentElement;this.od=!1,this.ad=!1,this.Md=!1,this.hd=ds(i),this.vd&&(this.vd(),this.vd=null);{const i=this.qd.bind(this),n=this.tf.bind(this);this.vd=()=>{s.removeEventListener("touchmove",i),s.removeEventListener("touchend",n)},s.addEventListener("touchmove",i,{passive:!1}),s.addEventListener("touchend",n,{passive:!1}),this.Fd(),this.nd=setTimeout(this.hf.bind(this,t),240)}const n=this.Rd(t,i);this.Ed(n,this.Id.af),this.td||(this.Qc=0,this.td=setTimeout(this.Ad.bind(this),500),this.sd=ds(i))}lf(t){if(0!==t.button)return;const i=this.Nd.ownerDocument.documentElement;hs()&&i.addEventListener("mouseleave",this.yd),this.ld=!1,this.rd=ds(t),this.pd&&(this.pd(),this.pd=null);{const t=this.Jd.bind(this),s=this.Pd.bind(this);this.pd=()=>{i.removeEventListener("mousemove",t),i.removeEventListener("mouseup",s)},i.addEventListener("mousemove",t),i.addEventListener("mouseup",s)}if(this.bd=!0,this.Td(t))return;const s=this.Rd(t);this.zd(s,this.Id._f),this.Gc||(this.Zc=0,this.Gc=setTimeout(this.Ld.bind(this),500),this.Jc=ds(t))}Wd(){this.Nd.addEventListener("mouseenter",this.Hd.bind(this)),this.Nd.addEventListener("touchcancel",this.Fd.bind(this));{const t=this.Nd.ownerDocument,i=t=>{this.Id.uf&&(t.composed&&this.Nd.contains(t.composedPath()[0])||t.target&&this.Nd.contains(t.target)||this.Id.uf())};this.ud=()=>{t.removeEventListener("touchstart",i)},this._d=()=>{t.removeEventListener("mousedown",i)},t.addEventListener("mousedown",i),t.addEventListener("touchstart",i,{passive:!0})}as()&&(this.dd=()=>{this.Nd.removeEventListener("dblclick",this.kd)},this.Nd.addEventListener("dblclick",this.kd)),this.Nd.addEventListener("mouseleave",this.cf.bind(this)),this.Nd.addEventListener("touchstart",this.rf.bind(this),{passive:!0}),os(this.Nd),this.Nd.addEventListener("mousedown",this.lf.bind(this)),this.df(),this.Nd.addEventListener("touchmove",(()=>{}),{passive:!1})}df(){void 0===this.Id.ff&&void 0===this.Id.pf&&void 0===this.Id.vf||(this.Nd.addEventListener("touchstart",(t=>this.mf(t.touches)),{passive:!0}),this.Nd.addEventListener("touchmove",(t=>{if(2===t.touches.length&&null!==this.md&&void 0!==this.Id.pf){const i=us(t.touches[0],t.touches[1])/this.wd;this.Id.pf(this.md,i),cs(t)}}),{passive:!1}),this.Nd.addEventListener("touchend",(t=>{this.mf(t.touches)})))}mf(t){1===t.length&&(this.gd=!1),2!==t.length||this.gd||this.ed?this.wf():this.gf(t)}gf(t){const i=this.Nd.getBoundingClientRect()||{left:0,top:0};this.md={_t:(t[0].clientX-i.left+(t[1].clientX-i.left))/2,ut:(t[0].clientY-i.top+(t[1].clientY-i.top))/2},this.wd=us(t[0],t[1]),void 0!==this.Id.ff&&this.Id.ff(),this.Fd()}wf(){null!==this.md&&(this.md=null,void 0!==this.Id.vf&&this.Id.vf())}cf(t){if(this.fd&&this.fd(),this.Td(t))return;if(!this.Cd)return;const i=this.Rd(t);this.zd(i,this.Id.Mf),this.Cd=!as()}hf(t){const i=ps(t.touches,a(this.Sd));if(null===i)return;const s=this.Rd(t,i);this.Ed(s,this.Id.bf),this.od=!0,this.ed=!0}Td(t){return t.sourceCapabilities&&void 0!==t.sourceCapabilities.firesTouchEvents?t.sourceCapabilities.firesTouchEvents:fs(t){"touchstart"!==t.type&&cs(t)}}}}function us(t,i){const s=t.clientX-i.clientX,n=t.clientY-i.clientY;return Math.sqrt(s*s+n*n)}function cs(t){t.cancelable&&t.preventDefault()}function ds(t){return{_t:t.pageX,ut:t.pageY}}function fs(t){return t.timeStamp||performance.now()}function ps(t,i){for(let s=0;s!1,Zd:()=>!0}),this.Pf={Uf:s,Hf:t}}zf(){this.Af.style.background=this.Df.N().layout.panes.separatorColor}$f(t){null!==this.Pf&&(this.Pf.Uf.style.backgroundColor=this.Df.N().layout.panes.separatorHoverColor)}jf(t){null!==this.Pf&&null===this.Rf&&(this.Pf.Uf.style.backgroundColor="")}qf(t){if(null===this.Pf)return;const i=this.Vf.Xf().Po()+this.Bf.Xf().Po(),s=i/(this.Vf.Nf().height+this.Bf.Nf().height),n=30*s;i<=2*n||(this.Rf={Zf:t.pageY,Gf:this.Vf.Xf().Po(),Jf:i-n,Qf:i,tp:s,ip:n},this.Pf.Hf.style.display="block")}Yf(t){const i=this.Rf;if(null===i)return;const s=(t.pageY-i.Zf)*i.tp,n=qt(i.Gf+s,i.ip,i.Jf);this.Vf.Xf().ko(n),this.Bf.Xf().ko(i.Qf-n),this.Df.Qt().Bh()}Kf(t){null!==this.Rf&&null!==this.Pf&&(this.Rf=null,this.Pf.Hf.style.display="none")}}function ms(t,i){return t.sp-i.sp}function ws(t,i,s){const n=(t.sp-i.sp)/(t.wt-i.wt);return Math.sign(n)*Math.min(Math.abs(n),s)}class gs{constructor(t,i,s,n){this.np=null,this.ep=null,this.rp=null,this.hp=null,this.ap=null,this.lp=0,this.op=0,this._p=t,this.up=i,this.cp=s,this.Mn=n}dp(t,i){if(null!==this.np){if(this.np.wt===i)return void(this.np.sp=t);if(Math.abs(this.np.sp-t)50)return;let s=0;const n=ws(this.np,this.ep,this.up),e=ms(this.np,this.ep),r=[n],h=[e];if(s+=e,null!==this.rp){const t=ws(this.ep,this.rp,this.up);if(Math.sign(t)===Math.sign(n)){const i=ms(this.ep,this.rp);if(r.push(t),h.push(i),s+=i,null!==this.hp){const t=ws(this.rp,this.hp,this.up);if(Math.sign(t)===Math.sign(n)){const i=ms(this.rp,this.hp);r.push(t),h.push(i),s+=i}}}}let a=0;for(let t=0;t160?"dark":"light"}Sp(){return this.gp.N().layout.attributionLogo}yp(){const t=new URL(location.href);return t.hostname?"&utm_source="+t.hostname+t.pathname:""}Mp(){this.xp()&&(this.bp(),this.ps=this.Sp(),this.ps&&(this.mp=this.Cp(),this.vp=document.createElement("style"),this.vp.innerText="a#tv-attr-logo{--fill:#131722;--stroke:#fff;position:absolute;left:10px;bottom:10px;height:19px;width:35px;margin:0;padding:0;border:0;z-index:3;}a#tv-attr-logo[data-dark]{--fill:#D1D4DC;--stroke:#131722;}",this.pp=document.createElement("a"),this.pp.href=`https://www.tradingview.com/?utm_medium=lwc-link&utm_campaign=lwc-chart${this.yp()}`,this.pp.title="Charting by TradingView",this.pp.id="tv-attr-logo",this.pp.target="_blank",this.pp.innerHTML='',this.pp.toggleAttribute("data-dark","dark"===this.mp),this.wp.appendChild(this.vp),this.wp.appendChild(this.pp)))}}function bs(t,i){const s=a(t.ownerDocument).createElement("canvas");t.appendChild(s);const n=new is(s,(e={options:{allowResizeObserver:!0},transform:(t,i)=>({width:Math.max(t.width,i.width),height:Math.max(t.height,i.height)})}).transform,e.options);var e;return n.resizeCanvasElement(i),n}function xs(t){t.width=1,t.height=1,t.getContext("2d")?.clearRect(0,0,1,1)}function Ss(t,i,s,n){t.ih&&t.ih(i,s,n)}function Cs(t,i,s,n){t.nt(i,s,n)}function ys(t,i,s,n){const e=t(s,n);for(const t of e){const s=t.Tt(n);null!==s&&i(s)}}function Ps(t,i){return s=>{if(!function(t){return void 0!==t.Wt}(s))return[];return(s.Wt()?.wa()??"")!==i?[]:s.ta?.(t)??[]}}function ks(t,i,s,n){if(!t.length)return;let e=0;const r=t[0].$t(n,!0);let h=1===i?s/2-(t[0].Wi()-r/2):t[0].Wi()-r/2-s/2;h=Math.max(0,h);for(let r=1;ru-o:_s)&&h>0){const n=1===i?-1-r:r-s,a=Math.min(n,h);for(let s=e;s{this.Vp||this.yt.Bp().Qt().ar()},this.Ip=()=>{this.Vp||this.yt.Bp().Qt().ar()},this.yt=t,this.ys=i,this.gl=i.layout,this.Uu=s,this.Ap="left"===n,this.zp=Ps("normal",n),this.Op=Ps("top",n),this.Lp=Ps("bottom",n),this.Af=document.createElement("div"),this.Af.style.height="100%",this.Af.style.overflow="hidden",this.Af.style.width="25px",this.Af.style.left="0",this.Af.style.position="relative",this.Np=bs(this.Af,Ji({width:16,height:16})),this.Np.subscribeSuggestedBitmapSizeChanged(this.Ep);const e=this.Np.canvasElement;e.style.position="absolute",e.style.zIndex="1",e.style.left="0",e.style.top="0",this.Wp=bs(this.Af,Ji({width:16,height:16})),this.Wp.subscribeSuggestedBitmapSizeChanged(this.Ip);const r=this.Wp.canvasElement;r.style.position="absolute",r.style.zIndex="2",r.style.left="0",r.style.top="0";const h={_f:this.qf.bind(this),af:this.qf.bind(this),Qd:this.Yf.bind(this),Gd:this.Yf.bind(this),uf:this.Fp.bind(this),nf:this.Kf.bind(this),if:this.Kf.bind(this),Od:this.Hp.bind(this),Bd:this.Hp.bind(this),$d:this.Up.bind(this),Mf:this.jf.bind(this)};this.kf=new _s(this.Wp.canvasElement,h,{Xd:()=>!this.ys.handleScroll.vertTouchDrag,Zd:()=>!0})}m(){this.kf.m(),this.Wp.unsubscribeSuggestedBitmapSizeChanged(this.Ip),xs(this.Wp.canvasElement),this.Wp.dispose(),this.Np.unsubscribeSuggestedBitmapSizeChanged(this.Ep),xs(this.Np.canvasElement),this.Np.dispose(),null!==this.qi&&this.qi.io().u(this),this.qi=null}Lf(){return this.Af}P(){return this.gl.fontSize}$p(){const t=this.Uu.N();return this.Rp!==t.k&&(this.Tp.En(),this.Rp=t.k),t}jp(){if(null===this.qi)return 0;let t=0;const i=this.$p(),s=a(this.Np.canvasElement.getContext("2d",{colorSpace:this.yt.Bp().N().layout.colorSpace}));s.save();const n=this.qi.Va();s.font=this.qp(),n.length>0&&(t=Math.max(this.Tp.Vi(s,n[0].Xa),this.Tp.Vi(s,n[n.length-1].Xa)));const e=this.Yp();for(let i=e.length;i--;){const n=this.Tp.Vi(s,e[i].ri());n>t&&(t=n)}const r=this.qi.zt();if(null!==r&&null!==this.Pp&&(2!==(h=this.ys.crosshair).mode&&h.horzLine.visible&&h.horzLine.labelVisible)){const i=this.qi.Ts(1,r),n=this.qi.Ts(this.Pp.height-2,r);t=Math.max(t,this.Tp.Vi(s,this.qi.Zi(Math.floor(Math.min(i,n))+.11111111111111,r)),this.Tp.Vi(s,this.qi.Zi(Math.ceil(Math.max(i,n))-.11111111111111,r)))}var h;s.restore();const l=t||34;return ls(Math.ceil(i.S+i.C+i.B+i.I+5+l))}Kp(t){null!==this.Pp&&Qi(this.Pp,t)||(this.Pp=t,this.Vp=!0,this.Np.resizeCanvasElement(t),this.Wp.resizeCanvasElement(t),this.Vp=!1,this.Af.style.width=`${t.width}px`,this.Af.style.height=`${t.height}px`)}Xp(){return a(this.Pp).width}_s(t){this.qi!==t&&(null!==this.qi&&this.qi.io().u(this),this.qi=t,t.io().i(this.ol.bind(this),this))}Wt(){return this.qi}En(){const t=this.yt.Xf();this.yt.Bp().Qt().Ho(t,a(this.Wt()))}Zp(t){if(null===this.Pp)return;const i={colorSpace:this.yt.Bp().N().layout.colorSpace};if(1!==t){this.Gp(),this.Np.applySuggestedBitmapSize();const t=es(this.Np,i);null!==t&&(t.useBitmapCoordinateSpace((t=>{this.Jp(t),this.Qp(t)})),this.yt.tv(t,this.Lp),this.iv(t),this.yt.tv(t,this.zp),this.sv(t))}this.Wp.applySuggestedBitmapSize();const s=es(this.Wp,i);null!==s&&(s.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.nv(s),this.yt.tv(s,this.Op))}Wf(){return this.Np.bitmapSize}Ff(t,i,s){const n=this.Wf();n.width>0&&n.height>0&&t.drawImage(this.Np.canvasElement,i,s)}Pt(){this.qi?.Va()}qf(t){if(null===this.qi||this.qi.Ki()||!this.ys.handleScale.axisPressedMouseMove.price)return;const i=this.yt.Bp().Qt(),s=this.yt.Xf();this.kp=!0,i.Ao(s,this.qi,t.localY)}Yf(t){if(null===this.qi||!this.ys.handleScale.axisPressedMouseMove.price)return;const i=this.yt.Bp().Qt(),s=this.yt.Xf(),n=this.qi;i.zo(s,n,t.localY)}Fp(){if(null===this.qi||!this.ys.handleScale.axisPressedMouseMove.price)return;const t=this.yt.Bp().Qt(),i=this.yt.Xf(),s=this.qi;this.kp&&(this.kp=!1,t.Oo(i,s))}Kf(t){if(null===this.qi||!this.ys.handleScale.axisPressedMouseMove.price)return;const i=this.yt.Bp().Qt(),s=this.yt.Xf();this.kp=!1,i.Oo(s,this.qi)}Hp(t){this.ys.handleScale.axisDoubleClickReset.price&&this.En()}Up(t){if(null===this.qi)return;!this.yt.Bp().Qt().N().handleScale.axisPressedMouseMove.price||this.qi.Oe()||this.qi.Rl()||this.ev(1)}jf(t){this.ev(0)}Yp(){const t=[],i=null===this.qi?void 0:this.qi;return(s=>{for(let n=0;n{t.fillStyle=s.borderColor;const a=Math.max(1,Math.floor(h)),l=Math.floor(.5*h),o=Math.round(n.C*r);t.beginPath();for(const s of i)t.rect(Math.floor(e*r),Math.round(s.Pa*h)-l,o,a);t.fill()})),t.useMediaCoordinateSpace((({context:t})=>{t.font=this.qp(),t.fillStyle=s.textColor??this.gl.textColor,t.textAlign=this.Ap?"right":"left",t.textBaseline="middle";const r=this.Ap?Math.round(e-n.B):Math.round(e+n.C+n.B),h=i.map((i=>this.Tp.Di(t,i.Xa)));for(let s=i.length;s--;){const n=i[s];t.fillText(n.Xa,r,n.Pa+h[s])}}))}Gp(){if(null===this.Pp||null===this.qi)return;let t=this.Pp.height/2;const i=[],s=this.qi.Dt().slice(),n=this.yt.Xf(),e=this.$p();this.qi===n.$n()&&this.yt.Xf().Dt().forEach((t=>{n.Un(t)&&s.push(t)}));const r=this.qi.ba()[0],h=this.qi;s.forEach((s=>{const e=s.Fs(n,h);e.forEach((t=>{t.Fi(null),t.Hi()&&i.push(t)})),r===s&&e.length>0&&(t=e[0].Bi())})),i.forEach((t=>t.Fi(t.Bi())));this.qi.N().alignLabels&&this.rv(i,e,t)}rv(t,i,s){if(null===this.Pp)return;const n=t.filter((t=>t.Bi()<=s)),e=t.filter((t=>t.Bi()>s));n.sort(((t,i)=>i.Bi()-t.Bi())),n.length&&e.length&&e.push(n[0]),e.sort(((t,i)=>t.Bi()-i.Bi()));for(const s of t){const t=Math.floor(s.$t(i)/2),n=s.Bi();n>-t&&nthis.Pp.height-t&&n{if(i.Ui()){i.Tt(a(this.qi)).nt(t,s,this.Tp,n)}}))}nv(t){if(null===this.Pp||null===this.qi)return;const i=this.yt.Bp().Qt(),s=[],n=this.yt.Xf(),e=i.sc().Fs(n,this.qi);e.length&&s.push(e);const r=this.$p(),h=this.Ap?"right":"left";s.forEach((i=>{i.forEach((i=>{i.Tt(a(this.qi)).nt(t,r,this.Tp,h)}))}))}ev(t){this.Af.style.cursor=1===t?"ns-resize":"default"}ol(){const t=this.jp();this.Dp{this.Vp||null===this.gv||this.ts().ar()},this.Ip=()=>{this.Vp||null===this.gv||this.ts().ar()},this.gp=t,this.gv=i,this.gv.qo().i(this.Mv.bind(this),this,!0),this.bv=document.createElement("td"),this.bv.style.padding="0",this.bv.style.position="relative";const s=document.createElement("div");s.style.width="100%",s.style.height="100%",s.style.position="relative",s.style.overflow="hidden",this.xv=document.createElement("td"),this.xv.style.padding="0",this.Sv=document.createElement("td"),this.Sv.style.padding="0",this.bv.appendChild(s),this.Np=bs(s,Ji({width:16,height:16})),this.Np.subscribeSuggestedBitmapSizeChanged(this.Ep);const n=this.Np.canvasElement;n.style.position="absolute",n.style.zIndex="1",n.style.left="0",n.style.top="0",this.Wp=bs(s,Ji({width:16,height:16})),this.Wp.subscribeSuggestedBitmapSizeChanged(this.Ip);const e=this.Wp.canvasElement;e.style.position="absolute",e.style.zIndex="2",e.style.left="0",e.style.top="0",this.If=document.createElement("tr"),this.If.appendChild(this.xv),this.If.appendChild(this.bv),this.If.appendChild(this.Sv),this.Cv(),this.kf=new _s(this.Wp.canvasElement,this,{Xd:()=>null===this.pv&&!this.gp.N().handleScroll.vertTouchDrag,Zd:()=>null===this.pv&&!this.gp.N().handleScroll.horzTouchDrag})}m(){null!==this.hv&&this.hv.m(),null!==this.av&&this.av.m(),this.lv=null,this.Wp.unsubscribeSuggestedBitmapSizeChanged(this.Ip),xs(this.Wp.canvasElement),this.Wp.dispose(),this.Np.unsubscribeSuggestedBitmapSizeChanged(this.Ep),xs(this.Np.canvasElement),this.Np.dispose(),null!==this.gv&&(this.gv.qo().u(this),this.gv.m()),this.kf.m()}Xf(){return a(this.gv)}yv(t){null!==this.gv&&this.gv.qo().u(this),this.gv=t,null!==this.gv&&this.gv.qo().i(Bs.prototype.Mv.bind(this),this,!0),this.Cv(),this.gp.Ef().indexOf(this)===this.gp.Ef().length-1?(this.lv=this.lv??new Ms(this.bv,this.gp),this.lv.Pt()):(this.lv?.bp(),this.lv=null)}Bp(){return this.gp}Lf(){return this.If}Cv(){if(null!==this.gv&&(this.Pv(),0!==this.ts().Ys().length)){if(null!==this.hv){const t=this.gv.Bo();this.hv._s(a(t))}if(null!==this.av){const t=this.gv.Io();this.av._s(a(t))}}}kv(){null!==this.hv&&this.hv.Pt(),null!==this.av&&this.av.Pt()}Po(){return null!==this.gv?this.gv.Po():0}ko(t){this.gv&&this.gv.ko(t)}$d(t){if(!this.gv)return;this.Tv();const i=t.localX,s=t.localY;this.Rv(i,s,t)}_f(t){this.Tv(),this.Dv(),this.Rv(t.localX,t.localY,t)}jd(t){if(!this.gv)return;this.Tv();const i=t.localX,s=t.localY;this.Rv(i,s,t)}ef(t){null!==this.gv&&(this.Tv(),this.Vv(t))}Od(t){null!==this.gv&&this.Ev(this.cv,t)}Bd(t){this.Od(t)}Qd(t){this.Tv(),this.Bv(t),this.Rv(t.localX,t.localY,t)}nf(t){null!==this.gv&&(this.Tv(),this.fv=!1,this.Iv(t))}sf(t){null!==this.gv&&this.Vv(t)}bf(t){if(this.fv=!0,null===this.pv){const i={x:t.localX,y:t.localY};this.Av(i,i,t)}}Mf(t){null!==this.gv&&(this.Tv(),this.gv.Qt().Ju(null),this.zv())}Ov(){return this.uv}Lv(){return this.cv}ff(){this.dv=1,this.ts().hn()}pf(t,i){if(!this.gp.N().handleScale.pinch)return;const s=5*(i-this.dv);this.dv=i,this.ts()._c(t._t,s)}af(t){this.fv=!1,this.vv=null!==this.pv,this.Dv();const i=this.ts().sc();null!==this.pv&&i.Vt()&&(this.mv={x:i.si(),y:i.ni()},this.pv={x:t.localX,y:t.localY})}Gd(t){if(null===this.gv)return;const i=t.localX,s=t.localY;if(null===this.pv)this.Bv(t);else{this.vv=!1;const n=a(this.mv),e=n.x+(i-this.pv.x),r=n.y+(s-this.pv.y);this.Rv(e,r,t)}}if(t){0===this.Bp().N().trackingMode.exitMode&&(this.vv=!0),this.Nv(),this.Iv(t)}Yn(t,i){const s=this.gv;return null===s?null:Mi(s,t,i)}Wv(t,i){a("left"===i?this.hv:this.av).Kp(Ji({width:t,height:this.Pp.height}))}Nf(){return this.Pp}Kp(t){Qi(this.Pp,t)||(this.Pp=t,this.Vp=!0,this.Np.resizeCanvasElement(t),this.Wp.resizeCanvasElement(t),this.Vp=!1,this.bv.style.width=t.width+"px",this.bv.style.height=t.height+"px")}Fv(){const t=a(this.gv);t.Eo(t.Bo()),t.Eo(t.Io());for(const i of t.ba())if(t.Un(i)){const s=i.Wt();null!==s&&t.Eo(s),i.Ns()}for(const i of t.Ko())i.Ns()}Wf(){return this.Np.bitmapSize}Ff(t,i,s){const n=this.Wf();n.width>0&&n.height>0&&t.drawImage(this.Np.canvasElement,i,s)}Zp(t){if(0===t)return;if(null===this.gv)return;t>1&&this.Fv(),null!==this.hv&&this.hv.Zp(t),null!==this.av&&this.av.Zp(t);const i={colorSpace:this.gp.N().layout.colorSpace};if(1!==t){this.Np.applySuggestedBitmapSize();const t=es(this.Np,i);null!==t&&(t.useBitmapCoordinateSpace((t=>{this.Jp(t)})),this.gv&&(this.Hv(t,Rs),this.Uv(t),this.Hv(t,Ds),this.Hv(t,Vs)))}this.Wp.applySuggestedBitmapSize();const s=es(this.Wp,i);null!==s&&(s.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.$v(s),this.Hv(s,Es),this.Hv(s,Vs))}jv(){return this.hv}qv(){return this.av}tv(t,i){this.Hv(t,i)}Mv(){null!==this.gv&&this.gv.qo().u(this),this.gv=null}Vv(t){this.Ev(this.uv,t)}Ev(t,i){const s=i.localX,n=i.localY;t.v()&&t.p(this.ts().It().nu(s),{x:s,y:n},i)}Jp({context:t,bitmapSize:i}){const{width:s,height:n}=i,e=this.ts(),r=e.$(),h=e.Vc();r===h?B(t,0,0,s,n,h):z(t,0,0,s,n,r,h)}Uv(t){const i=a(this.gv),s=i.Yo().lr().Tt(i);null!==s&&s.nt(t,!1)}$v(t){this.Yv(t,Ds,Cs,this.ts().sc())}Hv(t,i){const s=a(this.gv),n=s.Dt(),e=s.Ko();for(const s of e)this.Yv(t,i,Ss,s);for(const s of n)this.Yv(t,i,Ss,s);for(const s of e)this.Yv(t,i,Cs,s);for(const s of n)this.Yv(t,i,Cs,s)}Yv(t,i,s,n){const e=a(this.gv),r=e.Qt().Gu(),h=null!==r&&r.Xo===n,l=null!==r&&h&&void 0!==r.Zo?r.Zo.Xn:void 0;ys(i,(i=>s(i,t,h,l)),n,e)}Pv(){if(null===this.gv)return;const t=this.gp,i=this.gv.Bo().N().visible,s=this.gv.Io().N().visible;i||null===this.hv||(this.xv.removeChild(this.hv.Lf()),this.hv.m(),this.hv=null),s||null===this.av||(this.Sv.removeChild(this.av.Lf()),this.av.m(),this.av=null);const n=t.Qt().xc();i&&null===this.hv&&(this.hv=new Ts(this,t.N(),n,"left"),this.xv.appendChild(this.hv.Lf())),s&&null===this.av&&(this.av=new Ts(this,t.N(),n,"right"),this.Sv.appendChild(this.av.Lf()))}Kv(t){return t.xf&&this.fv||null!==this.pv}Xv(t){return Math.max(0,Math.min(t,this.Pp.width-1))}Zv(t){return Math.max(0,Math.min(t,this.Pp.height-1))}Rv(t,i,s){this.ts().wc(this.Xv(t),this.Zv(i),s,a(this.gv))}zv(){this.ts().Mc()}Nv(){this.vv&&(this.pv=null,this.zv())}Av(t,i,s){this.pv=t,this.vv=!1,this.Rv(i.x,i.y,s);const n=this.ts().sc();this.mv={x:n.si(),y:n.ni()}}ts(){return this.gp.Qt()}Iv(t){if(!this._v)return;const i=this.ts(),s=this.Xf();if(i.Wo(s,s.ks()),this.ov=null,this._v=!1,i.fc(),null!==this.wv){const t=performance.now(),s=i.It();this.wv.le(s._u(),t),this.wv.Mu(t)||i._n(this.wv)}}Tv(){this.pv=null}Dv(){if(!this.gv)return;if(this.ts().hn(),document.activeElement!==document.body&&document.activeElement!==document.documentElement)a(document.activeElement).blur();else{const t=document.getSelection();null!==t&&t.removeAllRanges()}!this.gv.ks().Ki()&&this.ts().It().Ki()}Bv(t){if(null===this.gv)return;const i=this.ts(),s=i.It();if(s.Ki())return;const n=this.gp.N(),e=n.handleScroll,r=n.kineticScroll;if((!e.pressedMouseMove||t.xf)&&(!e.horzTouchDrag&&!e.vertTouchDrag||!t.xf))return;const h=this.gv.ks(),a=performance.now();if(null!==this.ov||this.Kv(t)||(this.ov={x:t.clientX,y:t.clientY,qc:a,Gv:t.localX,Jv:t.localY}),null!==this.ov&&!this._v&&(this.ov.x!==t.clientX||this.ov.y!==t.clientY)){if(t.xf&&r.touch||!t.xf&&r.mouse){const t=s.lu();this.wv=new gs(.2/t,7/t,.997,15/t),this.wv.dp(s._u(),this.ov.qc)}else this.wv=null;h.Ki()||i.Lo(this.gv,h,t.localY),i.cc(t.localX),this._v=!0}this._v&&(h.Ki()||i.No(this.gv,h,t.localY),i.dc(t.localX),null!==this.wv&&this.wv.dp(s._u(),a))}}class Is{constructor(t,i,s,n,e){this.St=!0,this.Pp=Ji({width:0,height:0}),this.Ep=()=>this.Zp(3),this.Ap="left"===t,this.Uu=s.xc,this.ys=i,this.Qv=n,this.tm=e,this.Af=document.createElement("div"),this.Af.style.width="25px",this.Af.style.height="100%",this.Af.style.overflow="hidden",this.Np=bs(this.Af,Ji({width:16,height:16})),this.Np.subscribeSuggestedBitmapSizeChanged(this.Ep)}m(){this.Np.unsubscribeSuggestedBitmapSizeChanged(this.Ep),xs(this.Np.canvasElement),this.Np.dispose()}Lf(){return this.Af}Nf(){return this.Pp}Kp(t){Qi(this.Pp,t)||(this.Pp=t,this.Np.resizeCanvasElement(t),this.Af.style.width=`${t.width}px`,this.Af.style.height=`${t.height}px`,this.St=!0)}Zp(t){if(t<3&&!this.St)return;if(0===this.Pp.width||0===this.Pp.height)return;this.St=!1,this.Np.applySuggestedBitmapSize();const i=es(this.Np,{colorSpace:this.ys.layout.colorSpace});null!==i&&i.useBitmapCoordinateSpace((t=>{this.Jp(t),this.Qp(t)}))}Wf(){return this.Np.bitmapSize}Ff(t,i,s){const n=this.Wf();n.width>0&&n.height>0&&t.drawImage(this.Np.canvasElement,i,s)}Qp({context:t,bitmapSize:i,horizontalPixelRatio:s,verticalPixelRatio:n}){if(!this.Qv())return;t.fillStyle=this.ys.timeScale.borderColor;const e=Math.floor(this.Uu.N().S*s),r=Math.floor(this.Uu.N().S*n),h=this.Ap?i.width-e:0;t.fillRect(h,0,e,r)}Jp({context:t,bitmapSize:i}){B(t,0,0,i.width,i.height,this.tm())}}function As(t){return i=>i.ia?.(t)??[]}const zs=As("normal"),Os=As("top"),Ls=As("bottom");class Ns{constructor(t,i){this.im=null,this.sm=null,this.M=null,this.nm=!1,this.Pp=Ji({width:0,height:0}),this.rm=new o,this.Tp=new tt(5),this.Vp=!1,this.Ep=()=>{this.Vp||this.gp.Qt().ar()},this.Ip=()=>{this.Vp||this.gp.Qt().ar()},this.gp=t,this.i_=i,this.ys=t.N().layout,this.pp=document.createElement("tr"),this.hm=document.createElement("td"),this.hm.style.padding="0",this.am=document.createElement("td"),this.am.style.padding="0",this.Af=document.createElement("td"),this.Af.style.height="25px",this.Af.style.padding="0",this.lm=document.createElement("div"),this.lm.style.width="100%",this.lm.style.height="100%",this.lm.style.position="relative",this.lm.style.overflow="hidden",this.Af.appendChild(this.lm),this.Np=bs(this.lm,Ji({width:16,height:16})),this.Np.subscribeSuggestedBitmapSizeChanged(this.Ep);const s=this.Np.canvasElement;s.style.position="absolute",s.style.zIndex="1",s.style.left="0",s.style.top="0",this.Wp=bs(this.lm,Ji({width:16,height:16})),this.Wp.subscribeSuggestedBitmapSizeChanged(this.Ip);const n=this.Wp.canvasElement;n.style.position="absolute",n.style.zIndex="2",n.style.left="0",n.style.top="0",this.pp.appendChild(this.hm),this.pp.appendChild(this.Af),this.pp.appendChild(this.am),this.om(),this.gp.Qt().yo().i(this.om.bind(this),this),this.kf=new _s(this.Wp.canvasElement,this,{Xd:()=>!0,Zd:()=>!this.gp.N().handleScroll.horzTouchDrag})}m(){this.kf.m(),null!==this.im&&this.im.m(),null!==this.sm&&this.sm.m(),this.Wp.unsubscribeSuggestedBitmapSizeChanged(this.Ip),xs(this.Wp.canvasElement),this.Wp.dispose(),this.Np.unsubscribeSuggestedBitmapSizeChanged(this.Ep),xs(this.Np.canvasElement),this.Np.dispose()}Lf(){return this.pp}_m(){return this.im}um(){return this.sm}_f(t){if(this.nm)return;this.nm=!0;const i=this.gp.Qt();!i.It().Ki()&&this.gp.N().handleScale.axisPressedMouseMove.time&&i.oc(t.localX)}af(t){this._f(t)}uf(){const t=this.gp.Qt();!t.It().Ki()&&this.nm&&(this.nm=!1,this.gp.N().handleScale.axisPressedMouseMove.time&&t.mc())}Qd(t){const i=this.gp.Qt();!i.It().Ki()&&this.gp.N().handleScale.axisPressedMouseMove.time&&i.vc(t.localX)}Gd(t){this.Qd(t)}nf(){this.nm=!1;const t=this.gp.Qt();t.It().Ki()&&!this.gp.N().handleScale.axisPressedMouseMove.time||t.mc()}if(){this.nf()}Od(){this.gp.N().handleScale.axisDoubleClickReset.time&&this.gp.Qt().cn()}Bd(){this.Od()}$d(){this.gp.Qt().N().handleScale.axisPressedMouseMove.time&&this.ev(1)}Mf(){this.ev(0)}Nf(){return this.Pp}dm(){return this.rm}fm(t,i,s){Qi(this.Pp,t)||(this.Pp=t,this.Vp=!0,this.Np.resizeCanvasElement(t),this.Wp.resizeCanvasElement(t),this.Vp=!1,this.Af.style.width=`${t.width}px`,this.Af.style.height=`${t.height}px`,this.rm.p(t)),null!==this.im&&this.im.Kp(Ji({width:i,height:t.height})),null!==this.sm&&this.sm.Kp(Ji({width:s,height:t.height}))}pm(){const t=this.vm();return Math.ceil(t.S+t.C+t.P+t.A+t.V+t.wm)}Pt(){this.gp.Qt().It().Va()}Wf(){return this.Np.bitmapSize}Ff(t,i,s){const n=this.Wf();n.width>0&&n.height>0&&t.drawImage(this.Np.canvasElement,i,s)}Zp(t){if(0===t)return;const i={colorSpace:this.ys.colorSpace};if(1!==t){this.Np.applySuggestedBitmapSize();const s=es(this.Np,i);null!==s&&(s.useBitmapCoordinateSpace((t=>{this.Jp(t),this.Qp(t),this.gm(s,Ls)})),this.iv(s),this.gm(s,zs)),null!==this.im&&this.im.Zp(t),null!==this.sm&&this.sm.Zp(t)}this.Wp.applySuggestedBitmapSize();const s=es(this.Wp,i);null!==s&&(s.useBitmapCoordinateSpace((({context:t,bitmapSize:i})=>{t.clearRect(0,0,i.width,i.height)})),this.Mm([...this.gp.Qt().Ys(),this.gp.Qt().sc()],s),this.gm(s,Os))}gm(t,i){const s=this.gp.Qt().Ys();for(const n of s)ys(i,(i=>Ss(i,t,!1,void 0)),n,void 0);for(const n of s)ys(i,(i=>Cs(i,t,!1,void 0)),n,void 0)}Jp({context:t,bitmapSize:i}){B(t,0,0,i.width,i.height,this.gp.Qt().Vc())}Qp({context:t,bitmapSize:i,verticalPixelRatio:s}){if(this.gp.N().timeScale.borderVisible){t.fillStyle=this.bm();const n=Math.max(1,Math.floor(this.vm().S*s));t.fillRect(0,0,i.width,n)}}iv(t){const i=this.gp.Qt().It(),s=i.Va();if(!s||0===s.length)return;const n=this.i_.maxTickMarkWeight(s),e=this.vm(),r=i.N();r.borderVisible&&r.ticksVisible&&t.useBitmapCoordinateSpace((({context:t,horizontalPixelRatio:i,verticalPixelRatio:n})=>{t.strokeStyle=this.bm(),t.fillStyle=this.bm();const r=Math.max(1,Math.floor(i)),h=Math.floor(.5*i);t.beginPath();const a=Math.round(e.C*n);for(let n=s.length;n--;){const e=Math.round(s[n].coord*i);t.rect(e-h,0,r,a)}t.fill()})),t.useMediaCoordinateSpace((({context:t})=>{const i=e.S+e.C+e.A+e.P/2;t.textAlign="center",t.textBaseline="middle",t.fillStyle=this.H(),t.font=this.qp();for(const e of s)if(e.weight=n){const s=e.needAlignCoordinate?this.xm(t,e.coord,e.label):e.coord;t.fillText(e.label,s,i)}}))}xm(t,i,s){const n=this.Tp.Vi(t,s),e=n/2,r=Math.floor(i-e)+.5;return r<0?i+=Math.abs(0-r):r+n>this.Pp.width&&(i-=Math.abs(this.Pp.width-(r+n))),i}Mm(t,i){const s=this.vm();for(const n of t)for(const t of n.cs())t.Tt().nt(i,s)}bm(){return this.gp.N().timeScale.borderColor}H(){return this.ys.textColor}W(){return this.ys.fontSize}qp(){return g(this.W(),this.ys.fontFamily)}Sm(){return g(this.W(),this.ys.fontFamily,"bold")}vm(){null===this.M&&(this.M={S:1,O:NaN,A:NaN,V:NaN,Ji:NaN,C:5,P:NaN,k:"",Gi:new tt,wm:0});const t=this.M,i=this.qp();if(t.k!==i){const s=this.W();t.P=s,t.k=i,t.A=3*s/12,t.V=3*s/12,t.Ji=9*s/12,t.O=0,t.wm=4*s/12,t.Gi.En()}return this.M}ev(t){this.Af.style.cursor=1===t?"ew-resize":"default"}om(){const t=this.gp.Qt(),i=t.N();i.leftPriceScale.visible||null===this.im||(this.hm.removeChild(this.im.Lf()),this.im.m(),this.im=null),i.rightPriceScale.visible||null===this.sm||(this.am.removeChild(this.sm.Lf()),this.sm.m(),this.sm=null);const s={xc:this.gp.Qt().xc()},n=()=>i.leftPriceScale.borderVisible&&t.It().N().borderVisible,e=()=>t.Vc();i.leftPriceScale.visible&&null===this.im&&(this.im=new Is("left",i,s,n,e),this.hm.appendChild(this.im.Lf())),i.rightPriceScale.visible&&null===this.sm&&(this.sm=new Is("right",i,s,n,e),this.am.appendChild(this.sm.Lf()))}}const Ws=!!rs&&!!navigator.userAgentData&&navigator.userAgentData.brands.some((t=>t.brand.includes("Chromium")))&&!!rs&&(navigator?.userAgentData?.platform?"Windows"===navigator.userAgentData.platform:navigator.userAgent.toLowerCase().indexOf("win")>=0);class Fs{constructor(t,i,s){var n;this.Cm=[],this.ym=[],this.Pm=0,this.tl=0,this.fo=0,this.km=0,this.Tm=0,this.Rm=null,this.Dm=!1,this.uv=new o,this.cv=new o,this.Wu=new o,this.Vm=null,this.Em=null,this.wp=t,this.ys=i,this.i_=s,this.pp=document.createElement("div"),this.pp.classList.add("tv-lightweight-charts"),this.pp.style.overflow="hidden",this.pp.style.direction="ltr",this.pp.style.width="100%",this.pp.style.height="100%",(n=this.pp).style.userSelect="none",n.style.webkitUserSelect="none",n.style.msUserSelect="none",n.style.MozUserSelect="none",n.style.webkitTapHighlightColor="transparent",this.Bm=document.createElement("table"),this.Bm.setAttribute("cellspacing","0"),this.pp.appendChild(this.Bm),this.Im=this.Am.bind(this),Hs(this.ys)&&this.zm(!0),this.ts=new Bi(this.Hu.bind(this),this.ys,s),this.Qt().nc().i(this.Om.bind(this),this),this.Lm=new Ns(this,this.i_),this.Bm.appendChild(this.Lm.Lf());const e=i.autoSize&&this.Nm();let r=this.ys.width,h=this.ys.height;if(e||0===r||0===h){const i=t.getBoundingClientRect();r=r||i.width,h=h||i.height}this.Wm(r,h),this.Fm(),t.appendChild(this.pp),this.Hm(),this.ts.It().Cu().i(this.ts.Bh.bind(this.ts),this),this.ts.yo().i(this.ts.Bh.bind(this.ts),this)}Qt(){return this.ts}N(){return this.ys}Ef(){return this.Cm}Um(){return this.Lm}m(){this.zm(!1),0!==this.Pm&&window.cancelAnimationFrame(this.Pm),this.ts.nc().u(this),this.ts.It().Cu().u(this),this.ts.yo().u(this),this.ts.m();for(const t of this.Cm)this.Bm.removeChild(t.Lf()),t.Ov().u(this),t.Lv().u(this),t.m();this.Cm=[];for(const t of this.ym)this.$m(t);this.ym=[],a(this.Lm).m(),null!==this.pp.parentElement&&this.pp.parentElement.removeChild(this.pp),this.Wu.m(),this.uv.m(),this.cv.m(),this.jm()}Wm(t,i,s=!1){if(this.tl===i&&this.fo===t)return;const n=function(t){const i=Math.floor(t.width),s=Math.floor(t.height);return Ji({width:i-i%2,height:s-s%2})}(Ji({width:t,height:i}));this.tl=n.height,this.fo=n.width;const e=this.tl+"px",r=this.fo+"px";a(this.pp).style.height=e,a(this.pp).style.width=r,this.Bm.style.height=e,this.Bm.style.width=r,s?this.qm(Y.gn(),performance.now()):this.ts.Bh()}Zp(t){void 0===t&&(t=Y.gn());for(let i=0;i{t.Pt()}))}Km(t){(void 0!==t.autoSize||!this.Vm||void 0===t.width&&void 0===t.height)&&(t.autoSize&&!this.Vm&&this.Nm(),!1===t.autoSize&&null!==this.Vm&&this.jm(),t.autoSize||void 0===t.width&&void 0===t.height||this.Wm(t.width||this.fo,t.height||this.tl))}Zm(t){let i=0,s=0;const n=this.Cm[0],e=(i,s)=>{let n=0;for(let e=0;e{a("left"===i?this.Lm._m():this.Lm.um()).Ff(a(t),s,n)};if(this.ys.timeScale.visible){const i=this.Lm.Wf();if(null!==t){let e=0;this.Jm()&&(r("left",e,s),e=a(n.jv()).Wf().width),this.Lm.Ff(t,e,s),e+=i.width,this.Qm()&&r("right",e,s)}s+=i.height}return Ji({width:i,height:s})}ew(){let t=0,i=0,s=0;for(const n of this.Cm)this.Jm()&&(i=Math.max(i,a(n.jv()).jp(),this.ys.leftPriceScale.minimumWidth)),this.Qm()&&(s=Math.max(s,a(n.qv()).jp(),this.ys.rightPriceScale.minimumWidth)),t+=n.Po();i=ls(i),s=ls(s);const n=this.fo,e=this.tl,r=Math.max(n-i-s,0),h=1*this.ym.length,l=this.ys.timeScale.visible;let o=l?Math.max(this.Lm.pm(),this.ys.timeScale.minimumHeight):0;var _;o=(_=o)+_%2;const u=h+o,c=e{t.kv()})),3===this.Rm?.nn()&&(this.Rm.vn(t),this.hw(),this.aw(this.Rm),this.lw(this.Rm,i),t=this.Rm,this.Rm=null)),this.Zp(t)}lw(t,i){for(const s of t.pn())this.mn(s,i)}aw(t){const i=this.ts.$s();for(let s=0;s{if(this.Dm=!1,this.Pm=0,null!==this.Rm){const i=this.Rm;this.Rm=null,this.qm(i,t);for(const s of i.pn())if(5===s.an&&!s.Ft.Mu(t)){this.Qt()._n(s.Ft);break}}})))}hw(){this.Fm()}$m(t){this.Bm.removeChild(t.Lf()),t.m()}Fm(){const t=this.ts.$s(),i=t.length,s=this.Cm.length;for(let t=i;t0){const t=new vs(this,n-1,n);this.ym.push(t),this.Bm.insertBefore(t.Lf(),this.Lm.Lf())}this.Bm.insertBefore(i.Lf(),this.Lm.Lf())}for(let s=0;s{const s=i.Xs().Wr(t);null!==s&&e.set(i,s)}))}let r;if(null!==t){const i=this.ts.It().ss(t)?.originalTime;void 0!==i&&(r=i)}const h=this.Qt().Gu(),a=null!==h&&h.Xo instanceof Ht?h.Xo:void 0,l=null!==h&&void 0!==h.Zo?h.Zo.Kn:void 0,o=this.cw(n);return{dw:r,Re:t??void 0,fw:i??void 0,pw:-1!==o?o:void 0,mw:a,ww:e,gw:l,Mw:s??void 0}}cw(t){let i=-1;if(t)i=this.Cm.indexOf(t);else{const t=this.Qt().sc().Us();null!==t&&(i=this.Qt().$s().indexOf(t))}return i}ow(t,i,s,n){this.uv.p((()=>this.uw(i,s,n,t)))}_w(t,i,s,n){this.cv.p((()=>this.uw(i,s,n,t)))}Om(t,i,s){this.iw(this.Qt().Gu()?.Jo??null),this.Wu.p((()=>this.uw(t,i,s)))}Hm(){const t=this.ys.timeScale.visible?"":"none";this.Lm.Lf().style.display=t}Jm(){return this.Cm[0].Xf().Bo().N().visible}Qm(){return this.Cm[0].Xf().Io().N().visible}Nm(){return"ResizeObserver"in window&&(this.Vm=new ResizeObserver((t=>{const i=t[t.length-1];i&&this.Wm(i.contentRect.width,i.contentRect.height)})),this.Vm.observe(this.wp,{box:"border-box"}),!0)}jm(){null!==this.Vm&&this.Vm.disconnect(),this.Vm=null}}function Hs(t){return Boolean(t.handleScroll.mouseWheel||t.handleScale.mouseWheel)}function Us(t){return void 0===t.open&&void 0===t.value}function $s(t){return function(t){return void 0!==t.open}(t)||function(t){return void 0!==t.value}(t)}function js(t,i,s,n){const e=s.value,r={Re:i,wt:t,Ft:[e,e,e,e],dw:n};return void 0!==s.color&&(r.R=s.color),r}function qs(t,i,s,n){const e=s.value,r={Re:i,wt:t,Ft:[e,e,e,e],dw:n};return void 0!==s.lineColor&&(r.vt=s.lineColor),void 0!==s.topColor&&(r.mr=s.topColor),void 0!==s.bottomColor&&(r.wr=s.bottomColor),r}function Ys(t,i,s,n){const e=s.value,r={Re:i,wt:t,Ft:[e,e,e,e],dw:n};return void 0!==s.topLineColor&&(r.gr=s.topLineColor),void 0!==s.bottomLineColor&&(r.Mr=s.bottomLineColor),void 0!==s.topFillColor1&&(r.br=s.topFillColor1),void 0!==s.topFillColor2&&(r.Sr=s.topFillColor2),void 0!==s.bottomFillColor1&&(r.Cr=s.bottomFillColor1),void 0!==s.bottomFillColor2&&(r.yr=s.bottomFillColor2),r}function Ks(t,i,s,n){const e={Re:i,wt:t,Ft:[s.open,s.high,s.low,s.close],dw:n};return void 0!==s.color&&(e.R=s.color),e}function Xs(t,i,s,n){const e={Re:i,wt:t,Ft:[s.open,s.high,s.low,s.close],dw:n};return void 0!==s.color&&(e.R=s.color),void 0!==s.borderColor&&(e.Ht=s.borderColor),void 0!==s.wickColor&&(e.vr=s.wickColor),e}function Zs(t,i,s,n,e){const r=h(e)(s),a=Math.max(...r),l=Math.min(...r),o=r[r.length-1],_=[o,a,l,o],{time:u,color:c,...d}=s;return{Re:i,wt:t,Ft:_,dw:n,se:d,R:c}}function Gs(t){return void 0!==t.Ft}function Js(t,i){return void 0!==i.customValues&&(t.bw=i.customValues),t}function Qs(t){return(i,s,n,e,r,h)=>function(t,i){return i?i(t):Us(t)}(n,h)?Js({wt:i,Re:s,dw:e},n):Js(t(i,s,n,e,r),n)}function tn(t){return{Candlestick:Qs(Xs),Bar:Qs(Ks),Area:Qs(qs),Baseline:Qs(Ys),Histogram:Qs(js),Line:Qs(js),Custom:Qs(Zs)}[t]}function sn(t){return{Re:0,xw:new Map,Hh:t}}function nn(t,i){if(void 0!==t&&0!==t.length)return{Sw:i.key(t[0].wt),Cw:i.key(t[t.length-1].wt)}}function en(t){let i;return t.forEach((t=>{void 0===i&&(i=t.dw)})),h(i)}class rn{constructor(t){this.yw=new Map,this.Pw=new Map,this.kw=new Map,this.Tw=[],this.i_=t}m(){this.yw.clear(),this.Pw.clear(),this.kw.clear(),this.Tw=[]}Rw(t,i){let s=0!==this.yw.size,n=!1;const e=this.Pw.get(t);if(void 0!==e)if(1===this.Pw.size)s=!1,n=!0,this.yw.clear();else for(const i of this.Tw)i.pointData.xw.delete(t)&&(n=!0);let r=[];if(0!==i.length){const s=i.map((t=>t.time)),e=this.i_.createConverterToInternalObj(i),h=tn(t.Rr()),a=t.da(),l=t.pa();r=i.map(((i,r)=>{const o=e(i.time),_=this.i_.key(o);let u=this.yw.get(_);void 0===u&&(u=sn(o),this.yw.set(_,u),n=!0);const c=h(o,u.Re,i,s[r],a,l);return u.xw.set(t,c),c}))}s&&this.Dw(),this.Vw(t,r);let h=-1;if(n){const t=[];this.yw.forEach((i=>{t.push({timeWeight:0,time:i.Hh,pointData:i,originalTime:en(i.xw)})})),t.sort(((t,i)=>this.i_.key(t.time)-this.i_.key(i.time))),h=this.Ew(t)}return this.Bw(t,h,function(t,i,s){const n=nn(t,s),e=nn(i,s);if(void 0!==n&&void 0!==e)return{Iw:!1,zh:n.Cw>=e.Cw&&n.Sw>=e.Sw}}(this.Pw.get(t),e,this.i_))}yc(t){return this.Rw(t,[])}Aw(t,i,s){const n=i;!function(t){void 0===t.dw&&(t.dw=t.time)}(n),this.i_.preprocessData(i);const e=this.i_.createConverterToInternalObj([i])(i.time),r=this.kw.get(t);if(!s&&void 0!==r&&this.i_.key(e)this.i_.key(t.time)this.i_.key(n.wt)?Gs(i)&&s.push(i):Gs(i)?s[s.length-1]=i:s.splice(-1,1),this.kw.set(t,i.wt)}zw(t,i,s){const n=this.Pw.get(t);if(void 0===n)return;const e=bt(n,s,((t,i)=>t.Re{0!==i.length&&(t=Math.max(t,i[i.length-1].Re))})),t}Bw(t,i,s){const n={Do:new Map,It:{iu:this.Lw()}};if(-1!==i)this.Pw.forEach(((i,e)=>{n.Do.set(e,{se:i,Nw:e===t?s:void 0})})),this.Pw.has(t)||n.Do.set(t,{se:[],Nw:s}),n.It.Ww=this.Tw,n.It.Fw=i;else{const i=this.Pw.get(t);n.Do.set(t,{se:i||[],Nw:s})}return n}}function hn(t,i){t.Re=i,t.xw.forEach((t=>{t.Re=i}))}function an(t,i){return t.wt0&&r=n&&(a=r-1),h>0&&h({...t,...this.Jn.Rh().Dr(t.wt)})))}Gw(){this.qw=null}Kw(){this.Uw&&(this.Jw(),this.Uw=!1),this.$w&&(this.Zw(),this.$w=!1),this.Hw&&(this.Qw(),this.Hw=!1)}Qw(){const t=this.Jn.Wt(),i=this.Qn.It();if(this.Gw(),i.Ki()||t.Ki())return;const s=i.ye();if(null===s)return;if(0===this.Jn.Xs().zr())return;const n=this.Jn.zt();null!==n&&(this.qw=on(this.jw,s,this.Yw),this.tg(t,i,n.Ft),this.ig())}}class un{constructor(t,i){this.sg=t,this.qi=i}nt(t,i,s){this.sg.draw(t,this.qi,i,s)}}class cn extends _n{constructor(t,i,s){super(t,i,!1),this.sh=s,this.Xw=new un(this.sh.renderer(),(i=>{const s=t.zt();return null===s?null:t.Wt().Nt(i,s.Ft)}))}fa(t){return this.sh.priceValueBuilder(t)}va(t){return this.sh.isWhitespace(t)}Jw(){const t=this.Jn.Rh();this.jw=this.Jn.Xs().Hr().map((i=>({wt:i.Re,_t:NaN,...t.Dr(i.Re),ng:i.se})))}tg(t,i){i.su(this.jw,m(this.qw))}ig(){this.sh.update({bars:this.jw.map(dn),barSpacing:this.Qn.It().lu(),visibleRange:this.qw},this.Jn.N())}}function dn(t){return{x:t._t,time:t.wt,originalData:t.ng,barColor:t.cr}}const fn={color:"#2196f3"},pn=(t,i,s)=>{const n=l(s);return new cn(t,i,n)};function vn(t){const i={value:t.Ft[3],time:t.dw};return void 0!==t.bw&&(i.customValues=t.bw),i}function mn(t){const i=vn(t);return void 0!==t.R&&(i.color=t.R),i}function wn(t){const i=vn(t);return void 0!==t.vt&&(i.lineColor=t.vt),void 0!==t.mr&&(i.topColor=t.mr),void 0!==t.wr&&(i.bottomColor=t.wr),i}function gn(t){const i=vn(t);return void 0!==t.gr&&(i.topLineColor=t.gr),void 0!==t.Mr&&(i.bottomLineColor=t.Mr),void 0!==t.br&&(i.topFillColor1=t.br),void 0!==t.Sr&&(i.topFillColor2=t.Sr),void 0!==t.Cr&&(i.bottomFillColor1=t.Cr),void 0!==t.yr&&(i.bottomFillColor2=t.yr),i}function Mn(t){const i={open:t.Ft[0],high:t.Ft[1],low:t.Ft[2],close:t.Ft[3],time:t.dw};return void 0!==t.bw&&(i.customValues=t.bw),i}function bn(t){const i=Mn(t);return void 0!==t.R&&(i.color=t.R),i}function xn(t){const i=Mn(t),{R:s,Ht:n,vr:e}=t;return void 0!==s&&(i.color=s),void 0!==n&&(i.borderColor=n),void 0!==e&&(i.wickColor=e),i}function Sn(t){return{Area:wn,Line:mn,Baseline:gn,Histogram:mn,Bar:bn,Candlestick:xn,Custom:Cn}[t]}function Cn(t){const i=t.dw;return{...t.se,time:i}}const yn={vertLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},horzLine:{color:"#9598A1",width:1,style:3,visible:!0,labelVisible:!0,labelBackgroundColor:"#131722"},mode:1},Pn={vertLines:{color:"#D6DCDE",style:0,visible:!0},horzLines:{color:"#D6DCDE",style:0,visible:!0}},kn={background:{type:"solid",color:"#FFFFFF"},textColor:"#191919",fontSize:12,fontFamily:w,panes:{enableResize:!0,separatorColor:"#E0E3EB",separatorHoverColor:"rgba(178, 181, 189, 0.2)"},attributionLogo:!0,colorSpace:"srgb",colorParsers:[]},Tn={autoScale:!0,mode:0,invertScale:!1,alignLabels:!0,borderVisible:!0,borderColor:"#2B2B43",entireTextOnly:!1,visible:!1,ticksVisible:!1,scaleMargins:{bottom:.1,top:.2},minimumWidth:0,ensureEdgeTickMarksVisible:!1},Rn={rightOffset:0,barSpacing:6,minBarSpacing:.5,maxBarSpacing:0,fixLeftEdge:!1,fixRightEdge:!1,lockVisibleTimeRangeOnResize:!1,rightBarStaysOnScroll:!1,borderVisible:!0,borderColor:"#2B2B43",visible:!0,timeVisible:!1,secondsVisible:!0,shiftVisibleRangeOnNewBar:!0,allowShiftVisibleRangeOnWhitespaceReplacement:!1,ticksVisible:!1,uniformDistribution:!1,minimumHeight:0,allowBoldLabels:!0,ignoreWhitespaceIndices:!1};function Dn(){return{width:0,height:0,autoSize:!1,layout:kn,crosshair:yn,grid:Pn,overlayPriceScales:{...Tn},leftPriceScale:{...Tn,visible:!1},rightPriceScale:{...Tn,visible:!0},timeScale:Rn,localization:{locale:rs?navigator.language:"",dateFormat:"dd MMM 'yy"},handleScroll:{mouseWheel:!0,pressedMouseMove:!0,horzTouchDrag:!0,vertTouchDrag:!0},handleScale:{axisPressedMouseMove:{time:!0,price:!0},axisDoubleClickReset:{time:!0,price:!0},mouseWheel:!0,pinch:!0},kineticScroll:{mouse:!1,touch:!0},trackingMode:{exitMode:1}}}class Vn{constructor(t,i,s){this.Df=t,this.eg=i,this.rg=s??0}applyOptions(t){this.Df.Qt().Qu(this.eg,t,this.rg)}options(){return this.qi().N()}width(){return q(this.eg)?this.Df.Gm(this.eg):0}setVisibleRange(t){this.setAutoScale(!1),this.qi().Nl(new ct(t.from,t.to))}getVisibleRange(){const t=this.qi().Qe();return null===t?null:{from:t.$e(),to:t.je()}}setAutoScale(t){this.applyOptions({autoScale:t})}qi(){return a(this.Df.Qt().tc(this.eg,this.rg)).Wt}}class En{constructor(t,i,s,n){this.Df=t,this.yt=s,this.hg=i,this.ag=n}getHeight(){return this.yt.$t()}setHeight(t){const i=this.Df.Qt(),s=i.Bc(this.yt);i.hc(s,t)}paneIndex(){return this.Df.Qt().Bc(this.yt)}moveTo(t){const i=this.paneIndex();i!==t&&(r(t>=0&&tthis.hg(t)))??[]}getHTMLElement(){return this.Df.Ef()[this.paneIndex()].Lf()}attachPrimitive(t){this.yt.ua(t),t.attached&&t.attached({chart:this.ag,requestUpdate:()=>this.yt.Qt().Bh()})}detachPrimitive(t){this.yt.ca(t)}priceScale(t){if(null===this.yt.Co(t))throw new Error(`Cannot find price scale with id: ${t}`);return new Vn(this.Df,t,this.paneIndex())}}const Bn={color:"#FF0000",price:0,lineStyle:2,lineWidth:1,lineVisible:!0,axisLabelVisible:!0,title:"",axisLabelColor:"",axisLabelTextColor:""};class In{constructor(t){this.ir=t}applyOptions(t){this.ir.hr(t)}options(){return this.ir.N()}lg(){return this.ir}}class An{constructor(t,i,s,n,e,r){this.og=new o,this.Jn=t,this._g=i,this.ug=s,this.i_=e,this.ag=n,this.cg=r}m(){this.og.m()}priceFormatter(){return this.Jn.ra()}priceToCoordinate(t){const i=this.Jn.zt();return null===i?null:this.Jn.Wt().Nt(t,i.Ft)}coordinateToPrice(t){const i=this.Jn.zt();return null===i?null:this.Jn.Wt().Ts(t,i.Ft)}barsInLogicalRange(t){if(null===t)return null;const i=new yi(new xi(t.from,t.to)).w_(),s=this.Jn.Xs();if(s.Ki())return null;const n=s.Wr(i.Uh(),1),e=s.Wr(i.bi(),-1),r=a(s.Or()),h=a(s.Ks());if(null!==n&&null!==e&&n.Re>e.Re)return{barsBefore:t.from-r,barsAfter:h-t.to};const l={barsBefore:null===n||n.Re===r?t.from-r:n.Re-r,barsAfter:null===e||e.Re===h?h-t.to:h-e.Re};return null!==n&&null!==e&&(l.from=n.dw,l.to=e.dw),l}setData(t){this.i_,this.Jn.Rr(),this._g.dg(this.Jn,t),this.fg("full")}update(t,i=!1){this.Jn.Rr(),this._g.pg(this.Jn,t,i),this.fg("update")}dataByIndex(t,i){const s=this.Jn.Xs().Wr(t,i);if(null===s)return null;return Sn(this.seriesType())(s)}data(){const t=Sn(this.seriesType());return this.Jn.Xs().Hr().map((i=>t(i)))}subscribeDataChanged(t){this.og.i(t)}unsubscribeDataChanged(t){this.og._(t)}applyOptions(t){this.Jn.hr(t)}options(){return p(this.Jn.N())}priceScale(){return this.ug.priceScale(this.Jn.Wt().wa(),this.getPane().paneIndex())}createPriceLine(t){const i=_(p(Bn),t),s=this.Jn.Lh(i);return new In(s)}removePriceLine(t){this.Jn.Nh(t.lg())}priceLines(){return this.Jn.Wh().map((t=>new In(t)))}seriesType(){return this.Jn.Rr()}attachPrimitive(t){this.Jn.ua(t),t.attached&&t.attached({chart:this.ag,series:this,requestUpdate:()=>this.Jn.Qt().Bh(),horzScaleBehavior:this.i_})}detachPrimitive(t){this.Jn.ca(t),t.detached&&t.detached(),this.Jn.Qt().Bh()}getPane(){const t=this.Jn,i=a(this.Jn.Qt().Hn(t));return this.cg(i)}moveToPane(t){this.Jn.Qt().Rc(this.Jn,t)}seriesOrder(){const t=this.Jn.Qt().Hn(this.Jn);return null===t?-1:t.Do().indexOf(this.Jn)}setSeriesOrder(t){const i=this.Jn.Qt().Hn(this.Jn);null!==i&&i.jo(this.Jn,t)}fg(t){this.og.v()&&this.og.p(t)}}class zn{constructor(t,i,s){this.vg=new o,this.T_=new o,this.rm=new o,this.ts=t,this.uh=t.It(),this.Lm=i,this.uh.xu().i(this.mg.bind(this)),this.uh.Su().i(this.wg.bind(this)),this.Lm.dm().i(this.gg.bind(this)),this.i_=s}m(){this.uh.xu().u(this),this.uh.Su().u(this),this.Lm.dm().u(this),this.vg.m(),this.T_.m(),this.rm.m()}scrollPosition(){return this.uh._u()}scrollToPosition(t,i){i?this.uh.gu(t,1e3):this.ts.fn(t)}scrollToRealTime(){this.uh.wu()}getVisibleRange(){const t=this.uh.K_();return null===t?null:{from:t.from.originalTime,to:t.to.originalTime}}setVisibleRange(t){const i={from:this.i_.convertHorzItemToInternal(t.from),to:this.i_.convertHorzItemToInternal(t.to)},s=this.uh.J_(i);this.ts.kc(s)}getVisibleLogicalRange(){const t=this.uh.Y_();return null===t?null:{from:t.Uh(),to:t.bi()}}setVisibleLogicalRange(t){r(t.from<=t.to,"The from index cannot be after the to index."),this.ts.kc(t)}resetTimeScale(){this.ts.cn()}fitContent(){this.ts.Pu()}logicalToCoordinate(t){const i=this.ts.It();return i.Ki()?null:i.jt(t)}coordinateToLogical(t){return this.uh.Ki()?null:this.uh.nu(t)}timeToIndex(t,i){const s=this.i_.convertHorzItemToInternal(t);return this.uh.U_(s,i)}timeToCoordinate(t){const i=this.timeToIndex(t,!1);return null===i?null:this.uh.jt(i)}coordinateToTime(t){const i=this.ts.It(),s=i.nu(t),n=i.ss(s);return null===n?null:n.originalTime}width(){return this.Lm.Nf().width}height(){return this.Lm.Nf().height}subscribeVisibleTimeRangeChange(t){this.vg.i(t)}unsubscribeVisibleTimeRangeChange(t){this.vg._(t)}subscribeVisibleLogicalRangeChange(t){this.T_.i(t)}unsubscribeVisibleLogicalRangeChange(t){this.T_._(t)}subscribeSizeChange(t){this.rm.i(t)}unsubscribeSizeChange(t){this.rm._(t)}applyOptions(t){this.uh.hr(t)}options(){return{...p(this.uh.N()),barSpacing:this.uh.lu()}}mg(){this.vg.v()&&this.vg.p(this.getVisibleRange())}wg(){this.T_.v()&&this.T_.p(this.getVisibleLogicalRange())}gg(t){this.rm.p(t.width,t.height)}}function On(t){if(void 0===t||"custom"===t.type)return;const i=t;void 0!==i.minMove&&void 0===i.precision&&(i.precision=function(t){if(t>=1)return 0;let i=0;for(;i<8;i++){const s=Math.round(t);if(Math.abs(s-t)<1e-8)return i;t*=10}return i}(i.minMove))}function Ln(t){return function(t){if(f(t.handleScale)){const i=t.handleScale;t.handleScale={axisDoubleClickReset:{time:i,price:i},axisPressedMouseMove:{time:i,price:i},mouseWheel:i,pinch:i}}else if(void 0!==t.handleScale){const{axisPressedMouseMove:i,axisDoubleClickReset:s}=t.handleScale;f(i)&&(t.handleScale.axisPressedMouseMove={time:i,price:i}),f(s)&&(t.handleScale.axisDoubleClickReset={time:s,price:s})}const i=t.handleScroll;f(i)&&(t.handleScroll={horzTouchDrag:i,vertTouchDrag:i,mouseWheel:i,pressedMouseMove:i})}(t),t}class Nn{constructor(t,i,s){this.Mg=new Map,this.bg=new Map,this.xg=new o,this.Sg=new o,this.Cg=new o,this.zu=new WeakMap,this.yg=new rn(i);const n=void 0===s?p(Dn()):_(p(Dn()),Ln(s));this.Pg=i,this.Df=new Fs(t,n,i),this.Df.Ov().i((t=>{this.xg.v()&&this.xg.p(this.kg(t()))}),this),this.Df.Lv().i((t=>{this.Sg.v()&&this.Sg.p(this.kg(t()))}),this),this.Df.nc().i((t=>{this.Cg.v()&&this.Cg.p(this.kg(t()))}),this);const e=this.Df.Qt();this.Tg=new zn(e,this.Df.Um(),this.Pg)}remove(){this.Df.Ov().u(this),this.Df.Lv().u(this),this.Df.nc().u(this),this.Tg.m(),this.Df.m(),this.Mg.clear(),this.bg.clear(),this.xg.m(),this.Sg.m(),this.Cg.m(),this.yg.m()}resize(t,i,s){this.autoSizeActive()||this.Df.Wm(t,i,s)}addCustomSeries(t,i={},s=0){const n=(t=>({type:"Custom",isBuiltIn:!1,defaultOptions:{...fn,...t.defaultOptions()},Rg:pn,Dg:t}))(l(t));return this.Vg(n,i,s)}addSeries(t,i={},s=0){return this.Vg(t,i,s)}removeSeries(t){const i=h(this.Mg.get(t)),s=this.yg.yc(i);this.Df.Qt().yc(i),this.Eg(s),this.Mg.delete(t),this.bg.delete(i)}dg(t,i){this.Eg(this.yg.Rw(t,i))}pg(t,i,s){this.Eg(this.yg.Aw(t,i,s))}subscribeClick(t){this.xg.i(t)}unsubscribeClick(t){this.xg._(t)}subscribeCrosshairMove(t){this.Cg.i(t)}unsubscribeCrosshairMove(t){this.Cg._(t)}subscribeDblClick(t){this.Sg.i(t)}unsubscribeDblClick(t){this.Sg._(t)}priceScale(t,i=0){return new Vn(this.Df,t,i)}timeScale(){return this.Tg}applyOptions(t){this.Df.hr(Ln(t))}options(){return this.Df.N()}takeScreenshot(){return this.Df.Xm()}removePane(t){this.Df.Qt().rc(t)}swapPanes(t,i){this.Df.Qt().ac(t,i)}autoSizeActive(){return this.Df.tw()}chartElement(){return this.Df.Uf()}panes(){return this.Df.Qt().$s().map((t=>this.Bg(t)))}paneSize(t=0){const i=this.Df.nw(t);return{height:i.height,width:i.width}}setCrosshairPosition(t,i,s){const n=this.Mg.get(s);if(void 0===n)return;const e=this.Df.Qt().Hn(n);null!==e&&this.Df.Qt().gc(t,i,e)}clearCrosshairPosition(){this.Df.Qt().Mc(!0)}horzBehaviour(){return this.Pg}Vg(i,s={},n=0){r(void 0!==i.Rg),On(s.priceFormat),"Candlestick"===i.type&&function(t){void 0!==t.borderColor&&(t.borderUpColor=t.borderColor,t.borderDownColor=t.borderColor),void 0!==t.wickColor&&(t.wickUpColor=t.wickColor,t.wickDownColor=t.wickColor)}(s);const e=_(p(t),p(i.defaultOptions),s),h=i.Rg,a=new Ht(this.Df.Qt(),i.type,e,h,i.Dg);this.Df.Qt().Sc(a,n);const l=new An(a,this,this,this,this.Pg,(t=>this.Bg(t)));return this.Mg.set(l,a),this.bg.set(a,l),l}Eg(t){const i=this.Df.Qt();i.bc(t.It.iu,t.It.Ww,t.It.Fw),t.Do.forEach(((t,i)=>i.ht(t.se,t.Nw))),i.It().L_(),i.au()}Ig(t){return h(this.bg.get(t))}kg(t){const i=new Map;t.ww.forEach(((t,s)=>{const n=s.Rr(),e=Sn(n)(t);if("Custom"!==n)r($s(e));else{const t=s.pa();r(!t||!1===t(e))}i.set(this.Ig(s),e)}));const s=void 0!==t.mw&&this.bg.has(t.mw)?this.Ig(t.mw):void 0;return{time:t.dw,logical:t.Re,point:t.fw,paneIndex:t.pw,hoveredSeries:s,hoveredObjectId:t.gw,seriesData:i,sourceEvent:t.Mw}}Bg(t){let i=this.zu.get(t);return i||(i=new En(this.Df,(t=>this.Ig(t)),t,this),this.zu.set(t,i)),i}}function Wn(t){if(d(t)){const i=document.getElementById(t);return r(null!==i,`Cannot find element in DOM with id=${t}`),i}return t}function Fn(t,i,s){const n=Wn(t),e=new Nn(n,i,s);return i.setOptions(e.options()),e}function Hn(t,i){return Fn(t,new Gi,Gi.Xc(i))}function Un(){return Gi}class $n extends _n{constructor(t,i){super(t,i,!0)}tg(t,i,s){i.su(this.jw,m(this.qw)),t.Hl(this.jw,s,m(this.qw))}Ag(t,i){return{wt:t,gt:i,_t:NaN,ut:NaN}}Jw(){const t=this.Jn.Rh();this.jw=this.Jn.Xs().Hr().map((i=>{const s=i.Ft[3];return this.zg(i.Re,s,t)}))}}function jn(t,i,s,n,e,r,h){if(0===i.length||n.from>=i.length||n.to<=0)return;const{context:a,horizontalPixelRatio:l,verticalPixelRatio:o}=t,_=i[n.from];let u=r(t,_),c=_;if(n.to-n.from<2){const i=e/2;a.beginPath();const s={_t:_._t-i,ut:_.ut},n={_t:_._t+i,ut:_.ut};a.moveTo(s._t*l,s.ut*o),a.lineTo(n._t*l,n.ut*o),h(t,u,s,n)}else{const e=(i,s)=>{h(t,u,c,s),a.beginPath(),u=i,c=s};let d=c;a.beginPath(),a.moveTo(_._t*l,_.ut*o);for(let h=n.from+1;h=n.from;--s){const n=i[s];if(n){const i=e(t,n);i!==l&&(a.beginPath(),null!==l&&a.fill(),a.fillStyle=i,l=i);const s=Math.round(n._t*r)+o,u=n.ut*h;a.moveTo(s,u),a.arc(s,u,_,0,2*Math.PI)}}a.fill()}(t,i,l,s,_)}}class Jn extends Gn{Wg(t,i){return i.vt}}class Qn extends $n{constructor(){super(...arguments),this.Xw=new Jn}zg(t,i,s){return{...this.Ag(t,i),...s.Dr(t)}}ig(){const t=this.Jn.N(),i={ot:this.jw,Xt:t.lineStyle,Lg:t.lineVisible?t.lineType:void 0,ct:t.lineWidth,Ng:t.pointMarkersVisible?t.pointMarkersRadius||t.lineWidth/2+2:void 0,lt:this.qw,Og:this.Qn.It().lu()};this.Xw.ht(i)}}const te={type:"Line",isBuiltIn:!0,defaultOptions:{color:"#2196f3",lineStyle:0,lineWidth:3,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},Rg:(t,i)=>new Qn(t,i)};function ie(t,i){return t.weight>i.weight?t:i}class se{constructor(){this.Fg=new o,this.Hg=function(t){let i=!1;return function(...s){i||(i=!0,queueMicrotask((()=>{t(...s),i=!1})))}}((()=>this.Fg.p(this.Ug))),this.Ug=0}$g(){return this.Fg}m(){this.Fg.m()}options(){return this.ys}setOptions(t){this.ys=t}preprocessData(t){}updateFormatter(t){this.ys&&(this.ys.localization=t)}createConverterToInternalObj(t){return this.Hg(),t=>(t>this.Ug&&(this.Ug=t),t)}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return this.jg(t)}formatTickmark(t){return this.jg(t.time)}maxTickMarkWeight(t){return t.reduce(ie,t[0]).weight}fillWeightsForPoints(t,i){for(let n=i;nt.toFixed(3)+"%"}},ee={lastValueVisible:!1,priceLineVisible:!1};class re extends Nn{constructor(t,i){const s=_(ne,i||{}),n=new se;super(t,n,s),n.setOptions(this.options()),this._initWhitespaceSeries()}addSeries(t,i={},s=0){if(t.isBuiltIn&&!1===["Area","Line"].includes(t.type))throw new Error("Yield curve only support Area and Line series");const n={...ee,...i};return super.addSeries(t,n,s)}_initWhitespaceSeries(){const t=this.horzBehaviour(),i=this.addSeries(te);let s;function n(n){const e=function(t,i){return{le:Math.max(0,t.startTimeRange),oe:Math.max(0,t.minimumTimeRange,i||0),qg:Math.max(1,t.baseResolution)}}(t.options().yieldCurve,n),r=(({le:t,oe:i,qg:s})=>`${t}~${i}~${s}`)(e);r!==s&&(s=r,i.setData(function({le:t,oe:i,qg:s}){return Array.from({length:Math.floor((i-t)/s)+1},((i,n)=>({time:t+n*s})))}(e)))}n(0),t.$g().i(n)}}function he(t,i){const s=Wn(t);return new re(s,i)}function ae(t,i){return t.weight>i.weight?t:i}class le{options(){return this.ys}setOptions(t){this.ys=t}preprocessData(t){}updateFormatter(t){this.ys&&(this.ys.localization=t)}createConverterToInternalObj(t){return t=>t}key(t){return t}cacheKey(t){return t}convertHorzItemToInternal(t){return t}formatHorzItem(t){return t.toFixed(this.Cn())}formatTickmark(t,i){return t.time.toFixed(this.Cn())}maxTickMarkWeight(t){return t.reduce(ae,t[0]).weight}fillWeightsForPoints(t,i){for(let n=i;n0?s:1,u=l*_,c=o===t.bitmapSize.height?o:o*_,d=(a??0)*_,f=t.context.createLinearGradient(0,u,0,c);if(f.addColorStop(0,n),null!=a){const t=qt((d-u)/(c-u),0,1);f.addColorStop(t,e),f.addColorStop(t,r)}f.addColorStop(1,h),this.eM=f,this.Gg=i}return this.eM}}class de extends ue{constructor(){super(...arguments),this.rM=new ce}Xg(t,i){const s=this.rt;return this.rM.Zg(t,{Jg:i.br,Qg:i.Sr,tM:i.Cr,iM:i.yr,Yg:s.Yg,sM:s.sM??0,nM:s.nM??t.bitmapSize.height})}}class fe extends Gn{constructor(){super(...arguments),this.hM=new ce}Wg(t,i){const s=this.rt;return this.hM.Zg(t,{Jg:i.gr,Qg:i.gr,tM:i.Mr,iM:i.Mr,Yg:s.Yg,sM:s.sM??0,nM:s.nM??t.bitmapSize.height})}}class pe extends $n{constructor(t,i){super(t,i),this.Xw=new C,this.aM=new de,this.lM=new fe,this.Xw.st([this.aM,this.lM])}zg(t,i,s){return{...this.Ag(t,i),...s.Dr(t)}}ig(){const t=this.Jn.zt();if(null===t)return;const i=this.Jn.N(),s=this.Jn.Wt().Nt(i.baseValue.price,t.Ft),n=this.Qn.It().lu();if(null===this.qw||0===this.jw.length)return;let e,r;if(i.relativeGradient){e=this.jw[this.qw.from].ut,r=this.jw[this.qw.from].ut;for(let t=this.qw.from;tr&&(r=i.ut)}}this.aM.ht({ot:this.jw,ct:i.lineWidth,Xt:i.lineStyle,Lg:i.lineType,Yg:s,sM:e,nM:r,Kg:!1,lt:this.qw,Og:n}),this.lM.ht({ot:this.jw,ct:i.lineWidth,Xt:i.lineStyle,Lg:i.lineVisible?i.lineType:void 0,Ng:i.pointMarkersVisible?i.pointMarkersRadius||i.lineWidth/2+2:void 0,Yg:s,sM:e,nM:r,lt:this.qw,Og:n})}}const ve={type:"Baseline",isBuiltIn:!0,defaultOptions:{baseValue:{type:"price",price:0},relativeGradient:!1,topFillColor1:"rgba(38, 166, 154, 0.28)",topFillColor2:"rgba(38, 166, 154, 0.05)",topLineColor:"rgba(38, 166, 154, 1)",bottomFillColor1:"rgba(239, 83, 80, 0.05)",bottomFillColor2:"rgba(239, 83, 80, 0.28)",bottomLineColor:"rgba(239, 83, 80, 1)",lineWidth:3,lineStyle:0,lineType:0,lineVisible:!0,crosshairMarkerVisible:!0,crosshairMarkerRadius:4,crosshairMarkerBorderColor:"",crosshairMarkerBorderWidth:2,crosshairMarkerBackgroundColor:"",lastPriceAnimation:0,pointMarkersVisible:!1},Rg:(t,i)=>new pe(t,i)};class me extends ue{constructor(){super(...arguments),this.rM=new ce}Xg(t,i){return this.rM.Zg(t,{Jg:i.mr,Qg:"",tM:"",iM:i.wr,sM:this.rt?.sM??0,nM:t.bitmapSize.height})}}class we extends $n{constructor(t,i){super(t,i),this.Xw=new C,this.oM=new me,this._M=new Jn,this.Xw.st([this.oM,this._M])}zg(t,i,s){return{...this.Ag(t,i),...s.Dr(t)}}ig(){const t=this.Jn.N();if(null===this.qw||0===this.jw.length)return;let i;if(t.relativeGradient){i=this.jw[this.qw.from].ut;for(let t=this.qw.from;tnew we(t,i)};class Me extends y{constructor(){super(...arguments),this.qt=null,this.uM=0,this.cM=0}ht(t){this.qt=t}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.qt||0===this.qt.Xs.length||null===this.qt.lt)return;if(this.uM=this.dM(i),this.uM>=2){Math.max(1,Math.floor(i))%2!=this.uM%2&&this.uM--}this.cM=this.qt.fM?Math.min(this.uM,Math.floor(i)):this.uM;let n=null;const e=this.cM<=this.uM&&this.qt.lu>=Math.floor(1.5*i);for(let r=this.qt.lt.from;rf+v-1&&(e=f+v-1,n=e-_+1),t.fillRect(i,n,o-i,e-n+1)}const i=l+m;let n=Math.max(f,Math.round(h.Kl*s)-a),e=n+_-1;e>f+v-1&&(e=f+v-1,n=e-_+1),t.fillRect(u+1,n,i-u,e-n+1)}}}dM(t){const i=Math.floor(t);return Math.max(i,Math.floor(function(t,i){return Math.floor(.3*t*i)}(a(this.qt).lu,t)))}}class be extends _n{constructor(t,i){super(t,i,!1)}tg(t,i,s){i.su(this.jw,m(this.qw)),t.$l(this.jw,s,m(this.qw))}vM(t,i,s){return{wt:t,jh:i.Ft[0],qh:i.Ft[1],Yh:i.Ft[2],Kh:i.Ft[3],_t:NaN,jl:NaN,ql:NaN,Yl:NaN,Kl:NaN}}Jw(){const t=this.Jn.Rh();this.jw=this.Jn.Xs().Hr().map((i=>this.zg(i.Re,i,t)))}}class xe extends be{constructor(){super(...arguments),this.Xw=new Me}zg(t,i,s){return{...this.vM(t,i,s),...s.Dr(t)}}ig(){const t=this.Jn.N();this.Xw.ht({Xs:this.jw,lu:this.Qn.It().lu(),pM:t.openVisible,fM:t.thinBars,lt:this.qw})}}const Se={type:"Bar",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",openVisible:!0,thinBars:!0},Rg:(t,i)=>new xe(t,i)};class Ce extends y{constructor(){super(...arguments),this.qt=null,this.uM=0}ht(t){this.qt=t}et(t){if(null===this.qt||0===this.qt.Xs.length||null===this.qt.lt)return;const{horizontalPixelRatio:i}=t;if(this.uM=function(t,i){if(t>=2.5&&t<=4)return Math.floor(3*i);const s=1-.2*Math.atan(Math.max(4,t)-4)/(.5*Math.PI),n=Math.floor(t*s*i),e=Math.floor(t*i),r=Math.min(n,e);return Math.max(Math.floor(i),r)}(this.qt.lu,i),this.uM>=2){Math.floor(i)%2!=this.uM%2&&this.uM--}const s=this.qt.Xs;this.qt.mM&&this.wM(t,s,this.qt.lt),this.qt.Mi&&this.Qp(t,s,this.qt.lt);const n=this.gM(i);(!this.qt.Mi||this.uM>2*n)&&this.MM(t,s,this.qt.lt)}wM(t,i,s){if(null===this.qt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:r}=t;let h="",a=Math.min(Math.floor(e),Math.floor(this.qt.lu*e));a=Math.max(Math.floor(e),Math.min(a,this.uM));const l=Math.floor(.5*a);let o=null;for(let t=s.from;t2*a)E(n,o,u,_-o+1,c-u+1,a);else{const t=_-o+1;n.fillRect(o,u,t,c-u+1)}l=_}}MM(t,i,s){if(null===this.qt)return;const{context:n,horizontalPixelRatio:e,verticalPixelRatio:r}=t;let h="";const a=this.gM(e);for(let t=s.from;to||n.fillRect(_,l,u-_+1,o-l+1)}}}class ye extends be{constructor(){super(...arguments),this.Xw=new Ce}zg(t,i,s){return{...this.vM(t,i,s),...s.Dr(t)}}ig(){const t=this.Jn.N();this.Xw.ht({Xs:this.jw,lu:this.Qn.It().lu(),mM:t.wickVisible,Mi:t.borderVisible,lt:this.qw})}}const Pe={type:"Candlestick",isBuiltIn:!0,defaultOptions:{upColor:"#26a69a",downColor:"#ef5350",wickVisible:!0,borderVisible:!0,borderColor:"#378658",borderUpColor:"#26a69a",borderDownColor:"#ef5350",wickColor:"#737375",wickUpColor:"#26a69a",wickDownColor:"#ef5350"},Rg:(t,i)=>new ye(t,i)};class ke extends y{constructor(){super(...arguments),this.qt=null,this.bM=[]}ht(t){this.qt=t,this.bM=[]}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null===this.qt||0===this.qt.ot.length||null===this.qt.lt)return;this.bM.length||this.xM(i);const n=Math.max(1,Math.floor(s)),e=Math.round(this.qt.SM*s)-Math.floor(n/2),r=e+n;for(let i=this.qt.lt.from;in.ne?n.bi=s.Uh-i-1:s.Uh=n.bi+i+1))}let n=Math.ceil(this.qt.lu*t);for(let t=this.qt.lt.from;t0&&n<4)for(let t=this.qt.lt.from;tn&&(i.CM>i.ne?i.bi-=1:i.Uh+=1)}}}class Te extends $n{constructor(){super(...arguments),this.Xw=new ke}zg(t,i,s){return{...this.Ag(t,i),...s.Dr(t)}}ig(){const t={ot:this.jw,lu:this.Qn.It().lu(),lt:this.qw,SM:this.Jn.Wt().Nt(this.Jn.N().base,a(this.Jn.zt()).Ft)};this.Xw.ht(t)}}const Re={type:"Histogram",isBuiltIn:!0,defaultOptions:{color:"#26a69a",base:0},Rg:(t,i)=>new Te(t,i)};class De{constructor(t,i){this.yt=t,this.yM=i,this.PM()}detach(){this.yt.detachPrimitive(this.yM)}getPane(){return this.yt}applyOptions(t){this.yM.hr?.(t)}PM(){this.yt.attachPrimitive(this.yM)}}const Ve={visible:!0,horzAlign:"center",vertAlign:"center",lines:[]},Ee={color:"rgba(0, 0, 0, 0.5)",fontSize:48,fontFamily:w,fontStyle:"",text:""};class Be{constructor(t){this.kM=new Map,this.qt=t}draw(t){t.useMediaCoordinateSpace((t=>{if(!this.qt.visible)return;const{context:i,mediaSize:s}=t;let n=0;for(const t of this.qt.lines){if(0===t.text.length)continue;i.font=t.k;const e=this.TM(i,t.text);e>s.width?t.pu=s.width/e:t.pu=1,n+=t.lineHeight*t.pu}let e=0;switch(this.qt.vertAlign){case"top":e=0;break;case"center":e=Math.max((s.height-n)/2,0);break;case"bottom":e=Math.max(s.height-n,0)}for(const t of this.qt.lines){i.save(),i.fillStyle=t.color;let n=0;switch(this.qt.horzAlign){case"left":i.textAlign="left",n=t.lineHeight/2;break;case"center":i.textAlign="center",n=s.width/2;break;case"right":i.textAlign="right",n=s.width-1-t.lineHeight/2}i.translate(n,e),i.textBaseline="top",i.font=t.k,i.scale(t.pu,t.pu),i.fillText(t.text,0,t.RM),i.restore(),e+=t.lineHeight*t.pu}}))}TM(t,i){const s=this.DM(t.font);let n=s.get(i);return void 0===n&&(n=t.measureText(i).width,s.set(i,n)),n}DM(t){let i=this.kM.get(t);return void 0===i&&(i=new Map,this.kM.set(t,i)),i}}class Ie{constructor(t){this.ys=ze(t)}Pt(t){this.ys=ze(t)}renderer(){return new Be(this.ys)}}function Ae(t){return{...t,k:g(t.fontSize,t.fontFamily,t.fontStyle),lineHeight:t.lineHeight||1.2*t.fontSize,RM:0,pu:0}}function ze(t){return{...t,lines:t.lines.map(Ae)}}function Oe(t){return{...Ee,...t}}function Le(t){return{...Ve,...t,lines:t.lines?.map(Oe)??[]}}class Ne{constructor(t){this.ys=Le(t),this.VM=[new Ie(this.ys)]}updateAllViews(){this.VM.forEach((t=>t.Pt(this.ys)))}paneViews(){return this.VM}attached({requestUpdate:t}){this.EM=t}detached(){this.EM=void 0}hr(t){this.ys=Le({...this.ys,...t}),this.EM&&this.EM()}}function We(t,i){return new De(t,new Ne(i))}const Fe={alpha:1,padding:0};class He{constructor(t){this.qt=t}draw(t){t.useMediaCoordinateSpace((t=>{const i=t.context,s=this.BM(this.qt,t.mediaSize);s&&this.qt.IM&&(i.globalAlpha=this.qt.alpha??1,i.drawImage(this.qt.IM,s._t,s.ut,s.Qi,s.$t))}))}BM(t,i){const{maxHeight:s,maxWidth:n,AM:e,zM:r,padding:h}=t,a=Math.round(i.width/2),l=Math.round(i.height/2),o=h??0;let _=i.width-2*o,u=i.height-2*o;s&&(u=Math.min(u,s)),n&&(_=Math.min(_,n));const c=_/r,d=u/e,f=Math.min(c,d),p=r*f,v=e*f;return{_t:a-.5*p,ut:l-.5*v,$t:v,Qi:p}}}class Ue{constructor(t){this.OM=null,this.LM=0,this.NM=0,this.ys=t,this.M=$e(this.ys,this.OM,this.LM,this.NM)}WM(t){void 0!==t.FM&&(this.LM=t.FM),void 0!==t.HM&&(this.NM=t.HM),void 0!==t.UM&&(this.OM=t.UM),this.Pt()}$M(t){this.ys=t,this.Pt()}zOrder(){return"bottom"}Pt(){this.M=$e(this.ys,this.OM,this.LM,this.NM)}renderer(){return new He(this.M)}}function $e(t,i,s,n){return{...t,IM:i,zM:s,AM:n}}function je(t){return{...Fe,...t}}class qe{constructor(t,i){this.jM=null,this.qM=t,this.ys=je(i),this.VM=[new Ue(this.ys)]}updateAllViews(){this.VM.forEach((t=>t.Pt()))}paneViews(){return this.VM}attached(t){const{requestUpdate:i}=t;this.YM=i,this.jM=new Image,this.jM.onload=()=>{const t=this.jM?.naturalHeight??1,i=this.jM?.naturalWidth??1;this.VM.forEach((s=>s.WM({HM:t,FM:i,UM:this.jM}))),this.YM&&this.YM()},this.jM.src=this.qM}detached(){this.YM=void 0,this.jM=null}hr(t){this.ys=je({...this.ys,...t}),this.KM(),this.EM&&this.EM()}EM(){this.YM&&this.YM()}KM(){this.VM.forEach((t=>t.$M(this.ys)))}}function Ye(t,i,s){return new De(t,new qe(i,s))}class Ke{constructor(t,i){this.Jn=t,this.ah=i,this.PM()}detach(){this.Jn.detachPrimitive(this.ah)}getSeries(){return this.Jn}applyOptions(t){this.ah&&this.ah.hr&&this.ah.hr(t)}PM(){this.Jn.attachPrimitive(this.ah)}}const Xe={zOrder:"normal"};function Ze(t,i){return Kt(Math.min(Math.max(t,12),30)*i)}function Ge(t,i){switch(t){case"arrowDown":case"arrowUp":return Ze(i,1);case"circle":return Ze(i,.8);case"square":return Ze(i,.7)}}function Je(t){return function(t){const i=Math.ceil(t);return i%2!=0?i-1:i}(Ze(t,1))}function Qe(t){return Math.max(Ze(t,.1),3)}function tr(t,i,s){return i?t:s?Math.ceil(t/2):0}function ir(t,i,s,n){const e=(Ge("arrowUp",n)-1)/2*s.XM,r=(Kt(n/2)-1)/2*s.XM;i.beginPath(),t?(i.moveTo(s._t-e,s.ut),i.lineTo(s._t,s.ut-e),i.lineTo(s._t+e,s.ut),i.lineTo(s._t+r,s.ut),i.lineTo(s._t+r,s.ut+e),i.lineTo(s._t-r,s.ut+e),i.lineTo(s._t-r,s.ut)):(i.moveTo(s._t-e,s.ut),i.lineTo(s._t,s.ut+e),i.lineTo(s._t+e,s.ut),i.lineTo(s._t+r,s.ut),i.lineTo(s._t+r,s.ut-e),i.lineTo(s._t-r,s.ut-e),i.lineTo(s._t-r,s.ut)),i.fill()}function sr(t,i,s,n,e,r){const h=(Ge("arrowUp",n)-1)/2,a=(Kt(n/2)-1)/2;if(e>=i-a-2&&e<=i+a+2&&r>=(t?s:s-h)-2&&r<=(t?s+h:s)+2)return!0;return(()=>{if(ei+h+3||r<(t?s-h-3:s)||r>(t?s:s+h+3))return!1;const n=Math.abs(e-i);return Math.abs(r-s)+3>=n/2})()}class nr{constructor(){this.qt=null,this.Ln=new tt,this.W=-1,this.F="",this.Rp="",this.ZM="normal"}ht(t){this.qt=t}Nn(t,i,s){this.W===t&&this.F===i||(this.W=t,this.F=i,this.Rp=g(t,i),this.Ln.En()),this.ZM=s}Yn(t,i){if(null===this.qt||null===this.qt.lt)return null;for(let s=this.qt.lt.from;s{this.et(t)}))}drawBackground(t){"aboveSeries"===this.ZM&&t.useBitmapCoordinateSpace((t=>{this.et(t)}))}et({context:t,horizontalPixelRatio:i,verticalPixelRatio:s}){if(null!==this.qt&&null!==this.qt.lt){t.textBaseline="middle",t.font=this.Rp;for(let n=this.qt.lt.from;n=t&&e<=t+s&&r>=i-h&&r<=i+h}(t.ri._t,t.ri.ut,t.ri.Qi,t.ri.$t,i,s))||function(t,i,s){if(0===t.zr)return!1;switch(t.JM){case"arrowDown":return sr(!0,t._t,t.ut,t.zr,i,s);case"arrowUp":return sr(!1,t._t,t.ut,t.zr,i,s);case"circle":return function(t,i,s,n,e){const r=2+Ge("circle",s)/2,h=t-n,a=i-e;return Math.sqrt(h*h+a*a)<=r}(t._t,t.ut,t.zr,i,s);case"square":return function(t,i,s,n,e){const r=Ge("square",s),h=(r-1)/2,a=t-h,l=i-h;return n>=a&&n<=a+r&&e>=l&&e<=l+r}(t._t,t.ut,t.zr,i,s)}}(t,i,s)}function hr(t){return"atPriceTop"===t||"atPriceBottom"===t||"atPriceMiddle"===t}function ar(t,i,s,n,e,r,h,l){const o=function(t,i){if(hr(i.position)&&void 0!==i.price)return i.price;if("value"in(s=t)&&"number"==typeof s.value)return t.value;var s;if(function(t){return"open"in t&&"high"in t&&"low"in t&&"close"in t}(t)){if("inBar"===i.position)return t.close;if("aboveBar"===i.position)return t.high;if("belowBar"===i.position)return t.low}}(s,i);if(void 0===o)return;const _=hr(i.position),c=l.timeScale(),d=u(i.size)?Math.max(i.size,0):1,f=Je(c.options().barSpacing)*d,p=f/2;t.zr=f;switch(i.position){case"inBar":case"atPriceMiddle":return t.ut=a(h.priceToCoordinate(o)),void(void 0!==t.ri&&(t.ri.ut=t.ut+p+r+.6*e));case"aboveBar":case"atPriceTop":{const i=_?0:n.QM;return t.ut=a(h.priceToCoordinate(o))-p-i,void 0!==t.ri&&(t.ri.ut=t.ut-p-.6*e,n.QM+=1.2*e),void(_||(n.QM+=f+r))}case"belowBar":case"atPriceBottom":{const i=_?0:n.tb;return t.ut=a(h.priceToCoordinate(o))+p+i,void 0!==t.ri&&(t.ri.ut=t.ut+p+r+.6*e,n.tb+=1.2*e),void(_||(n.tb+=f+r))}}}class lr{constructor(t,i,s){this.ib=[],this.St=!0,this.sb=!0,this.Gt=new nr,this.ge=t,this.gp=i,this.qt={ot:[],lt:null},this.ys=s}renderer(){if(!this.ge.options().visible)return null;this.St&&this.nb();const t=this.gp.options().layout;return this.Gt.Nn(t.fontSize,t.fontFamily,this.ys.zOrder),this.Gt.ht(this.qt),this.Gt}eb(t){this.ib=t,this.Pt("data")}Pt(t){this.St=!0,"data"===t&&(this.sb=!0)}rb(t){this.St=!0,this.ys=t}zOrder(){return"aboveSeries"===this.ys.zOrder?"top":this.ys.zOrder}nb(){const t=this.gp.timeScale(),i=this.ib;this.sb&&(this.qt.ot=i.map((t=>({wt:t.time,_t:0,ut:0,zr:0,JM:t.shape,R:t.color,Kn:t.id,hb:t.hb,ri:void 0}))),this.sb=!1);const s=this.gp.options().layout;this.qt.lt=null;const n=t.getVisibleLogicalRange();if(null===n)return;const e=new xi(Math.floor(n.from),Math.ceil(n.to));if(null===this.ge.data()[0])return;if(0===this.qt.ot.length)return;let r=NaN;const h=Qe(t.options().barSpacing),l={QM:h,tb:h};this.qt.lt=on(this.qt.ot,e,!0);for(let n=this.qt.lt.from;n0&&(o.ri={GM:e.text,_t:0,ut:0,Qi:0,$t:0});const _=this.ge.dataByIndex(e.time,0);null!==_&&ar(o,e,_,l,s.fontSize,h,this.ge,this.gp)}this.St=!1}}function or(t){return{...Xe,...t}}class _r{constructor(t){this.sh=null,this.ib=[],this.ab=[],this.lb=null,this.ge=null,this.gp=null,this.ob=!0,this._b=null,this.ub=null,this.cb=null,this.fb=!0,this.ys=or(t)}attached(t){this.pb(),this.gp=t.chart,this.ge=t.series,this.sh=new lr(this.ge,a(this.gp),this.ys),this.YM=t.requestUpdate,this.ge.subscribeDataChanged((t=>this.fg(t))),this.fb=!0,this.EM()}EM(){this.YM&&this.YM()}detached(){this.ge&&this.lb&&this.ge.unsubscribeDataChanged(this.lb),this.gp=null,this.ge=null,this.sh=null,this.lb=null}eb(t){this.fb=!0,this.ib=t,this.pb(),this.ob=!0,this.ub=null,this.EM()}mb(){return this.ib}paneViews(){return this.sh?[this.sh]:[]}updateAllViews(){this.wb()}hitTest(t,i){return this.sh?this.sh.renderer()?.Yn(t,i)??null:null}autoscaleInfo(t,i){if(this.sh){const t=this.gb();if(t)return{priceRange:null,margins:t}}return null}hr(t){this.ys=or({...this.ys,...t}),this.EM&&this.EM()}gb(){const t=a(this.gp).timeScale().options().barSpacing;if(this.ob||t!==this.cb){if(this.cb=t,this.ib.length>0){const i=Qe(t),s=1.5*Je(t)+2*i,n=this.Mb();this._b={above:tr(s,n.aboveBar,n.inBar),below:tr(s,n.belowBar,n.inBar)}}else this._b=null;this.ob=!1}return this._b}Mb(){return null===this.ub&&(this.ub=this.ib.reduce(((t,i)=>(t[i.position]||(t[i.position]=!0),t)),{inBar:!1,aboveBar:!1,belowBar:!1,atPriceTop:!1,atPriceBottom:!1,atPriceMiddle:!1})),this.ub}pb(){if(!this.fb||!this.gp||!this.ge)return;const t=this.gp.timeScale(),i=this.ge?.data();if(null==t.getVisibleLogicalRange()||!this.ge||0===i.length)return void(this.ab=[]);const s=t.timeToIndex(a(i[0].time),!0);this.ab=this.ib.map(((i,n)=>{const e=t.timeToIndex(i.time,!0),r=e{this.ib.delete(i),this.Cb()}),s),e={...t,yb:n,Pb:Date.now()+s};this.ib.set(i,e)}else this.ib.set(i,{...t,yb:void 0,Pb:void 0});this.Cb()}Sb(t){const i=this.ib.get(t);i&&void 0!==i.yb&&window.clearTimeout(i.yb),this.ib.delete(t),this.Cb()}kb(){for(const[t]of this.ib)this.Sb(t)}Tb(){const t=Date.now(),i=[];for(const[s,n]of this.ib)!n.Pb||n.Pb>t?i.push({time:n.time,sign:n.sign,value:n.value}):this.Sb(s);return i}Rb(t){this.bb=t}Cb(){this.bb&&this.bb()}}const fr={positiveColor:"#22AB94",negativeColor:"#F7525F",updateVisibilityDuration:5e3};class pr{constructor(t,i,s,n){this.qt=t,this.Db=i,this.Vb=s,this.Eb=n}draw(t){t.useBitmapCoordinateSpace((t=>{const i=t.context,s=Math.max(1,Math.floor(t.horizontalPixelRatio))%2/2,n=4*t.verticalPixelRatio+s;this.qt.forEach((e=>{const r=Math.round(e._t*t.horizontalPixelRatio)+s;i.beginPath();const h=this.Bb(e.Ib);i.fillStyle=h,i.arc(r,e.ut*t.verticalPixelRatio,n,0,2*Math.PI,!1),i.fill(),e.Ib&&(i.strokeStyle=h,i.lineWidth=Math.floor(2*t.horizontalPixelRatio),i.beginPath(),i.moveTo((e._t-4.7)*t.horizontalPixelRatio+s,(e.ut-7*e.Ib)*t.verticalPixelRatio),i.lineTo(e._t*t.horizontalPixelRatio+s,(e.ut-7*e.Ib-7*e.Ib*.5)*t.verticalPixelRatio),i.lineTo((e._t+4.7)*t.horizontalPixelRatio+s,(e.ut-7*e.Ib)*t.verticalPixelRatio),i.stroke())}))}))}Bb(t){return 0===t?this.Db:t>0?this.Eb:this.Vb}}class vr{constructor(t,i,s){this.qt=[],this.ge=t,this.uh=i,this.ys=s}Pt(t){this.qt=t.map((t=>{const i=this.ge.priceToCoordinate(t.value);if(null===i)return null;return{_t:a(this.uh.timeToCoordinate(t.time)),ut:i,Ib:t.sign}})).filter(v)}renderer(){const t=function(t,i){return function(t,i){return"Area"===i}(0,i)?t.lineColor:t.color}(this.ge.options(),this.ge.seriesType());return new pr(this.qt,t,this.ys.negativeColor,this.ys.positiveColor)}}function mr(t,i){return"Line"===i||"Area"===i}class wr{constructor(t){this.gp=void 0,this.ge=void 0,this.VM=[],this.i_=null,this.Ab=new Map,this.zb=new dr((()=>this.EM())),this.ys={...fr,...t}}hr(t){this.ys={...this.ys,...t},this.EM()}eb(t){this.zb.kb();const i=this.i_;i&&t.forEach((t=>{this.zb.xb(t,i.key(t.time))}))}mb(){return this.zb.Tb()}EM(){this.YM?.()}attached(t){const{chart:i,series:s,requestUpdate:n,horzScaleBehavior:e}=t;this.gp=i,this.ge=s,this.i_=e;const r=this.ge.seriesType();if("Area"!==r&&"Line"!==r)throw new Error("UpDownMarkersPrimitive is only supported for Area and Line series types");this.VM=[new vr(this.ge,this.gp.timeScale(),this.ys)],this.YM=n,this.EM()}detached(){this.gp=void 0,this.ge=void 0,this.YM=void 0}Bp(){return h(this.gp)}Do(){return h(this.ge)}updateAllViews(){this.VM.forEach((t=>t.Pt(this.mb())))}paneViews(){return this.VM}ht(t){if(!this.ge)throw new Error("Primitive not attached to series");const i=this.ge.seriesType();this.Ab.clear();const s=this.i_;s&&t.forEach((t=>{$s(t)&&mr(0,i)&&this.Ab.set(s.key(t.time),t.value)})),h(this.ge).setData(t)}Pt(t,i){if(!this.ge||!this.i_)throw new Error("Primitive not attached to series");const s=this.ge.seriesType(),n=this.i_.key(t.time);if(Us(t)&&this.Ab.delete(n),$s(t)&&mr(0,s)){const i=this.Ab.get(n);i&&this.zb.xb({time:t.time,value:t.value,sign:gr(t.value,i)},n,this.ys.updateVisibilityDuration)}h(this.ge).update(t,i)}Ob(){this.zb.kb()}}function gr(t,i){return t===i?0:t-i>0?1:-1}class Mr extends Ke{setData(t){return this.ah.ht(t)}update(t,i){return this.ah.Pt(t,i)}markers(){return this.ah.mb()}setMarkers(t){return this.ah.eb(t)}clearMarkers(){return this.ah.Ob()}}function br(t,i={}){return new Mr(t,new wr(i))}const xr={...t,color:"#2196f3"};function Sr(){return"5.0.7"}export{ge as AreaSeries,Se as BarSeries,ve as BaselineSeries,Pe as CandlestickSeries,Vi as ColorType,$ as CrosshairMode,Re as HistogramSeries,Ri as LastPriceAnimationMode,te as LineSeries,s as LineStyle,i as LineType,St as MismatchDirection,Di as PriceLineSource,ui as PriceScaleMode,Ei as TickMarkType,Ti as TrackingModeExitMode,Hn as createChart,Fn as createChartEx,Ye as createImageWatermark,oe as createOptionsChart,cr as createSeriesMarkers,We as createTextWatermark,br as createUpDownMarkers,he as createYieldCurveChart,xr as customSeriesDefaultOptions,Un as defaultHorzScaleBehavior,Ii as isBusinessDay,Ai as isUTCTimestamp,Sr as version}; diff --git a/websites/default/packages/lightweight-charts/v5.0.7-treeshaked/types.d.ts b/websites/default/packages/lightweight-charts/v5.0.7/types.d.ts similarity index 100% rename from websites/default/packages/lightweight-charts/v5.0.7-treeshaked/types.d.ts rename to websites/default/packages/lightweight-charts/v5.0.7/types.d.ts diff --git a/websites/default/packages/lightweight-charts/wrapper.js b/websites/default/packages/lightweight-charts/wrapper.js index 4d743f277..8847371b5 100644 --- a/websites/default/packages/lightweight-charts/wrapper.js +++ b/websites/default/packages/lightweight-charts/wrapper.js @@ -1,6 +1,6 @@ // @ts-check -/** @import {IChartApi, ISeriesApi, SeriesDefinition, SingleValueData as _SingleValueData, CandlestickData as _CandlestickData, BaselineData, SeriesType, IPaneApi, BaselineStyleOptions, CandlestickStyleOptions, WhitespaceData} from './v5.0.7-treeshaked/types' */ +/** @import { IChartApi, ISeriesApi as _ISeriesApi, SeriesDefinition, SingleValueData as _SingleValueData, CandlestickData as _CandlestickData, BaselineData as _BaselineData, SeriesType, IPaneApi, LineSeriesPartialOptions, BaselineSeriesPartialOptions, CandlestickSeriesPartialOptions, WhitespaceData, DeepPartial, ChartOptions, Time, LineData as _LineData } from './v5.0.7/types' */ /** * @typedef {[number, number, number, number]} OHLCTuple @@ -10,764 +10,771 @@ * * @typedef {Object} Indexed * @property {number} index - */ - -/** + * + * @typedef {_ISeriesApi} ISeries + * @typedef {_ISeriesApi<'Candlestick', number>} CandlestickISeries + * @typedef {_ISeriesApi<'Line', number>} LineISeries + * @typedef {_ISeriesApi<'Baseline', number>} BaselineISeries + * * @typedef {Object} Series - * @property {ISeriesApi} inner + * @property {ISeries} inner * @property {string} id * @property {Signal} active * @property {Signal} hasData * @property {Signal} url * @property {VoidFunction} remove + * + * @typedef {ChartData<_SingleValueData>} SingleValueData + * @typedef {ChartData<_CandlestickData>} CandlestickData + * @typedef {ChartData<_LineData>} LineData + * @typedef {ChartData<_BaselineData>} BaselineData + * + * @typedef {function({ iseries: ISeries; unit: Unit; index: Index }): void} SetDataCallback + * + * @typedef {Object} CreatePriceLine + * @property {number} value + * + * @typedef {Object} CreatePriceLineOptions + * @property {CreatePriceLine} createPriceLine + * + * @typedef {Partial} PartialCreatePriceLineOptions + * + * @typedef {LineSeriesPartialOptions & PartialCreatePriceLineOptions} PartialLineStyleOptions + * @typedef {CandlestickSeriesPartialOptions & PartialCreatePriceLineOptions} PartialCandlestickStyleOptions + * @typedef {BaselineSeriesPartialOptions & PartialCreatePriceLineOptions} PartialBaselineStyleOptions */ /** * @template T - * @typedef {T & Valued & Indexed} ChartData + * @typedef {T & Valued} ChartData */ +import { + createChart, + CandlestickSeries, + LineSeries, + BaselineSeries, +} from "./v5.0.7/script.js"; + +const oklchToRGBA = createOklchToRGBA(); + /** - * @typedef {ChartData<_SingleValueData>} SingleValueData - * @typedef {ChartData<_CandlestickData>} CandlestickData + * @param {Object} args + * @param {string} args.id + * @param {HTMLElement} args.parent + * @param {Signals} args.signals + * @param {Colors} args.colors + * @param {Utilities} args.utils + * @param {Elements} args.elements + * @param {VecsResources} args.vecsResources + * @param {Accessor} args.index + * @param {((unknownTimeScaleCallback: VoidFunction) => void)} [args.timeScaleSetCallback] + * @param {true} [args.fitContent] + * @param {{unit: Unit; blueprints: AnySeriesBlueprint[]}[]} [args.config] */ +function createChartElement({ + parent, + signals, + colors, + utils, + elements, + id: chartId, + index, + vecsResources, + timeScaleSetCallback, + fitContent, + config, +}) { + const div = window.document.createElement("div"); + div.classList.add("chart"); + parent.append(div); -/** - * @typedef {function({ iseries: ISeriesApi; unit: Unit; index: Index }): void} SetDataCallback - */ + const legendTop = createLegend({ + utils, + signals, + }); + div.append(legendTop.element); -export default import("./v5.0.7-treeshaked/script.js").then((lc) => { - const oklchToRGBA = createOklchToRGBA(); + const chartDiv = window.document.createElement("div"); + chartDiv.classList.add("lightweight-chart"); + div.append(chartDiv); + + const legendBottom = createLegend({ + utils, + signals, + }); + div.append(legendBottom.element); + + /** @type {IChartApi} */ + const ichart = createChart( + chartDiv, + /** @satisfies {DeepPartial} */ ({ + autoSize: true, + layout: { + fontFamily: elements.style.fontFamily, + background: { color: "transparent" }, + attributionLogo: false, + colorSpace: "display-p3", + colorParsers: [oklchToRGBA], + }, + grid: { + vertLines: { visible: false }, + horzLines: { visible: false }, + }, + rightPriceScale: { + borderVisible: false, + }, + timeScale: { + borderVisible: false, + ...(fitContent + ? { + minBarSpacing: 0.001, + } + : {}), + }, + localization: { + priceFormatter: numberToShortUSFormat, + locale: "en-us", + }, + crosshair: { + mode: 3, + }, + ...(fitContent + ? { + handleScale: false, + handleScroll: false, + } + : {}), + // ..._options, + }), + ); + + ichart.priceScale("right").applyOptions({ + minimumWidth: 80, + }); + + signals.createEffect( + () => ({ + defaultColor: colors.default(), + offColor: colors.gray(), + borderColor: colors.border(), + }), + ({ defaultColor, offColor, borderColor }) => { + ichart.applyOptions({ + layout: { + textColor: offColor, + panes: { + separatorColor: borderColor, + }, + }, + crosshair: { + horzLine: { + color: offColor, + labelBackgroundColor: defaultColor, + }, + vertLine: { + color: offColor, + labelBackgroundColor: defaultColor, + }, + }, + }); + }, + ); + + let timeScaleSet = false; + + signals.createEffect(index, (index) => { + timeScaleSet = false; + + const minBarSpacing = + index === /** @satisfies {MonthIndex} */ (7) + ? 1 + : index === /** @satisfies {QuarterIndex} */ (19) + ? 3 + : index === /** @satisfies {YearIndex} */ (23) + ? 12 + : index === /** @satisfies {DecadeIndex} */ (1) + ? 120 + : 0.5; + + ichart.applyOptions({ + timeScale: { + timeVisible: + index === /** @satisfies {Height} */ (5) || + index === /** @satisfies {DifficultyEpoch} */ (2) || + index === /** @satisfies {HalvingEpoch} */ (4), + ...(!fitContent + ? { + minBarSpacing, + } + : {}), + }, + }); + }); + + const activeResources = /** @type {Set} */ (new Set()); + ichart.subscribeCrosshairMove( + utils.debounce(() => { + activeResources.forEach((v) => { + v.fetch(); + }); + }), + ); + + if (fitContent) { + new ResizeObserver(() => ichart.timeScale().fitContent()).observe(chartDiv); + } /** * @param {Object} args * @param {string} args.id - * @param {HTMLElement} args.parent - * @param {Signals} args.signals - * @param {Colors} args.colors - * @param {Utilities} args.utils - * @param {Elements} args.elements - * @param {VecsResources} args.vecsResources - * @param {Accessor} args.index - * @param {((unknownTimeScaleCallback: VoidFunction) => void)} [args.timeScaleSetCallback] - * @param {Owner | null} args.owner - * @param {true} [args.fitContent] - * @param {{unit: Unit; blueprints: AnySeriesBlueprint[]}[]} [args.config] + * @param {number} args.paneIndex + * @param {"nw" | "ne" | "se" | "sw"} args.position + * @param {number} [args.timeout] + * @param {(pane: IPaneApi