diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..5a7f43d3 --- /dev/null +++ b/404.html @@ -0,0 +1,2 @@ +404 Page not found | toml11 +

404

Page Not Found

toml11

\ No newline at end of file diff --git a/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css b/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css new file mode 100644 index 00000000..bfe16dbd --- /dev/null +++ b/book.min.4964903a822a7acb10dac6d1ab524833c97fb5f99b141976bcb8a47d539be9c0.css @@ -0,0 +1 @@ +@charset "UTF-8";:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-500:#adb5bd;--color-link:#0055bb;--color-visited-link:#8440f1;--body-background:white;--body-font-color:black;--icon-filter:none;--hint-color-info:#6bf;--hint-color-warning:#fd6;--hint-color-danger:#f66}@media(prefers-color-scheme:dark){:root{--gray-100:rgba(255, 255, 255, 0.1);--gray-200:rgba(255, 255, 255, 0.2);--gray-500:rgba(255, 255, 255, 0.5);--color-link:#84b2ff;--color-visited-link:#b88dff;--body-background:#343a40;--body-font-color:#e9ecef;--icon-filter:brightness(0) invert(1);--hint-color-info:#6bf;--hint-color-warning:#fd6;--hint-color-danger:#f66}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.flex{display:flex}.flex-auto{flex:auto}.flex-even{flex:1 1}.flex-wrap{flex-wrap:wrap}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.align-center{align-items:center}.mx-auto{margin:0 auto}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.hidden{display:none}input.toggle{height:0;width:0;overflow:hidden;opacity:0;position:absolute}.clearfix::after{content:"";display:table;clear:both}html{font-size:16px;scroll-behavior:smooth;touch-action:manipulation}body{min-width:20rem;color:var(--body-font-color);background:var(--body-background);letter-spacing:.33px;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}body *{box-sizing:inherit}h1,h2,h3,h4,h5{font-weight:400}a{text-decoration:none;color:var(--color-link)}img{vertical-align:baseline}:focus{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}aside nav ul{padding:0;margin:0;list-style:none}aside nav ul li{margin:1em 0;position:relative}aside nav ul a{display:block}aside nav ul a:hover{opacity:.5}aside nav ul ul{padding-inline-start:1rem}ul.pagination{display:flex;justify-content:center;list-style-type:none;padding-inline-start:0}ul.pagination .page-item a{padding:1rem}.container{max-width:80rem;margin:0 auto}.book-icon{filter:var(--icon-filter)}.book-brand{margin-top:0;margin-bottom:1rem}.book-brand img{height:1.5em;width:1.5em;margin-inline-end:.5rem}.book-menu{flex:0 0 16rem;font-size:.875rem}.book-menu .book-menu-content{width:16rem;padding:1rem;background:var(--body-background);position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-menu a,.book-menu label{color:inherit;cursor:pointer;word-wrap:break-word}.book-menu a.active{color:var(--color-link)}.book-menu input.toggle+label+ul{display:none}.book-menu input.toggle:checked+label+ul{display:block}.book-menu input.toggle+label::after{content:"▸"}.book-menu input.toggle:checked+label::after{content:"▾"}body[dir=rtl] .book-menu input.toggle+label::after{content:"◂"}body[dir=rtl] .book-menu input.toggle:checked+label::after{content:"▾"}.book-section-flat{margin:2rem 0}.book-section-flat>a,.book-section-flat>span,.book-section-flat>label{font-weight:bolder}.book-section-flat>ul{padding-inline-start:0}.book-page{min-width:20rem;flex-grow:1;padding:1rem}.book-post{margin-bottom:3rem}.book-header{display:none;margin-bottom:1rem}.book-header label{line-height:0}.book-header img.book-icon{height:1.5em;width:1.5em}.book-search{position:relative;margin:1rem 0;border-bottom:1px solid transparent}.book-search input{width:100%;padding:.5rem;border:0;border-radius:.25rem;background:var(--gray-100);color:var(--body-font-color)}.book-search input:required+.book-search-spinner{display:block}.book-search .book-search-spinner{position:absolute;top:0;margin:.5rem;margin-inline-start:calc(100% - 1.5rem);width:1rem;height:1rem;border:1px solid transparent;border-top-color:var(--body-font-color);border-radius:50%;animation:spin 1s ease infinite}@keyframes spin{100%{transform:rotate(360deg)}}.book-search small{opacity:.5}.book-toc{flex:0 0 16rem;font-size:.75rem}.book-toc .book-toc-content{width:16rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-toc img{height:1em;width:1em}.book-toc nav>ul>li:first-child{margin-top:0}.book-footer{padding-top:1rem;font-size:.875rem}.book-footer img{height:1em;width:1em;margin-inline-end:.5rem}.book-comments{margin-top:1rem}.book-languages{margin-block-end:2rem}.book-languages .book-icon{height:1em;width:1em;margin-inline-end:.5em}.book-languages ul{padding-inline-start:1.5em}.book-menu-content,.book-toc-content,.book-page,.book-header aside,.markdown{transition:.2s ease-in-out;transition-property:transform,margin,opacity,visibility;will-change:transform,margin,opacity}@media screen and (max-width:56rem){#menu-control,#toc-control{display:inline}.book-menu{visibility:hidden;margin-inline-start:-16rem;font-size:16px;z-index:1}.book-toc{display:none}.book-header{display:block}#menu-control:focus~main label[for=menu-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#menu-control:checked~main .book-menu{visibility:initial}#menu-control:checked~main .book-menu .book-menu-content{transform:translateX(16rem);box-shadow:0 0 .5rem rgba(0,0,0,.1)}#menu-control:checked~main .book-page{opacity:.25}#menu-control:checked~main .book-menu-overlay{display:block;position:absolute;top:0;bottom:0;left:0;right:0}#toc-control:focus~main label[for=toc-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#toc-control:checked~main .book-header aside{display:block}body[dir=rtl] #menu-control:checked~main .book-menu .book-menu-content{transform:translateX(-16rem)}}@media screen and (min-width:80rem){.book-page,.book-menu .book-menu-content,.book-toc .book-toc-content{padding:2rem 1rem}}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-regular.woff2)format("woff2"),url(fonts/roboto-v27-latin-regular.woff)format("woff")}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-700.woff2)format("woff2"),url(fonts/roboto-v27-latin-700.woff)format("woff")}@font-face{font-family:roboto mono;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-mono-v13-latin-regular.woff2)format("woff2"),url(fonts/roboto-mono-v13-latin-regular.woff)format("woff")}body{font-family:roboto,sans-serif}code{font-family:roboto mono,monospace}@media print{.book-menu,.book-footer,.book-toc{display:none}.book-header,.book-header aside{display:block}main{display:block!important}}.markdown{line-height:1.6}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:400;line-height:1;margin-top:1.5em;margin-bottom:1rem}.markdown h1 a.anchor,.markdown h2 a.anchor,.markdown h3 a.anchor,.markdown h4 a.anchor,.markdown h5 a.anchor,.markdown h6 a.anchor{opacity:0;font-size:.75em;vertical-align:middle;text-decoration:none}.markdown h1:hover a.anchor,.markdown h1 a.anchor:focus,.markdown h2:hover a.anchor,.markdown h2 a.anchor:focus,.markdown h3:hover a.anchor,.markdown h3 a.anchor:focus,.markdown h4:hover a.anchor,.markdown h4 a.anchor:focus,.markdown h5:hover a.anchor,.markdown h5 a.anchor:focus,.markdown h6:hover a.anchor,.markdown h6 a.anchor:focus{opacity:initial}.markdown h4,.markdown h5,.markdown h6{font-weight:bolder}.markdown h5{font-size:.875em}.markdown h6{font-size:.75em}.markdown b,.markdown optgroup,.markdown strong{font-weight:bolder}.markdown a{text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown a:visited{color:var(--color-visited-link)}.markdown img{max-width:100%;height:auto}.markdown code{direction:ltr;unicode-bidi:embed;padding:0 .25rem;background:var(--gray-200);border-radius:.25rem;font-size:.875em}.markdown pre{direction:ltr;unicode-bidi:embed;padding:1rem;background:var(--gray-100);border-radius:.25rem;overflow-x:auto}.markdown pre code{padding:0;background:0 0}.markdown p{word-wrap:break-word}.markdown blockquote{margin:1rem 0;padding:.5rem 1rem .5rem .75rem;border-inline-start:.25rem solid var(--gray-200);border-radius:.25rem}.markdown blockquote :first-child{margin-top:0}.markdown blockquote :last-child{margin-bottom:0}.markdown table{overflow:auto;display:block;border-spacing:0;border-collapse:collapse;margin-top:1rem;margin-bottom:1rem}.markdown table tr th,.markdown table tr td{padding:.5rem 1rem;border:1px solid var(--gray-200)}.markdown table tr:nth-child(2n){background:var(--gray-100)}.markdown hr{height:1px;border:none;background:var(--gray-200)}.markdown ul,.markdown ol{padding-inline-start:2rem;word-wrap:break-word}.markdown dl dt{font-weight:bolder;margin-top:1rem}.markdown dl dd{margin-inline-start:0;margin-bottom:1rem}.markdown .highlight{direction:ltr;unicode-bidi:embed}.markdown .highlight table tr td:nth-child(1) pre{margin:0;padding-inline-end:0}.markdown .highlight table tr td:nth-child(2) pre{margin:0;padding-inline-start:0}.markdown details{padding:1rem;border:1px solid var(--gray-200);border-radius:.25rem}.markdown details summary{line-height:1;padding:1rem;margin:-1rem;cursor:pointer}.markdown details[open] summary{margin-bottom:0}.markdown figure{margin:1rem 0}.markdown figure figcaption p{margin-top:0}.markdown-inner>:first-child{margin-top:0}.markdown-inner>:last-child{margin-bottom:0}.markdown .book-expand{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden}.markdown .book-expand .book-expand-head{background:var(--gray-100);padding:.5rem 1rem;cursor:pointer}.markdown .book-expand .book-expand-content{display:none;padding:1rem}.markdown .book-expand input[type=checkbox]:checked+.book-expand-content{display:block}.markdown .book-tabs{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden;display:flex;flex-wrap:wrap}.markdown .book-tabs label{display:inline-block;padding:.5rem 1rem;border-bottom:1px transparent;cursor:pointer}.markdown .book-tabs .book-tabs-content{order:999;width:100%;border-top:1px solid var(--gray-100);padding:1rem;display:none}.markdown .book-tabs input[type=radio]:checked+label{border-bottom:1px solid var(--color-link)}.markdown .book-tabs input[type=radio]:checked+label+.book-tabs-content{display:block}.markdown .book-tabs input[type=radio]:focus+label{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}.markdown .book-columns{margin-left:-1rem;margin-right:-1rem}.markdown .book-columns>div{margin:1rem 0;min-width:10rem;padding:0 1rem}.markdown a.book-btn{display:inline-block;font-size:.875rem;color:var(--color-link);line-height:2rem;padding:0 1rem;border:1px solid var(--color-link);border-radius:.25rem;cursor:pointer}.markdown a.book-btn:hover{text-decoration:none}.markdown .book-hint.info{border-color:#6bf;background-color:rgba(102,187,255,.1)}.markdown .book-hint.warning{border-color:#fd6;background-color:rgba(255,221,102,.1)}.markdown .book-hint.danger{border-color:#f66;background-color:rgba(255,102,102,.1)} \ No newline at end of file diff --git a/categories/index.html b/categories/index.html new file mode 100644 index 00000000..f676c8d7 --- /dev/null +++ b/categories/index.html @@ -0,0 +1,9 @@ +Categories | toml11 + +
Categories +
\ No newline at end of file diff --git a/categories/index.xml b/categories/index.xml new file mode 100644 index 00000000..bfe0b43f --- /dev/null +++ b/categories/index.xml @@ -0,0 +1 @@ +Categories on toml11https://toruniina.github.io/toml11/categories/Recent content in Categories on toml11Hugoen \ No newline at end of file diff --git a/categories/page/1/index.html b/categories/page/1/index.html new file mode 100644 index 00000000..91fd4519 --- /dev/null +++ b/categories/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/categories/ + \ No newline at end of file diff --git a/docs/changelog/index.html b/docs/changelog/index.html new file mode 100644 index 00000000..c4c0f536 --- /dev/null +++ b/docs/changelog/index.html @@ -0,0 +1,137 @@ +changelog | toml11 + +
changelog +

Change Log +#

v4.1.0 +#

Added +#

  • support std::get<std::u8string>
  • support toml::value(std::u8string)
  • support string_type = std::u8string
  • support operator<<(std::ostream&, toml::value)
  • add bool uppercase to toml::integer_format
  • support template into_toml() (by 萧迩珀)

Fixed +#

  • Fix not checking for \r\n when parsing line comments (by Andreas Keller)

Changed +#

  • speedup CI tests by multicore build

v4.0.3 +#

Fixed +#

  • remove default template argument from forward declaration in toml_fwd.hpp
  • enable to call toml::make_error_info with multiple toml::values
  • enable to copy/move toml::result having std::reference_wrapper
  • fix document generation error with the latest version of hugo
  • fix several tiny errors that causes warning
  • fix CMake compatibility warning

Changed +#

add -Werror / /WX to build script +set MSVC warning level to /W4 +add explanation of features to README

v4.0.2 +#

Fixed +#

  • check return value of fread in parse(FILE*)
  • version macro defined in toml11/version.hpp
  • update docs about compilation
  • update docs about file open mode

Changed +#

  • use version macros defined in toml11/version.hpp as the project version in CMakeLists.txt

v4.0.1 +#

Fixed +#

  • Resolved naming conflict of sematic_version::{major, minor} with macros defined in <sys/sysmacro.h>
  • Fixed the definition of operator<< in discard_comments (by Egor Pugin)
  • Fixed the issue where the first blank line was not output in format_location
  • Fixed the issue where error messages pointing to source_location referring to lines containing only newline characters were displayed in two lines
  • Corrected links in the README
  • Corrected the title of the README in example/unicode

Added +#

  • Configured CI to automatically update single_include/toml.hpp when changes are made to main

Changes from v3 to v4 +#

Breaking Changes +#

Changed template Parameters of toml::basic_value +#

In toml11 v3, toml::basic_value took separate template arguments for the comment container, table-type container, and array-type container.

template<typename Comment,
+         template<typename ...> class Table = std::unordered_map,
+         template<typename ...> class Array = std::vector>
+class basic_value;
+

However, this approach does not accommodate changes to types such as integer_type.

In toml11 v4, toml::basic_value now accepts a single TypeConfig, allowing for more types to be customized.

template<typename TypeConfig>
+class basic_value;
+

By default, the types stored in toml::value remain unchanged.

For more information on changing types, please refer to the +type_config documentation.

Removed std::initializer_list Support for toml::basic_value +#

In toml11 v3, there was an overload for toml::value that accepted std::initializer_list. This allowed for more intuitive initialization of toml::value with arrays and tables.

// toml11 v3
+toml::value v{1,2,3,4,5};
+toml::value v{ {"a", 42}, {"b", "foo"} };
+

However, this caused the following issues:

First, it was impossible to distinguish between a single-element array and a regular value, as it always became an array.

// toml11 v3
+toml::value v{1}; // Becomes [1,] instead of 1
+

With the widespread use of uniform initialization, this became very inconvenient.

Second, it was unclear whether the value represented a table with all string values or a nested array.

// toml11 v3
+toml::value v{ {"a", "foo"}, {"b", "bar"} };
+// Could be either:
+// {a = "foo", b = "bar"}
+// [["a", "foo"], ["b", "bar"]]
+

These issues were difficult to resolve due to language specifications.

To avoid confusion, toml11 v4 has removed std::initializer_list support.

When initializing toml::value with an array, you must explicitly specify toml::array, and when initializing with a table, you must explicitly specify toml::table.

// toml11 v4
+toml::value v(toml::array{1,2,3,4,5});
+toml::value v(toml::table{ {"a", 42}, {"b", "foo"} });
+
+toml::value v{toml::array{1}}; // [1,]
+toml::value v{1}               // 1
+
+toml::value v{toml::table{{"a", "foo"}, {"b", "bar"}}};
+toml::value v{toml::array{toml::array{"a", "foo"}, toml::array{"b", "bar"}}};
+

While this makes initializing toml::value with tables or arrays slightly less convenient, it ensures that the values will not become unpredictable by requiring explicit type information.

Renamed toml::basic_value::is_uninitialized() to is_empty() +#

In toml11 v3, the function to check whether a basic_value was uninitialized was called is_uninitialized.

However, in toml11 v4, the library supports null values as an extension, allowing for the intentional construction of empty values. +Therefore, the function has been renamed to is_empty to reflect this change.

Added Format Information and Removed toml::string +#

In toml11 v3, to retain information on whether a string was basic or literal, the library used a thin wrapper around std::string called toml::string.

// toml11 v3
+namespace toml
+{
+enum class string_t : std::uint8_t
+{
+    basic   = 0,
+    literal = 1,
+};
+
+struct string
+{
+    string_t    kind;
+    std::string str;
+};
+} // namespace toml
+

In toml11 v4, to accommodate more format information such as the numeric base or whether arrays should be multiline, every type now has an associated xxx_format type, which is stored alongside the value.

// toml11 v4
+enum class string_format : std::uint8_t
+{
+    basic             = 0,
+    literal           = 1,
+    multiline_basic   = 2,
+    multiline_literal = 3
+};
+
+struct string_format_info
+{
+    string_format fmt = string_format::basic;
+    bool start_with_newline    = false;
+};
+

This change allows for more detailed format information to be preserved, ensuring that format specifics for numeric types, arrays, and tables are maintained even after parsing.

Changed Arguments of toml::format +#

In toml11 v3, toml::format accepted values such as the precision and width of numeric types.

However, this approach did not allow for detailed formatting specifications, resulting in serialized files that did not match expectations.

In toml11 v4, each toml::value now carries its own format information, enabling more detailed formatting options to be preserved within the toml::value itself.

As a result, toml::format no longer accepts specific formatting values. Instead, it now only takes a toml::spec, which includes language feature flags used during formatting.

Changed Member Functions of toml::source_location +#

In toml11 v3, the member types of toml::source_location were designed to handle only single lines.

In toml11 v4, the member types of toml::source_location are designed to handle multiple lines.

Renamed toml::format_underline to toml::format_location +#

In toml11 v3, the function used to format location information from toml::source_location was called toml::format_underline.

To make the name clearer, it has been renamed to toml::format_location.

Changed Arguments of toml::format_error +#

In toml11 v3, there was no class to represent error information, resulting in complex arguments for toml::format_error.

template<typename C, template<typename ...> class T, template<typename ...> class A>
+std::string format_error(const std::string& err_msg,
+        const basic_value<C, T, A>& v, const std::string& comment,
+        std::vector<std::string> hints = {},
+        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
+
+template<typename C, template<typename ...> class T, template<typename ...> class A>
+inline std::string format_error(const std::string& err_msg,
+        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
+        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
+        std::vector<std::string> hints = {},
+        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
+
+template<typename C, template<typename ...> class T, template<typename ...> class A>
+inline std::string format_error(const std::string& err_msg,
+        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
+        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
+        const toml::basic_value<C, T, A>& v3, const std::string& comment3,
+        std::vector<std::string> hints = {},
+        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
+

In toml11 v4, we have introduced class error_info and make_error_info, simplifying the arguments for format_error.

std::string format_error(const error_info& err);
+std::string format_error(const std::string& errkind, const error_info& err);
+
+template<typename ... Ts>
+std::string format_error(std::string title,
+        source_location loc, std::string msg, Ts&& ... tail);
+
+template<typename TC, typename ... Ts>
+std::string format_error(std::string title,
+        const basic_value<TC>& v, std::string msg, Ts&& ... tail);
+

Changed Control of toml::color +#

In toml11 v3, to control whether to colorize the output, we used the manipulator toml::colorize in conjunction with toml::color::enable/disable.

The manipulator allowed us to decide whether to apply color to each stream, +but in v4, the frequency of using streams has decreased, +and issues such as the fact that std::ios_base::xalloc used internally is not thread-safe in C++11 have arisen. +Therefore, we have decided to use only toml::color::enable/disable and have removed toml::colorize.

Non-Breaking Changes +#

Added parse_str +#

In toml11 v3, there was no function to directly parse a string itself. +Therefore, when parsing a string, it was necessary to use std::istringstream.

To address this inconvenience, we have added toml::parse_str, allowing for direct parsing of strings.

Added try_parse +#

In toml11 v3, when a parser encountered an error, it threw toml::syntax_error.

However, there are cases where you do not want to throw exceptions due to environments where exceptions cannot be thrown, or for reasons of performance.

In toml11 v4, we have implemented toml::try_parse using toml::result, which communicates parsing failures without throwing exceptions.

This doesn’t mean exceptions are never thrown. Errors in the standard library being used, such as std::bad_alloc due to allocation failure from memory exhaustion, may still be thrown.

Support for Parsing Byte Sequences +#

To allow for parsing TOML content obtained through means other than files, we have added toml::parse and toml::try_parse functions that accept std::vector<unsigned char>.

Added toml::spec +#

In toml11 v3, all new features of the TOML language were incorporated, and features that were decided to be introduced in future versions of the TOML language were controlled by the macro TOML11_USE_UNRELEASED_TOML_FEATURES.

This was because, at the time of developing toml11 v3, the TOML language had not yet reached version 1.0.0, being at versions 0.4.0 to 0.5.0.

As not all users are familiar with the latest TOML language specification, displaying error messages based on an older language usage could confuse the entire community. Therefore, until reaching version 1.0.0, it was necessary to provide new language specifications as quickly as possible and encourage users to update.

However, the current TOML language specification is at version 1.0.0. Therefore, there was a need to be mindful of the choice to continue using version 1.0.0 even after TOML v1.1.0 was released.

To allow for more flexibility in selecting the TOML language specification, we introduced toml::spec, enabling the TOML language version to be changed at runtime.

Additionally, in toml::spec, flags are set for each language feature, allowing for the testing of specific language features only.

This mechanism is also used for TOML-specific language extensions in toml11 v4.

Added Format Information +#

In toml11 v3, format information was not saved except for strings, and during serialization, only width and precision were considered.

However, this resulted in hexadecimal integers being serialized as decimal integers and no reliable way to ensure inline tables.

In toml11 v4, format information (integer_format, etc.) has been added to all TOML types, and it is now considered during parsing and serialization.

This allows for more detailed format information to be set for values, such as hexadecimal integers or inline tables.

Changed to preserve_comments by Default +#

In toml11 v3, comments were not parsed by default and were also not serialized.

This was because comments were a later introduced feature and were being read through a special hack.

In toml11 v4, comments are parsed, preserved, and serialized by default.

Furthermore, the parser implementation has been significantly changed to ensure comments are parsed alongside other elements.

Changed to Preserve Comments by Default +#

In toml11 v3, comments were neither parsed nor serialized by default. This was because comment support was a late addition, implemented through a special hack.

In toml11 v4, comments are now parsed, preserved, and serialized by default. The parser implementation has also been significantly revised so that comments are parsed just like any other element.

Added single_include/toml.hpp +#

toml11 is a versatile library with different header files for various features to enhance development efficiency. However, this required a certain amount of effort to install.

Starting with toml11 v4, a single_include/toml.hpp file has been added, which combines all the header files in the correct order. This allows the library to be installed by simply copying a single file.

Option to Use Precompiled Library +#

Due to the extensive use of templates in toml11, compile times have been long.

In toml11 v4, the number of precompilable functions has been increased, allowing them to be compiled ahead of time into a library. This is expected to reduce compile times when using the library in large-scale development projects.

Reference Documentation +#

Previously, all features were documented in the README, with no detailed function definitions or reference materials available in Japanese.

In toml11 v4, reference documentation has been included, provided in both Japanese and English. However, since the library author is a native Japanese speaker, the Japanese content is considered primary. If there are discrepancies between the Japanese and English content, the Japanese version takes precedence.

\ No newline at end of file diff --git a/docs/changelog/index.xml b/docs/changelog/index.xml new file mode 100644 index 00000000..bbdf0b9c --- /dev/null +++ b/docs/changelog/index.xml @@ -0,0 +1 @@ +changelog on toml11https://toruniina.github.io/toml11/docs/changelog/Recent content in changelog on toml11Hugoen \ No newline at end of file diff --git a/docs/features/configure_types/index.html b/docs/features/configure_types/index.html new file mode 100644 index 00000000..fe10ff34 --- /dev/null +++ b/docs/features/configure_types/index.html @@ -0,0 +1,142 @@ +configuring types | toml11 + +
configuring types +

Customizing Types +#

The toml::value class uses std::int64_t for integer_type and std::unordered_map<key_type, value_type> for table_type.

However, in some cases, you may want to use boost::multiprecision::int128_t or std::map.

To accommodate this, toml::value is implemented with template parameters that allow you to change the stored types.

Just as std::string is actually an alias for std::basic_string<char, std::char_traits<char>, std::allocator<char>>, toml::value is an alias for toml::basic_value<toml::type_config>.

Here, we will explain the types contained in toml::type_config and how to define a different config type.

type_config +#

The type_config class contains the following member types and static member functions:

namespace toml
+{
+struct type_config
+{
+    using comment_type  = preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex);
+};
+}
+

toml::basic_value<TypeConfig> defines the stored boolean_type as TypeConfig::boolean_type, the stored integer_type as TypeConfig::integer_type, and so on.

Additionally, array_type is defined as TypeConfig::array_type<toml::basic_value<TypeConfig>> and table_type is defined as TypeConfig::table_type<key_type, toml::basic_value<TypeConfig>>.

By passing a class that defines these member types and functions to toml::basic_value, you can customize the types used by that toml::basic_value.

The parse_int and parse_float functions provide parsing methods when custom numeric types are used. These functions receive strings with prefixes like 0x and digit separators like _ removed, such as 123456 or DEADBEEF. The base parameter will be one of 10, 16, 8, or 2. Implement these functions to parse your custom integer_type and floating_type.

As a default implementation, toml::read_int and toml::read_float are provided.

static result<integer_type, error_info>
+parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+{
+    return toml::read_int<integer_type>(str, src, base);
+}
+
+static result<floating_type, error_info>
+parse_float(const std::string& str, const source_location src, const bool is_hex)
+{
+    return toml::read_float<floating_type>(str, src, is_hex);
+}
+

The read_int function uses istream and employs std::hex and std::oct for hexadecimal and octal parsing, respectively. For binary parsing, it is implemented using multiplication and addition. If your type supports these operations, you can use read_int as-is.

The read_float function also uses istream. Hexadecimal floating-point numbers are only supported for double and float types. If read_float is called with any other type and hexfloat is used, it will always return a parse error. Therefore, if you need to use a floating-point type other than double or float with hexfloat, you will need to implement support for that. If hexfloat is not used, no additional implementation is necessary.

Preserving Order of Values in Tables +#

In addition to the default toml::type_config, there is also toml::ordered_type_config. This changes the table_type to an ordered_map.

Using this, toml::ordered_value is defined, along with aliases for its array and table types as toml::ordered_array and toml::ordered_table, respectively.

You can use toml::ordered_value by calling toml::parse(...) as toml::parse<toml::ordered_type_config>(...).

#include <toml.hpp>
+
+int main()
+{
+    toml::ordered_value input = toml::parse<toml::ordered_type_config>("example.toml");
+    std::cout << toml::format(input) << std::endl;
+    return 0;
+}
+

Not Preserving Comments +#

The type_config defines a container for storing comments via comment_type.

If comments do not contain significant information and can be discarded during parsing, specify toml::discard_comments for comment_type.

struct wo_comment_config
+{
+    using comment_type  = toml::discard_comments; // XXX
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+    {
+        return toml::read_int<integer_type>(str, src, base);
+    }
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex)
+    {
+        return toml::read_float<floating_type>(str, src, is_hex);
+    }
+};
+

Using Containers Other Than std::vector for Arrays +#

To use a container other than vector (e.g., std::deque) for implementing TOML arrays, modify array_type as follows.

Similarly, to use a container other than unordered_map (e.g., std::map) for table types, modify table_type as shown below.

struct deque_map_config
+{
+    using comment_type  = toml::preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::deque<T>; // XXX
+    template<typename K, typename T>
+    using table_type = std::map<K, T>; // XXX
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+    {
+        return toml::read_int<integer_type>(str, src, base);
+    }
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex)
+    {
+        return toml::read_float<floating_type>(str, src, is_hex);
+    }
+};
+

Using boost::multiprecision for Numeric Types +#

By using boost::multiprecision::cpp_int and boost::multiprecision::cpp_bin_float_oct, you can utilize a wider integer type and a more precise floating-point type.

These types implement stream operators, so you can use the default implementations of read_int and read_float without modification.

struct large_num_config
+{
+    using comment_type  = toml::preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = boost::multiprecision::cpp_int;
+    using floating_type = boost::multiprecision::cpp_bin_float_oct;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static toml::result<integer_type, toml::error_info>
+    parse_int(const std::string& str, const toml::source_location src, const std::uint8_t base)
+    {
+        return toml::read_int<integer_type>(str, src, base);
+    }
+    static toml::result<floating_type, toml::error_info>
+    parse_float(const std::string& str, const toml::source_location src, const bool is_hex)
+    {
+        return toml::read_float<floating_type>(str, src, is_hex);
+    }
+};
+
\ No newline at end of file diff --git a/docs/features/error_message/index.html b/docs/features/error_message/index.html new file mode 100644 index 00000000..b67df3dd --- /dev/null +++ b/docs/features/error_message/index.html @@ -0,0 +1,113 @@ +error message | toml11 + +
error message +

Outputting Error Messages +#

toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get<T>/find<T>, and as_integer(), among others.

For instance, if a syntax error in an integer is detected during parsing, an error message might look like this:

[error] bad integer: `_` must be surrounded by digits
+ --> internal string at line 64 in file main.cpp
+   |
+ 1 | a = 123__456
+   |        ^-- invalid underscore
+Hint: valid  : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755
+Hint: invalid: _42, 1__000, 0123
+

Or, if a type different from the one actually stored is requested:

[error] toml::value::as_string(): bad_cast to string
+ --> input.toml
+   |
+ 1 | a = 123_456
+   |     ^^^^^^^-- the actual type is integer
+

toml11 provides methods to create such error messages from toml::value.

By utilizing this feature, you can inform users not only about TOML syntax errors but also about application-specific errors. For example, if a negative number appears where only positive values are allowed, you can highlight the location within the TOML file to convey the error to the user.

Creating Error Messages from toml::value Location Information +#

toml::value retains information about the location where it was parsed.

This information is encapsulated in toml::source_location and can be retrieved using toml::value::location().

const toml::value& a = input.at("a");
+const toml::source_location src = a.location();
+

When a file is parsed with toml::parse, the TOML filename and line numbers are stored.

If parsed with toml::parse_str, the TOML filename is not available, but instead, the filename and line number of the C++ source code that called toml::parse_str are stored as the TOML filename. The first example on this page was output from toml::parse_str. Note the filename part.

For details, see the reference.

You can build error information by passing a toml::source_location or toml::value and the associated error message to toml::make_error_info. Passing this to toml::format_error formats the error message into a std::string.

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    const toml::error_info err = toml::make_error_info(
+            "positive integer is required", // Error title
+            a, "but got negative value"     // Message next to the value
+        );
+    std::cerr << toml::format_error(err) << std::endl;
+}
+

This will output:

[error] positive integer is required
+ --> input.toml
+   |
+ 1 | a = -123456
+   |     ^^^^^^^-- but got negative value
+

You can also add a supplementary message at the end. This part is not indented.

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    const toml::error_info err = toml::make_error_info(
+            "positive integer is required",      // Error title
+            a, "but got negative value",         // Message next to the value
+            "Hint: `a` means length of the data" // Supplementary message
+        );
+    std::cerr << toml::format_error(err) << std::endl;
+}
+

This will output:

[error] positive integer is required
+ --> input.toml
+   |
+ 1 | a = -123456
+   |     ^^^^^^^-- but got negative value
+Hint: `a` means length of the data
+

The ability to output lines from the file using toml::value is because the parsed file is retained in memory as a string.

The parsed string is shared by toml::value via a std::shared_ptr. Copying it does not duplicate the entire file string. The file information is freed from memory when all toml::value instances constructed from parsing the file are destructed.

Therefore, when using this in an application, it is recommended to extract and store the required values during loading rather than directly storing toml::value.

Adding Colors to Strings +#

You can add color to error messages using ANSI escape codes.

If TOML11_COLORIZE_ERROR_MESSAGE is defined at compile time, the error messages output by toml11 will be colored by default.

If not, you can enable color for subsequent error messages by calling toml::color::enable(). Conversely, if you do not want colored output, for example, because the output is not to a console, call toml::color::disable(). You can check whether coloring is enabled at any point by calling toml::color::should_color().

Additionally, while the error title, error message, and supplementary information are not colored by default, you can use manipulators from toml::color to add color to them.

std::ostringstream oss;
+oss << toml::color::red << "but got negative value";
+
+const toml::error_info err = toml::make_error_info(
+        "positive integer is required",      // Error title
+        a, oss.str(),                        // Message next to the value
+        "Hint: `a` means length of the data" // Supplementary message
+    );
+

For more details, see the reference.

Changing the Prefix of Error Messages from [error] +#

There may be different types of errors, and the default [error] prefix might not always be appropriate.

With toml::format_error, you can provide a std::string before toml::error_info to replace the [error] prefix.

For example:

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    const toml::error_info err = toml::make_error_info(
+            "positive integer is required", // Error title
+            a, "but got negative value"     // Message next to the value
+        );
+
+    std::ostringstream prefix;
+    prefix << toml::color::bold << toml::color::yellow << "[warn]";
+    std::cerr << toml::format_error(prefix.str(), err) << std::endl;
+    return 0;
+}
+else
+{
+    return a.as_integer();
+}
+

This will output a warning starting with [warn].

Additionally, you can create error messages without the [error] prefix by directly passing the components of error_info to toml::format_error.

const toml::value& a = input.at("a");
+if(a.as_integer() < 0)
+{
+    std::cerr << toml::format_error(
+            "[warn] positive integer is required", // Error title
+            a, "but got negative value"            // Message next to the value
+        ) << std::endl;
+    return 0;
+}
+else
+{
+    return a.as_integer()
+}
+

Creating Error Messages Referencing Multiple toml::value +#

In application settings, the range of permissible values might change based on previously read values.

In such cases, you may want to output the values causing the error simultaneously.

toml::format_error and toml::make_error_info can take multiple pairs of toml::value and their corresponding error messages as std::string.

std::cerr << toml::format_error(
+        "[error] invalid range",
+        a, "minimum value is defined here",
+        b, "maximum value is defined here",
+        c, "and it exceeds the range"
+    ) << std::endl;
+

You can also add supplementary information at the end.

std::cerr << toml::format_error(
+        "[error] invalid range",
+        a, "minimum value is defined here",
+        b, "maximum value is defined here",
+        c, "and it exceeds the range",
+        "Hint: all the values must be in the range [a, b)"
+    ) << std::endl;
+

When passing toml::value or toml::source_location, an error message related to it must follow. If not, it will result in a very confusing compilation error.

\ No newline at end of file diff --git a/docs/features/extension/index.html b/docs/features/extension/index.html new file mode 100644 index 00000000..69023e58 --- /dev/null +++ b/docs/features/extension/index.html @@ -0,0 +1,69 @@ +extension | toml11 + +
extension +

TOML Language Extensions +#

The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0.

Among the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all.

In toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future.

Additionally, these features are disabled by default. To use them, you must explicitly set the corresponding feature flags to true. This design choice ensures that non-standard features are only used intentionally.

Some of these features may eventually be merged into the TOML language itself. If a feature is officially adopted, the corresponding experimental implementation in toml11 may be removed in a minor version update after the official feature is implemented.

null +#

This feature allows the use of null as a value in TOML files.

a = null
+b = [ 1, 2, 3, null, 5]
+

To enable this, set the ext_null_value flag in toml::spec to true.

When parsed, it will be treated as toml::value_t::empty, similar to a default-constructed value. However, the location information within the file will be set.

null is parsed only in the context of values. Therefore, if null is used as a key, it will be interpreted as the string "null", as it has been in the standard TOML.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec;
+    spec.ext_null_value = true;
+
+    const auto v = toml::parse_str("a = null", spec);
+
+    assert(v.at("a").is_empty());
+    assert(v.at("a").is(toml::value_t::empty));
+
+    return 0;
+}
+

Hexadecimal Format for Floating-Point Numbers +#

This feature allows the use of hexadecimal format for floating-point numbers in TOML files.

a = 0x1.91eb851eb851fp+1 # 3.14
+

To enable this, set the ext_hex_float flag in toml::spec to true.

The format follows the printf specification for %a/%A.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec;
+    spec.ext_hex_float = true;
+
+    const auto v = toml::parse_str("a = 0x1.91eb851eb851fp+1", spec);
+
+    assert(v.at("a").is_floating());
+    assert(v.at("a").as_floating() == 3.14);
+
+    return 0;
+}
+

Suffixes for Integers and Floating-Point Numbers +#

This feature allows the use of suffixes for numbers in TOML files. It can be applied to integers and floating-point numbers in decimal notation.

This is particularly useful for displaying units.

a = 86_400_sec
+b = 3.1416_rad
+c = 10_μm
+

However, these are purely suffixes and do not perform any unit conversion. If unit conversion is needed, users should implement it by referencing the suffix.

To enable this, set the ext_num_suffix flag in toml::spec to true.

The suffix must be separated from the number by an underscore (_).

For clarity, the suffix cannot start with a digit.

distance = 100_m  # valid
+distance = 10_0m  # invalid
+distance = 10_0_m # valid
+

The suffix is stored as std::string suffix in the format information.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec;
+    spec.ext_hex_float = true;
+
+    const auto v = toml::parse_str("a = 86_400_sec", spec);
+
+    assert(v.at("a").is_integer());
+    assert(v.at("a").as_integer() == 86400);
+    assert(v.at("a").as_integer_fmt().suffix == "sec");
+
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/index.html b/docs/features/index.html new file mode 100644 index 00000000..c08b2cc5 --- /dev/null +++ b/docs/features/index.html @@ -0,0 +1,24 @@ +features | toml11 + +
features +

Features +#

This section explains the main features provided by toml11, with examples.

Parsing Files and Strings +#

Describes the functions for parsing files and strings, and how to handle the errors they produce.

Includes:

  • Parsing files
  • Parsing strings
  • Parsing byte arrays
  • Parsing files without throwing exceptions
  • Parsing strings without throwing exceptions
  • Parsing byte arrays without throwing exceptions

Extracting Values from toml::value +#

Explains how to examine, extract, and convert the data types held by toml::value.

Includes:

  • Checking the type of a value using member functions
  • Accessing values using member functions
  • Accessing comments
  • Handling inline tables and dotted keys
  • Handling date information
  • Using toml::get<T> for conversion
  • Using toml::get_or to specify a fallback value
  • Using toml::find<T> for searching and conversion
  • Using toml::find_or to specify a fallback value
  • Defining conversions with user-defined types
  • Applying functions with toml::visit
  • Constructing toml::value

Creating Error Messages +#

Explains how to generate error messages with location information from a TOML file using toml::value.

Includes:

  • Extracting location information from toml::value
  • Constructing error messages
  • Adding color to the output

Serializing TOML Files +#

Describes how to format the values of toml::value and the available formatting options.

Includes:

  • Specifying formats for each value of toml::value
  • Formatting toml::value into a string

Configuring Types of toml::value +#

Explains how to customize the types stored in toml::value (such as integer_type and table_type).

Includes:

  • Defining type_config
  • Using ordered_type_config
  • Disabling comment preservation
  • Using different containers like std::deque
  • Using different numeric types like boost::multiprecision

TOML Literals +#

Explains the _toml literal for embedding TOML files directly in C++ code.

Includes:

  • Using TOML literals

TOML Language Version +#

Describes the versions of the TOML language supported by toml11 and how to control language features added in TOML-v1.1.0.

Includes:

  • Using TOML language version 1.1.0
  • Using specific features of TOML language version 1.1.0

TOML Language Extensions +#

Explains the custom extensions to the TOML language provided by toml11.

Includes:

  • Supporting null
  • Supporting hexadecimal format for floating-point numbers
  • Allowing units for numbers
\ No newline at end of file diff --git a/docs/features/index.xml b/docs/features/index.xml new file mode 100644 index 00000000..6267f18a --- /dev/null +++ b/docs/features/index.xml @@ -0,0 +1,20 @@ +features on toml11https://toruniina.github.io/toml11/docs/features/Recent content in features on toml11Hugoenparsing fileshttps://toruniina.github.io/toml11/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/parsing_files/Parsing Files and Strings # In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse. +Upon success, these functions return a toml::value. Although the parsed file is always a table, the return type is not toml::table. This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map&lt;std::string, toml::value&gt;. To include metadata, a toml::value is returned instead of a toml::table. The toml::value corresponding to the root of the file will always hold a table_type.getting valueshttps://toruniina.github.io/toml11/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/value/Retrieving Values # This section explains how to access the values stored in toml::value. +Accessing Values Using Member Functions # is_something and as_something # toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value. +Additionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type. +For a complete list, refer to the toml::value reference.error messagehttps://toruniina.github.io/toml11/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/error_message/Outputting Error Messages # toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get&lt;T&gt;/find&lt;T&gt;, and as_integer(), among others. +For instance, if a syntax error in an integer is detected during parsing, an error message might look like this: +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 Or, if a type different from the one actually stored is requested:serializing valueshttps://toruniina.github.io/toml11/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/serialize/Outputting TOML Files # Using toml::format, you can convert a toml::value to a string. +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If the toml::value contains a table_type, it is interpreted as the root table of the file. +If a toml::value containing anything other than table_type is passed, only that value is formatted.configuring typeshttps://toruniina.github.io/toml11/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/configure_types/Customizing Types # The toml::value class uses std::int64_t for integer_type and std::unordered_map&lt;key_type, value_type&gt; for table_type. +However, in some cases, you may want to use boost::multiprecision::int128_t or std::map. +To accommodate this, toml::value is implemented with template parameters that allow you to change the stored types. +Just as std::string is actually an alias for std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt;, toml::value is an alias for toml::basic_value&lt;toml::type_config&gt;. +Here, we will explain the types contained in toml::type_config and how to define a different config type.toml literalhttps://toruniina.github.io/toml11/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/literal/_toml Literal # With the &quot;&quot;_toml literal, you can format TOML files inline. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } When including line breaks, raw string literals come in handy. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If a value is written on its own, that value is returned.toml spechttps://toruniina.github.io/toml11/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/toml_spec/TOML Language Version # You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec. +Specifying TOML Version # You can construct a toml::spec from toml::semantic_version. +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } However, to make this shorter, the toml::spec::v() function is provided. +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } If not specified explicitly, toml::spec::default_version() is used to construct with default values.extensionhttps://toruniina.github.io/toml11/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/extension/TOML Language Extensions # The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0. +Among the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all. +In toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future. \ No newline at end of file diff --git a/docs/features/literal/index.html b/docs/features/literal/index.html new file mode 100644 index 00000000..eb7a2467 --- /dev/null +++ b/docs/features/literal/index.html @@ -0,0 +1,75 @@ +toml literal | toml11 + +
toml literal +

_toml Literal +#

With the ""_toml literal, you can format TOML files inline.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto v = "a = 42"_toml;
+
+    assert(v.at("a").as_integer() == 42);
+
+    return 0;
+}
+

When including line breaks, raw string literals come in handy.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto v = R"(
+        a = 42
+        b = "foo"
+    )"_toml;
+
+    assert(v.at("a").as_integer() == 42);
+    assert(v.at("b").as_string()  == "foo");
+
+    return 0;
+}
+

If a value is written on its own, that value is returned.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto a = "42"_toml;
+    const auto b = "12:34:56"_toml;
+
+    assert(a.as_integer() == 42);
+    assert(b.as_local_time().hour   == 12);
+    assert(b.as_local_time().minute == 34);
+    assert(b.as_local_time().second == 56);
+
+    return 0;
+}
+

TOML allows keys consisting solely of numbers. Therefore, [1] is a valid table name.

When there’s ambiguity between table definitions and arrays, table definitions take precedence.

To interpret as an array, please use a trailing comma.

#include <toml.hpp>
+
+int main()
+{
+    using namespace toml::literals::toml_literals;
+
+    const auto t = "[1]"_toml;  // {1 = {}}
+    const auto a = "[1,]"_toml; // [1,]
+
+    assert(t.is_table());
+    assert(t.at("1").is_table());
+
+    assert(a.is_array());
+    assert(a.at(0).as_integer() == 1);
+
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/parsing_files/index.html b/docs/features/parsing_files/index.html new file mode 100644 index 00000000..8eed39b6 --- /dev/null +++ b/docs/features/parsing_files/index.html @@ -0,0 +1,136 @@ +parsing files | toml11 + +
parsing files +

Parsing Files and Strings +#

In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse.

Upon success, these functions return a toml::value. +Although the parsed file is always a table, the return type is not toml::table. +This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map<std::string, toml::value>. +To include metadata, a toml::value is returned instead of a toml::table. +The toml::value corresponding to the root of the file will always hold a table_type.

Parsing Files +#

To parse files, use either +toml::parse +or +toml::try_parse.

toml::parse +#

Specifying the Filename with std::string +#

toml::parse +accepts a filename as a string, opens the file, and parses it.

The following sample code parses a file named input.toml, extracts the title variable as a string, and prints it.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const toml::value input = toml::parse("input.toml");
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

Specifying a File with std::filesystem::path +#

toml::parse can accept a std::filesystem::path.

This requires C++17 or later, as it relies on the <filesystem> support.

Specifying an Input Stream with std::istream +#

toml::parse can also accept an std::istream.

Open a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

Without the filename information, error messages will display "unknown file". To avoid this, you can pass the filename as a std::string in the second argument when using std::istream.

You can use streams other than std::ifstream, such as std::istringstream. Note that the entire content is readable at the time of the call.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::string filename("input.toml");
+    std::ifstream ifs(filename);
+    const toml::value input = toml::parse(ifs, filename);
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

Specifying a File with FILE* +#

toml::parse can also accept a FILE*.

Open a stream in binary mode by passing "rb" to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

As with std::istream, you need to provide the filename as a string in the second argument.

When passing a FILE*, if the file read fails, errno will be reported.

Error Handling +#

toml::parse throws a toml::syntax_error if it encounters a syntax error.

toml::syntax_error is derived from toml::exception, which in turn is derived from std::exception.

Therefore, you can use the what() member function to retrieve the error message from a toml::syntax_error.

Additionally, toml::syntax_error contains a std::vector<toml::error_info>, which can be accessed using the errors() member function.

toml::parse attempts to recover from minor errors and report multiple errors whenever possible. While it can often recover from simple errors like number format issues, errors within arrays or tables might not be recoverable and may lead to multiple similar error reports. If you find the error messages redundant, you can use only the front() of the std::vector<toml::error_info> to get a message about the most critical issue.

#include <toml.hpp>
+
+int main()
+{
+    try {
+        const toml::value input = toml::parse("input.toml");
+        std::cout << input.at("title").as_string() << std::endl;
+    } catch(const toml::syntax_error& err) {
+        // report all the errors
+        std::cerr << err.what() << std::endl;
+
+        // report the first error only
+        std::cerr << err.errors().front() << std::endl;
+    }
+}
+

toml::try_parse +#

While toml::parse throws an exception on failure, toml::try_parse does not throw exceptions when it fails.

Instead, its return type is toml::result<toml::value, std::vector<toml::error_info>>.

The result type holds either a success value or a failure value, similar to Rust’s Result or Haskell’s Either.

#include <toml.hpp>
+
+int main()
+{
+    const auto parse_result = toml::try_parse("input.toml");
+    if(parse_result.is_ok())
+    {
+        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
+    }
+    else
+    {
+        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
+    }
+    return 0;
+}
+

To check which value the result type holds, use the is_ok() and is_err() functions. The success or failure value can be retrieved using unwrap() and unwrap_err(), respectively. If unwrap fails, it throws a bad_result_access exception. Using the as_ok() and as_err() functions does not throw exceptions on failure, but results in undefined behavior.

Although try_parse does not throw syntax_error or file_io_error, it returns the same toml::error_info as the failure type in the result. However, it is not entirely exception-free.

If an internal standard library error occurs, such as std::bad_alloc when a vector fails to allocate memory, toml::try_parse does not catch this and will let it propagate. Thus, exceptions originating from the standard library may still be thrown.

Parsing Strings +#

toml::parse_str +#

toml::parse_str accepts the string to be parsed directly, instead of a filename.

For the part of the error message that corresponds to the TOML file’s name, if the std::source_location equivalent compiler extension is available, the name and line number of the C++ file that called parse_str will be used instead.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const toml::value input = toml::parse_str("title = \"parse_str\"");
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

toml::try_parse_str +#

toml::try_parse_str also takes the string to be parsed directly, similar to parse_str. Like try_parse, it uses toml::result to report errors.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const auto parse_result = toml::try_parse_str("title = \"parse_str\"");
+    if(parse_result.is_ok())
+    {
+        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
+    }
+    else
+    {
+        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
+    }
+    return 0;
+}
+

Parsing Byte Arrays +#

It is also possible to parse byte arrays instead of files.

Since the byte arrays must be encoded in UTF-8, unsigned char is used.

toml::parse(std::vector<unsigned char>) +#

The behavior is the same as toml::parse.

When parsing byte arrays, a filename is required.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::vector<unsigned char> bytes{/* ... */};
+    const toml::value input = toml::parse(bytes, "internal bytes");
+    std::cout << input.at("title").as_string() << std::endl;
+    return 0;
+}
+

toml::try_parse(std::vector<unsigned char>) +#

The behavior is the same as toml::try_parse.

When parsing byte arrays, a filename is required.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::vector<unsigned char> bytes{/* ... */};
+    const auto parse_result = toml::try_parse(bytes, "internal bytes");
+    if(parse_result.is_ok())
+    {
+        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
+    }
+    else
+    {
+        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
+    }
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/serialize/index.html b/docs/features/serialize/index.html new file mode 100644 index 00000000..1c921437 --- /dev/null +++ b/docs/features/serialize/index.html @@ -0,0 +1,104 @@ +serializing values | toml11 + +
serializing values +

Outputting TOML Files +#

Using toml::format, you can convert a toml::value to a string.

#include <toml.hpp>
+#include <cassert>
+
+int main()
+{
+    const toml::value v(toml::table{
+        {"a", 42},
+        {"b", "foo"},
+    });
+    const std::string s = toml::format(v);
+
+    const toml::value u = toml::parse_str(s);
+
+    assert(u.at("a").as_integer() == 42);
+    assert(u.at("b").as_string()  == "foo");
+
+    return 0;
+}
+

If the toml::value contains a table_type, it is interpreted as the root table of the file.

If a toml::value containing anything other than table_type is passed, only that value is formatted.

Certain format specifications may require a key to be provided for formatting. For example, toml::array_format::array_of_tables formats as [[array.of.tables]], which requires key access.

If a format specification that requires a key is provided without a key, a toml::serialization_error is thrown.

Additionally, if there are values that contradict the format specification, a toml::serialization_error is thrown. For instance, specifying integer_format::hex for a negative integer, or string_format::literal for a string containing newlines, will cause an error.

The method for specifying formats is explained later.

Outputting with Keys +#

You can pass a key to toml::format as a std::string.

In this case, the key is considered to be under the root table, and the passed value corresponds to that key.

For nested keys, you can pass a std::vector<std::string>.

#include <toml.hpp>
+#include <cassert>
+
+int main()
+{
+    const toml::value v(toml::table{
+        {"a", 42},
+        {"b", "foo"},
+    });
+    const std::string s = toml::format("bar", v);
+
+    const toml::value u = toml::parse_str(s);
+
+    assert(u.at("bar").at("a").as_integer() == 42);
+    assert(u.at("bar").at("b").as_string()  == "foo");
+
+    return 0;
+}
+

Specifying Formats +#

Each type in toml::value has a corresponding format information type.

For toml::value::integer_type, there is toml::integer_format_info. +For toml::value::table_type, there is toml::table_format_info.

These format information types are set when parsing and are retained even if the value is changed, as long as the type remains the same.

You can access and directly edit these formats using member functions like as_integer_fmt() or as_table_fmt().

Below are some examples explaining how to use these formats.

For more details on how to access formats, refer to the toml::value reference. For a complete list and detailed information on format information classes, see the format reference.

Specifying Integer Formats +#

For integers, you can specify the radix, width, and the position of _.

When using hex, oct, or bin, values are padded with zeros until the specified width is reached. For dec, the width specification adds spaces, which are not parsed.

For more details, see the integer format reference.

Single-Line and Multi-Line Arrays +#

For arrays, you can specify toml::array_format::oneline or toml::array_format::multiline.

# oneline
+a = [1, 2, 3, 4, 5]
+# multiline
+a = [
+  1,
+  2,
+  3,
+  4, 
+  5
+]
+

When using multiline, you can specify the indentation. Each element is indented by the amount specified in body_indent, and the closing bracket ] is indented by the amount specified in closing_indent.

The type of character used for indentation is specified by indent_type, and you can choose between toml::indent_char::space or toml::indent_char::tab.

Ensure that the same type of character is used for indentation throughout the document.

If different types of characters are specified for indentation within the same file, the result is undefined. Some form of indentation will be applied, but the type of character and the depth of the indentation may be inconsistent.

If all elements of an array have table_type, you can specify toml::array_format::array_of_tables.

If you do not specify array_of_tables and use multiline, the tables will be formatted as inline tables.

# multiline
+a = [
+  {foo = 42},
+  {bar = "hoge"},
+]
+
+# array_of_tables
+[[a]]
+foo = 42
+
+[[a]]
+bar = "hoge"
+

By default, toml::array_format::default_format is used. This automatically selects an appropriate format.

For example, with default_format, if all elements are table_type, it will choose array_of_tables. Short arrays are formatted as oneline, while long or nested arrays, or those with complex elements, are formatted as multiline.

For more details, see the array format reference.

Inline Tables +#

To format a table as an inline table, specify toml::table_format::oneline. +For standard tables, use toml::table_format::multiline.

oneline = {a = 42, b = "foo"}
+
+[multiline]
+a = 42
+b = "foo"
+

In TOML v1.1.0, line breaks within inline tables are allowed. In this case, use toml::table_format::multiline_oneline. This is only applied if the corresponding feature flag is set to true as per the TOML version specification described later.

multiline_oneline = {
+    a = 42,
+    b = "foo"
+}
+

For more details, see the table format reference.

Specifying the TOML Language Version for Output +#

Certain language features, such as line breaks within inline tables and \x escape sequences, are only available after TOML v1.1.0.

The toml::format function accepts a toml::spec as its argument.

This allows you to specify the version of TOML to use during serialization.

When you use toml::parse with a toml::spec to leverage new features, +the parsed values may contain format information that is only compatible with that specific version. +Ensure that you pass the same toml::spec to toml::format to maintain compatibility.

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    const auto spec = toml::spec::v(1, 1, 0);
+
+    const toml::value v = toml::parse("input.toml", spec);
+
+    std::cout << toml::format(v, spec) << std::endl;
+
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/features/toml_spec/index.html b/docs/features/toml_spec/index.html new file mode 100644 index 00000000..bdc57822 --- /dev/null +++ b/docs/features/toml_spec/index.html @@ -0,0 +1,61 @@ +toml spec | toml11 + +
toml spec +

TOML Language Version +#

You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec.

Specifying TOML Version +#

You can construct a toml::spec from toml::semantic_version.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec(toml::semantic_version(1, 1, 0));
+    return 0;
+}
+

However, to make this shorter, the toml::spec::v() function is provided.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec = toml::spec::v(1, 1, 0);
+    return 0;
+}
+

If not specified explicitly, toml::spec::default_version() is used to construct with default values.

The default value depends on the version of toml11 and follows the latest version of the TOML language released at that time.

As of v4.0.0, TOML v1.1.0 has not been released yet, so the default TOML version is v1.0.0.

Some features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.

If they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.

As such, any features related to future versions should be considered unstable.

Parsing with Version Specification +#

The overload of toml::parse takes a toml::spec following the file name.

This allows you to change the TOML version being used.

#include <toml.hpp>
+
+int main()
+{
+    toml::value input = toml::parse("input.toml", toml::spec::v(1, 1, 0));
+    return 0;
+}
+

Serializing with Version Specification +#

The overload of toml::format takes a toml::spec following the toml::value.

This allows you to change the TOML version being used.

#include <toml.hpp>
+
+int main()
+{
+    toml::value v = toml::parse("input.toml", toml::spec::v(1, 1, 0));
+    std::cout << toml::format(v, toml::spec::v(1, 1, 0)) << std::endl;
+    return 0;
+}
+

If a format is passed that is not permitted by the provided toml::spec, it will be ignored, and another format will be used as a fallback.

Specifying Newly Added Features in TOML +#

With version upgrades in TOML, multiple new features are introduced, and it’s possible to enable only some of them.

#include <toml.hpp>
+
+int main()
+{
+    toml::spec spec = toml::spec::v(1, 0, 0);
+
+    // Allowing newlines in inline tables
+    spec.v1_1_0_allow_newlines_in_inline_tables = true;
+
+    toml::value input = toml::parse("input.toml", spec);
+    return 0;
+}
+

For a full list of all flags, refer to toml::spec.

\ No newline at end of file diff --git a/docs/features/value/index.html b/docs/features/value/index.html new file mode 100644 index 00000000..7584d769 --- /dev/null +++ b/docs/features/value/index.html @@ -0,0 +1,375 @@ +getting values | toml11 + +
getting values +

Retrieving Values +#

This section explains how to access the values stored in toml::value.

Accessing Values Using Member Functions +#

is_something and as_something +#

toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value.

Additionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type.

For a complete list, refer to the toml::value reference.

toml::value v = /* ... */;
+if(v.is_string())
+{
+    std::cout << v.as_string() << std::endl;
+}
+

If the stored value is of a different type than specified, a toml::type_error is thrown.

The what() method will contain a message like the following:

[error] toml::value::as_string(): bad_cast to string
+ --> input.toml
+   |
+ 1 | a = 123_456
+   |     ^^^^^^^-- the actual type is integer
+

toml::value_t +#

Type information can be identified using enum class toml::value_t.

The type() member function returns the type information of the currently stored value.

toml::value v = /* ... */;
+switch(v.type())
+{
+    case toml:value_t::empty          : { /*...*/ break; }
+    case toml:value_t::boolean        : { /*...*/ break; }
+    case toml:value_t::integer        : { /*...*/ break; }
+    case toml:value_t::floating       : { /*...*/ break; }
+    case toml:value_t::string         : { /*...*/ break; }
+    case toml:value_t::offset_datetime: { /*...*/ break; }
+    case toml:value_t::local_datetime : { /*...*/ break; }
+    case toml:value_t::local_date     : { /*...*/ break; }
+    case toml:value_t::local_time     : { /*...*/ break; }
+    case toml:value_t::array          : { /*...*/ break; }
+    case toml:value_t::table          : { /*...*/ break; }
+    default: {break;}
+}
+

The is(toml::value_t) member function returns true if the stored value is of the given value_t type, otherwise it returns false.

toml::value v = /* ... */;
+if(v.is(toml::value_t::integer))
+{
+    std::cout << v.as_integer() << std::endl;
+}
+

at, [], contains, size, push_back, emplace_back +#

toml::value provides some member functions similar to those of standard library containers.

These functions internally convert toml::value to the corresponding type and call the respective member functions.

at(std::size_t i), operator[](std::size_t i) +#

These are equivalent to as_array().at(i) and as_array()[i].

toml::value uses std::vector<toml::value> as array_type by default, so at throws std::out_of_range on error, while operator[] results in undefined behavior.

toml::value v(toml::array{1,2,3});
+std::cout << v.at(1);
+

If the stored type is not array_type, a type_error is thrown.

at(std::string key), operator[](std::string key) +#

These are equivalent to as_table().at(key) and as_table()[key].

toml::value uses std::unordered_map<std::string, toml::value> as table_type by default, so if the corresponding value does not exist, at throws std::out_of_range, while operator[] constructs a new toml::value and returns a reference to it. Therefore, there is no const version of operator[].

toml::value v(toml::table{});
+v["a"] = 42;
+

If the stored type is not table_type, a type_error is thrown.

size() +#

Returns the length.

For array_type or table_type, it returns the number of elements; for string_type, it returns the number of characters (in bytes).

If the stored type is none of these, a type_error is thrown.

push_back(), emplace_back() +#

These are equivalent to as_array().push_back() and as_array().emplace_back().

If the stored type is not array_type, a type_error is thrown.

Accessing Comments +#

In toml11, comments are parsed by default and saved line by line with the corresponding value.

A comment corresponds to the value that comes immediately after the consecutive lines of comments, or to the value on the same line as the comment.

If there is no value immediately before or after the comment, it is not associated with any value and is ignored.

# input.toml
+
+# This is a comment about a.
+a = 42
+b = 3.14 # This is a comment about b.
+
+# This comment is ignored because it has no corresponding value.
+
+# This is the 1st comment about c.
+# This is the 2nd comment about c.
+c = "foo" # This is the final comment about c.
+# This comment is NOT a comment about c.
+

Comments corresponding to a value can be accessed using the comments() member function of toml::value.

comments() returns a container that has the same member functions as std::vector<std::string>.

const auto v = toml::parse("input.toml");
+const auto& a = v.at("a");
+const auto& b = v.at("b");
+const auto& c = v.at("c");
+
+assert(a.comments().size() == 1);
+assert(a.comments().at(0) == "# This is a comment about a.");
+
+assert(b.comments().size() == 1);
+assert(b.comments().at(0) == "# This is a comment about b.");
+
+assert(c.comments().size() == 3);
+assert(c.comments().at(0) == "# This is the 1st comment about c.");
+assert(c.comments().at(1) == "# This is the 2nd comment about c.");
+assert(c.comments().at(2) == "# This is the final comment about c.");
+

Comments related to the root table of the entire file are written at the beginning of the file.

# This is a comment about the root table.
+# This is also a comment about the root table.
+
+# This comment is ignored.
+
+# This is a comment about a.
+a = 42
+

However, if a value immediately follows the initial comment, the comment is interpreted as pertaining to that value, and there are no comments for the root table.

# This is a comment about a.
+# This is also a comment about a.
+a = 42
+

Handling Inline Tables and Dotted Keys +#

An inline table is simply a table, and there is no difference in handling it compared to other tables in C++ code.

a = {b = 42, c = "foo"}
+

Dotted keys are also just tables, with no difference in handling compared to other tables in C++ code.

a.b = 42
+a.c = "foo"
+

These TOML files are identical to the following file.

[a]
+b = 42
+c = "foo"
+

Thus, they can all be processed with the exact same code.

const auto input = toml::parse("input.toml");
+
+assert(input.at("a").at("b").as_integer() == 42);
+assert(input.at("a").at("c").as_string()  == "foo");
+

However, it is possible to distinguish them based on format information.

const auto input = toml::parse("input.toml");
+switch(input.at("a").as_table_fmt().fmt)
+{
+    case toml::table_format::oneline: 
+    {
+        std::cout << "inline table" << std::endl;
+        break;
+    }
+    case toml::table_format::multiline:
+    {
+        std::cout << "normal table" << std::endl;
+        break;
+    }
+    case toml::table_format::dotted:
+    {
+        std::cout << "dotted keys" << std::endl;
+        break;
+    }
+}
+

This format information is also considered during serialization, which will be described later.

Handling Date and Time Information +#

local_date, +local_time, +local_datetime, and +offset_datetime +are parsed into dedicated structures with corresponding member variables in toml11.

When using these, you can directly extract the values or use toml::get and toml::find to convert them into types such as std::chrono::system_clock::time_point or std::tm.

Converting Using toml::get<T> +#

toml::get<T> is a function that converts and retrieves the value stored in toml::value. +Specify the desired target type as T.

const toml::value v = /*...*/;
+std::cout << toml::get<int>(v) << std::endl;
+

The toml::find<T> function, described later, also has the same functionality for type conversion.

If an unsupported type is specified for the stored value, a toml::type_error is thrown.

Simple Conversions +#

boolean_type +#

Conversion from boolean_type is possible only to bool.

integer_type +#

Any type for which std::is_integral<T> is true, except bool, can be converted from integer_type.

toml::value v(42);
+const auto u32 = toml::get<std::uint32_t>(v);
+const auto i16 = toml::get<short>(v);
+

floating_type +#

Any type for which std::is_floating_point<T> is true can be converted from floating_type.

toml::value v(3.14);
+const auto f64 = toml::get<double>(v);
+const auto f32 = toml::get<float >(v);
+

string_type +#

string_type can be converted to std::string. +From C++17 onwards, it can also be converted to std::string_view.

toml::value v("foo");
+const auto s = toml::get<std::string>(v);
+
+// C++17
+const auto sv = toml::get<std::string_view>(v);
+

datetime variants +#

local_date, +local_datetime, and +offset_datetime represent specific dates and times, +so they can be converted to std::chrono::system_clock::time_point.

However, since local_time does not include date information, it supports conversion to std::chrono::duration as the elapsed time from 00:00.00.

Additionally, local_date and local_datetime conversions take the executing machine’s timezone into account.

date = 2024-01-23
+time = 12:30:00
+l_dt = 2024-01-23T12:30:00
+o_dt = 2024-01-23T12:30:00+09:00
+
const auto input = toml::parse("input.toml");
+
+const auto date = toml::get<std::chrono::system_clock::time_point>(input.at("date"));
+const auto l_dt = toml::get<std::chrono::system_clock::time_point>(input.at("l_dt"));
+const auto o_dt = toml::get<std::chrono::system_clock::time_point>(input.at("o_dt"));
+
+const auto time = toml::get<std::chrono::minutes>(input.at("time")); // 12 * 60 + 30 min
+

Conditions for Obtaining References +#

toml::get<T> can return a reference if T is the exact type stored in toml::value.

Conversely, if a conversion is necessary (e.g., extracting an integer stored as std::int64_t into std::uint32_t), it is not possible to return a reference to the converted type.

When no conversion is needed, the returned reference can be used to modify the value.

toml::value v(42);
+
+toml::get<toml::value::integer_type>(v) = 6 * 9;
+
+assert(v.as_integer() == 54);
+

Converting Arrays to STL Containers +#

If all elements in an array have the same type and can be converted to T, it is possible to convert them to std::vector<T>.

a = [1, 2, 3, 4, 5]
+
const auto a = toml::get<std::vector<int>>(input.at("a"));
+

Other STL containers can also be used.

const auto a1 = toml::get<std::deque<int>>(input.at("a"));
+const auto a2 = toml::get<std::list <int>>(input.at("a"));
+const auto a3 = toml::get<std::array<int, 5>>(input.at("a"));
+

When converting to std::array, the number of elements must match. If they don’t match, a std::out_of_range exception is thrown.

Non-STL containers that have a default constructor and a push_back method can also be converted using toml::get.

const auto a = toml::get<boost::container::small_vector<int, 8>>(input.at("a"));
+

Converting Arrays to std::pair or std::tuple +#

If an array contains elements of different types, it can be converted to std::pair or std::tuple.

a = [true, 3.14]
+b = [42, 2.718, "foo"]
+
const auto a = toml::get<std::pair<bool, double>>(input.at("a"));
+const auto b = toml::get<std::tuple<int, double, std::string>>(input.at("b"));
+

As with std::array, the length of the array must match the number of elements in the std::pair or std::tuple. If they don’t match, a std::out_of_range exception is thrown.

Additionally, each element must be convertible to the corresponding element in the std::pair or std::tuple. If conversion is not possible, a toml::type_error exception is thrown.

Converting Nested Arrays +#

Nested arrays can be converted to nested containers.

a = [ [1, 2, 3], [4, 5, 6] ]
+
const auto a = toml::get<std::vector<std::vector<int>>>(input.at("a"));
+

If the types are different, std::pair or std::tuple can be useful.

a = [ [1, 2, 3], ["foo", "bar"] ]
+
const auto a = toml::get<
+    std::pair<std::vector<int>, std::vector<std::string>>
+    >(input.at("a"));
+

Converting Tables to std::map +#

If all values in a table have the same type, they can be converted to std::map or std::unordered_map.

t = {a = 1, b = 2}
+
const auto t = toml::get<std::map<std::string, int>>(input.at("t"));
+

Non-STL containers that have a default constructor and an emplace(key, mapped) method can also be converted using toml::get.

const auto t = toml::get<boost::container::flat_map<std::string, int>>(input.at("t"));
+

If the conversion of any element fails, a toml::type_error exception is thrown.

Using toml::get_or to Specify a Value on Failure +#

toml::get throws a toml::type_error exception if the conversion fails.

By using toml::get_or, you can specify a default value to return instead of an exception in case of a conversion failure.

Unlike toml::get<T>, get_or infers the target type from the arguments, so there is no need to specify <T>.

const auto a = toml::get_or(input.at("a"), 42);
+

The types that can be converted are the same as for toml::get.

If you specify toml::value::xxx_type, you can also retrieve a reference, but in that case, the argument must also be a reference.

toml::value::integer_type a_default = 42;
+auto a& = toml::get_or(input.at("a"), a_default);
+

Using toml::find<T> to Search and Convert Simultaneously +#

toml::find<T> is a function that searches for a value in a toml::value holding a table and simultaneously performs the same type conversion as toml::get.

const auto a = toml::find<int>(input, "a");
+// Equivalent to: const auto a = toml::get<int>(input.at("a"));
+

toml::find<T> can also be used with arrays.

const auto a  = input.at("a");
+const auto a2 = toml::find<int>(a, 2);
+// Equivalent to: const auto a2 = toml::get<int>(input.at("a").at(2));
+

If an error occurs during type conversion, toml::find<T> throws the same toml::type_error as toml::get. +If the key is not found or the index does not exist, it throws std::out_of_range.

If no type is specified, toml::find returns a toml::value without type conversion.

const auto a = toml::find(input, "a");
+// Equivalent to: const auto a = input.at("a");
+

toml::find<T> can access values recursively.

a = {b = {c = 42}}
+
const auto a_b_c = toml::find<int>(input, "a", "b", "c");
+// Equivalent to: const auto a = toml::get<int>(input.at("a").at("b").at("c"));
+

You can mix keys and indexes.

a = [ {b = 1}, {b = 2}, {b = 3} ]
+
const auto a_2_b = toml::find<int>(input, "a", 2, "b");
+// Equivalent to: const auto a = toml::get<int>(input.at("a").at(2).at("c"));
+

TOML supports a feature called quoted keys, which allows using normally disallowed characters in keys by enclosing them in "" or ''. Within quoted keys, . does not introduce tables.

"127.0.0.1" = "value"
+site."google.com" = true
+

You can read this TOML file as follows:

const auto input = toml::parse("input.toml");
+
+assert(input.at("127.0.0.1").as_string() == "value");
+assert(input.at("site").at("google.com").as_boolean());
+

To handle such cases seamlessly, toml11 does not automatically split keys containing .. Explicitly specifying the table hierarchy helps in structuring the input file correctly.

Reference: toml.io/Key

Using toml::find_or to Search and Specify a Value on Failure +#

toml::find_or works similarly to toml::find<T>, but allows specifying a default value to return if the search or conversion fails.

This is useful when you want to provide a fallback value instead of handling exceptions.

const auto a = toml::find_or(input, "a", 42);
+

Defining Conversions for User-Defined Types +#

With toml::get and toml::find, you can use user-defined types by employing one of the following methods.

Defining toml::from +#

In toml11, there is a toml::from type that supports conversions from user-defined types by specializing it as follows:

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+namespace toml
+{
+template<>
+struct from<extlib::foo>
+{
+    static extlib::foo from_toml(const toml::value& v)
+    {
+        return extlib::foo{
+            toml::find<int>(v, "a"),
+            toml::find<std::string>(v, "b")
+        };
+    }
+};
+} // toml
+

If you also want to support toml::value with a modified type configuration, do as follows:

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+namespace toml
+{
+template<>
+struct from<extlib::foo>
+{
+    template<typename TC>
+    static extlib::foo from_toml(const toml::basic_value<TC>& v)
+    {
+        return extlib::foo{
+            toml::find<int>(v, "a"),
+            toml::find<std::string>(v, "b")
+        };
+    }
+};
+} // toml
+

This definition can be automatically generated using TOML11_DEFINE_CONVERSION_NON_INTRUSIVE.

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b)
+

Alternatively, you can use a reflection library. Refer to the sample in example using boost-ext/reflect.

Defining a from_toml Member Function +#

You can also define a conversion by defining a from_toml member function.

When using this method, a default constructor is required.

struct bar
+{
+    int a;
+    std::string b;
+
+    void from_toml(const toml::value& v)
+    {
+        this->a = toml::find<int>(v, "a");
+        this->b = toml::find<std::string>(v, "b");
+        return ;
+    }
+};
+

If both are defined, toml::from takes precedence.

Constructor Accepting toml::value +#

If there is a constructor that accepts toml::value, conversion via toml::get can be performed.

struct baz
+{
+    explicit baz(const toml::value& v)
+        : a(toml::find<int>(v, "a")), b(toml::find<std::string>(v, "b"))
+    {}
+    int a;
+    std::string b;
+};
+

If both are defined, toml::from and from_toml take precedence.

Applying Functions with toml::visit +#

If you have a function object that can be applied to all types stored in toml::value, you can directly call that function without type conversion using toml::visit.

struct type_name_of
+{
+    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
+    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
+    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
+    std::string operator()(const toml::value::string_type         &) const {return "string";}
+    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
+    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
+    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
+    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
+    std::string operator()(const toml::value::array_type          &) const {return "array";}
+    std::string operator()(const toml::value::table_type          &) const {return "table";}
+};
+
+toml::value v(3.14);
+std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
+

Constructing toml::value +#

toml::value can be constructed not only internally by the parser but also in user code.

You can construct it by passing a type that is either the same as or convertible to the types stored in toml::value.

toml::value v1(true);
+toml::value v2(42);
+toml::value v3(3.14);
+

For arrays, you can use toml::array:

toml::value v(toml::array{1, 2, 3});
+

Alternatively, you can pass containers such as std::vector directly:

const std::vector<toml::value> a{1,2,3};
+toml::value v(a);
+

For tables, you can use toml::table:

toml::value v(toml::table{{"foo", 1}, {"bar", 2}, {"baz", 3}});
+

Or pass containers such as std::map directly:

const std::map<std::string, toml::value> t{
+        {"foo", 1}, {"bar", 2}, {"baz", 3}
+    }
+toml::value v(t);
+

You can pass format_info and comments to the constructor.

The type of comments is std::vector<std::string>. +Each element corresponds to a line.

toml::integer_format_info fmt;
+fmt.fmt = toml::integer_format::hex;
+fmt.spacer = 4;
+
+toml::value v1(0xDEADBEEF, fmt);
+toml::value v2(0xC0FFEE, fmt, {"hex value!"});
+

Converting to toml::value +#

When constructing toml::value from user-defined types, you can customize the behavior by defining toml::into or into_toml.

toml::into is particularly useful when converting types from other libraries.

Defining toml::into +#

By specializing toml::into, you can enable conversions to toml::value.

This is useful for types from external libraries that do not provide a conversion to toml::value.

Since toml::value passes type_config during conversion, you need to accept the template argument of basic_value.

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+template<>
+struct into<extlib::foo>
+{
+    template<typename TC>
+    static toml::basic_value<TC> into_toml(const extlib::foo& f)
+    {
+        return toml::basic_value<TC>(typename toml::basic_value<TC>::table_type{{"a", f.a}, {"b", f.b}});
+    }
+};
+

Defining into_toml Member Function +#

Similar to from_toml, you can define the conversion through a member function.

If toml::into is defined, it takes precedence.

struct bar
+{
+    int a;
+    std::string b;
+
+    template<typename TC>
+    toml::basic_value<TC> into_toml() const
+    {
+        return toml::basic_value<TC>(typename toml::basic_value<TC>::table_type{
+                {"a", this->a}, {"b", this->b}
+            });
+    }
+};
+
\ No newline at end of file diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 00000000..7a9e96e7 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,9 @@ +Docs | toml11 + +
Docs +
\ No newline at end of file diff --git a/docs/index.xml b/docs/index.xml new file mode 100644 index 00000000..545e8d15 --- /dev/null +++ b/docs/index.xml @@ -0,0 +1 @@ +Docs on toml11https://toruniina.github.io/toml11/docs/Recent content in Docs on toml11Hugoen \ No newline at end of file diff --git a/docs/installation/index.html b/docs/installation/index.html new file mode 100644 index 00000000..6fd66052 --- /dev/null +++ b/docs/installation/index.html @@ -0,0 +1,49 @@ +installation | toml11 + +
installation +

Installation +#

Using single_include +#

The ingle_include/toml.hpps is a single-file, header-only library that consolidates all the functionalities of toml11 into one file.

The simplest way to use it is to copy this file to a location included in your INCLUDE_PATH and then add #include <toml.hpp> to your source code.

The MIT license notice is included in both the comments and the toml::license_notice() function. +If you are redistributing the software without releasing the source code, you must either copy the toml11 license file and include it with your distribution, or ensure that the toml::license_notice() function can be called.

Cloning toml11 and using cmake +#

If you place toml11 within your repository, for example by using git submodule, and you are using cmake, you can make use of it by adding add_subdirectory(toml11) to your CMakeLists.txt.

add_subdirectory(toml11)
+add_executable(main main.cpp)
+target_link_libraries(main PUBLIC toml11::toml11)
+

toml11 will only run tests and install when it is the root project.

Installing using cmake +#

After cloning toml11, you can install it using cmake.

$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
+$ cmake --install ./build/ --prefix=/opt/toml11
+

If you want to run the test programs before installation, make sure to set -DTOML11_BUILD_TESTS=ON first.

Once the installation is complete, you can use it as follows:

find_package(toml11)
+add_executable(main main.cpp)
+target_link_libraries(main PRIVATE toml11::toml11)
+

Compiling with cmake to Create a Static Library +#

By defining -DTOML11_PRECOMPILE=ON when running cmake, you can precompile some of the functions in toml11, thereby reducing the overall compile time.

$ cmake -B ./build/ -DTOML11_PRECOMPILE=ON
+

When linking the library, use target_link_libraries in CMake

target_link_libraries(your_target PUBLIC toml11::toml11)
+

or pass -DTOML11_COMPILE_SOURCES to the compiler to suppress header-only features.

However, since toml11 supports multiple C++ versions and may switch types based on the value of __cplusplus, +there is a possibility of link failures if the version used during build differs from the version used during usage. +If you encounter issues, set the required version using CMAKE_CXX_STANDARD during compilation. +If this is difficult, use it as a header-only library as usual.

The find_package(toml11) command defines TOML11_INCLUDE_DIR. +Even if you install it as a precompiled library, you can still use it as a header-only library by adding TOML11_INCLUDE_DIR to target_include_directories and avoiding the use of target_link_libraries.

find_package(toml11)
+add_executable(main main.cpp)
+# Include only, do not link
+target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR})
+

Compiling Examples +#

You can compile the examples/ directory by setting -DTOML11_BUILD_EXAMPLES=ON.

$ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON
+$ cmake --build ./build/
+

The executable binaries for the examples will be generated in the examples/ directory.

Running Tests +#

To build the tests, set -DTOML11_BUILD_TESTS=ON.

$ git submodule update --init --recursive
+$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
+$ cmake --build ./build/
+$ ctest --test-dir ./build/
+

To run the toml-lang/toml-tests, set -DTOML11_BUILD_TOML_TESTS=ON. This will build toml11_decoder and toml11_encoder in the tests/ directory.

$ git submodule update --init --recursive
+$ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON
+$ cmake --build ./build/
+$ ctest --test-dir ./build/
+
\ No newline at end of file diff --git a/docs/installation/index.xml b/docs/installation/index.xml new file mode 100644 index 00000000..fc9c5aed --- /dev/null +++ b/docs/installation/index.xml @@ -0,0 +1 @@ +installation on toml11https://toruniina.github.io/toml11/docs/installation/Recent content in installation on toml11Hugoen \ No newline at end of file diff --git a/docs/reference/color/index.html b/docs/reference/color/index.html new file mode 100644 index 00000000..30e54b12 --- /dev/null +++ b/docs/reference/color/index.html @@ -0,0 +1,98 @@ +color.hpp | toml11 + +
color.hpp +

color.hpp +#

In color.hpp, functions related to colorizing error messages are defined.

Colors are specified using ANSI escape code. +In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read.

Macros +#

TOML11_COLORIZE_ERROR_MESSAGE +#

If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default.

If not defined, colors are not applied by default. You need to specify them using toml::color::enable().

TOML11_USE_THREAD_LOCAL_COLORIZATION +#

If this macro is defined during compilation (-DTOML11_USE_THREAD_LOCAL_COLORIZATION), the colorization flag becomes thread_local. +In this case, toml::color::enable() or toml::color::disable() will only affect the colorization flag in the thread that called it. +This means that if you want to use a different setting from the default, you will need to set it again when starting a new thread. +This makes toml::color::enable() and toml::color::disable() thread safe.

By default, the setting is global. +When it is global, if one thread executes toml::color::enable(), the error messages will be colored in all threads. +However, if one thread executes enable() or disable() while another executes enable(), disable() or should_color(), the result is undefined.

Functions +#

enable() +#

namespace toml {
+namespace color {
+void enable();
+} // color
+} // toml
+

Enables colorization using ANSI escape code.

Example +#

#include <toml.hpp>
+
+int main()
+{
+    toml::color::enable(); // All subsequent errors will be colored.
+    const auto input = toml::parse("input.toml");
+    return 0;
+}
+

disable() +#

namespace toml {
+namespace color {
+void disable();
+} // color
+} // toml
+

Disables colorization using ANSI escape code.

Example +#

#include <toml.hpp>
+
+int main()
+{
+    toml::color::disable(); // All subsequent errors will not be colored.
+    const auto input = toml::parse("input.toml");
+    return 0;
+}
+

should_color() +#

namespace toml {
+namespace color {
+bool should_color();
+} // color
+} // toml
+

Returns true if colorization is enabled, false otherwise.

Example +#

#include <toml.hpp>
+#include <iomanip>
+#include <iostream>
+
+int main()
+{
+    std::cout << "colorized? : " << std::boolalpha << toml::color::should_color() << std::endl;
+    return 0;
+}
+

Manipulators +#

namespace toml {
+namespace color {
+std::ostream& reset  (std::ostream&);
+std::ostream& bold   (std::ostream&);
+std::ostream& grey   (std::ostream&);
+std::ostream& gray   (std::ostream&);
+std::ostream& red    (std::ostream&);
+std::ostream& green  (std::ostream&);
+std::ostream& yellow (std::ostream&);
+std::ostream& blue   (std::ostream&);
+std::ostream& magenta(std::ostream&);
+std::ostream& cyan   (std::ostream&);
+std::ostream& white  (std::ostream&);
+} // color
+} // toml
+

Colorizes the foreground with ANSI escape code.

Example +#

#include <toml.hpp>
+#include <iostream>
+
+int main()
+{
+    std::cout << toml::color::red << "red!" << toml::color::reset << std::endl;
+    return 0;
+}
+

Related +#

\ No newline at end of file diff --git a/docs/reference/comments/index.html b/docs/reference/comments/index.html new file mode 100644 index 00000000..968012da --- /dev/null +++ b/docs/reference/comments/index.html @@ -0,0 +1,309 @@ +comments.hpp | toml11 + +
comments.hpp +

comments.hpp +#

In comments.hpp, comment containers are provided.

toml::preserve_comments +#

preserve_comments is a container that preserves comments.

It has all the member functions of std::vector<std::string>.

Comments are preserved as std::string. +If the comment does not start with #, it will be prefixed with # during output. +However, this prefixing is not done when adding comments to the container.

Spaces are not automatically added, so if you want a space immediately after #, +either start the comment with a space or pass the comment with #.

namespace toml
+{
+class preserve_comments;
+
+bool operator==(const preserve_comments&, const preserve_comments&);
+bool operator!=(const preserve_comments&, const preserve_comments&);
+bool operator< (const preserve_comments&, const preserve_comments&);
+bool operator<=(const preserve_comments&, const preserve_comments&);
+bool operator> (const preserve_comments&, const preserve_comments&);
+bool operator>=(const preserve_comments&, const preserve_comments&);
+
+void swap(preserve_comments&,        preserve_comments&);
+void swap(preserve_comments&,        std::vector<std::string>&);
+void swap(std::vector<std::string>&, preserve_comments&);
+
+std::ostream& operator<<(std::ostream&, const preserve_comments&);
+} //toml
+

Member types +#

using container_type         = std::vector<std::string>;
+using size_type              = container_type::size_type;
+using difference_type        = container_type::difference_type;
+using value_type             = container_type::value_type;
+using reference              = container_type::reference;
+using const_reference        = container_type::const_reference;
+using pointer                = container_type::pointer;
+using const_pointer          = container_type::const_pointer;
+using iterator               = container_type::iterator;
+using const_iterator         = container_type::const_iterator;
+using reverse_iterator       = container_type::reverse_iterator;
+using const_reverse_iterator = container_type::const_reverse_iterator;
+

Member Functions +#

Default Constructor +#

preserve_comments() = default;
+

Constructs an empty preserve_comments.

Copy and Move Constructors +#

preserve_comments(preserve_comments const&) = default;
+preserve_comments(preserve_comments &&)     = default;
+

Constructs a preserve_comments by copying or moving.

Constructor (std::vector<std::string>) +#

explicit preserve_comments(const std::vector<std::string>& c);
+explicit preserve_comments(std::vector<std::string>&& c);
+

Constructs a preserve_comments holding the contents of std::vector<std::string>.

Constructor (discard_comments) +#

explicit preserve_comments(const discard_comments&);
+

Constructs an empty preserve_comments.

Constructor (Iterator) +#

template<typename InputIterator>
+preserve_comments(InputIterator first, InputIterator last);
+

Constructs a preserve_comments from the range represented by InputIterator pointing to std::string.

Constructor (std::initializer_list) +#

preserve_comments(std::initializer_list<std::string> x);
+

Constructs a preserve_comments from the range represented by std::initializer_list<std::string>.

Constructor (Size Specified) +#

explicit preserve_comments(size_type n);
+preserve_comments(size_type n, const std::string& x);
+

Constructs a preserve_comments with n comments.

If a std::string is passed, it replicates that comment n times.

Destructor +#

~preserve_comments() = default;
+

Destroys the preserve_comments.

operator=(preserve_comments) +#

preserve_comments& operator=(preserve_comments const&) = default;
+preserve_comments& operator=(preserve_comments &&)     = default;
+

Assigns a preserve_comments by copying or moving.

operator=(std::vector<std::string>) +#

preserve_comments& operator=(const std::vector<std::string>& c);
+preserve_comments& operator=(std::vector<std::string>&& c);
+

Assigns a std::vector<std::string> by copying or moving.

assign +#

template<typename InputIterator>
+void assign(InputIterator first, InputIterator last);
+void assign(std::initializer_list<std::string> ini);
+void assign(size_type n, const std::string& val);
+

The same as std::vector<std::string>::assign.

insert +#

iterator insert(const_iterator p, const std::string& x);
+iterator insert(const_iterator p, std::string&&      x);
+iterator insert(const_iterator p, size_type n, const std::string& x);
+template<typename InputIterator>
+iterator insert(const_iterator p, InputIterator first, InputIterator last);
+iterator insert(const_iterator p, std::initializer_list<std::string> ini);
+

The same as std::vector<std::string>::insert.

emplace +#

template<typename ... Ts>
+iterator emplace(const_iterator p, Ts&& ... args);
+

The same as std::vector<std::string>::emplace.

erase +#

iterator erase(const_iterator pos);
+iterator erase(const_iterator first, const_iterator last);
+

The same as std::vector<std::string>::erase.

swap +#

void swap(preserve_comments& other);
+

Swaps the comments.

push_back +#

void push_back(const std::string& v);
+void push_back(std::string&&      v);
+

The same as std::vector<std::string>::push_back.

pop_back +#

void pop_back();
+

The same as std::vector<std::string>::pop_back.

emplace_back +#

template<typename ... Ts>
+void emplace_back(Ts&& ... args);
+

The same as std::vector<std::string>::emplace_back.

clear +#

void clear();
+

The same as std::vector<std::string>::clear.

size +#

size_type size() const noexcept;
+

The same as std::vector<std::string>::size.

max_size +#

size_type max_size() const noexcept;
+

The same as std::vector<std::string>::max_size.

capacity +#

size_type capacity() const noexcept;
+

The same as std::vector<std::string>::capacity.

empty +#

bool empty() const noexcept;
+

The same as std::vector<std::string>::empty.

reserve +#

void reserve(size_type n);
+

The same as std::vector<std::string>::reserve.

resize +#

void resize(size_type n);
+void resize(size_type n, const std::string& c);
+

The same as std::vector<std::string>::resize.

shrink_to_fit +#

void shrink_to_fit();
+

The same as std::vector<std::string>::shrink_to_fit.

operator[] +#

reference       operator[](const size_type n)       noexcept;
+const_reference operator[](const size_type n) const noexcept;
+

The same as std::vector<std::string>::operator[].

at +#

reference       at(const size_type n)      ;
+const_reference at(const size_type n) const;
+

The same as std::vector<std::string>::at.

front +#

reference       front()       noexcept;
+const_reference front() const noexcept;
+

The same as std::vector<std::string>::front.

back +#

reference       back()        noexcept;
+const_reference back()  const noexcept;
+

The same as std::vector<std::string>::back.

data +#

pointer         data()        noexcept;
+const_pointer   data()  const noexcept;
+

The same as std::vector<std::string>::data.

begin/end +#

iterator       begin()        noexcept;
+iterator       end()          noexcept;
+const_iterator begin()  const noexcept;
+const_iterator end()    const noexcept;
+const_iterator cbegin() const noexcept;
+const_iterator cend()   const noexcept;
+

The same as std::vector<std::string>::begin/end.

rbegin/rend +#

reverse_iterator       rbegin()        noexcept;
+reverse_iterator       rend()          noexcept;
+const_reverse_iterator rbegin()  const noexcept;
+const_reverse_iterator rend()    const noexcept;
+const_reverse_iterator crbegin() const noexcept;
+const_reverse_iterator crend()   const noexcept;
+

The same as std::vector<std::string>::rbegin/rend

non-member functions +#

Comparison operator +#

bool operator==(const preserve_comments&, const preserve_comments&);
+bool operator!=(const preserve_comments&, const preserve_comments&);
+bool operator< (const preserve_comments&, const preserve_comments&);
+bool operator<=(const preserve_comments&, const preserve_comments&);
+bool operator> (const preserve_comments&, const preserve_comments&);
+bool operator>=(const preserve_comments&, const preserve_comments&);
+

It compares two preserve_comments in the same way as std::vector<std::string>.

swap +#

void swap(preserve_comments&,        preserve_comments&);
+void swap(preserve_comments&,        std::vector<std::string>&);
+void swap(std::vector<std::string>&, preserve_comments&);
+

Stream operator +#

std::ostream& operator<<(std::ostream&, const preserve_comments&);
+

Outputs as TOML comments.

If the first character is not #, it adds #.

toml::discard_comments +#

discard_comments serves as a container for discarding comments.

It encompasses all the member functions of std::vector<std::string>, but invoking functions that modify the content has no effect, leaving it perpetually empty.

namespace toml
+{
+class discard_comments;
+
+bool operator==(const discard_comments&, const discard_comments&);
+bool operator!=(const discard_comments&, const discard_comments&);
+bool operator< (const discard_comments&, const discard_comments&);
+bool operator<=(const discard_comments&, const discard_comments&);
+bool operator> (const discard_comments&, const discard_comments&);
+bool operator>=(const discard_comments&, const discard_comments&);
+
+void swap(discard_comments&, discard_comments&);
+
+std::ostream& operator<<(std::ostream&, const discard_comments&);
+} //toml
+

Member types +#

// container_type is not defined
+using size_type              = std::size_t;
+using difference_type        = std::ptrdiff_t;
+using value_type             = std::string;
+using reference              = std::string&;
+using const_reference        = std::string const&;
+using pointer                = std::string*;
+using const_pointer          = std::string const*;
+using iterator               = /* internal type: empty-iterator */
+using const_iterator         = /* internal type: empty-iterator */
+using reverse_iterator       = /* internal type: empty-iterator */
+using const_reverse_iterator = /* internal type: empty-iterator */
+

Default Constructor +#

discard_comments() = default;
+

Constructs an empty discard_comments.

Copy / Move Constructor +#

discard_comments(discard_comments const&) = default;
+discard_comments(discard_comments &&)     = default;
+

Constructs a discard_comments by copying or moving.

Constructor(std::vector<std::string>) +#

explicit discard_comments(const std::vector<std::string>& c);
+explicit discard_comments(std::vector<std::string>&& c);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(preserve_comments) +#

explicit discard_comments(const preserve_comments&);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(Iterator) +#

template<typename InputIterator>
+discard_comments(InputIterator first, InputIterator last);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(std::initializer_list) +#

discard_comments(std::initializer_list<std::string> x);
+

Constructs an empty discard_comments. Arguments are ignored.

Constructor(サイズ指定) +#

explicit discard_comments(size_type n);
+discard_comments(size_type n, const std::string& x);
+

Constructs an empty discard_comments. Arguments are ignored.

Destructor +#

~discard_comments() = default;
+

Destroys discard_comments.

operator=(discard_comments) +#

discard_comments& operator=(discard_comments const&) = default;
+discard_comments& operator=(discard_comments &&)     = default;
+

Assigns discard_comments by copying or moving.

operator=(std::vector<std::string>) +#

discard_comments& operator=(const std::vector<std::string>& c);
+discard_comments& operator=(std::vector<std::string>&& c);
+

Does nothing.

assign +#

template<typename InputIterator>
+void assign(InputIterator first, InputIterator last);
+void assign(std::initializer_list<std::string> ini);
+void assign(size_type n, const std::string& val);
+

Does nothing.

insert +#

iterator insert(const_iterator p, const std::string& x);
+iterator insert(const_iterator p, std::string&&      x);
+iterator insert(const_iterator p, size_type n, const std::string& x);
+template<typename InputIterator>
+iterator insert(const_iterator p, InputIterator first, InputIterator last);
+iterator insert(const_iterator p, std::initializer_list<std::string> ini);
+

Does nothing.

emplace +#

template<typename ... Ts>
+iterator emplace(const_iterator p, Ts&& ... args);
+

Does nothing.

erase +#

iterator erase(const_iterator pos);
+iterator erase(const_iterator first, const_iterator last);
+

Does nothing.

swap +#

void swap(discard_comments& other);
+

Swaps two discard_comments. Effectively it does nothing.

push_back +#

void push_back(const std::string& v);
+void push_back(std::string&&      v);
+

Does nothing.

pop_back +#

void pop_back();
+

Does nothing.

emplace_back +#

template<typename ... Ts>
+void emplace_back(Ts&& ... args);
+

Does nothing.

clear +#

void clear();
+

Does nothing.

size +#

size_type size() const noexcept;
+

Returns 0.

max_size +#

size_type max_size() const noexcept;
+

Returns 0.

capacity +#

size_type capacity() const noexcept;
+

Returns 0.

empty +#

bool empty() const noexcept;
+

Returns true.

reserve +#

void reserve(size_type n);
+

Does nothing.

resize +#

void resize(size_type n);
+void resize(size_type n, const std::string& c);
+

Does nothing.

shrink_to_fit +#

void shrink_to_fit();
+

Does nothing.

operator[] +#

reference       operator[](const size_type n)       noexcept;
+const_reference operator[](const size_type n) const noexcept;
+

Causes undefined behavior.

at +#

reference       at(const size_type n)      ;
+const_reference at(const size_type n) const;
+

Throws std::out_of_range.

front +#

reference       front()       noexcept;
+const_reference front() const noexcept;
+

Causes undefined behavior.

back +#

reference       back()        noexcept;
+const_reference back()  const noexcept;
+

Causes undefined behavior.

data +#

pointer         data()        noexcept;
+const_pointer   data()  const noexcept;
+

Returns nullptr.

begin/end +#

iterator       begin()        noexcept;
+iterator       end()          noexcept;
+const_iterator begin()  const noexcept;
+const_iterator end()    const noexcept;
+const_iterator cbegin() const noexcept;
+const_iterator cend()   const noexcept;
+

Returns an internally defined empty-iterator.

The empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.

Accessing the target of the empty-iterator always calls std::terminate.

rbegin/rend +#

reverse_iterator       rbegin()        noexcept;
+reverse_iterator       rend()          noexcept;
+const_reverse_iterator rbegin()  const noexcept;
+const_reverse_iterator rend()    const noexcept;
+const_reverse_iterator crbegin() const noexcept;
+const_reverse_iterator crend()   const noexcept;
+

Returns an internally defined empty-iterator.

The empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.

Accessing the target of the empty-iterator always calls std::terminate.

non-member functions +#

Comparison operator +#

bool operator==(const discard_comments&, const discard_comments&);
+bool operator!=(const discard_comments&, const discard_comments&);
+bool operator< (const discard_comments&, const discard_comments&);
+bool operator<=(const discard_comments&, const discard_comments&);
+bool operator> (const discard_comments&, const discard_comments&);
+bool operator>=(const discard_comments&, const discard_comments&);
+

All the instances of discard_comments are the same value. operator== returns true, operator=! returns false.

swap +#

void swap(discard_comments&, discard_comments&);
+

Swaps discard_comments. Effectively it does nothing.

Stream operator +#

std::ostream& operator<<(std::ostream&, const discard_comments&);
+

Outputs nothing.

Related +#

\ No newline at end of file diff --git a/docs/reference/conversion/index.html b/docs/reference/conversion/index.html new file mode 100644 index 00000000..c2c7ac93 --- /dev/null +++ b/docs/reference/conversion/index.html @@ -0,0 +1,26 @@ +conversion.hpp | toml11 + +
conversion.hpp +

conversion.hpp +#

Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find.

TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...)
+

Example +#

namespace foo
+{
+struct Foo
+{
+    std::string s;
+    double      d;
+    int         i;
+};
+} // foo
+
+TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i)
+

Related +#

\ No newline at end of file diff --git a/docs/reference/datetime/index.html b/docs/reference/datetime/index.html new file mode 100644 index 00000000..68e666c0 --- /dev/null +++ b/docs/reference/datetime/index.html @@ -0,0 +1,366 @@ +datetime.hpp | toml11 + +
datetime.hpp +

datetime.hpp +#

Defines a class that stores date and time information used in TOML’s datetime.

enum class month_t +#

Enum class to specify months.

Due to its relationship with std::tm, local_date treats January as 0. +To avoid confusion, month_t allows specification of months by their names.

namespace toml
+{
+enum class month_t : std::uint8_t
+{
+    Jan =  0,
+    Feb =  1,
+    Mar =  2,
+    Apr =  3,
+    May =  4,
+    Jun =  5,
+    Jul =  6,
+    Aug =  7,
+    Sep =  8,
+    Oct =  9,
+    Nov = 10,
+    Dec = 11
+};
+}
+

local_date +#

local_date holds a date.

year represents the year in AD. For month, January is represented as 0 to align with std::tm. day holds the day of the month.

namespace toml
+{
+struct local_date
+{
+    std::int16_t year;
+    std::uint8_t month;
+    std::uint8_t day;
+
+    local_date() = default;
+    ~local_date() = default;
+    local_date(local_date const&) = default;
+    local_date(local_date&&)      = default;
+    local_date& operator=(local_date const&) = default;
+    local_date& operator=(local_date&&)      = default;
+
+    local_date(int y, month_t m, int d);
+    explicit local_date(const std::tm& t);
+    explicit local_date(const std::chrono::system_clock::time_point& tp);
+    explicit local_date(const std::time_t t);
+
+    operator std::chrono::system_clock::time_point() const;
+    operator std::time_t() const;
+};
+
+bool operator==(const local_date&, const local_date&);
+bool operator!=(const local_date&, const local_date&);
+bool operator< (const local_date&, const local_date&);
+bool operator<=(const local_date&, const local_date&);
+bool operator> (const local_date&, const local_date&);
+bool operator>=(const local_date&, const local_date&);
+
+std::ostream& operator<<(std::ostream& os, const local_date& date);
+std::string to_string(const local_date& date);
+}
+

Member Variables +#

year +#

std::int16_t year;
+

Represents the year in AD. There’s no offset. 2024 is simply 2024.

month +#

std::uint8_t month;
+

Represents the month. To align with std::tm, January is 0, February is 1, and so on.

To avoid confusion, use month_t during construction.

day +#

std::uint8_t day;
+

Represents the day of the month. The first day is 1.

Member Functions +#

Constructor +#

local_date() = default;
+

Uses the default implementation.

Destructor +#

~local_date() = default;
+

Uses the default implementation.

Copy and Move Constructors +#

local_date(local_date const&) = default;
+local_date(local_date&&)      = default;
+

Uses the default implementations.

Copy and Move Assignment Operators +#

local_date& operator=(local_date const&) = default;
+local_date& operator=(local_date&&)      = default;
+

Uses the default implementations.

Constructor (int year, month_t month, int day) +#

local_date(int y, month_t m, int d);
+

Constructs a local_date from the specified values.

Does not perform boundary checks.

Constructor (std::tm) +#

local_date(const std::tm&);
+

Constructs a local_date from the specified std::tm value.

Constructor (std::chrono::system_clock::time_point) +#

local_date(const std::chrono::system_clock::time_point&);
+

Constructs a local_date from the specified std::chrono::system_clock::time_point value.

Time zone is determined by the environment.

Constructor (std::time_t) +#

local_date(const std::time_t);
+

Constructs a local_date from the specified std::time_t value.

Time zone is determined by the environment.

operator std::chrono::system_clock::time_point +#

operator std::chrono::system_clock::time_point() const;
+

Converts to std::chrono::system_clock::time_point.

Time zone is determined by the environment.

Time is set to 0 hours and 0 minutes.

operator std::time_t +#

operator std::time_t() const;
+

Converts to std::time_t.

Time zone is determined by the execution environment.

Time is set to 0 hours and 0 minutes.

Non-member Functions +#

Comparison Operators +#

bool operator==(const local_date&, const local_date&);
+bool operator!=(const local_date&, const local_date&);
+bool operator< (const local_date&, const local_date&);
+bool operator<=(const local_date&, const local_date&);
+bool operator> (const local_date&, const local_date&);
+bool operator>=(const local_date&, const local_date&);
+

Compares two dates.

Stream Operators +#

std::ostream& operator<<(std::ostream& os, const local_date& date);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const local_date& date);
+

Converts to a string in the default TOML format.

local_time +#

namespace toml
+{
+struct local_time
+{
+    std::uint8_t  hour;        // [0, 23]
+    std::uint8_t  minute;      // [0, 59]
+    std::uint8_t  second;      // [0, 60]
+    std::uint16_t millisecond; // [0, 999]
+    std::uint16_t microsecond; // [0, 999]
+    std::uint16_t nanosecond;  // [0, 999]
+
+    local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
+
+    explicit local_time(const std::tm& t);
+
+    template<typename Rep, typename Period>
+    explicit local_time(const std::chrono::duration<Rep, Period>& t);
+
+    operator std::chrono::nanoseconds() const;
+
+    local_time() = default;
+    ~local_time() = default;
+    local_time(local_time const&) = default;
+    local_time(local_time&&)      = default;
+    local_time& operator=(local_time const&) = default;
+    local_time& operator=(local_time&&)      = default;
+};
+
+bool operator==(const local_time& lhs, const local_time& rhs);
+bool operator!=(const local_time& lhs, const local_time& rhs);
+bool operator< (const local_time& lhs, const local_time& rhs);
+bool operator<=(const local_time& lhs, const local_time& rhs);
+bool operator> (const local_time& lhs, const local_time& rhs);
+bool operator>=(const local_time& lhs, const local_time& rhs);
+
+std::ostream& operator<<(std::ostream& os, const local_time& time);
+std::string to_string(const local_time& time);
+}
+

Member Values +#

hour +#

std::uint8_t  hour;
+

Represents the hour. Values range from 0 to 23.

minute +#

std::uint8_t  minute;      // [0, 59]
+

Represents the minute. Values range from 0 to 59.

second +#

std::uint8_t  second;      // [0, 60]
+

Represents the second. Values range from 0 to 60.

millisecond +#

std::uint16_t millisecond; // [0, 999]
+

Represents the millisecond. Values range from 0 to 999.

microsecond +#

std::uint16_t microsecond; // [0, 999]
+

Represents the microsecond. Values range from 0 to 999.

nanosecond +#

std::uint16_t nanosecond;  // [0, 999]
+

Represents the nanosecond. Values range from 0 to 999.

Member Functions +#

default constructor +#

local_time() = default;
+

Initializes all values to 0.

constructor (h, m, s, ms = 0, us = 0, ns = 0) +#

local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
+

Constructs using the specified time components.

No boundary checks are performed.

constructor(std::tm) +#

explicit local_time(const std::tm& t);
+

Constructs using tm_hour, tm_min, and tm_sec from std::tm.

Subseconds are initialized to 0.

constructor(std::chrono::duration) +#

template<typename Rep, typename Period>
+explicit local_time(const std::chrono::duration<Rep, Period>& t);
+

Constructs as the time of day from 0 hours of the day specified by duration.

operator std::chrono::nanoseconds +#

operator std::chrono::nanoseconds() const;
+

Converts to std::chrono::nanoseconds.

Non-member Functions +#

Comparison Operators +#

bool operator==(const local_time& lhs, const local_time& rhs);
+bool operator!=(const local_time& lhs, const local_time& rhs);
+bool operator< (const local_time& lhs, const local_time& rhs);
+bool operator<=(const local_time& lhs, const local_time& rhs);
+bool operator> (const local_time& lhs, const local_time& rhs);
+bool operator>=(const local_time& lhs, const local_time& rhs);
+

Compares based on time values.

Stream Operator +#

std::ostream& operator<<(std::ostream& os, const local_time& time);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const local_time& time);
+

Converts to a string in the default TOML format.

time_offset +#

namespace toml
+{
+struct time_offset
+{
+    std::int8_t hour{0};   // [-12, 12]
+    std::int8_t minute{0}; // [-59, 59]
+
+    time_offset(int h, int m);
+
+    operator std::chrono::minutes() const;
+
+    time_offset() = default;
+    ~time_offset() = default;
+    time_offset(time_offset const&) = default;
+    time_offset(time_offset&&)      = default;
+    time_offset& operator=(time_offset const&) = default;
+    time_offset& operator=(time_offset&&)      = default;
+};
+
+bool operator==(const time_offset&, const time_offset&);
+bool operator!=(const time_offset&, const time_offset&);
+bool operator< (const time_offset&, const time_offset&);
+bool operator<=(const time_offset&, const time_offset&);
+bool operator> (const time_offset&, const time_offset&);
+bool operator>=(const time_offset&, const time_offset&);
+
+std::ostream& operator<<(std::ostream& os, const time_offset& offset);
+std::string to_string(const time_offset& offset);
+}
+

Member Variables +#

hour +#

std::int8_t hour{0};   // [-12, 12]
+

Represents the hour offset, ranging from -12 to +12.

minute +#

std::int8_t minute{0}; // [-59, 59]
+

Represents the minute offset, ranging from -59 to +59.

Member Functions +#

Constructor +#

time_offset(int h, int m);
+

Constructs with given hours and minutes.

No boundary checking is performed.

operator std::chrono::minutes +#

operator std::chrono::minutes() const;
+

Converts to std::chrono::minutes.

Non-member Functions +#

Comparison Operators +#

bool operator==(const time_offset&, const time_offset&);
+bool operator!=(const time_offset&, const time_offset&);
+bool operator< (const time_offset&, const time_offset&);
+bool operator<=(const time_offset&, const time_offset&);
+bool operator> (const time_offset&, const time_offset&);
+bool operator>=(const time_offset&, const time_offset&);
+

Compares based on time length.

Stream Output Operator +#

std::ostream& operator<<(std::ostream& os, const time_offset&);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const time_offset&);
+

Converts to a string in the default TOML format.

local_datetime +#

namespace toml
+{
+struct local_datetime
+{
+    local_date date;
+    local_time time;
+
+    local_datetime(local_date d, local_time t);
+
+    explicit local_datetime(const std::tm& t);
+    explicit local_datetime(const std::chrono::system_clock::time_point& tp);
+    explicit local_datetime(const std::time_t t);
+
+    operator std::chrono::system_clock::time_point() const;
+    operator std::time_t() const;
+
+    local_datetime() = default;
+    ~local_datetime() = default;
+    local_datetime(local_datetime const&) = default;
+    local_datetime(local_datetime&&)      = default;
+    local_datetime& operator=(local_datetime const&) = default;
+    local_datetime& operator=(local_datetime&&)      = default;
+};
+
+bool operator==(const local_datetime&, const local_datetime&);
+bool operator!=(const local_datetime&, const local_datetime&);
+bool operator< (const local_datetime&, const local_datetime&);
+bool operator<=(const local_datetime&, const local_datetime&);
+bool operator> (const local_datetime&, const local_datetime&);
+bool operator>=(const local_datetime&, const local_datetime&);
+
+std::ostream& operator<<(std::ostream& os, const local_datetime& dt);
+std::string to_string(const local_datetime& dt);
+}
+

Member Variables +#

local_date date +#

local_date date;
+

Stores the date component data.

local_time time +#

local_time time;
+

Stores the time component data.

Member Functions +#

Default Constructor +#

Constructs both date and time with default values.

Constructor (local_date, local_time) +#

Constructs with the specified date and time.

Constructor (std::tm) +#

Constructs from std::tm.

The timezone is selected based on the execution environment.

Constructor (std::chrono::system_clock::time_point) +#

Constructs from std::chrono::system_clock::time_point.

The timezone is selected based on the execution environment.

Constructor (std::time_t) +#

Constructs from std::time_t.

The timezone is selected based on the execution environment.

operator std::chrono::system_clock::time_point +#

Converts to std::chrono::system_clock::time_point.

operator std::time_t +#

Converts to std::time_t.

Non-member Functions +#

Comparison Operators +#

bool operator==(const local_datetime&, const local_datetime&);
+bool operator!=(const local_datetime&, const local_datetime&);
+bool operator< (const local_datetime&, const local_datetime&);
+bool operator<=(const local_datetime&, const local_datetime&);
+bool operator> (const local_datetime&, const local_datetime&);
+bool operator>=(const local_datetime&, const local_datetime&);
+

Compares based on chronological order.

Stream Output Operator +#

std::ostream& operator<<(std::ostream& os, const local_datetime&);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const local_datetime&);
+

Converts to a string in the default TOML format.

offset_datetime +#

namespace toml
+{
+struct offset_datetime
+{
+    local_date  date;
+    local_time  time;
+    time_offset offset;
+
+    offset_datetime(local_date d, local_time t, time_offset o);
+    offset_datetime(const local_datetime& dt, time_offset o);
+    explicit offset_datetime(const local_datetime& ld);
+    explicit offset_datetime(const std::chrono::system_clock::time_point& tp);
+    explicit offset_datetime(const std::time_t& t);
+    explicit offset_datetime(const std::tm& t);
+
+    operator std::chrono::system_clock::time_point() const;
+    operator std::time_t() const;
+
+    offset_datetime() = default;
+    ~offset_datetime() = default;
+    offset_datetime(offset_datetime const&) = default;
+    offset_datetime(offset_datetime&&)      = default;
+    offset_datetime& operator=(offset_datetime const&) = default;
+    offset_datetime& operator=(offset_datetime&&)      = default;
+};
+
+bool operator==(const offset_datetime&, const offset_datetime&);
+bool operator!=(const offset_datetime&, const offset_datetime&);
+bool operator< (const offset_datetime&, const offset_datetime&);
+bool operator<=(const offset_datetime&, const offset_datetime&);
+bool operator> (const offset_datetime&, const offset_datetime&);
+bool operator>=(const offset_datetime&, const offset_datetime&);
+
+std::ostream& operator<<(std::ostream& os, const offset_datetime& dt);
+std::string to_string(const offset_datetime& dt);
+}
+

Member Variables +#

date +#

local_date date;
+

Stores the date component.

time +#

local_time time;
+

Stores the time component.

offset +#

time_offset offset;
+

Stores the offset component.

Member Functions +#

Default Constructor +#

Constructs date, time, and offset with default values.

Constructor (local_date, local_time, time_offset) +#

Constructs with the specified date, time, and offset.

Constructor (local_datetime, time_offset) +#

Constructs from local_datetime and offset.

Constructor (std::tm) +#

Constructs from std::tm.

The timezone is UTC (00:00).

Constructor (std::chrono::system_clock::time_point) +#

Constructs from std::chrono::system_clock::time_point.

The timezone is UTC (00:00).

Constructor (std::time_t) +#

Constructs from std::time_t.

The timezone is UTC (00:00).

operator std::chrono::system_clock::time_point +#

Converts to std::chrono::system_clock::time_point.

The timezone is UTC (00:00).

operator std::time_t +#

Converts to std::time_t.

The timezone is UTC (00:00).

Non-member Functions +#

Comparison Operators +#

bool operator==(const offset_datetime&, const offset_datetime&);
+bool operator!=(const offset_datetime&, const offset_datetime&);
+bool operator< (const offset_datetime&, const offset_datetime&);
+bool operator<=(const offset_datetime&, const offset_datetime&);
+bool operator> (const offset_datetime&, const offset_datetime&);
+bool operator>=(const offset_datetime&, const offset_datetime&);
+

Compares based on chronological order.

If dates are the same, compares based on timezone order.

Stream Output Operator +#

std::ostream& operator<<(std::ostream& os, const offset_datetime&);
+

Outputs in the default TOML format.

to_string +#

std::string to_string(const offset_datetime&);
+

Converts to a string in the default TOML format.

\ No newline at end of file diff --git a/docs/reference/error_info/index.html b/docs/reference/error_info/index.html new file mode 100644 index 00000000..af55d826 --- /dev/null +++ b/docs/reference/error_info/index.html @@ -0,0 +1,75 @@ +error_info.hpp | toml11 + +
error_info.hpp +

error_info.hpp +#

In error_info.hpp, definitions for error_info and functions to format it are provided.

toml::error_info +#

namespace toml
+{
+struct error_info
+{
+    error_info(std::string t, source_location l, std::string m, std::string s = "");
+    error_info(std::string t, std::vector<std::pair<source_location, std::string>> l, std::string s = "");
+
+    std::string const& title() const noexcept;
+    std::string &      title()       noexcept;
+
+    std::vector<std::pair<source_location, std::string>> const& locations() const noexcept;
+    void add_locations(source_location loc, std::string msg) noexcept;
+
+    std::string const& suffix() const noexcept;
+    std::string &      suffix()       noexcept;
+};
+
+template<typename ... Ts>
+error_info make_error_info(
+    std::string title, source_location loc, std::string msg, Ts&& ... tail);
+
+std::string format_error(const std::string& errkind, const error_info& err);
+std::string format_error(const error_info& err);
+
+template<typename ... Ts>
+std::string format_error(std::string title,
+                         source_location loc, std::string msg, Ts&& ... tail);
+
+std::ostream& operator<<(std::ostream& os, const error_info& e);
+}
+

Member Functions +#

Constructor (title, loc, msg, suffix) +#

Constructs error_info with specified title, location information loc, message msg, and optional suffix.

suffix defaults to empty.

Constructor (title, [{loc, msg}, ...], suffix) +#

Constructs error_info with specified title, an array of location-message pairs [{loc, msg}, ...], and optional suffix.

suffix defaults to empty.

std::string title() +#

Returns the title of the error message.

std::vector<std::pair<source_location, std::string>> locations() +#

Returns the list of locations where errors occurred along with their respective messages.

Multiple locations can be specified.

std::string suffix() +#

Returns the suffix message to display at the end, providing hints or additional information.

Non-Member Functions +#

make_error_info +#

template<typename ... Ts>
+error_info make_error_info(
+    std::string title, source_location loc, std::string msg, Ts&& ... tail);
+

Creates a new error_info.

Must be followed by a msg related to source_location or basic_value.

Overloads are added in value.hpp when passing toml::basic_value instead of source_location.

Possible to pass suffix at the end.

format_error +#

Formats error_info as follows:

{title}
+ --> {locations().at(0).first.file_name()}
+   |
+ 1 | {locations().at(0).first.line()}
+   |         ^-- {locations().at(0).second}
+   |
+ 2 | {locations().at(1).first.line()}
+   |         ^-- {locations().at(1).second}
+{suffix}
+

If file names differ between two source_location, the file name is displayed again.

std::string format_error(const std::string& errkind, const error_info& err);
+std::string format_error(const error_info& err);
+

Formats error_info.

If errkind is not provided, a red-bold [error] prefix is added before title.

If errkind is provided (including an empty string), it replaces [error].

namespace toml
+{
+template<typename ... Ts>
+std::string format_error(std::string title,
+                         source_location loc, std::string msg, Ts&& ... tail);
+} // toml
+

Returns a formatted string using format_error for error_info created with make_error_info.

Overloads are added in value.hpp when passing toml::basic_value instead of source_location.

Stream Operator +#

std::ostream& operator<<(std::ostream& os, const error_info& e);
+

Calls format_error(e) and outputs it.

Related +#

\ No newline at end of file diff --git a/docs/reference/exception/index.html b/docs/reference/exception/index.html new file mode 100644 index 00000000..f726c988 --- /dev/null +++ b/docs/reference/exception/index.html @@ -0,0 +1,29 @@ +exception.hpp | toml11 + +
exception.hpp +

exception.hpp +#

toml::exception +#

Base class for exception types defined in toml11.

namespace toml
+{
+struct exception : public std::exception
+{
+  public:
+    virtual ~exception() noexcept override = default;
+    virtual const char* what() const noexcept override {return "";}
+};
+} // toml
+

Member Functions +#

Destructor +#

virtual ~exception() noexcept override = default;
+

Override when derived.

what +#

virtual const char* what() const noexcept override {return "";}
+

Returns the error message. Override when derived.

\ No newline at end of file diff --git a/docs/reference/find/index.html b/docs/reference/find/index.html new file mode 100644 index 00000000..2cc700b6 --- /dev/null +++ b/docs/reference/find/index.html @@ -0,0 +1,114 @@ +find.hpp | toml11 + +
find.hpp +

find.hpp +#

This function searches for a value in a toml::value and performs type conversion if necessary.

toml::value can change the type it stores, and toml::find accommodates these types. +Technically, all functions use toml::basic_value<TC>. +However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. +In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.

toml::find +#

Overview +#

toml::find uses template arguments for the type you want to retrieve and function arguments for the key of the value you want to find.

template<typename T, typename TC, typename ... Keys>
+T find(const basic_value<TC>& v, Keys ... keys);
+

The supported types for T and the behavior of the conversion are the same as for toml::get.

If T is not specified, a toml::value will be returned.

Keys can be of type toml::value::key_type or std::size_t. +When multiple keys are provided, the function will search recursively through sub-tables or arrays. +If a toml::value::key_type is given, toml::value is interpreted as a toml::table; if a std::size_t is given, toml::value is interpreted as a toml::array.

TOML allows for bare keys as well as quoted keys (enclosed in " or '). Using a quoted key like "foo.bar" = "baz" means no sub-table is constructed, and the key is "foo.bar". To handle such patterns, toml11 does not split keys containing . and searches using the full string.

Consider the following TOML file:

[foo]
+[foo.bar]
+baz = "hoge"
+
+["foo.bar"]
+baz = "fuga"
+

The corresponding usage of toml::find is shown below:

const auto input = toml::parse("input.toml");
+const auto baz1 = toml::find<std::string>(input, "foo", "bar", "baz"); // hoge
+const auto baz2 = toml::find<std::string>(input, "foo.bar",    "baz"); // fuga
+

cf. toml.io/en/v1.0.0#keys

toml::find(value, key) +#

Searches for key in value as if value were a toml::table, then converts using toml::get.

template<typename T, typename TC>
+/* Equivalent to toml::get<T>(const value&) */ find(
+    const basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&) */ find(
+    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&&) */ find(
+    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
+

If T is not specified, the function returns a toml::value without conversion.

template<typename TC>
+basic_value<TC> const& find(
+    basic_value<TC> const& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename TC>
+basic_value<TC>& find(
+    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
+
+template<typename TC>
+basic_value<TC> find(
+    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
+

Exceptions +#

If the toml::value does not contain a table, a toml::type_error is thrown.

If the contained table does not have the specified element, a std::out_of_range is thrown.

If the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.

toml::find(value, index) +#

Accesses the index-th element of value as if value were a toml::array, then converts using toml::get.

template<typename T, typename TC>
+/* Equivalent to toml::get<T>(const value&) */ find(
+    const basic_value<TC>& v, const std::size_t index);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&) */ find(
+    basic_value<TC>& v, const std::size_t index);
+
+template<typename T, typename TC>
+/* Equivalent to toml::get<T>(value&&) */ find(
+    basic_value<TC>&& v, const std::size_t index);
+

If T is not specified, the function returns a toml::value without conversion.

template<typename TC>
+basic_value<TC> const& find(basic_value<TC> const& v, const std::size_t ky);
+
+template<typename TC>
+basic_value<TC>& find(basic_value<TC>& v, const std::size_t ky);
+
+template<typename TC>
+basic_value<TC> find(basic_value<TC>&& v, const std::size_t ky);
+

Exceptions +#

If the toml::value does not contain an array, a toml::type_error is thrown.

If the contained array does not have the specified number of elements, a std::out_of_range is thrown.

If the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.

toml::find(value, keys...) +#

template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
+/* Equivalent to toml::get<T>(const value&) */ find(
+    const basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
+
+template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
+/* Equivalent to toml::get<T>(value&) */ find(
+    basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
+
+template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
+/* Equivalent to toml::get<T>(value&&) */ find(
+    basic_value<TC>&& v, const K1& k1, const K2& k2, const Ks& ... ks);
+

This function calls toml::find recursively.

The failure conditions and the exceptions thrown are the same as those for toml::find.

toml::find_or(value, key, fallback) +#

template<typename T, typename TC, typename Key>
+T find_or(const basic_value<TC>& v, const Key& key, T&& opt);
+

The find_or function takes a default value to avoid throwing an exception when the search fails.

The default value must be of the same type as the return type T. Therefore, unlike toml::find<T>, find_or infers the type T.

You can specify T explicitly with find_or<T>, but this always returns a new value. To obtain a reference, do not specify T.

When T is basic_value +#

template<typename TC, typename K>
+basic_value<TC>& find_or(basic_value<TC>& v, const K& key, basic_value<TC>& opt) noexcept
+
+template<typename TC, typename K>
+basic_value<TC> const& find_or(const basic_value<TC>& v, const K& key, const basic_value<TC>& opt) noexcept
+

Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.

If the value is not found, the default value is returned.

When T is toml::value::{some_type} +#

template<typename T, typename TC, typename K>
+T& find_or(basic_value<TC>& v, const K& key, T& opt) noexcept
+
+template<typename T, typename TC, typename K>
+T const& find_or(const basic_value<TC>& v, const K& key, const T& opt) noexcept
+

Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.

If the value is not found or if a different type is stored, the default value is returned.

When T is const char* +#

template<typename T, typename TC, typename K>
+T find_or(const basic_value<TC>& v, const K& key, T opt)
+

Searches for the corresponding value and returns it as a std::string.

Since the fallback is constructed from const char* to std::string, a reference cannot be returned in case of failure.

When T is any other type +#

template<typename T, typename TC, typename K>
+T find_or(const basic_value<TC>& v, const K& key, T opt);
+

Searches for the corresponding value and converts it to T before returning it.

Because conversion is performed, a reference cannot be returned.

When multiple keys are provided +#

template<typename Value, typename K1, typename K2, typename K3, typename ... Ks>
+auto find_or(Value&& v, const K1& k1, const K2& k2, K3&& k3, Ks&& ... keys) noexcept
+ -> decltype(find_or(v, k2, std::forward<K3>(k3), std::forward<Ks>(keys)...))
+

Interprets the last element in the key sequence as the default value and applies find_or recursively.

If the inferred type of T is toml::value or toml::value::some_type, a reference can be returned.

If T is explicitly specified, conversion is always performed.

Related +#

\ No newline at end of file diff --git a/docs/reference/format/index.html b/docs/reference/format/index.html new file mode 100644 index 00000000..e5422ab3 --- /dev/null +++ b/docs/reference/format/index.html @@ -0,0 +1,228 @@ +format.hpp | toml11 + +
format.hpp +

format.hpp +#

Defines structures and enumerations related to formatting information for toml::value.

indent_char +#

An enumeration representing the indentation character choice.

enum class indent_char : std::uint8_t
+{
+    space, // use space
+    tab,   // use tab
+    none   // no indent
+};
+std::ostream& operator<<(std::ostream& os, const indent_char& c);
+std::string to_string(const indent_char);
+

Choosing none means no indentation is used, regardless of the value in super tables.

If both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.

boolean_format_info +#

Formatting information for boolean.

struct boolean_format_info {};
+
+bool operator==(const boolean_format_info&, const boolean_format_info&) noexcept;
+bool operator!=(const boolean_format_info&, const boolean_format_info&) noexcept;
+

There is only one way to format boolean, so no configurable values are provided.

integer_format +#

enum class integer_format : std::uint8_t
+{
+    dec = 0,
+    bin = 1,
+    oct = 2,
+    hex = 3,
+};
+std::ostream& operator<<(std::ostream& os, const integer_format f);
+std::string to_string(const integer_format);
+

Specifies the radix of an integer.

integer_format_info +#

struct integer_format_info
+{
+    integer_format fmt    = integer_format::dec;
+    bool        uppercase = true; // use uppercase letters
+    std::size_t width     = 0;  // minimal width (may exceed)
+    std::size_t spacer    = 0;  // position of `_` (if 0, no spacer)
+    std::string suffix    = ""; // _suffix (library extension)
+};
+
+bool operator==(const integer_format_info&, const integer_format_info&) noexcept;
+bool operator!=(const integer_format_info&, const integer_format_info&) noexcept;
+

Member Variables +#

integer_format fmt +#

Specifies the radix.

bool uppercase +#

Uses uppercase letters when formatted as a hexadecimal integer.

std::size_t width +#

Specifies the minimum width. The formatted value may exceed this width.

For values smaller than this width, if integer_format::dec, no effect. Otherwise, leading zeros are added.

std::size_t spacer +#

Specifies the width at which underscores _ are inserted.

  • If 3, formatted as 1_234_567.
  • If 4, formatted as 0xdead_beef.
  • If 0, no underscores are inserted.

Irregular widths are not allowed.

std::string suffix +#

Stores the suffix when spec::ext_num_suffix of toml11 extension is true.

cf. spec.hpp

floating_format +#

enum class floating_format : std::uint8_t
+{
+    defaultfloat = 0,
+    fixed        = 1, // does not include exponential part
+    scientific   = 2, // always include exponential part
+    hex          = 3  // hexfloat extension
+};
+std::ostream& operator<<(std::ostream& os, const floating_format f);
+std::string to_string(const floating_format);
+

Specifies the formatting style for floating numbers. +Corresponds to std::defaultfloat, std::fixed, std::scientific, std::hexfloat.

hexfloat is available only if toml::spec::ext_hex_float is true.

cf. spec.hpp

floating_format_info +#

struct floating_format_info
+{
+    floating_format fmt = floating_format::defaultfloat;
+    std::size_t prec  = 0;        // precision (if 0, use the default)
+    std::string suffix = "";      // 1.0e+2_suffix (library extension)
+};
+
+bool operator==(const floating_format_info&, const floating_format_info&) noexcept;
+bool operator!=(const floating_format_info&, const floating_format_info&) noexcept;
+

Member Variables +#

floating_format fmt +#

Specifies the formatting style.

std::size_t prec +#

Specifies the precision after the decimal point.

std::string suffix +#

Stores the suffix when spec::ext_num_suffix of toml11 extension is true.

cf. spec.hpp

string_format +#

enum class string_format : std::uint8_t
+{
+    basic             = 0,
+    literal           = 1,
+    multiline_basic   = 2,
+    multiline_literal = 3
+};
+std::ostream& operator<<(std::ostream& os, const string_format f);
+std::string to_string(const string_format);
+

Specifies the formatting style for strings.

string_format_info +#

struct string_format_info
+{
+    string_format fmt = string_format::basic;
+    bool start_with_newline    = false;
+};
+
+bool operator==(const string_format_info&, const string_format_info&) noexcept;
+bool operator!=(const string_format_info&, const string_format_info&) noexcept;
+

Member Variables +#

string_format fmt +#

Specifies the formatting information for strings.

bool start_with_newline +#

For multiline_basic or multiline_literal, specifies whether to include a newline after the initial """ or '''.

datetime_delimiter_kind +#

enum class datetime_delimiter_kind : std::uint8_t
+{
+    upper_T = 0,
+    lower_t = 1,
+    space   = 2,
+};
+std::ostream& operator<<(std::ostream& os, const datetime_delimiter_kind d);
+std::string to_string(const datetime_delimiter_kind);
+

Specifies the delimiter used between date and time in datetime.

Possible options include T, t, and a space .

offset_datetime_format_info +#

struct offset_datetime_format_info
+{
+    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
+    bool has_seconds = true;
+    std::size_t subsecond_precision = 6; // [us]
+};
+
+bool operator==(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
+bool operator!=(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
+

Member Variables +#

datetime_delimiter_kind delimiter +#

Specifies the delimiter to use.

bool has_seconds +#

Specifies whether to omit seconds.

std::size_t subsecond_precision +#

Specifies how many digits to output for subseconds.

local_datetime_format_info +#

struct local_datetime_format_info
+{
+    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
+    bool has_seconds = true;
+    std::size_t subsecond_precision = 6; // [us]
+};
+
+bool operator==(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
+bool operator!=(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
+

Member Variables +#

datetime_delimiter_kind delimiter +#

Specifies the delimiter to use.

bool has_seconds +#

Specifies whether to omit seconds.

std::size_t subsecond_precision +#

Specifies how many digits to output for subseconds.

local_date_format_info +#

struct local_date_format_info
+{
+    // nothing, for now
+};
+
+bool operator==(const local_date_format_info&, const local_date_format_info&) noexcept;
+bool operator!=(const local_date_format_info&, const local_date_format_info&) noexcept;
+

No formatting parameters are specified for local_date.

local_time_format_info +#

struct local_time_format_info
+{
+    bool has_seconds = true;
+    std::size_t subsecond_precision = 6; // [us]
+};
+
+bool operator==(const local_time_format_info&, const local_time_format_info&) noexcept;
+bool operator!=(const local_time_format_info&, const local_time_format_info&) noexcept;
+

Member Variables +#

bool has_seconds +#

Specifies whether to omit seconds.

std::size_t subsecond_precision +#

Specifies how many digits to output for subseconds.

array_format +#

enum class array_format : std::uint8_t
+{
+    default_format  = 0,
+    oneline         = 1,
+    multiline       = 2,
+    array_of_tables = 3 // [[format.in.this.way]]
+};
+
+std::ostream& operator<<(std::ostream& os, const array_format f);
+std::string to_string(const array_format);
+
  • default_format
    • Automatically selects the appropriate format. Longer arrays may span multiple lines.
  • oneline
    • Formats all elements in a single line.
  • multiline
    • Outputs each element on its own line.
  • array_of_tables
    • Formats in the [[array.of.tables]] style. Cannot contain elements other than table.

array_format_info +#

struct array_format_info
+{
+    array_format fmt            = array_format::default_format;
+    indent_char  indent_type    = indent_char::space;
+    std::int32_t body_indent    = 4; // indent in case of multiline
+    std::int32_t closing_indent = 0; // indent of `]`
+};
+
+bool operator==(const array_format_info&, const array_format_info&) noexcept;
+bool operator!=(const array_format_info&, const array_format_info&) noexcept;
+

Member Variables +#

array_format fmt +#

Specifies the format style.

indent_char indent_type +#

Selects the type of character used for indentation.

std::int32_t body_indent +#

Specifies the number of characters to indent before each element in array_format::multiline.

std::int32_t closing_indent +#

Specifies the number of characters to indent before the closing bracket ] in array_format::multiline.

table_format +#

enum class table_format : std::uint8_t
+{
+    multiline         = 0, // [foo] \n bar = "baz"
+    oneline           = 1, // foo = {bar = "baz"}
+    dotted            = 2, // foo.bar = "baz"
+    multiline_oneline = 3, // foo = { \n bar = "baz" \n }
+    implicit          = 4  // [x] defined by [x.y.z]. skip in serializer.
+};
+
+std::ostream& operator<<(std::ostream& os, const table_format f);
+std::string to_string(const table_format);
+
  • multiline
    • Formats as a multiline normal table.
  • oneline
    • Formats as an inline table.
  • dotted
    • Formats in the form of a.b.c = "d".
  • multiline_oneline
    • Formats as a multiline inline table with line breaks. Available from TOML v1.1.0 onwards.
    • cf. spec.hpp
  • implicit
    • Skips implicit definitions like [x.y.z.w], leaving [x], [x.y], [x.y.z] as implicit.

According to TOML syntax, dotted table can have sub-tables:

[fruit]
+apple.color = "red"
+apple.taste.sweet = true
+
+# [fruit.apple]        # INVALID
+# [fruit.apple.taste]  # INVALID
+[fruit.apple.texture]  # you can add sub-tables
+smooth = true
+

toml11 currently does not support this format. +Sub-tables under a dotted table would all be dotted, and tables are forced into inline table format.

table_format_info +#

struct table_format_info
+{
+    table_format fmt = table_format::multiline;
+    indent_char  indent_type    = indent_char::space;
+    std::int32_t body_indent    = 0; // indent of values
+    std::int32_t name_indent    = 0; // indent of [table]
+    std::int32_t closing_indent = 0; // in case of {inline-table}
+};
+
+bool operator==(const table_format_info&, const table_format_info&) noexcept;
+bool operator!=(const table_format_info&, const table_format_info&) noexcept;
+

Member Variables +#

table_format fmt +#

Specifies the formatting method.

indent_char indent_type +#

Specifies the character used for indentation.

std::int32_t body_indent +#

Specifies the width of indentation before keys.

The indentation width of the super table is not added.

std::int32_t name_indent +#

Specifies the indentation of keys in [table] format.

The indentation width of the super table is not added.

std::int32_t closing_indent +#

Specifies the indentation width before the closing brace } in the case of multiline_oneline.

\ No newline at end of file diff --git a/docs/reference/from/index.html b/docs/reference/from/index.html new file mode 100644 index 00000000..771cf7fb --- /dev/null +++ b/docs/reference/from/index.html @@ -0,0 +1,48 @@ +from.hpp | toml11 + +
from.hpp +

from.hpp +#

Defines a struct used for conversion from toml::value in toml::get and toml::find.

You can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from<T>.

This file does not provide specific implementations. Please specialize this struct when using.

namespace toml
+{
+
+template<typename T>
+struct from;
+
+} // toml
+

Example +#

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+#include <toml11/from.hpp>
+
+namespace toml
+{
+template<>
+struct from<extlib::foo>
+{
+    template<typename TC>
+    static extlib::foo from_toml(const toml::basic_value<TC>& v)
+    {
+        return extlib::foo{toml::find<int>(v, "a"), toml::find<std::string>(v, "b")};
+    }
+};
+} // toml
+

Related +#

\ No newline at end of file diff --git a/docs/reference/get/index.html b/docs/reference/get/index.html new file mode 100644 index 00000000..f568c621 --- /dev/null +++ b/docs/reference/get/index.html @@ -0,0 +1,122 @@ +get.hpp | toml11 + +
get.hpp +

get.hpp +#

These are functions for extracting values from toml::value and performing type conversions if necessary.

toml::value can change the type it stores, and toml::get accommodates these types. +Technically, all functions use toml::basic_value<TC>. +However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. +In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.

toml::get<T> +#

Overview +#

Generally, toml::get behaves as follows: +You specify T as in toml::get<int>(v).

template<typename T, typename TC>
+T get(const basic_value<TC>& v);
+

However, depending on the type of T, toml::get can exhibit different behaviors.

The types of T can be categorized into:

  1. Types that do not require conversion
  2. Types that require conversion

Detailed conditions and the specific types supported are discussed later.

Types that Do Not Require Conversion +#

No conversion is needed if the provided toml::value is already storing the desired type. For instance, since toml::value::integer_type is an alias for std::int64_t, toml::get<std::int64_t>(v) requires no conversion. In this case, toml::get retrieves the integer value from toml::value and returns a reference to it.

If the provided toml::value is a mutable reference (&), the returned value is also a mutable reference (&). If it is an immutable reference (const&), the returned value will also be an immutable reference (const&). Returning a mutable reference allows you to overwrite the value stored in toml::value through that reference.

Types that Require Conversion +#

Types other than the ones mentioned above require conversion. For example, since toml::value::integer_type is an alias for std::int64_t, toml::get<std::size_t>(toml::value&) requires conversion. In this case, toml::get retrieves the integer value from toml::value and casts it to return the appropriate type.

toml11 supports not only simple casts but also complex type conversions like converting from toml::array to std::tuple<int, double, std::string>, std::array<double, 4>, or from toml::table to std::map<std::string, int>. For specifics, refer to the subsequent sections.

When Conversion Fails +#

Sometimes, the expected type conversion cannot be performed. For example, applying toml::get<int>(v) to a toml::value that holds a table.

In such cases, an attempt to convert to the type most similar to the desired type (in this case, int using as_integer) fails, and a toml::type_error is thrown.

When parsing from a file, an error message similar to the following is output:

terminate called after throwing an instance of 'toml::type_error'
+  what():  toml::value::as_integer(): bad_cast to integer
+ --> input.toml
+   |
+ 6 | [fruit]
+   | ^^^^^^^-- the actual type is table
+

When T is identical to toml::value +#

template<typename T, typename TC>
+T& get(basic_value<TC>& v);
+
+template<typename T, typename TC>
+T const& get(const basic_value<TC>& v);
+
+template<typename T, typename TC>
+T get(basic_value<TC>&& v);
+

Condition:

  • std::is_same<T, basic_value<TC>> is satisfied.

Since this involves retrieving toml::value from toml::value, no conversion is performed, and the value is returned as is. This exists solely to generalize the implementation of other functions.

This does not fail.

When T is one of toml::value::{some_type} +#

template<typename T, typename TC>
+T& get(basic_value<TC>& v);
+
+template<typename T, typename TC>
+T const& get(const basic_value<TC>& v);
+
+template<typename T, typename TC>
+T get(basic_value<TC>&& v);
+

Condition:

  • T must be the same as one of the types that toml::value can store (e.g., toml::value::boolean_type).

If toml::value is storing a type that matches the specified type in toml::get<T>, such as toml::value::integer_type, no type conversion is needed, and a reference can be returned.

If a different type is stored, a toml::type_error is thrown.

When T is basic_value<OtherTC> with a different TypeConfig +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is not toml::basic_value<TC>.
  • T is toml::basic_value<OtherTC>.

When a basic_value that can store different types is specified, conversion is performed.

Since type conversion occurs, the returned value is a new value and not a reference.

This does not fail (except in cases like memory exhaustion).

When T is an integer type +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_integral<T> is satisfied
  • T is not bool
  • T is not toml::value::integer_type

The function assumes that toml::value holds an integer_type, retrieves its value, converts it to T, and returns it.

If a type other than toml::value::integer_type is stored, a toml::type_error is thrown.

When T is a floating-point type +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_floating_point<T> is satisfied
  • T is not toml::value::floating_type

The function assumes that toml::value holds a floating_type, retrieves its value, converts it to T, and returns it.

If a type other than toml::value::floating_type is stored, a toml::type_error is thrown.

When T is std::string_view +#

This is only available in C++17 and later.

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_same<std::string_view, T> is satisfied

The function assumes that toml::value holds a string_type, retrieves its value, constructs a std::string_view from it, and returns it.

If a type other than toml::value::string_type is stored, a toml::type_error is thrown.

When T is std::chrono::duration +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::chrono::duration<Rep, Period>

The function assumes that toml::value holds a local_time, retrieves its value, converts it to std::chrono::duration, and returns it.

If a type other than toml::value::local_time is stored, a toml::type_error is thrown.

When T is std::chrono::system_clock::time_point +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • std::is_same<T, std::chrono::system_clock::time_point> is satisfied

If the toml::value holds a local_date, local_datetime, or offset_datetime, this function retrieves the value and converts it to std::chrono::system_clock::time_point, returning the result.

If the value is of a type other than local_date, local_datetime, or offset_datetime, a toml::type_error is thrown.

When T is array-like +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • T has an iterator
  • T has a value_type
  • T supports push_back(x)
  • T is not toml::value::array_type
  • T is not std::string
  • T is not std::string_view
  • T is not map-like
  • T does not have from_toml() member function
  • toml::from<T> is not defined
  • A constructor from toml::basic_value<TC> is not defined

This includes types like std::vector<int> and std::deque<std::string>.

If the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.

If the value is of a type other than toml::value::array_type, a toml::type_error is thrown.

When T is std::array +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

条件:

  • T is std::array<U, N>

If the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.

If the value is of a type other than toml::value::array_type, a toml::type_error is thrown.

If the array held by toml::value does not contain enough elements, a std::out_of_range is thrown.

When T is std::forward_list +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::forward_list<U>

If the toml::value holds an array, this function retrieves the value and converts it to a std::forward_list, returning the result.

If the value is of a type other than toml::value::array_type, a toml::type_error is thrown.

When T is std::pair +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::pair<T1, T2>

If the toml::value holds an array, this function retrieves the value and converts it to std::pair<T1, T2>, returning the result.

The first and second elements are recursively converted.

If the value is of a type other than basic_value::array_type, a toml::type_error is thrown.

If the array held by toml::value does not contain exactly 2 elements, a std::out_of_range is thrown.

When T is std::tuple +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • T is std::tuple<T1, T2, ... TN>

If the toml::value holds an array, this function retrieves the value and converts it to std::tuple<T1, T2, ...TN>, returning the result.

Each element is recursively converted.

If the value is of a type other than basic_value::array_type, a toml::type_error is thrown.

If the array held by toml::value does not contain exactly std::tuple_size<T>::value elements, a std::out_of_range is thrown.

When T is map-like +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • T has an iterator
  • T has a key_type
  • T has a value_type
  • T has a mapped_type
  • T is not toml::value::table_type
  • T does not have a from_toml() member function
  • toml::from<T> is not defined
  • A constructor from toml::basic_value<TC> is not defined

This includes types like std::map<std::string, int> and std::unordered_map<std::string, float>.

If the toml::value holds a table, this function retrieves the value and converts it to T, returning the result.

Elements are recursively converted.

If the value is of a type other than basic_value::table_type, a toml::type_error is thrown.

When T is a user-defined type with a specialization of toml::from<T> +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Condition:

  • A specialization of toml::from<T> is defined

If a specialization of toml::from for T is defined, it is used for type conversion.

Ensure this does not conflict with individually supported types (std::array, std::pair, std::tuple etc).

When T is a user-defined type with a from_toml member function +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • toml::from<T> is not defined
  • T has from_toml() member function

If T has a from_toml(toml::basic_value<TC>) member function, it is used for type conversion.

If toml::from<T> is defined, it takes precedence.

When T is a user-defined type with a constructor that takes toml::basic_value<TC> +#

template<typename T, typename TC>
+T get(basic_value<TC>& v);
+

Conditions:

  • toml::from<T> is not defined
  • T does not have from_toml() member function
  • T has a constructor that takes toml::basic_value<TC>

If T has a constructor that takes toml::basic_value<TC>, it is used for type conversion.

If toml::from<T> or T::from_toml is defined, they take precedence.

toml::get_or<T> +#

get_or takes a default value for use when the conversion fails, avoiding exceptions.

The default value must be of the same type as the target type T. +Therefore, unlike toml::get<T>, T can be inferred in get_or.

When T is basic_value<TC> +#

template<typename TC>
+basic_value<TC> const& get_or(const basic_value<TC>& v, const basic_value<TC>& opt)
+
+template<typename TC>
+basic_value<TC> & get_or(basic_value<TC>& v, basic_value<TC>& opt)
+
+template<typename TC>
+basic_value<TC> get_or(basic_value<TC>&& v, basic_value<TC>&& opt)
+

Since the conversion target is the same toml::value, this never fails.

It exists solely to generalize the implementation of other functions.

When T is basic_value<TC>::{some_type} +#

template<typename T, typename TC>
+T const& get_or(const basic_value<TC>& v, const T& opt) noexcept
+
+template<typename T, typename TC>
+T & get_or(basic_value<TC>& v, T& opt) noexcept
+
+template<typename T, typename TC>     
+T get_or(basic_value<TC>&& v, T&& opt) noexcept
+

Performs the same conversion as toml::get<T>. If it fails, the second argument is returned.

When T is const char* +#

template<typename TC>
+typename basic_value<TC>::string_type
+get_or(const basic_value<TC>& v,
+       const typename basic_value<TC>::string_type::value_type* opt);
+

When const char* is passed, the conversion target is interpreted as std::string.

When T is something else +#

template<typename TC>
+typename std::remove_cv<typename std::remove_reference<T>::type>::type
+get_or(const basic_value<TC>& v, T&& opt);
+

Performs the same conversion as toml::get<T>. If it fails, the second argument is returned.

Related +#

\ No newline at end of file diff --git a/docs/reference/index.html b/docs/reference/index.html new file mode 100644 index 00000000..165c45f9 --- /dev/null +++ b/docs/reference/index.html @@ -0,0 +1,47 @@ +reference | toml11 + +
reference +

Reference +#

Here, we explain the effects of the classes and functions provided by toml11.

Directory Structure +#

toml.hpp and toml_fwd.hpp reside in ${TOML11_INCLUDE_DIR}. +Other files are located in ${TOML11_INCLUDE_DIR}/toml11.

If you want to #include each feature’s file individually, use #include <toml11/color.hpp>. +If you want to include all at once, use #include <toml.hpp>.

color.hpp +#

Defines functions related to colorizing error messages.

comments.hpp +#

Defines types preserve_comment and discard_comment for preserving comments.

conversion.hpp +#

Defines macros to automatically convert toml::value and user-defined classes.

datetime.hpp +#

Defines classes for datetime information.

error_info.hpp +#

Defines a class for error information.

exception.hpp +#

Defines the base class for exceptions used in toml11, toml::exception.

find.hpp +#

Defines the toml::find function to search for and convert values.

format.hpp +#

Defines classes for formatting information of values.

from.hpp +#

Forward declaration of the from<T> type for converting user-defined types.

get.hpp +#

Defines the toml::get<T> function to retrieve and convert values from toml::value.

into.hpp +#

Forward declaration of the into<T> type for converting user-defined types.

literal.hpp +#

Defines the operator"" _toml literal.

ordered_map.hpp +#

Defines toml::ordered_map.

parser.hpp +#

Defines functions to parse files or strings.

result.hpp +#

Defines the result<T, E> type for representing success or failure values used as return types in other functions.

serializer.hpp +#

Defines the toml::format function and toml::serializer used for serialization.

source_location.hpp +#

Defines the source_location type used for error information, pointing to a location within a file.

spec.hpp +#

Defines the toml::semantic_version and toml::spec types to control TOML language version information and feature flags.

toml.hpp +#

toml.hpp includes all other headers, making all toml11 features available.

toml_fwd.hpp +#

toml_fwd.hpp contains forward declarations of structs defined in toml11 and macro definitions.

types.hpp +#

Defines the toml::type_config type for controlling the types held by toml::value.

value.hpp +#

Defines the toml::value type.

value_t.hpp +#

Defines the toml::value_t enumeration.

version.hpp +#

Defines the version information for toml11.

visit.hpp +#

Defines the toml::visit function to apply functions to the values held by toml::value.

Notes +#

Functions not explicitly mentioned here (mostly those defined under namespace toml::detail or namespace toml::cxx) are available by inspecting the source code but are not guaranteed to maintain their interface across future versions (including patch version updates).

\ No newline at end of file diff --git a/docs/reference/index.xml b/docs/reference/index.xml new file mode 100644 index 00000000..82f6bb26 --- /dev/null +++ b/docs/reference/index.xml @@ -0,0 +1,61 @@ +reference on toml11https://toruniina.github.io/toml11/docs/reference/Recent content in reference on toml11Hugoencolor.hpphttps://toruniina.github.io/toml11/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/color/color.hpp # In color.hpp, functions related to colorizing error messages are defined. +Colors are specified using ANSI escape code. In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read. +Macros # TOML11_COLORIZE_ERROR_MESSAGE # If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default. +If not defined, colors are not applied by default. You need to specify them using toml::color::enable().comments.hpphttps://toruniina.github.io/toml11/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/comments/comments.hpp # In comments.hpp, comment containers are provided. +toml::preserve_comments # preserve_comments is a container that preserves comments. +It has all the member functions of std::vector&lt;std::string&gt;. +Comments are preserved as std::string. If the comment does not start with #, it will be prefixed with # during output. However, this prefixing is not done when adding comments to the container. +Spaces are not automatically added, so if you want a space immediately after #, either start the comment with a space or pass the comment with #.conversion.hpphttps://toruniina.github.io/toml11/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/conversion/ conversion.hpp # Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find. +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) Example # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) Related # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/datetime/datetime.hpp # Defines a class that stores date and time information used in TOML&rsquo;s datetime. +enum class month_t # Enum class to specify months. +Due to its relationship with std::tm, local_date treats January as 0. To avoid confusion, month_t allows specification of months by their names. +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # local_date holds a date.error_info.hpphttps://toruniina.github.io/toml11/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/error_info/error_info.hpp # In error_info.hpp, definitions for error_info and functions to format it are provided. +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename .exception.hpphttps://toruniina.github.io/toml11/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/exception/exception.hpp # toml::exception # Base class for exception types defined in toml11. +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml Member Functions # Destructor # virtual ~exception() noexcept override = default; Override when derived. +what # virtual const char* what() const noexcept override {return &#34;&#34;;} Returns the error message.find.hpphttps://toruniina.github.io/toml11/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/find/find.hpp # This function searches for a value in a toml::value and performs type conversion if necessary. +toml::value can change the type it stores, and toml::find accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.format.hpphttps://toruniina.github.io/toml11/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/format/format.hpp # Defines structures and enumerations related to formatting information for toml::value. +indent_char # An enumeration representing the indentation character choice. +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); Choosing none means no indentation is used, regardless of the value in super tables. +If both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.from.hpphttps://toruniina.github.io/toml11/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/from/from.hpp # Defines a struct used for conversion from toml::value in toml::get and toml::find. +You can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct from; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.get.hpphttps://toruniina.github.io/toml11/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/get/get.hpp # These are functions for extracting values from toml::value and performing type conversions if necessary. +toml::value can change the type it stores, and toml::get accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::get&lt;T&gt; # Overview # Generally, toml::get behaves as follows: You specify T as in toml::get&lt;int&gt;(v).into.hpphttps://toruniina.github.io/toml11/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/into/into.hpp # Defines a struct used for conversion from user-defined types into toml::value constructors. +You can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct into; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.literal.hpphttps://toruniina.github.io/toml11/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/literal/literal.hpp # In literal.hpp, the _toml literal is defined. +The _toml literal parses string literals into toml::value. +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // Available in C++20 and later } // toml_literals } // literals } // toml Free Functions # operator&quot;&quot; _toml(const char*) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); Converts a string literal into a toml::value by parsing it.ordered_map.hpphttps://toruniina.github.io/toml11/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/ordered_map/ordered_map.hpp # Defines toml::ordered_map, which is used to maintain the order of values in a file. +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order. +As a linear container, searches require O(n) time relative to the number of elements.parser.hpphttps://toruniina.github.io/toml11/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/parser/parser.hpp # Defines functions for parsing files or strings and the exceptions they use. +While parse throws an exception on failure, try_parse returns error information. +parse # Parses the content of a given file and returns a toml::basic_value. +In case of failure, toml::syntax_error is thrown. +The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec. +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } Parses the content of the given filename.result.hpphttps://toruniina.github.io/toml11/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/result/result.hpp # result.hpp defines the result type, which can hold either a success value or a failure value. +This is used as the return type for toml::try_parse, which does not throw exceptions. +success # A type that holds a success value. +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } Member Types # using value_type = T; The type of the success value.serializer.hpphttps://toruniina.github.io/toml11/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/serializer/serializer.hpp # format # Serializes the data. +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } If there&rsquo;s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.source_location.hpphttps://toruniina.github.io/toml11/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/source_location/source_location.hpp # source_location.hpp defines a class representing a specific area within a TOML file. +This class is used to represent problematic areas in error messages. +toml::source_location # source_location is a class representing a specific area within a TOML file. +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/spec/spec.hpp # spec.hpp defines classes for specifying the version of TOML. +toml::semantic_version # semantic_version is a class that stores version information. +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml Member Functions # Constructor # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a semantic_version instance with the specified major, minor, and patch version numbers.toml_fwd.hpphttps://toruniina.github.io/toml11/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions. +When only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time. +Since this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value&lt;toml::type_config&gt;::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value. This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.toml.hpphttps://toruniina.github.io/toml11/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml/toml.hpp # toml.hpp includes all other headers. +This allows access to all features of toml11. +This header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${toml11_include_dir}/toml11/.types.hpphttps://toruniina.github.io/toml11/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/types/types.hpp # This document defines classes that specifies type information. +type_config # type_config is a type that encapsulates parameters given to toml::basic_value. +When using different types within toml::basic_value&lt;T&gt;, you need to define and pass this type separately. All elements listed are required. +If you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float. +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static Member Functions # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); If you use a type as integer_type that cannot utilize standard stream operators, implement this function.value_t.hpphttps://toruniina.github.io/toml11/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value_t/value_t.hpp # value_t # value_t is used to handle the type information of toml::value. +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml Non-member Functions # Stream Operator # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); Outputs the string representation of the value_t to the stream.value.hpphttps://toruniina.github.io/toml11/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value/value.hpp # value.hpp defines basic_value. +toml::basic_value # basic_value is a class that stores TOML values. +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // Defined in types.hpp // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml Member Types # The following member types are defined.version.hpphttps://toruniina.github.io/toml11/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/version/version.hpp # In version.hpp, macros related to the version information of toml11 are defined. +Macros # TOML11_VERSION_MAJOR # The major version of toml11. +TOML11_VERSION_MINOR # The minor version of toml11. +TOML11_VERSION_PATCH # The patch version of toml11. +Function # license_notice # namespace toml { const char* license_notice() noexcept; } Returns the license notice. +Provided for convenience when redistributing without source code.visit.hpphttps://toruniina.github.io/toml11/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/visit/visit.hpp # In visit.hpp, toml::visit is defined. +toml::visit # Functions # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v); } toml::visit calls the overload of Visitor corresponding to the type held by basic_value&lt;TC&gt;, and returns the result. \ No newline at end of file diff --git a/docs/reference/into/index.html b/docs/reference/into/index.html new file mode 100644 index 00000000..b766374f --- /dev/null +++ b/docs/reference/into/index.html @@ -0,0 +1,50 @@ +into.hpp | toml11 + +
into.hpp +

into.hpp +#

Defines a struct used for conversion from user-defined types into toml::value constructors.

You can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into<T>.

This file does not provide specific implementations. Please specialize this struct when using.

namespace toml
+{
+
+template<typename T>
+struct into;
+
+} // toml
+

Example +#

namespace extlib
+{
+struct foo
+{
+    int a;
+    std::string b;
+};
+} // extlib
+
+#include <toml11/into.hpp>
+
+namespace toml
+{
+template<>
+struct into<extlib::foo>
+{
+    template<typename TC>
+    static toml::basic_value<TC> into_toml(const extlib::foo& f)
+    {
+        using value_type = toml::basic_value<TC>;
+        using table_type = typename value_type::table_type;
+        return value_type(table_type{{"a", f.a}, {"b", f.b}});
+    }
+};
+} // toml
+

Related +#

\ No newline at end of file diff --git a/docs/reference/literal/index.html b/docs/reference/literal/index.html new file mode 100644 index 00000000..18a37a54 --- /dev/null +++ b/docs/reference/literal/index.html @@ -0,0 +1,46 @@ +literal.hpp | toml11 + +
literal.hpp +

literal.hpp +#

In literal.hpp, the _toml literal is defined.

The _toml literal parses string literals into toml::value.

namespace toml
+{
+inline namespace literals
+{
+inline namespace toml_literals
+{
+toml::value operator"" _toml(const char* str, std::size_t len);
+toml::value operator"" _toml(const char8_t* str, std::size_t len); // Available in C++20 and later
+} // toml_literals
+} // literals
+} // toml
+

Free Functions +#

operator"" _toml(const char*) +#

toml::value operator"" _toml(const char* str, std::size_t len);
+

Converts a string literal into a toml::value by parsing it.

For typical TOML files, this performs equivalent parsing to toml::parse.

const auto v1 = "a = 'foo'"_toml; // v1: {a = 'foo'}
+

When dealing with multiline content, raw string literal is convenient.

const auto v1 = R"(
+    a = 42
+    b = "foo"
+)"_toml;
+

If the value is a standalone entity, it represents that value.

const auto v2 = "'foo'"_toml;     // v2: 'foo'
+

TOML allows keys consisting solely of numbers. When distinguishing between table definitions and arrays is ambiguous (e.g., [1]), table definitions take precedence.

To interpret as an array, use a trailing comma.

const auto v3 = "[1]"_toml;  // v3: {1 = {}}
+const auto v4 = "[1,]"_toml; // v4: [1,]
+

operator"" _toml(const char8_t*) +#

Defined when char8_t is available. Otherwise identical in functionality, differing only in argument type.

Example +#

#include <toml.hpp>
+int main()
+{
+    using namespace toml::literals::toml_literals;
+    const auto v = "a = \"foo\""_toml;
+    assert(v.at("a").as_string() == "foo");
+    return 0;
+}
+
\ No newline at end of file diff --git a/docs/reference/ordered_map/index.html b/docs/reference/ordered_map/index.html new file mode 100644 index 00000000..f4be0e0c --- /dev/null +++ b/docs/reference/ordered_map/index.html @@ -0,0 +1,139 @@ +ordered_map.hpp | toml11 + +
ordered_map.hpp +

ordered_map.hpp +#

Defines toml::ordered_map, which is used to maintain the order of values in a file.

class ordered_map +#

namespace toml
+{
+template<typename Key, typename Val, typename Cmp = std::equal_to<Key>,
+         typename Allocator = std::allocator<std::pair<Key, Val>>>
+class ordered_map;
+}
+

The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order.

As a linear container, searches require O(n) time relative to the number of elements. +Use this when search operations are infrequent and maintaining the order of values is important.

Non-Member Types +#

namespace toml
+{
+struct ordered_type_config;
+
+using ordered_value = basic_value<ordered_type_config>;
+using ordered_table = typename ordered_value::table_type;
+using ordered_array = typename ordered_value::array_type;
+}
+

Use these in place of toml::type_config and toml::value.

Since toml::parse defaults to using type_config, specify

const auto input = toml::parse<toml::ordered_type_config>("input.toml");
+

when parsing.

Member Types +#

using key_type       = Key;
+using mapped_type    = Val;
+using value_type     = std::pair<Key, Val>;
+using key_compare    = Cmp;
+using allocator_type = Allocator;
+
+using container_type  = std::vector<value_type, Allocator>;
+using reference       = typename container_type::reference;
+using pointer         = typename container_type::pointer;
+using const_reference = typename container_type::const_reference;
+using const_pointer   = typename container_type::const_pointer;
+using iterator        = typename container_type::iterator;
+using const_iterator  = typename container_type::const_iterator;
+using size_type       = typename container_type::size_type;
+using difference_type = typename container_type::difference_type;
+

Member Functions +#

Constructors +#

ordered_map() = default;
+

Constructs an empty ordered_map.

Constructors (Comparator, Allocator) +#

explicit ordered_map(const Cmp& cmp, const Allocator& alloc = Allocator());
+explicit ordered_map(const Allocator& alloc);
+

Constructs an ordered_map with a specified comparator for key comparison and an allocator for memory management.

Copy and Move Constructors +#

ordered_map(const ordered_map&) = default;
+ordered_map(ordered_map&&)      = default;
+
+ordered_map(const ordered_map& other, const Allocator& alloc);
+ordered_map(ordered_map&& other, const Allocator& alloc);
+

Constructs an ordered_map by copying or moving the contents from another ordered_map. +An allocator can also be specified for memory management.

Constructors (Iterator) +#

template<typename InputIterator>
+ordered_map(InputIterator first, InputIterator last, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
+template<typename InputIterator>
+ordered_map(InputIterator first, InputIterator last, const Allocator& alloc = Allocator());
+

Constructs an ordered_map with a range represented by iterators. +The order of the elements follows the order of the iterators.

Constructors (std::initializer_list) +#

ordered_map(std::initializer_list<value_type> v, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
+ordered_map(std::initializer_list<value_type> v, const Allocator& alloc);
+

Initializes the ordered_map using an initializer list.

Copy and Move Assignment Operators +#

ordered_map& operator=(const ordered_map&) = default;
+ordered_map& operator=(ordered_map&&)      = default;
+

Assigns the contents of another ordered_map to this one, using copy or move semantics.

Assignment Operator (std::initializer_list) +#

ordered_map& operator=(std::initializer_list<value_type> v);
+

Assigns the contents of an initializer list to the ordered_map.

Destructor +#

~ordered_map() = default;
+

Destroys the ordered_map.

begin(), end() +#

iterator       begin()        noexcept;
+iterator       end()          noexcept;
+const_iterator begin()  const noexcept;
+const_iterator end()    const noexcept;
+const_iterator cbegin() const noexcept;
+const_iterator cend()   const noexcept;
+

Returns iterators to the beginning and end of the container, allowing iteration over its contents in order.

empty() +#

bool empty() const noexcept;
+

Returns true if the ordered_map is empty, false otherwise.

size() +#

std::size_t size() const noexcept;
+

Returns the number of elements in the ordered_map.

max_size() +#

std::size_t max_size() const noexcept;
+

Returns the maximum number of elements the ordered_map can hold.

clear() +#

void clear();
+

Clears all elements from the ordered_map.

push_back(kv) +#

void push_back(const value_type&);
+void push_back(value_type&&);
+

Appends a key-value pair to the end of the ordered_map.

emplace_back(k, v) +#

void emplace_back(key_type, mapped_type);
+

Appends a key-value pair to the end of the ordered_map by constructing it in place.

pop_back() +#

void pop_back();
+

Removes the last element from the ordered_map.

insert(kv) +#

void insert(value_type);
+

Inserts a key-value pair at the end of the ordered_map.

emplace(k, v) +#

void emplace(key_type, mapped_type);
+

Inserts a key-value pair at the end of the ordered_map by constructing it in place.

count(k) +#

std::size_t count(const key_type&) const noexcept;
+

Returns the number of elements with the specified key. +Since duplicate keys are not allowed, this will return either 1 if the key exists or 0 if it does not.

contains(k) +#

bool contains(const key_type&) const noexcept;
+

Returns true if the ordered_map contains an element with the specified key, false otherwise.

find(k) +#

iterator       find(const key_type& key)       noexcept;
+const_iterator find(const key_type& key) const noexcept;
+

Finds an element with the specified key and returns an iterator to it. If the key is not found, returns end().

at(k) +#

mapped_type&       at(const key_type& k);
+mapped_type const& at(const key_type& k) const;
+

Finds an element with the specified key and returns a reference to its value. Throws std::out_of_range if the key is not found.

operator[](k) +#

mapped_type&       operator[](const key_type& k);
+mapped_type const& operator[](const key_type& k) const;
+

Finds an element with the specified key and returns a reference to its value. +If the key is not found, a new value is constructed and returned. +If the ordered_map is const, throws std::out_of_range instead.

key_comp() +#

key_compare key_comp() const;
+

Returns the comparator used for key comparison.

Notes +#

Key Modification +#

Since ordered_map uses std::pair<Key, Val> for value_type, it is possible to modify the key through an iterator. However, this practice is not recommended.

If you modify a key this way and it conflicts with an existing key, one of the conflicting keys will become unsearchable.

When using operator[], push_back, or insert, collisions with existing keys are detected.

Order Preservation Details +#

ordered_map maintains the order of keys, but this order preservation applies only to keys defined within the same table. Order across different tables is not maintained.

For example, the order in the following file will be preserved:

apple.type = "fruit"
+apple.skin = "thin"
+apple.color = "red"
+orange.type = "fruit"
+orange.skin = "thick"
+orange.color = "orange"
+

In contrast, the order in the following file will not be preserved:

apple.type = "fruit"
+orange.type = "fruit"
+
+apple.skin = "thin"
+orange.skin = "thick"
+
+apple.color = "red"
+orange.color = "orange"
+

ordered_map preserves the order of the apple and orange definitions at the root table level, and the order of type, skin, color within each apple and orange table.

\ No newline at end of file diff --git a/docs/reference/parser/index.html b/docs/reference/parser/index.html new file mode 100644 index 00000000..0a61c753 --- /dev/null +++ b/docs/reference/parser/index.html @@ -0,0 +1,179 @@ +parser.hpp | toml11 + +
parser.hpp +

parser.hpp +#

Defines functions for parsing files or strings and the exceptions they use.

While parse throws an exception on failure, try_parse returns error information.

parse +#

Parses the content of a given file and returns a toml::basic_value.

In case of failure, toml::syntax_error is thrown.

The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.

parse(std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(std::string fname,
+      spec s = spec::default_version());
+}
+

Parses the content of the given filename.

If reading the file fails, toml::file_io_error is thrown.

If parsing fails, toml::syntax_error is thrown.

parse(const char (&)[N] filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config, std::size_t N>
+basic_value<TC>
+parse(const char (&fname)[N],
+      spec s = spec::default_version());
+}
+

Parses the content of the given filename from a string literal.

If reading the file fails, toml::file_io_error is thrown.

If parsing fails, toml::syntax_error is thrown.

parse(std::filesystem::path, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(const std::filesystem::path& fpath,
+      spec s = spec::default_version());
+}
+

This is defined only if <filesystem> is available.

Parses the content of the file at the given file path.

If reading the file fails, toml::file_io_error is thrown.

If parsing fails, toml::syntax_error is thrown.

parse(std::istream&, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(std::istream& is,
+      std::string fname = "unknown file",
+      spec s = spec::default_version());
+}
+

Parses the content of the given std::istream&.

Open a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

The filename information is taken as the third argument. If the filename is not provided, it defaults to "unknown file".

parse(FILE*, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+parse(FILE* fp,
+      std::string filename,
+      spec s = spec::default_version());
+}
+

Parses the content of the file pointed to by FILE*.

Open a stream in binary mode by passing "rb" to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

If reading the file fails, file_io_error containing errno is thrown.

If parsing fails, syntax_error is thrown.

parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse(std::vector<unsigned char> content,
+      std::string filename,
+      spec s = spec::default_version());
+}
+

Parses the byte sequence as a TOML file.

If parsing fails, toml::syntax_error is thrown.

parse_str +#

parse_str(std::string, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+basic_value<TC>
+parse_str(std::string content,
+          spec s = spec::default_version(),
+          cxx::source_location loc = cxx::source_location::current());
+}
+

Parses a string as a TOML file.

In case of failure, toml::syntax_error is thrown.

The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.

You generally don’t need to manually set the third argument, cxx::source_location. +If std::source_location, std::experimental::source_location, or __builtin_FILE is available, +the location information where parse_str was called will be stored.

try_parse +#

Parses the contents of the given file and returns a toml::basic_value if successful, or a std::vector<toml::error_info> if it fails.

The type information of basic_value is specified by template, and the version of the TOML language is specified by toml::spec.

Unlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. +However, please note that exceptions thrown by the standard library will still propagate.

For instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.

try_parse(std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(std::string fname,
+          spec s = spec::default_version());
+}
+

Takes a file name and parses its content.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(const char (&)[N] filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config, std::size_t N>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(const char (&fname)[N],
+          spec s = spec::default_version());
+}
+

Takes a string literal as a file name and parses its content.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(std::filesystem::path, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(const std::filesystem::path& fpath,
+          spec s = spec::default_version());
+}
+

Takes a file path and parses its content.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(std::istream&, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(std::istream& is,
+          std::string fname = "unknown file",
+          spec s = spec::default_version());
+}
+

Takes a std::istream& and parses its content.

Open a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

The file name information is taken as the second argument. If a file name is not provided, it defaults to "unknown file".

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(FILE*, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(FILE* fp,
+          std::string filename,
+          spec s = spec::default_version());
+}
+

Takes a FILE* and parses its content.

Open a stream in binary mode by passing "rb" to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse(std::vector<unsigned char> content,
+          std::string filename,
+          spec s = spec::default_version());
+}
+

Takes a byte array and parses its content as a TOML file.

If parsing fails, a result holding the error type std::vector<error_info> is returned.

If successful, a result holding a basic_value is returned.

try_parse_str +#

try_parse_str(std::string, toml::spec) +#

namespace toml
+{
+template<typename TC = type_config>
+result<basic_value<TC>, std::vector<error_info>>
+try_parse_str(std::string content,
+              spec s = spec::default_version(),
+              cxx::source_location loc = cxx::source_location::current());
+}
+

Parses a string as a TOML file, returning a toml::basic_value if successful, or a std::vector<toml::error_info> if it fails.

Unlike parse_str, it does not throw syntax_error, but instead returns error information as the failure type of the result.

If std::source_location, std::experimental::source_location, or __builtin_FILE is available, it will record the location information.

Typically, you do not need to manually set the third argument cxx::source_location. If any of std::source_location, std::experimental::source_location, or __builtin_FILE are available, the information of the location where parse_str was called will be saved as the location information.

Unlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. However, please note that exceptions thrown by the standard library will still propagate.

For instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.

syntax_error +#

namespace toml
+{
+struct syntax_error final : public ::toml::exception
+{
+  public:
+    syntax_error(std::string what_arg, std::vector<error_info> err);
+    ~syntax_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+    std::vector<error_info> const& errors() const noexcept
+};
+}
+

An exception thrown when a syntax error is detected in TOML.

It is thrown by parse but not by try_parse.

file_io_error +#

namespace toml
+{
+struct file_io_error final : public ::toml::exception
+{
+  public:
+    file_io_error(const std::string& msg, const std::string& fname);
+    file_io_error(int errnum, const std::string& msg, const std::string& fname);
+    ~file_io_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+
+    bool has_errno() const noexcept;
+    int  get_errno() const noexcept;
+};
+}
+

An exception thrown when reading the contents of a file fails.

When using FILE* to read a file, errno is set.

has_errno +#

If std::ifstream fails, errno is not set.

In this case, has_errno returns false.

get_errno +#

Particularly when passing a FILE*, retrieves the value of errno.

If has_errno is false, it returns 0.

Related +#

\ No newline at end of file diff --git a/docs/reference/result/index.html b/docs/reference/result/index.html new file mode 100644 index 00000000..92c81eab --- /dev/null +++ b/docs/reference/result/index.html @@ -0,0 +1,272 @@ +result.hpp | toml11 + +
result.hpp +

result.hpp +#

result.hpp defines the result type, which can hold either a success value or a failure value.

This is used as the return type for toml::try_parse, which does not throw exceptions.

success +#

A type that holds a success value.

namespace toml
+{
+template<typename T>
+struct success
+{
+    using value_type = T;
+
+    explicit success(value_type v);
+
+    ~success() = default;
+    success(const success&) = default;
+    success(success&&)      = default;
+    success& operator=(const success&) = default;
+    success& operator=(success&&)      = default;
+
+    template<typename U>
+    explicit success(U&& v);
+    template<typename U>
+    explicit success(success<U> v);
+
+    value_type&       get()       noexcept;
+    value_type const& get() const noexcept;
+};
+
+template<typename T>
+success<typename std::decay<T>::type> ok(T&& v);
+template<std::size_t N>
+success<std::string> ok(const char (&literal)[N])
+}
+

Member Types +#

using value_type = T;
+

The type of the success value.

Member Functions +#

Constructor +#

explicit success(value_type v);
+

Constructs with a value_type argument.

template<typename U>
+explicit success(U&& v);
+

Constructs with another type that can be converted to value_type.

template<typename U>
+explicit success(success<U> v);
+

Constructs with another success type that can be converted to value_type.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

Non-Member Functions +#

ok(T) +#

template<typename T>
+success<typename std::decay<T>::type> ok(T&& v);
+template<std::size_t N>
+success<std::string> ok(const char (&literal)[N]);
+

Constructs and returns a success type from a success value.

Converts a string literal into std::string.

success<reference_wrapper<T>> +#

Specialization of success for when the success value is a reference.

namespace toml
+{
+template<typename T>
+struct success<std::reference_wrapper<T>>
+{
+    using value_type = T;
+
+    explicit success(std::reference_wrapper<value_type> v) noexcept;
+
+    value_type&       get()       noexcept;
+    value_type const& get() const noexcept;
+};
+}
+

Member Types +#

using value_type = T;
+

The type of the success value. It is T from std::reference_wrapper<T>, not the reference itself.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

failure +#

A type that holds a failure value.

namespace toml
+{
+template<typename T>
+struct failure
+{
+    using value_type = T;
+
+    explicit failure(value_type v);
+
+    ~failure() = default;
+    failure(const failure&) = default;
+    failure(failure&&)      = default;
+    failure& operator=(const failure&) = default;
+    failure& operator=(failure&&)      = default;
+
+    template<typename U>
+    explicit failure(U&& v);
+    template<typename U>
+    explicit failure(failure<U> v);
+
+    value_type&       get()       noexcept;
+    value_type const& get() const noexcept;
+};
+
+template<typename T>
+failure<typename std::decay<T>::type> err(T&& v);
+template<std::size_t N>
+failure<std::string> err(const char (&literal)[N]);
+}
+

Member Types +#

using value_type = T;
+

The type of the failure value.

Member Functions +#

Constructor +#

explicit failure(value_type v);
+

Constructs with a value_type argument.

template<typename U>
+explicit failure(U&& v);
+

Constructs with another type that can be converted to value_type.

template<typename U>
+explicit failure(failure<U> v);
+

Constructs with another failure type that can be converted to value_type.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

Non-Member Functions +#

err(T) +#

template<typename T>
+failure<typename std::decay<T>::type> err(T&& v);
+template<std::size_t N>
+failure<std::string> err(const char (&literal)[N]);
+

Constructs and returns a failure type from a failure value.

Converts a string literal into std::string.

failure<reference_wrapper<T>> +#

Specialization of failure for when the failure value is a reference.

namespace toml
+{
+template<typename T>
+struct failure<std::reference_wrapper<T>>
+{
+    using value_type = T;
+
+    explicit failure(std::reference_wrapper<value_type> v) noexcept;
+
+    value_type&       get()       noexcept {return value.get();}
+    value_type const& get() const noexcept {return value.get();}
+};
+}
+

Member Types +#

using value_type = T;
+

The type of the failure value. It is T from std::reference_wrapper<T>, not the reference itself.

get() +#

value_type&       get()       noexcept;
+value_type const& get() const noexcept;
+

Accesses the stored value.

result +#

A type that holds either a success value or a failure value.

namespace toml
+{
+template<typename T, typename E>
+struct result
+{
+    using success_type = success<T>;
+    using failure_type = failure<E>;
+    using value_type = typename success_type::value_type;
+    using error_type = typename failure_type::value_type;
+
+    result(success_type s);
+    result(failure_type f);
+
+    template<typename U>
+    result(success<U> s);
+    template<typename U>
+    result(failure<U> f);
+
+    result& operator=(success_type s);
+    result& operator=(failure_type f);
+
+    template<typename U>
+    result& operator=(success<U> s);
+    template<typename U>
+    result& operator=(failure<U> f);
+
+    ~result() noexcept;
+
+    result(const result& other);
+    result(result&& other);
+    result& operator=(const result& other);
+    result& operator=(result&& other);
+
+    template<typename U, typename F>
+    result(result<U, F> other);
+    template<typename U, typename F>
+    result& operator=(result<U, F> other);
+
+    bool is_ok()  const noexcept;
+    bool is_err() const noexcept;
+
+    explicit operator bool() const noexcept;
+
+    value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
+    value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
+
+    value_type&       unwrap_or(value_type& opt)             noexcept;
+    value_type const& unwrap_or(value_type const& opt) const noexcept;
+
+    error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
+    error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
+
+    value_type&       as_ok()       noexcept;
+    value_type const& as_ok() const noexcept;
+
+    error_type&       as_err()       noexcept;
+    error_type const& as_err() const noexcept;
+};
+}
+

Member Types +#

success_type +#

success<T>.

failure_type +#

failure<E>.

value_type +#

The type T of the success value, alias for success_type::value_type.

If T is std::reference_wrapper<U>, then it is U.

error_type +#

The type E of the failure value, alias for failure_type::value_type.

If E is std::reference_wrapper<F>, then it is F.

Member Functions +#

Constructor +#

result() = delete;
+

Cannot construct result type by default. Needs to be given either a success or failure type.

result(success_type s);
+result(failure_type f);
+

Constructs with a success_type or failure_type.

template<typename U>
+result(success<U> s);
+template<typename U>
+result(failure<U> f);
+

Constructs with a success<U> or failure<U> that is convertible to value_type or error_type.

template<typename U, typename F>
+result(result<U, F> other);
+template<typename U, typename F>
+result& operator=(result<U, F> other);
+

Constructs from or assigns to another result with convertible success or failure types.

Copy and Move Constructors +#

result(const result& other);
+result(result&& other);
+

Can be copy or move constructed.

operator= +#

result& operator=(const result& other);
+result& operator=(result&& other);
+

Can be copy or move assigned.

template<typename U>
+result& operator=(success<U> s);
+template<typename U>
+result& operator=(failure<U> f);
+

Can be assigned from convertible success or failure types.

is_ok() +#

bool is_ok()  const noexcept;
+

Returns true if it holds a success value, false otherwise.

is_err() +#

bool is_err() const noexcept;
+

Returns true if it holds a failure value, false otherwise.

operator bool() +#

explicit operator bool() const noexcept;
+

Returns true if it holds a success value, false otherwise.

unwrap() +#

value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
+value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
+

Returns the stored success value.

Throws toml::bad_result_access if it holds a failure value.

If std::source_location or equivalent compiler extension is available, the file name and line number where unwrap() occurred are included in the what() string.

unwrap_or() +#

value_type&       unwrap_or(value_type& opt)             noexcept;
+value_type const& unwrap_or(value_type const& opt) const noexcept;
+

Returns the stored success value if present, otherwise returns the provided default value.

unwrap_err() +#

error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
+error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
+

Returns the stored failure value.

Throws toml::bad_result_access if it holds a success value.

If std::source_location or equivalent compiler extension is available, the file name and line number where unwrap_err() occurred are included in the what() string.

as_ok() +#

value_type&       as_ok()       noexcept;
+value_type const& as_ok() const noexcept;
+

Returns the success value without checking.

Behavior is undefined if it holds a failure value.

as_err() +#

error_type&       as_err()       noexcept;
+error_type const& as_err() const noexcept;
+

Returns the failure value without checking.

Behavior is undefined if it holds a success value.

bad_result_access +#

An exception thrown when unwrap or unwrap_err fails in a result.

namespace toml
+{
+struct bad_result_access : public ::toml::exception
+{
+  public:
+    explicit bad_result_access(const std::string& what_arg);
+    virtual ~bad_result_access() noexcept override = default;
+    virtual const char* what() const noexcept override;
+  protected:
+    std::string what_;
+};
+}
+
\ No newline at end of file diff --git a/docs/reference/serializer/index.html b/docs/reference/serializer/index.html new file mode 100644 index 00000000..074906b5 --- /dev/null +++ b/docs/reference/serializer/index.html @@ -0,0 +1,44 @@ +serializer.hpp | toml11 + +
serializer.hpp +

serializer.hpp +#

format +#

Serializes the data.

namespace toml
+{
+template<typename TC>
+std::string format(const basic_value<TC>& v,
+                   const spec s = spec::default_version());
+template<typename TC>
+std::string format(const typename basic_value<TC>::key_type& k,
+                   const basic_value<TC>& v,
+                   const spec s = spec::default_version());
+template<typename TC>
+std::string format(const std::vector<typename basic_value<TC>::key_type>& ks,
+                   const basic_value<TC>& v,
+                   const spec s = spec::default_version());
+}
+

If there’s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.

format(v, spec) +#

Formats a toml::value according to its format information and the provided spec.

If it’s a table_type, it’s formatted as if it were the root table. Otherwise, only the value is formatted.

format(k, v, spec) +#

Formats a toml::value along with the given key.

v is interpreted as being defined under that key.

format([k,...], v, spec) +#

v is interpreted as being defined under those keys. +If multiple keys are provided, it’s interpreted as a recursively defined table.

serialization_error +#

Reports errors that occurred during serialization.

namespace toml
+{
+struct serialization_error final : public ::toml::exception
+{
+  public:
+    explicit serialization_error(std::string what_arg, source_location loc);
+    ~serialization_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+    source_location const& location() const noexcept;
+};
+}
+
\ No newline at end of file diff --git a/docs/reference/source_location/index.html b/docs/reference/source_location/index.html new file mode 100644 index 00000000..dd844be9 --- /dev/null +++ b/docs/reference/source_location/index.html @@ -0,0 +1,112 @@ +source_location.hpp | toml11 + +
source_location.hpp +

source_location.hpp +#

source_location.hpp defines a class representing a specific area within a TOML file.

This class is used to represent problematic areas in error messages.

toml::source_location +#

source_location is a class representing a specific area within a TOML file.

namespace toml
+{
+struct source_location
+{
+  public:
+
+    explicit source_location(/* implementation-defined */);
+    ~source_location() = default;
+    source_location(source_location const&) = default;
+    source_location(source_location &&)     = default;
+    source_location& operator=(source_location const&) = default;
+    source_location& operator=(source_location &&)     = default;
+
+    bool        is_ok()  const noexcept;
+    std::size_t length() const noexcept;
+
+    std::size_t first_line_number()   const noexcept;
+    std::size_t first_column_number() const noexcept;
+    std::size_t last_line_number()    const noexcept;
+    std::size_t last_column_number()  const noexcept;
+
+    std::string const& file_name()    const noexcept;
+
+    std::size_t num_lines()           const noexcept;
+
+    std::string const& first_line() const;
+    std::string const& last_line()  const;
+
+    std::vector<std::string> const& lines() const noexcept;
+};
+
+template<typename ... Ts>
+std::string format_location(const source_location& loc, const std::string& msg, const Ts& ... locs_and_msgs);
+} //toml
+

Member Functions +#

Constructor +#

explicit source_location(/* implementation-defined */);
+

toml::source_location can only be constructed via toml::parse or the _toml literal.

is_ok() +#

bool is_ok() const noexcept;
+

Returns true if the source_location holds a valid value, false otherwise.

The result of location() from toml::value constructed outside of toml::parse or _toml literals returns false for is_ok as it points to nothing.

length() +#

std::size_t length() const noexcept;
+

Returns the length of the area pointed to by the source_location.

Returns 0 if it does not hold a valid value.

first_line_number() +#

std::size_t first_line_number() const noexcept;
+

Returns the line number of the first line of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

first_column_number() +#

std::size_t first_column_number() const noexcept;
+

Returns the column number of the first column of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

last_line_number() +#

std::size_t last_line_number() const noexcept;
+

Returns the line number of the last line of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

last_column_number() +#

std::size_t last_column_number() const noexcept;
+

Returns the column number of the last column of the area pointed to by the source_location.

Returns 1 if it does not hold a valid value.

file_name() +#

std::string const& file_name() const noexcept;
+

Returns the file name containing the area pointed to by the source_location.

Returns "unknown file" if it does not hold a valid value.

num_lines() +#

std::size_t num_lines() const noexcept;
+

Returns the number of lines in the area pointed to by the source_location.

Returns 0 if it does not hold a valid value.

first_line() +#

std::string const& first_line() const;
+

Returns the first line of the area pointed to by the source_location.

Throws std::out_of_range if it does not hold a valid value.

last_line() +#

std::string const& last_line() const;
+

Returns the last line of the area pointed to by the source_location.

Throws std::out_of_range if it does not hold a valid value.

lines() +#

std::vector<std::string> const& lines() const noexcept;
+

Returns all lines in the area pointed to by the source_location.

Returns a reference to an empty std::vector if it does not hold a valid value.

Non-Member Functions +#

format_location +#

template<typename ... Ts>
+std::string format_location(const source_location& loc, const std::string& msg,
+                            const Ts& ... locs_and_msgs);
+

Formats the specified source_location and its associated message as follows:

 -> {filename.toml}
+   |
+ 1 | a = 42
+   |     ^-- {message}
+

If colorization is enabled, ANSI escape sequences will be added for coloring.

When multiple locs_and_msgs are provided, they must be in the order of const source_location& followed by const std::string&, and the next pair in the same order, and so on.

Example: Multiple source_location and std::string +#

When multiple source_location and std::string pairs are provided, they are formatted as follows:

source_location& loc0;
+source_location& loc1;
+source_location& loc2;
+
+std::string msg0;
+std::string msg1;
+std::string msg2;
+
+format_location(loc0, msg0,
+                loc1, msg1,
+                loc2, msg2);
+
 -> {filename0.toml}
+   |
+ 1 | a = 42
+   |     ^-- {message0}
+   |
+ -> {filename1.toml}
+   |
+ 2 | b = 3.14
+   |     ^-- {message1}
+   |
+ -> {filename2.toml}
+   |
+ 3 | c = "foo"
+   |     ^-- {message2}
+

Related +#

\ No newline at end of file diff --git a/docs/reference/spec/index.html b/docs/reference/spec/index.html new file mode 100644 index 00000000..bf96e271 --- /dev/null +++ b/docs/reference/spec/index.html @@ -0,0 +1,125 @@ +spec.hpp | toml11 + +
spec.hpp +

spec.hpp +#

spec.hpp defines classes for specifying the version of TOML.

toml::semantic_version +#

semantic_version is a class that stores version information.

namespace toml
+{
+struct semantic_version
+{
+    constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+
+    std::uint32_t major;
+    std::uint32_t minor;
+    std::uint32_t patch;
+};
+
+constexpr semantic_version
+make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept;
+
+constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
+
+std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
+} //toml
+

Member Functions +#

Constructor +#

constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+

Constructs a semantic_version instance with the specified major, minor, and patch version numbers.

Non-Member Functions +#

Comparison Operators +#

constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
+constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
+

Compares two semantic_version instances according to semantic versioning rules.

Stream Operator +#

std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
+

Outputs the version in the format {major}.{minor}.{patch}.

to_string +#

std::string to_string(const semantic_version& ver);
+

Converts the version to a string in the format {major}.{minor}.{patch}.

toml::spec +#

spec is a class that stores TOML version information.

struct spec
+{
+    constexpr static spec default_version() noexcept;
+
+    constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+
+    constexpr explicit spec(const semantic_version& semver) noexcept;
+
+    semantic_version version; // toml version
+
+    // diff from v1.0.0 -> v1.1.0
+    bool v1_1_0_allow_control_characters_in_comments;
+    bool v1_1_0_allow_newlines_in_inline_tables;
+    bool v1_1_0_allow_trailing_comma_in_inline_tables;
+    bool v1_1_0_allow_non_english_in_bare_keys;
+    bool v1_1_0_add_escape_sequence_e;
+    bool v1_1_0_add_escape_sequence_x;
+    bool v1_1_0_make_seconds_optional;
+
+    // library extensions
+    bool ext_hex_float;  // allow hex float
+    bool ext_num_suffix; // allow number suffix
+    bool ext_null_value; // allow null value
+};
+

Member Functions +#

Constructor +#

constexpr explicit spec(const semantic_version& semver) noexcept;
+

Constructs a spec with the specified TOML version.

Supports TOML v1.0.0 and TOML v1.1.0.

default_version() +#

constexpr static spec default_version() noexcept;
+

Constructs a spec with the default version.

Used as the default value for toml::parse and toml::format.

In toml11 v4.0.0, the value is v1.0.0.

v(major, minor, patch) +#

constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
+

Constructs a spec with the specified version.

Member Variables +#

Each flag is automatically set to true when the specified version includes the corresponding feature.

You can modify these flags to change the behavior of toml::parse and toml::format.

Some features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.

If they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.

As such, any features related to future versions should be considered unstable.

Example +#

auto spec = toml::spec::v(1, 0, 0);
+// Allow newlines in inline tables in addition to v1.0.0 features.
+// Other v1.1.0 features are not enabled.
+spec.v1_1_0_allow_newlines_in_inline_tables = true;
+
+auto input = toml::parse("input_file.toml", spec);
+

v1_1_0_allow_control_characters_in_comments +#

bool v1_1_0_allow_control_characters_in_comments;
+

Allows most control characters in comments.

Added in TOML v1.1.0.

v1_1_0_allow_newlines_in_inline_tables +#

bool v1_1_0_allow_newlines_in_inline_tables;
+

Allows newlines in inline tables.

Added in TOML v1.1.0.

v1_1_0_allow_trailing_comma_in_inline_tables +#

bool v1_1_0_allow_trailing_comma_in_inline_tables;
+

Allows trailing commas in inline tables.

Added in TOML v1.1.0.

v1_1_0_add_escape_sequence_e +#

bool v1_1_0_add_escape_sequence_e;
+

Allows \e to represent the ESC character.

Added in TOML v1.1.0.

v1_1_0_add_escape_sequence_x +#

bool v1_1_0_add_escape_sequence_x;
+

Allows \xHH to represent a single byte character.

Added in TOML v1.1.0.

v1_1_0_make_seconds_optional +#

bool v1_1_0_make_seconds_optional;
+

Makes the seconds component in time optional.

Unspecified seconds default to 0.

Added in TOML v1.1.0.

ext_hex_float +#

bool ext_hex_float;
+

This is a language extension specific to toml11.

It is initialized to false regardless of the specified version. +You must explicitly set it to true if you want to use it.

Allows hexadecimal representation of floating-point numbers.

The hexadecimal representation conforms to the printf format specifier %a/%A.

hexf = 0xC0FFEEp-10
+

toml::format will format using hexadecimal notation only if the passed toml::spec has ext_hex_float set to true. +If the format specifier indicates hex but the toml::spec passed to toml::format has ext_hex_float set to false, the hexadecimal specification is ignored, and the number is output in decimal notation with maximum precision.

ext_num_suffix +#

bool ext_num_suffix;
+

This is a language extension specific to toml11.

It is initialized to false regardless of the specified version. +You must explicitly set it to true if you want to use it.

Allows the addition of suffixes to decimal integers and floating-point numbers. This does not apply to hexadecimal, octal, or binary notations.

There must be an _ separator between the number and the suffix.

The suffix cannot start with a digit to avoid confusion with the numeric part.

distance = 10_m   # valid
+distance = 10_2m  # invalid
+distance = 10_2_m # valid
+

The suffix is stored in the format information as std::string suffix. +The _ separating the number from the suffix is not included in the suffix.

toml::value distance = toml::find(input, "distance");
+assert(distance.as_integer_fmt().suffix == std::string("m"));
+

toml::format will format the value with the suffix only if the passed toml::spec has ext_num_suffix set to true.

The suffix follows the grammar defined as:

non-digit-graph = ALPHA / non-ascii
+graph           = ALPHA / DIGIT / non-ascii
+suffix          = _ non-digit-graph *( graph / ( _ graph ) )
+

ext_null_value +#

bool ext_null_value;
+

This is a language extension specific to toml11.

Allows the use of null as a value.

A toml::value specified as null will have no value, and is_empty() will return true.

toml::format will format it as null only if the passed toml::spec has ext_null_value set to true. +Otherwise, toml::format will terminate with an error.

\ No newline at end of file diff --git a/docs/reference/toml/index.html b/docs/reference/toml/index.html new file mode 100644 index 00000000..b8be64df --- /dev/null +++ b/docs/reference/toml/index.html @@ -0,0 +1,15 @@ +toml.hpp | toml11 + +
toml.hpp +

toml.hpp +#

toml.hpp includes all other headers.

This allows access to all features of toml11.

This header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, +while other header files are located under ${toml11_include_dir}/toml11/.

\ No newline at end of file diff --git a/docs/reference/toml_fwd/index.html b/docs/reference/toml_fwd/index.html new file mode 100644 index 00000000..757f4e7c --- /dev/null +++ b/docs/reference/toml_fwd/index.html @@ -0,0 +1,14 @@ +toml_fwd.hpp | toml11 + +
toml_fwd.hpp +

toml_fwd.hpp +#

toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions.

When only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time.

Since this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value<toml::type_config>::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value.

This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.

\ No newline at end of file diff --git a/docs/reference/types/index.html b/docs/reference/types/index.html new file mode 100644 index 00000000..78eb6710 --- /dev/null +++ b/docs/reference/types/index.html @@ -0,0 +1,101 @@ +types.hpp | toml11 + +
types.hpp +

types.hpp +#

This document defines classes that specifies type information.

type_config +#

type_config is a type that encapsulates parameters given to toml::basic_value.

When using different types within toml::basic_value<T>, you need to define and pass this type separately. +All elements listed are required.

If you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float.

namespace toml
+{
+struct type_config
+{
+    using comment_type  = preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = std::unordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
+
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex);
+};
+
+using value = basic_value<type_config>;
+using table = typename value::table_type;
+using array = typename value::array_type;
+
+} // toml
+

static Member Functions +#

parse_int(str, src, base) +#

static result<integer_type, error_info>
+parse_int(const std::string& str, const source_location src, const std::uint8_t base);
+

If you use a type as integer_type that cannot utilize standard stream operators, implement this function. +Otherwise, use read_int described later.

The str parameter receives a string with prefixes, leading zeros, and underscores removed.

The src parameter receives a source_location pointing to where the string was defined.

The base parameter receives one of 10, 2, 8, or 16.

parse_float(str, src, is_hex) +#

static result<floating_type, error_info>
+parse_float(const std::string& str, const source_location src, const bool is_hex);
+

If you use a type as floating_type that cannot utilize standard stream operators, implement this function. +Otherwise, use read_float described later.

The str parameter receives a string with prefixes, leading zeros, and underscores removed.

The src parameter receives a source_location pointing to where the string was defined.

The is_hex parameter indicates whether the format is hexfloat. If you don’t use the hexfloat extension, you don’t need to implement this.

For details on the hexfloat extension, refer to spec.hpp.

Non-member Functions +#

read_int +#

template<typename T>
+result<T, error_info>
+read_int(const std::string& str, const source_location src, const std::uint8_t base);
+

This is the default function used. It parses using std::istringstream.

If operator>> and manipulators like std::hex, and std::numeric_limits<T> are defined (such as for boost::multiprecision), you can use this without modifications.

read_float +#

template<typename T>
+result<T, error_info>
+read_float(const std::string& str, const source_location src, const bool is_hex);
+

This is the default function used. It parses decimals using std::istringstream and hexfloats using sscanf().

It supports double and float.

For other types, if operator>> is defined and hex is not used, you can use this function.

ordered_type_config +#

ordered_type_config is a variation of toml::type_config where the table type is replaced with toml::ordered_map. +Additionally, it defines the toml::ordered_value alias.

Other than these changes, it is identical to type_config.

namespace toml
+{
+struct ordered_type_config
+{
+    using comment_type  = preserve_comments;
+
+    using boolean_type  = bool;
+    using integer_type  = std::int64_t;
+    using floating_type = double;
+    using string_type   = std::string;
+
+    template<typename T>
+    using array_type = std::vector<T>;
+    template<typename K, typename T>
+    using table_type = ordered_map<K, T>;
+
+    static result<integer_type, error_info>
+    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
+    {
+        return read_int<integer_type>(str, src, base);
+    }
+    static result<floating_type, error_info>
+    parse_float(const std::string& str, const source_location src, const bool is_hex)
+    {
+        return read_float<floating_type>(str, src, is_hex);
+    }
+};
+
+using ordered_value = basic_value<ordered_type_config>;
+using ordered_table = typename ordered_value::table_type;
+using ordered_array = typename ordered_value::array_type;
+
+} // toml
+
\ No newline at end of file diff --git a/docs/reference/value/index.html b/docs/reference/value/index.html new file mode 100644 index 00000000..25370735 --- /dev/null +++ b/docs/reference/value/index.html @@ -0,0 +1,400 @@ +value.hpp | toml11 + +
value.hpp +

value.hpp +#

value.hpp defines basic_value.

toml::basic_value +#

basic_value is a class that stores TOML values.

namespace toml
+{
+template <class TypeConfig>
+class basic_value;
+
+// Defined in types.hpp
+// using value = basic_value<type_config>;
+// using table = typename basic_value<type_config>::table_type;
+// using array = typename basic_value<type_config>::array_type;
+
+template<typename TC>
+bool operator==(const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator!=(const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator< (const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator<=(const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator> (const basic_value<TC>&, const basic_value<TC>&);
+template<typename TC>
+bool operator>=(const basic_value<TC>&, const basic_value<TC>&);
+} //toml
+

Member Types +#

The following member types are defined.

You can modify the member types using TypeConfig.

See also: types.hpp

NameDefinition
char_typetypename TypeConfig::char_type
key_typetypename TypeConfig::string_type
value_typebasic_value<TypeConfig>
boolean_typetypename TypeConfig::boolean_type
integer_typetypename TypeConfig::integer_type
floating_typetypename TypeConfig::floating_type
string_typetypename TypeConfig::string_type
local_time_typetoml::local_time
local_date_typetoml::local_date
local_datetime_typetoml::local_datetime
offset_datetime_typetoml::offset_datetime
array_typetypename TypeConfig::template array_type<value_type>
table_typetypename TypeConfig::template table_type<key_type, value_type>
comment_typetypename TypeConfig::comment_type

Member Functions +#

Default Constructor +#

basic_value() noexcept
+

Constructs an empty toml::value.

The constructed toml::value will be empty.

Copy and Move Constructors +#

basic_value(const basic_value& v)
+basic_value(basic_value&& v)
+

Copies or moves all information including values, format information, comments, and file regions.

Copy and Move Constructors with Comments +#

basic_value(basic_value v, std::vector<std::string> com)
+

Copies or moves the object while overwriting comments.

Conversion Constructors +#

template<typename TI>
+basic_value(basic_value<TI> other)
+template<typename TI>
+basic_value(basic_value<TI> other, std::vector<std::string> com)
+

Copies or moves from a basic_value with a different type_config.

Constructor (boolean) +#

basic_value(boolean_type x)
+basic_value(boolean_type x, boolean_format_info fmt)
+basic_value(boolean_type x, std::vector<std::string> com)
+basic_value(boolean_type x, boolean_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a bool, its format information, and comments.

Constructor (integer) +#

template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x)
+template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x, integer_format_info fmt)
+template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* std::is_integral<T> is true */>
+basic_value(T x, integer_format_info fmt, std::vector<std::string> com)
+

Constructs an object with an integer, its format information, and comments.

Constructor (floating) +#

template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x)
+template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x, floating_format_info fmt)
+template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* std::is_floating_point<T> is true */>
+basic_value(T x, floating_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a floating point number, its format information, and comments.

Constructor (string) +#

basic_value(string_type x)
+basic_value(string_type x, string_format_info fmt)
+basic_value(string_type x, std::vector<std::string> com)
+basic_value(string_type x, string_format_info fmt, std::vector<std::string> com)
+
+basic_value(const string_type::value_type* x)
+basic_value(const string_type::value_type* x, string_format_info fmt)
+basic_value(const string_type::value_type* x, std::vector<std::string> com)
+basic_value(const string_type::value_type* x, string_format_info fmt, std::vector<std::string> com)
+
+// C++17以降
+basic_value(string_view_type x)
+basic_value(string_view_type x, string_format_info fmt)
+basic_value(string_view_type x, std::vector<std::string> com)
+basic_value(string_view_type x, string_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a string, its format information, and comments.

string_view_type shares the same value_type and traits_type as string_type.

Constructor (local_date) +#

basic_value(local_date_type x)
+basic_value(local_date_type x, local_date_format_info fmt)
+basic_value(local_date_type x, std::vector<std::string> com)
+basic_value(local_date_type x, local_date_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a local_date_type, its format information, and comments.

Constructor (local_time) +#

basic_value(local_time_type x)
+basic_value(local_time_type x, local_time_format_info fmt)
+basic_value(local_time_type x, std::vector<std::string> com)
+basic_value(local_time_type x, local_time_format_info fmt, std::vector<std::string> com)
+
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x)
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt)
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x, std::vector<std::string> com)
+template<typename Rep, typename Period>
+basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a local_time_type, its format information, and comments.

For std::chrono::duration, constructs as a time span from 00:00:00.

Constructor (local_datetime) +#

basic_value(local_datetime_type x)
+basic_value(local_datetime_type x, local_date_format_info fmt)
+basic_value(local_datetime_type x, std::vector<std::string> com)
+basic_value(local_datetime_type x, local_date_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a local_datetime_type, its format information, and comments.

Constructor (offset_datetime) +#

basic_value(offset_datetime_type x)
+basic_value(offset_datetime_type x, offset_date_format_info fmt)
+basic_value(offset_datetime_type x, std::vector<std::string> com)
+basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector<std::string> com)
+
+basic_value(std::chrono::system_clock::time_point x)
+basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt)
+basic_value(std::chrono::system_clock::time_point x, std::vector<std::string> com)
+basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector<std::string> com)
+

Constructs an object with an offset_datetime_type, its format information, and comments.

For std::chrono::system_clock::time_point, constructs for the pointed time.

Constructor (array) +#

basic_value(array_type x)
+basic_value(array_type x, integer_format_info fmt)
+basic_value(array_type x, std::vector<std::string> com)
+basic_value(array_type x, integer_format_info fmt, std::vector<std::string> com)
+
+template<typename T, /* T is array-like */>
+basic_value(T x)
+template<typename T, /* T is array-like */>
+basic_value(T x, array_format_info fmt)
+template<typename T, /* T is array-like */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* T is array-like */>
+basic_value(T x, array_format_info fmt, std::vector<std::string> com)
+

Constructs an object with an array, its format information, and comments.

array-like types must meet the following criteria:

  • Has T::iterator.
  • Has T::value_type.
  • Does not have T::key_type.
  • Does not have T::mapped_type.
  • Is not std::string.
  • Is not std::string_view (since C++17).

Constructor (table) +#

basic_value(table_type x)
+basic_value(table_type x, integer_format_info fmt)
+basic_value(table_type x, std::vector<std::string> com)
+basic_value(table_type x, integer_format_info fmt, std::vector<std::string> com)
+
+template<typename T, /* T is table-like */>
+basic_value(T x)
+template<typename T, /* T is table-like */>
+basic_value(T x, table_format_info fmt)
+template<typename T, /* T is table-like */>
+basic_value(T x, std::vector<std::string> com)
+template<typename T, /* T is table-like */>
+basic_value(T x, table_format_info fmt, std::vector<std::string> com)
+

Constructs an object with a table, its format information, and comments.

table-like types must meet the following criteria:

  • Has T::iterator.
  • Has T::value_type.
  • Has T::key_type.
  • Has T::mapped_type.

Constructor (user-defined) +#

template<typename T /* toml::into<T> is defined */>
+basic_value(const T& ud);
+
+template<typename T /* toml::into<T> is defined */>
+basic_value(const T& ud, std::vector<std::string> com);
+
+template<typename T /* toml::into<T> is not defined, but T{}.into_toml() exists */>
+basic_value(const T& ud);
+
+template<typename T /* toml::into<T> is not defined, but T{}.into_toml() exists */>
+basic_value(const T& ud, std::vector<std::string> com);
+

If toml::into<T> is defined, constructs from the result of toml::into<T>(ud).

If toml::into<T> is not defined but T has a into_toml() member function, constructs from the result of ud.into_toml().


operator=(basic_value) +#

basic_value& operator=(const basic_value& v)
+basic_value& operator=(basic_value&& v)
+template<typename TI>
+basic_value& operator=(basic_value<TI> other)
+

Assigns the right-hand side basic_value to the current object.

operator=(T) +#

template<typename T>
+basic_value& operator=(T x)
+

Assigns a value corresponding to T.

The contents pointed to by source_location are discarded.

If the object already holds a value of the same type, the original format information is retained.


is<T>() +#

bool is<T>() const noexcept
+

Requirements +#

T must be an exact TOML type, meaning it corresponds to one of the toml::value::xxx_type.

Return Value +#

Returns true if the stored type matches T, otherwise returns false.


is(toml::value_t) +#

bool is(toml::value_t t) const noexcept
+

Return Value +#

Returns true if the tag of the stored type matches t, otherwise returns false.


is_xxx() +#

bool is_boolean()         const noexcept;
+bool is_integer()         const noexcept;
+bool is_floating()        const noexcept;
+bool is_string()          const noexcept;
+bool is_offset_datetime() const noexcept;
+bool is_local_datetime()  const noexcept;
+bool is_local_date()      const noexcept;
+bool is_local_time()      const noexcept;
+bool is_array()           const noexcept;
+bool is_table()           const noexcept;
+

Return Value +#

Returns true if the stored type matches the corresponding type, otherwise returns false.


is_empty() +#

bool is_empty()   const noexcept;
+

Return Value +#

Returns true if the object is default constructed and no value is assigned, otherwise returns false.

is_array_of_tables() +#

bool is_array_of_tables() const noexcept;
+

Return Value +#

Returns true if the stored type is an array that is not empty and all elements are tables, otherwise returns false.


type() +#

toml::value_t type() const noexcept
+

Return Value +#

Returns the tag corresponding to the stored type.


as_xxx() +#

boolean_type         const& as_boolean        () const;
+integer_type         const& as_integer        () const;
+floating_type        const& as_floating       () const;
+string_type          const& as_string         () const;
+offset_datetime_type const& as_offset_datetime() const;
+local_datetime_type  const& as_local_datetime () const;
+local_date_type      const& as_local_date     () const;
+local_time_type      const& as_local_time     () const;
+array_type           const& as_array          () const;
+table_type           const& as_table          () const;
+
+boolean_type        & as_boolean        ();
+integer_type        & as_integer        ();
+floating_type       & as_floating       ();
+string_type         & as_string         ();
+offset_datetime_type& as_offset_datetime();
+local_datetime_type & as_local_datetime ();
+local_date_type     & as_local_date     ();
+local_time_type     & as_local_time     ();
+array_type          & as_array          ();
+table_type          & as_table          ();
+

Return Value +#

Returns a reference to the value of the specified type.

Exception +#

Throws toml::type_error if the stored value’s type does not match the specified type.


as_xxx(std::nothrow) +#

Invoke with a std::nothrow object.

boolean_type         const& as_boolean        (const std::nothrow_t&) const noexcept;
+integer_type         const& as_integer        (const std::nothrow_t&) const noexcept;
+floating_type        const& as_floating       (const std::nothrow_t&) const noexcept;
+string_type          const& as_string         (const std::nothrow_t&) const noexcept;
+offset_datetime_type const& as_offset_datetime(const std::nothrow_t&) const noexcept;
+local_datetime_type  const& as_local_datetime (const std::nothrow_t&) const noexcept;
+local_date_type      const& as_local_date     (const std::nothrow_t&) const noexcept;
+local_time_type      const& as_local_time     (const std::nothrow_t&) const noexcept;
+array_type           const& as_array          (const std::nothrow_t&) const noexcept;
+table_type           const& as_table          (const std::nothrow_t&) const noexcept;
+
+boolean_type        & as_boolean        (const std::nothrow_t&) noexcept;
+integer_type        & as_integer        (const std::nothrow_t&) noexcept;
+floating_type       & as_floating       (const std::nothrow_t&) noexcept;
+string_type         & as_string         (const std::nothrow_t&) noexcept;
+offset_datetime_type& as_offset_datetime(const std::nothrow_t&) noexcept;
+local_datetime_type & as_local_datetime (const std::nothrow_t&) noexcept;
+local_date_type     & as_local_date     (const std::nothrow_t&) noexcept;
+local_time_type     & as_local_time     (const std::nothrow_t&) noexcept;
+array_type          & as_array          (const std::nothrow_t&) noexcept;
+table_type          & as_table          (const std::nothrow_t&) noexcept;
+

Return Value +#

Returns a reference to the value of the specified type.

Note +#

If the type of the stored value does not match the specified type, the behavior is undefined.


as_xxx_fmt() +#

Accesses format information.

boolean_format_info        & as_boolean_fmt        ();
+integer_format_info        & as_integer_fmt        ();
+floating_format_info       & as_floating_fmt       ();
+string_format_info         & as_string_fmt         ();
+offset_datetime_format_info& as_offset_datetime_fmt();
+local_datetime_format_info & as_local_datetime_fmt ();
+local_date_format_info     & as_local_date_fmt     ();
+local_time_format_info     & as_local_time_fmt     ();
+array_format_info          & as_array_fmt          ();
+table_format_info          & as_table_fmt          ();
+
+boolean_format_info         const& as_boolean_fmt        () const;
+integer_format_info         const& as_integer_fmt        () const;
+floating_format_info        const& as_floating_fmt       () const;
+string_format_info          const& as_string_fmt         () const;
+offset_datetime_format_info const& as_offset_datetime_fmt() const;
+local_datetime_format_info  const& as_local_datetime_fmt () const;
+local_date_format_info      const& as_local_date_fmt     () const;
+local_time_format_info      const& as_local_time_fmt     () const;
+array_format_info           const& as_array_fmt          () const;
+table_format_info           const& as_table_fmt          () const;
+

Return Value +#

Returns a reference to the structure holding the format information for the specified type.

Exception +#

Throws toml::type_error if the stored value’s type does not match the specified type.


as_xxx_fmt(std::nothrow) +#

Invoke with a std::nothrow object.

boolean_format_info        & as_boolean_fmt        (const std::nothrow_t&) noexcept;
+integer_format_info        & as_integer_fmt        (const std::nothrow_t&) noexcept;
+floating_format_info       & as_floating_fmt       (const std::nothrow_t&) noexcept;
+string_format_info         & as_string_fmt         (const std::nothrow_t&) noexcept;
+offset_datetime_format_info& as_offset_datetime_fmt(const std::nothrow_t&) noexcept;
+local_datetime_format_info & as_local_datetime_fmt (const std::nothrow_t&) noexcept;
+local_date_format_info     & as_local_date_fmt     (const std::nothrow_t&) noexcept;
+local_time_format_info     & as_local_time_fmt     (const std::nothrow_t&) noexcept;
+array_format_info          & as_array_fmt          (const std::nothrow_t&) noexcept;
+table_format_info          & as_table_fmt          (const std::nothrow_t&) noexcept;
+
+boolean_format_info         const& as_boolean_fmt        (const std::nothrow_t&) const noexcept;
+integer_format_info         const& as_integer_fmt        (const std::nothrow_t&) const noexcept;
+floating_format_info        const& as_floating_fmt       (const std::nothrow_t&) const noexcept;
+string_format_info          const& as_string_fmt         (const std::nothrow_t&) const noexcept;
+offset_datetime_format_info const& as_offset_datetime_fmt(const std::nothrow_t&) const noexcept;
+local_datetime_format_info  const& as_local_datetime_fmt (const std::nothrow_t&) const noexcept;
+local_date_format_info      const& as_local_date_fmt     (const std::nothrow_t&) const noexcept;
+local_time_format_info      const& as_local_time_fmt     (const std::nothrow_t&) const noexcept;
+array_format_info           const& as_array_fmt          (const std::nothrow_t&) const noexcept;
+table_format_info           const& as_table_fmt          (const std::nothrow_t&) const noexcept;
+

Return Value +#

Returns a reference to the structure holding the format information for the specified type.

Note +#

If the type of the stored value does not match the specified type, the behavior is undefined.


at(key) +#

value_type&       at(const key_type& key);
+value_type const& at(const key_type& key) const;
+

Return Value +#

Casts the current value to a table and returns the element specified by key.

Exception +#

Throws toml::type_error if the stored value is not a table.

Throws std::out_of_range if the table does not contain the specified element.


operator[](key) +#

value_type& operator[](const key_type& k);
+
Return Value +#

Casts the current value to a table and returns a reference to the element specified by key.

If the element specified by key does not exist, it is default-constructed.

Exception +#

Throws toml::type_error if the stored value is not a table.


count(key) +#

std::size_t count(const key_type& key) const;
+

Return Value +#

Casts the current value to a table and returns 1 if the element corresponding to key is present, otherwise returns 0.

Exception +#

Throws toml::type_error if the stored value is not a table.


contains(key) +#

bool contains(const key_type& key) const;
+

Return Value +#

Casts the current value to a table and returns true if the element corresponding to key is present, otherwise returns false.

Exception +#

Throws toml::type_error if the stored value is not a table.


at(idx) +#

value_type&       at(const std::size_t idx);
+value_type const& at(const std::size_t idx) const;
+

Return Value +#

Casts the current value to an array and returns the element specified by idx.

Exception +#

Throws toml::type_error if the stored value is not an array.

Throws std::out_of_range if the specified element does not exist in the array.


operator[](idx) +#

value_type&       operator[](const std::size_t idx)       noexcept;
+value_type const& operator[](const std::size_t idx) const noexcept;
+

Return Value +#

Casts the current value to an array and returns a reference to the element specified by idx.

Note +#

Performs no checks. Behavior is undefined if the stored value is not an array or if the specified element does not exist.


push_back(value) +#

void push_back(const value_type& x);
+void push_back(value_type&& x);
+

Casts the current value to an array and performs push_back on the array.

Return Value +#

None.

Exception +#

Throws toml::type_error if the stored value is not an array.


emplace_back(args...) +#

template<typename ... Ts>
+value_type& emplace_back(Ts&& ... args)
+

Casts the current value to an array and performs emplace_back on the array.

Return Value +#

A reference to the constructed value.

Exception +#

Throws toml::type_error if the stored value is not an array.


size() +#

std::size_t size() const;
+

Return Value +#

Casts the current value to an array, string, or table and returns the number of elements. For a string, it returns the number of characters.

Exception +#

Throws toml::type_error if the stored value is not an array, string, or table.


location() +#

source_location location() const;
+

Return Value +#

Returns a source_location object representing the position within the TOML document where the value is defined.

If the value was not constructed by parsing a TOML document, returns a source_location that points to nowhere.


comments() +#

comment_type const& comments() const noexcept;
+comment_type&       comments()       noexcept;
+

Return Value +#

Returns a reference to the comment container.

Non-Member Functions +#

operator== +#

template<typename TC>
+bool operator==(const basic_value<TC>&, const basic_value<TC>&);
+

Two basic_value<T> instances are considered equal if they satisfy the following conditions:

  • The contained type is the same.
  • The contained values are identical.
  • The comments are identical at the byte level.

operator!= +#

template<typename TC>
+bool operator!=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return !(lhs == rhs);
+}
+

operator< +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator<(const basic_value<TC>&, const basic_value<TC>&);
+

Comparison order:

  1. TOML type
  2. If TOML types are the same, their values
  3. If both the TOML types and values are the same, the comments

TOML types have the following order (from smallest to largest):

  1. toml::value_t::empty
  2. toml::value_t::boolean
  3. toml::value_t::integer
  4. toml::value_t::floating
  5. toml::value_t::string
  6. toml::value_t::offset_datetime
  7. toml::value_t::local_datetime
  8. toml::value_t::local_date
  9. toml::value_t::local_time
  10. toml::value_t::array
  11. toml::value_t::table

operator<= +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator<=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return (lhs < rhs) || (lhs == rhs);
+}
+

operator> +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator>(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return !(lhs <= rhs);
+}
+

operator>= +#

Defined only if array_type and table_type have operator<.

template<typename TC>
+bool operator>=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
+{
+    return !(lhs < rhs);
+}
+

toml::type_error +#

Exception thrown in case of a type error.

Contains the location information of the value that caused the type error.

struct type_error final : public ::toml::exception
+{
+  public:
+    type_error(std::string what_arg, source_location loc);
+    ~type_error() noexcept override = default;
+
+    const char* what() const noexcept override;
+
+    source_location const& location() const noexcept;
+};
+

toml::make_error_info +#

template<typename TC, typename ... Ts>
+error_info make_error_info(
+    std::string title, const basic_value<TC>& v, std::string msg, Ts&& ... tail);
+

Calls location() on a basic_value, passes the resulting source_location to +make_error_info +to create an error_info.

Refer to error_info for more details.

toml::format_error +#

template<typename TC, typename ... Ts>
+std::string format_error(std::string title,
+                         const basic_value<TC>& v, std::string msg, Ts&& ... tail);
+

Calls location() on a basic_value, passes the resulting source_location to +format_error +to create an error_info, then converts it to a string and returns it.

Refer to error_info for more details.

Related +#

\ No newline at end of file diff --git a/docs/reference/value_t/index.html b/docs/reference/value_t/index.html new file mode 100644 index 00000000..d97d5605 --- /dev/null +++ b/docs/reference/value_t/index.html @@ -0,0 +1,38 @@ +value_t.hpp | toml11 + +
value_t.hpp +

value_t.hpp +#

value_t +#

value_t is used to handle the type information of toml::value.

namespace toml
+{
+enum class value_t : std::uint8_t
+{
+    empty           =  0,
+    boolean         =  1,
+    integer         =  2,
+    floating        =  3,
+    string          =  4,
+    offset_datetime =  5,
+    local_datetime  =  6,
+    local_date      =  7,
+    local_time      =  8,
+    array           =  9,
+    table           = 10
+};
+
+std::ostream& operator<<(std::ostream& os, value_t t);
+std::string to_string(value_t t);
+} // toml
+

Non-member Functions +#

Stream Operator +#

std::ostream& operator<<(std::ostream& os, value_t t);
+

Outputs the string representation of the value_t to the stream.

to_string +#

std::string to_string(value_t t);
+

Returns the string representation of the value_t.

\ No newline at end of file diff --git a/docs/reference/version/index.html b/docs/reference/version/index.html new file mode 100644 index 00000000..f0a5bbff --- /dev/null +++ b/docs/reference/version/index.html @@ -0,0 +1,30 @@ +version.hpp | toml11 + +
version.hpp +

version.hpp +#

In version.hpp, macros related to the version information of toml11 are defined.

Macros +#

TOML11_VERSION_MAJOR +#

The major version of toml11.

TOML11_VERSION_MINOR +#

The minor version of toml11.

TOML11_VERSION_PATCH +#

The patch version of toml11.

Function +#

license_notice +#

namespace toml
+{
+const char* license_notice() noexcept;
+}
+

Returns the license notice.

Provided for convenience when redistributing without source code.

\ No newline at end of file diff --git a/docs/reference/visit/index.html b/docs/reference/visit/index.html new file mode 100644 index 00000000..aecad186 --- /dev/null +++ b/docs/reference/visit/index.html @@ -0,0 +1,54 @@ +visit.hpp | toml11 + +
visit.hpp +

visit.hpp +#

In visit.hpp, toml::visit is defined.

toml::visit +#

Functions +#

namespace toml
+{
+template<typename Visitor, typename TC>
+/* Return value when Visitor is called with a value of basic_value<TC> */
+visit(Visitor&& visitor, const basic_value<TC>& v);
+
+template<typename Visitor, typename TC>
+/* Return value when Visitor is called with a value of basic_value<TC> */
+visit(Visitor&& visitor, basic_value<TC>& v);
+
+template<typename Visitor, typename TC>
+/* Return value when Visitor is called with a value of basic_value<TC> */
+visit(Visitor&& visitor, basic_value<TC>&& v);
+}
+

toml::visit calls the overload of Visitor corresponding to the type held by basic_value<TC>, and returns the result.

Requirements +#

Visitor must be a function or function object callable with any type held by basic_value<TC>.

Additionally, the return value must be consistent across all overloads.

Example +#

#include <toml.hpp>
+#include <iostream>
+
+struct type_name_of
+{
+    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
+    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
+    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
+    std::string operator()(const toml::value::string_type         &) const {return "string";}
+    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
+    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
+    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
+    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
+    std::string operator()(const toml::value::array_type          &) const {return "array";}
+    std::string operator()(const toml::value::table_type          &) const {return "table";}
+};
+
+int main()
+{
+    toml::value v(3.14);
+    std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
+    return 0;
+}
+

Related +#

\ No newline at end of file diff --git a/en.search-data.min.d8166c23b8fabfabd79ab8547f814c8dfc751139d757d328e7724a2f1beae5a5.json b/en.search-data.min.d8166c23b8fabfabd79ab8547f814c8dfc751139d757d328e7724a2f1beae5a5.json new file mode 100644 index 00000000..f690f797 --- /dev/null +++ b/en.search-data.min.d8166c23b8fabfabd79ab8547f814c8dfc751139d757d328e7724a2f1beae5a5.json @@ -0,0 +1 @@ +[{"id":0,"href":"/toml11/docs/installation/","title":"installation","section":"Docs","content":" Installation # Using single_include # The ingle_include/toml.hpps is a single-file, header-only library that consolidates all the functionalities of toml11 into one file.\nThe simplest way to use it is to copy this file to a location included in your INCLUDE_PATH and then add #include \u0026lt;toml.hpp\u0026gt; to your source code.\nThe MIT license notice is included in both the comments and the toml::license_notice() function. If you are redistributing the software without releasing the source code, you must either copy the toml11 license file and include it with your distribution, or ensure that the toml::license_notice() function can be called.\nCloning toml11 and using cmake # If you place toml11 within your repository, for example by using git submodule, and you are using cmake, you can make use of it by adding add_subdirectory(toml11) to your CMakeLists.txt.\nadd_subdirectory(toml11) add_executable(main main.cpp) target_link_libraries(main PUBLIC toml11::toml11) toml11 will only run tests and install when it is the root project.\nInstalling using cmake # After cloning toml11, you can install it using cmake.\n$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --install ./build/ --prefix=/opt/toml11 If you want to run the test programs before installation, make sure to set -DTOML11_BUILD_TESTS=ON first.\nOnce the installation is complete, you can use it as follows:\nfind_package(toml11) add_executable(main main.cpp) target_link_libraries(main PRIVATE toml11::toml11) Compiling with cmake to Create a Static Library # By defining -DTOML11_PRECOMPILE=ON when running cmake, you can precompile some of the functions in toml11, thereby reducing the overall compile time.\n$ cmake -B ./build/ -DTOML11_PRECOMPILE=ON When linking the library, use target_link_libraries in CMake\ntarget_link_libraries(your_target PUBLIC toml11::toml11) or pass -DTOML11_COMPILE_SOURCES to the compiler to suppress header-only features.\nHowever, since toml11 supports multiple C++ versions and may switch types based on the value of __cplusplus, there is a possibility of link failures if the version used during build differs from the version used during usage. If you encounter issues, set the required version using CMAKE_CXX_STANDARD during compilation. If this is difficult, use it as a header-only library as usual.\nThe find_package(toml11) command defines TOML11_INCLUDE_DIR. Even if you install it as a precompiled library, you can still use it as a header-only library by adding TOML11_INCLUDE_DIR to target_include_directories and avoiding the use of target_link_libraries.\nfind_package(toml11) add_executable(main main.cpp) # Include only, do not link target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR}) Compiling Examples # You can compile the examples/ directory by setting -DTOML11_BUILD_EXAMPLES=ON.\n$ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON $ cmake --build ./build/ The executable binaries for the examples will be generated in the examples/ directory.\nRunning Tests # To build the tests, set -DTOML11_BUILD_TESTS=ON.\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --build ./build/ $ ctest --test-dir ./build/ To run the toml-lang/toml-tests, set -DTOML11_BUILD_TOML_TESTS=ON. This will build toml11_decoder and toml11_encoder in the tests/ directory.\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON $ cmake --build ./build/ $ ctest --test-dir ./build/ "},{"id":1,"href":"/toml11/docs/features/","title":"features","section":"Docs","content":" Features # This section explains the main features provided by toml11, with examples.\nParsing Files and Strings # Describes the functions for parsing files and strings, and how to handle the errors they produce.\nIncludes:\nParsing files Parsing strings Parsing byte arrays Parsing files without throwing exceptions Parsing strings without throwing exceptions Parsing byte arrays without throwing exceptions Extracting Values from toml::value # Explains how to examine, extract, and convert the data types held by toml::value.\nIncludes:\nChecking the type of a value using member functions Accessing values using member functions Accessing comments Handling inline tables and dotted keys Handling date information Using toml::get\u0026lt;T\u0026gt; for conversion Using toml::get_or to specify a fallback value Using toml::find\u0026lt;T\u0026gt; for searching and conversion Using toml::find_or to specify a fallback value Defining conversions with user-defined types Applying functions with toml::visit Constructing toml::value Creating Error Messages # Explains how to generate error messages with location information from a TOML file using toml::value.\nIncludes:\nExtracting location information from toml::value Constructing error messages Adding color to the output Serializing TOML Files # Describes how to format the values of toml::value and the available formatting options.\nIncludes:\nSpecifying formats for each value of toml::value Formatting toml::value into a string Configuring Types of toml::value # Explains how to customize the types stored in toml::value (such as integer_type and table_type).\nIncludes:\nDefining type_config Using ordered_type_config Disabling comment preservation Using different containers like std::deque Using different numeric types like boost::multiprecision TOML Literals # Explains the _toml literal for embedding TOML files directly in C++ code.\nIncludes:\nUsing TOML literals TOML Language Version # Describes the versions of the TOML language supported by toml11 and how to control language features added in TOML-v1.1.0.\nIncludes:\nUsing TOML language version 1.1.0 Using specific features of TOML language version 1.1.0 TOML Language Extensions # Explains the custom extensions to the TOML language provided by toml11.\nIncludes:\nSupporting null Supporting hexadecimal format for floating-point numbers Allowing units for numbers "},{"id":2,"href":"/toml11/docs/reference/","title":"reference","section":"Docs","content":" Reference # Here, we explain the effects of the classes and functions provided by toml11.\nDirectory Structure # toml.hpp and toml_fwd.hpp reside in ${TOML11_INCLUDE_DIR}. Other files are located in ${TOML11_INCLUDE_DIR}/toml11.\nIf you want to #include each feature\u0026rsquo;s file individually, use #include \u0026lt;toml11/color.hpp\u0026gt;. If you want to include all at once, use #include \u0026lt;toml.hpp\u0026gt;.\ncolor.hpp # Defines functions related to colorizing error messages.\ncomments.hpp # Defines types preserve_comment and discard_comment for preserving comments.\nconversion.hpp # Defines macros to automatically convert toml::value and user-defined classes.\ndatetime.hpp # Defines classes for datetime information.\nerror_info.hpp # Defines a class for error information.\nexception.hpp # Defines the base class for exceptions used in toml11, toml::exception.\nfind.hpp # Defines the toml::find function to search for and convert values.\nformat.hpp # Defines classes for formatting information of values.\nfrom.hpp # Forward declaration of the from\u0026lt;T\u0026gt; type for converting user-defined types.\nget.hpp # Defines the toml::get\u0026lt;T\u0026gt; function to retrieve and convert values from toml::value.\ninto.hpp # Forward declaration of the into\u0026lt;T\u0026gt; type for converting user-defined types.\nliteral.hpp # Defines the operator\u0026quot;\u0026quot; _toml literal.\nordered_map.hpp # Defines toml::ordered_map.\nparser.hpp # Defines functions to parse files or strings.\nresult.hpp # Defines the result\u0026lt;T, E\u0026gt; type for representing success or failure values used as return types in other functions.\nserializer.hpp # Defines the toml::format function and toml::serializer used for serialization.\nsource_location.hpp # Defines the source_location type used for error information, pointing to a location within a file.\nspec.hpp # Defines the toml::semantic_version and toml::spec types to control TOML language version information and feature flags.\ntoml.hpp # toml.hpp includes all other headers, making all toml11 features available.\ntoml_fwd.hpp # toml_fwd.hpp contains forward declarations of structs defined in toml11 and macro definitions.\ntypes.hpp # Defines the toml::type_config type for controlling the types held by toml::value.\nvalue.hpp # Defines the toml::value type.\nvalue_t.hpp # Defines the toml::value_t enumeration.\nversion.hpp # Defines the version information for toml11.\nvisit.hpp # Defines the toml::visit function to apply functions to the values held by toml::value.\nNotes # Functions not explicitly mentioned here (mostly those defined under namespace toml::detail or namespace toml::cxx) are available by inspecting the source code but are not guaranteed to maintain their interface across future versions (including patch version updates).\n"},{"id":3,"href":"/toml11/docs/changelog/","title":"changelog","section":"Docs","content":" Change Log # v4.1.0 # Added # support std::get\u0026lt;std::u8string\u0026gt; support toml::value(std::u8string) support string_type = std::u8string support operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, toml::value) add bool uppercase to toml::integer_format support template into_toml() (by 萧迩珀) Fixed # Fix not checking for \\r\\n when parsing line comments (by Andreas Keller) Changed # speedup CI tests by multicore build v4.0.3 # Fixed # remove default template argument from forward declaration in toml_fwd.hpp enable to call toml::make_error_info with multiple toml::values enable to copy/move toml::result having std::reference_wrapper fix document generation error with the latest version of hugo fix several tiny errors that causes warning fix CMake compatibility warning Changed # add -Werror / /WX to build script set MSVC warning level to /W4 add explanation of features to README\nv4.0.2 # Fixed # check return value of fread in parse(FILE*) version macro defined in toml11/version.hpp update docs about compilation update docs about file open mode Changed # use version macros defined in toml11/version.hpp as the project version in CMakeLists.txt v4.0.1 # Fixed # Resolved naming conflict of sematic_version::{major, minor} with macros defined in \u0026lt;sys/sysmacro.h\u0026gt; Fixed the definition of operator\u0026lt;\u0026lt; in discard_comments (by Egor Pugin) Fixed the issue where the first blank line was not output in format_location Fixed the issue where error messages pointing to source_location referring to lines containing only newline characters were displayed in two lines Corrected links in the README Corrected the title of the README in example/unicode Added # Configured CI to automatically update single_include/toml.hpp when changes are made to main Changes from v3 to v4 # Breaking Changes # Changed template Parameters of toml::basic_value # In toml11 v3, toml::basic_value took separate template arguments for the comment container, table-type container, and array-type container.\ntemplate\u0026lt;typename Comment, template\u0026lt;typename ...\u0026gt; class Table = std::unordered_map, template\u0026lt;typename ...\u0026gt; class Array = std::vector\u0026gt; class basic_value; However, this approach does not accommodate changes to types such as integer_type.\nIn toml11 v4, toml::basic_value now accepts a single TypeConfig, allowing for more types to be customized.\ntemplate\u0026lt;typename TypeConfig\u0026gt; class basic_value; By default, the types stored in toml::value remain unchanged.\nFor more information on changing types, please refer to the type_config documentation.\nRemoved std::initializer_list Support for toml::basic_value # In toml11 v3, there was an overload for toml::value that accepted std::initializer_list. This allowed for more intuitive initialization of toml::value with arrays and tables.\n// toml11 v3 toml::value v{1,2,3,4,5}; toml::value v{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }; However, this caused the following issues:\nFirst, it was impossible to distinguish between a single-element array and a regular value, as it always became an array.\n// toml11 v3 toml::value v{1}; // Becomes [1,] instead of 1 With the widespread use of uniform initialization, this became very inconvenient.\nSecond, it was unclear whether the value represented a table with all string values or a nested array.\n// toml11 v3 toml::value v{ {\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;} }; // Could be either: // {a = \u0026#34;foo\u0026#34;, b = \u0026#34;bar\u0026#34;} // [[\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;], [\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;]] These issues were difficult to resolve due to language specifications.\nTo avoid confusion, toml11 v4 has removed std::initializer_list support.\nWhen initializing toml::value with an array, you must explicitly specify toml::array, and when initializing with a table, you must explicitly specify toml::table.\n// toml11 v4 toml::value v(toml::array{1,2,3,4,5}); toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }); toml::value v{toml::array{1}}; // [1,] toml::value v{1} // 1 toml::value v{toml::table{{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; toml::value v{toml::array{toml::array{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, toml::array{\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; While this makes initializing toml::value with tables or arrays slightly less convenient, it ensures that the values will not become unpredictable by requiring explicit type information.\nRenamed toml::basic_value::is_uninitialized() to is_empty() # In toml11 v3, the function to check whether a basic_value was uninitialized was called is_uninitialized.\nHowever, in toml11 v4, the library supports null values as an extension, allowing for the intentional construction of empty values. Therefore, the function has been renamed to is_empty to reflect this change.\nAdded Format Information and Removed toml::string # In toml11 v3, to retain information on whether a string was basic or literal, the library used a thin wrapper around std::string called toml::string.\n// toml11 v3 namespace toml { enum class string_t : std::uint8_t { basic = 0, literal = 1, }; struct string { string_t kind; std::string str; }; } // namespace toml In toml11 v4, to accommodate more format information such as the numeric base or whether arrays should be multiline, every type now has an associated xxx_format type, which is stored alongside the value.\n// toml11 v4 enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; This change allows for more detailed format information to be preserved, ensuring that format specifics for numeric types, arrays, and tables are maintained even after parsing.\nChanged Arguments of toml::format # In toml11 v3, toml::format accepted values such as the precision and width of numeric types.\nHowever, this approach did not allow for detailed formatting specifications, resulting in serialized files that did not match expectations.\nIn toml11 v4, each toml::value now carries its own format information, enabling more detailed formatting options to be preserved within the toml::value itself.\nAs a result, toml::format no longer accepts specific formatting values. Instead, it now only takes a toml::spec, which includes language feature flags used during formatting.\nChanged Member Functions of toml::source_location # In toml11 v3, the member types of toml::source_location were designed to handle only single lines.\nIn toml11 v4, the member types of toml::source_location are designed to handle multiple lines.\nRenamed toml::format_underline to toml::format_location # In toml11 v3, the function used to format location information from toml::source_location was called toml::format_underline.\nTo make the name clearer, it has been renamed to toml::format_location.\nChanged Arguments of toml::format_error # In toml11 v3, there was no class to represent error information, resulting in complex arguments for toml::format_error.\ntemplate\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; std::string format_error(const std::string\u0026amp; err_msg, const basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v, const std::string\u0026amp; comment, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v3, const std::string\u0026amp; comment3, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); In toml11 v4, we have introduced class error_info and make_error_info, simplifying the arguments for format_error.\nstd::string format_error(const error_info\u0026amp; err); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Changed Control of toml::color # In toml11 v3, to control whether to colorize the output, we used the manipulator toml::colorize in conjunction with toml::color::enable/disable.\nThe manipulator allowed us to decide whether to apply color to each stream, but in v4, the frequency of using streams has decreased, and issues such as the fact that std::ios_base::xalloc used internally is not thread-safe in C++11 have arisen. Therefore, we have decided to use only toml::color::enable/disable and have removed toml::colorize.\nNon-Breaking Changes # Added parse_str # In toml11 v3, there was no function to directly parse a string itself. Therefore, when parsing a string, it was necessary to use std::istringstream.\nTo address this inconvenience, we have added toml::parse_str, allowing for direct parsing of strings.\nAdded try_parse # In toml11 v3, when a parser encountered an error, it threw toml::syntax_error.\nHowever, there are cases where you do not want to throw exceptions due to environments where exceptions cannot be thrown, or for reasons of performance.\nIn toml11 v4, we have implemented toml::try_parse using toml::result, which communicates parsing failures without throwing exceptions.\nThis doesn\u0026rsquo;t mean exceptions are never thrown. Errors in the standard library being used, such as std::bad_alloc due to allocation failure from memory exhaustion, may still be thrown.\nSupport for Parsing Byte Sequences # To allow for parsing TOML content obtained through means other than files, we have added toml::parse and toml::try_parse functions that accept std::vector\u0026lt;unsigned char\u0026gt;.\nAdded toml::spec # In toml11 v3, all new features of the TOML language were incorporated, and features that were decided to be introduced in future versions of the TOML language were controlled by the macro TOML11_USE_UNRELEASED_TOML_FEATURES.\nThis was because, at the time of developing toml11 v3, the TOML language had not yet reached version 1.0.0, being at versions 0.4.0 to 0.5.0.\nAs not all users are familiar with the latest TOML language specification, displaying error messages based on an older language usage could confuse the entire community. Therefore, until reaching version 1.0.0, it was necessary to provide new language specifications as quickly as possible and encourage users to update.\nHowever, the current TOML language specification is at version 1.0.0. Therefore, there was a need to be mindful of the choice to continue using version 1.0.0 even after TOML v1.1.0 was released.\nTo allow for more flexibility in selecting the TOML language specification, we introduced toml::spec, enabling the TOML language version to be changed at runtime.\nAdditionally, in toml::spec, flags are set for each language feature, allowing for the testing of specific language features only.\nThis mechanism is also used for TOML-specific language extensions in toml11 v4.\nAdded Format Information # In toml11 v3, format information was not saved except for strings, and during serialization, only width and precision were considered.\nHowever, this resulted in hexadecimal integers being serialized as decimal integers and no reliable way to ensure inline tables.\nIn toml11 v4, format information (integer_format, etc.) has been added to all TOML types, and it is now considered during parsing and serialization.\nThis allows for more detailed format information to be set for values, such as hexadecimal integers or inline tables.\nChanged to preserve_comments by Default # In toml11 v3, comments were not parsed by default and were also not serialized.\nThis was because comments were a later introduced feature and were being read through a special hack.\nIn toml11 v4, comments are parsed, preserved, and serialized by default.\nFurthermore, the parser implementation has been significantly changed to ensure comments are parsed alongside other elements.\nChanged to Preserve Comments by Default # In toml11 v3, comments were neither parsed nor serialized by default. This was because comment support was a late addition, implemented through a special hack.\nIn toml11 v4, comments are now parsed, preserved, and serialized by default. The parser implementation has also been significantly revised so that comments are parsed just like any other element.\nAdded single_include/toml.hpp # toml11 is a versatile library with different header files for various features to enhance development efficiency. However, this required a certain amount of effort to install.\nStarting with toml11 v4, a single_include/toml.hpp file has been added, which combines all the header files in the correct order. This allows the library to be installed by simply copying a single file.\nOption to Use Precompiled Library # Due to the extensive use of templates in toml11, compile times have been long.\nIn toml11 v4, the number of precompilable functions has been increased, allowing them to be compiled ahead of time into a library. This is expected to reduce compile times when using the library in large-scale development projects.\nReference Documentation # Previously, all features were documented in the README, with no detailed function definitions or reference materials available in Japanese.\nIn toml11 v4, reference documentation has been included, provided in both Japanese and English. However, since the library author is a native Japanese speaker, the Japanese content is considered primary. If there are discrepancies between the Japanese and English content, the Japanese version takes precedence.\n"},{"id":4,"href":"/toml11/docs/features/parsing_files/","title":"parsing files","section":"features","content":" Parsing Files and Strings # In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse.\nUpon success, these functions return a toml::value. Although the parsed file is always a table, the return type is not toml::table. This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map\u0026lt;std::string, toml::value\u0026gt;. To include metadata, a toml::value is returned instead of a toml::table. The toml::value corresponding to the root of the file will always hold a table_type.\nParsing Files # To parse files, use either toml::parse or toml::try_parse.\ntoml::parse # Specifying the Filename with std::string # toml::parse accepts a filename as a string, opens the file, and parses it.\nThe following sample code parses a file named input.toml, extracts the title variable as a string, and prints it.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } Specifying a File with std::filesystem::path # toml::parse can accept a std::filesystem::path.\nThis requires C++17 or later, as it relies on the \u0026lt;filesystem\u0026gt; support.\nSpecifying an Input Stream with std::istream # toml::parse can also accept an std::istream.\nOpen a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nWithout the filename information, error messages will display \u0026quot;unknown file\u0026quot;. To avoid this, you can pass the filename as a std::string in the second argument when using std::istream.\nYou can use streams other than std::ifstream, such as std::istringstream. Note that the entire content is readable at the time of the call.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::string filename(\u0026#34;input.toml\u0026#34;); std::ifstream ifs(filename); const toml::value input = toml::parse(ifs, filename); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } Specifying a File with FILE* # toml::parse can also accept a FILE*.\nOpen a stream in binary mode by passing \u0026quot;rb\u0026quot; to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nAs with std::istream, you need to provide the filename as a string in the second argument.\nWhen passing a FILE*, if the file read fails, errno will be reported.\nError Handling # toml::parse throws a toml::syntax_error if it encounters a syntax error.\ntoml::syntax_error is derived from toml::exception, which in turn is derived from std::exception.\nTherefore, you can use the what() member function to retrieve the error message from a toml::syntax_error.\nAdditionally, toml::syntax_error contains a std::vector\u0026lt;toml::error_info\u0026gt;, which can be accessed using the errors() member function.\ntoml::parse attempts to recover from minor errors and report multiple errors whenever possible. While it can often recover from simple errors like number format issues, errors within arrays or tables might not be recoverable and may lead to multiple similar error reports. If you find the error messages redundant, you can use only the front() of the std::vector\u0026lt;toml::error_info\u0026gt; to get a message about the most critical issue.\n#include \u0026lt;toml.hpp\u0026gt; int main() { try { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } catch(const toml::syntax_error\u0026amp; err) { // report all the errors std::cerr \u0026lt;\u0026lt; err.what() \u0026lt;\u0026lt; std::endl; // report the first error only std::cerr \u0026lt;\u0026lt; err.errors().front() \u0026lt;\u0026lt; std::endl; } } toml::try_parse # While toml::parse throws an exception on failure, toml::try_parse does not throw exceptions when it fails.\nInstead, its return type is toml::result\u0026lt;toml::value, std::vector\u0026lt;toml::error_info\u0026gt;\u0026gt;.\nThe result type holds either a success value or a failure value, similar to Rust\u0026rsquo;s Result or Haskell\u0026rsquo;s Either.\n#include \u0026lt;toml.hpp\u0026gt; int main() { const auto parse_result = toml::try_parse(\u0026#34;input.toml\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } To check which value the result type holds, use the is_ok() and is_err() functions. The success or failure value can be retrieved using unwrap() and unwrap_err(), respectively. If unwrap fails, it throws a bad_result_access exception. Using the as_ok() and as_err() functions does not throw exceptions on failure, but results in undefined behavior.\nAlthough try_parse does not throw syntax_error or file_io_error, it returns the same toml::error_info as the failure type in the result. However, it is not entirely exception-free.\nIf an internal standard library error occurs, such as std::bad_alloc when a vector fails to allocate memory, toml::try_parse does not catch this and will let it propagate. Thus, exceptions originating from the standard library may still be thrown.\nParsing Strings # toml::parse_str # toml::parse_str accepts the string to be parsed directly, instead of a filename.\nFor the part of the error message that corresponds to the TOML file\u0026rsquo;s name, if the std::source_location equivalent compiler extension is available, the name and line number of the C++ file that called parse_str will be used instead.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse_str # toml::try_parse_str also takes the string to be parsed directly, similar to parse_str. Like try_parse, it uses toml::result to report errors.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto parse_result = toml::try_parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } Parsing Byte Arrays # It is also possible to parse byte arrays instead of files.\nSince the byte arrays must be encoded in UTF-8, unsigned char is used.\ntoml::parse(std::vector\u0026lt;unsigned char\u0026gt;) # The behavior is the same as toml::parse.\nWhen parsing byte arrays, a filename is required.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const toml::value input = toml::parse(bytes, \u0026#34;internal bytes\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse(std::vector\u0026lt;unsigned char\u0026gt;) # The behavior is the same as toml::try_parse.\nWhen parsing byte arrays, a filename is required.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const auto parse_result = toml::try_parse(bytes, \u0026#34;internal bytes\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } "},{"id":5,"href":"/toml11/docs/features/value/","title":"getting values","section":"features","content":" Retrieving Values # This section explains how to access the values stored in toml::value.\nAccessing Values Using Member Functions # is_something and as_something # toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value.\nAdditionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type.\nFor a complete list, refer to the toml::value reference.\ntoml::value v = /* ... */; if(v.is_string()) { std::cout \u0026lt;\u0026lt; v.as_string() \u0026lt;\u0026lt; std::endl; } If the stored value is of a different type than specified, a toml::type_error is thrown.\nThe what() method will contain a message like the following:\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # Type information can be identified using enum class toml::value_t.\nThe type() member function returns the type information of the currently stored value.\ntoml::value v = /* ... */; switch(v.type()) { case toml:value_t::empty : { /*...*/ break; } case toml:value_t::boolean : { /*...*/ break; } case toml:value_t::integer : { /*...*/ break; } case toml:value_t::floating : { /*...*/ break; } case toml:value_t::string : { /*...*/ break; } case toml:value_t::offset_datetime: { /*...*/ break; } case toml:value_t::local_datetime : { /*...*/ break; } case toml:value_t::local_date : { /*...*/ break; } case toml:value_t::local_time : { /*...*/ break; } case toml:value_t::array : { /*...*/ break; } case toml:value_t::table : { /*...*/ break; } default: {break;} } The is(toml::value_t) member function returns true if the stored value is of the given value_t type, otherwise it returns false.\ntoml::value v = /* ... */; if(v.is(toml::value_t::integer)) { std::cout \u0026lt;\u0026lt; v.as_integer() \u0026lt;\u0026lt; std::endl; } at, [], contains, size, push_back, emplace_back # toml::value provides some member functions similar to those of standard library containers.\nThese functions internally convert toml::value to the corresponding type and call the respective member functions.\nat(std::size_t i), operator[](std::size_t i) # These are equivalent to as_array().at(i) and as_array()[i].\ntoml::value uses std::vector\u0026lt;toml::value\u0026gt; as array_type by default, so at throws std::out_of_range on error, while operator[] results in undefined behavior.\ntoml::value v(toml::array{1,2,3}); std::cout \u0026lt;\u0026lt; v.at(1); If the stored type is not array_type, a type_error is thrown.\nat(std::string key), operator[](std::string key) # These are equivalent to as_table().at(key) and as_table()[key].\ntoml::value uses std::unordered_map\u0026lt;std::string, toml::value\u0026gt; as table_type by default, so if the corresponding value does not exist, at throws std::out_of_range, while operator[] constructs a new toml::value and returns a reference to it. Therefore, there is no const version of operator[].\ntoml::value v(toml::table{}); v[\u0026#34;a\u0026#34;] = 42; If the stored type is not table_type, a type_error is thrown.\nsize() # Returns the length.\nFor array_type or table_type, it returns the number of elements; for string_type, it returns the number of characters (in bytes).\nIf the stored type is none of these, a type_error is thrown.\npush_back(), emplace_back() # These are equivalent to as_array().push_back() and as_array().emplace_back().\nIf the stored type is not array_type, a type_error is thrown.\nAccessing Comments # In toml11, comments are parsed by default and saved line by line with the corresponding value.\nA comment corresponds to the value that comes immediately after the consecutive lines of comments, or to the value on the same line as the comment.\nIf there is no value immediately before or after the comment, it is not associated with any value and is ignored.\n# input.toml # This is a comment about a. a = 42 b = 3.14 # This is a comment about b. # This comment is ignored because it has no corresponding value. # This is the 1st comment about c. # This is the 2nd comment about c. c = \u0026#34;foo\u0026#34; # This is the final comment about c. # This comment is NOT a comment about c. Comments corresponding to a value can be accessed using the comments() member function of toml::value.\ncomments() returns a container that has the same member functions as std::vector\u0026lt;std::string\u0026gt;.\nconst auto v = toml::parse(\u0026#34;input.toml\u0026#34;); const auto\u0026amp; a = v.at(\u0026#34;a\u0026#34;); const auto\u0026amp; b = v.at(\u0026#34;b\u0026#34;); const auto\u0026amp; c = v.at(\u0026#34;c\u0026#34;); assert(a.comments().size() == 1); assert(a.comments().at(0) == \u0026#34;# This is a comment about a.\u0026#34;); assert(b.comments().size() == 1); assert(b.comments().at(0) == \u0026#34;# This is a comment about b.\u0026#34;); assert(c.comments().size() == 3); assert(c.comments().at(0) == \u0026#34;# This is the 1st comment about c.\u0026#34;); assert(c.comments().at(1) == \u0026#34;# This is the 2nd comment about c.\u0026#34;); assert(c.comments().at(2) == \u0026#34;# This is the final comment about c.\u0026#34;); Comments related to the root table of the entire file are written at the beginning of the file.\n# This is a comment about the root table. # This is also a comment about the root table. # This comment is ignored. # This is a comment about a. a = 42 However, if a value immediately follows the initial comment, the comment is interpreted as pertaining to that value, and there are no comments for the root table.\n# This is a comment about a. # This is also a comment about a. a = 42 Handling Inline Tables and Dotted Keys # An inline table is simply a table, and there is no difference in handling it compared to other tables in C++ code.\na = {b = 42, c = \u0026#34;foo\u0026#34;} Dotted keys are also just tables, with no difference in handling compared to other tables in C++ code.\na.b = 42 a.c = \u0026#34;foo\u0026#34; These TOML files are identical to the following file.\n[a] b = 42 c = \u0026#34;foo\u0026#34; Thus, they can all be processed with the exact same code.\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).as_integer() == 42); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;c\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); However, it is possible to distinguish them based on format information.\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); switch(input.at(\u0026#34;a\u0026#34;).as_table_fmt().fmt) { case toml::table_format::oneline: { std::cout \u0026lt;\u0026lt; \u0026#34;inline table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::multiline: { std::cout \u0026lt;\u0026lt; \u0026#34;normal table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::dotted: { std::cout \u0026lt;\u0026lt; \u0026#34;dotted keys\u0026#34; \u0026lt;\u0026lt; std::endl; break; } } This format information is also considered during serialization, which will be described later.\nHandling Date and Time Information # local_date, local_time, local_datetime, and offset_datetime are parsed into dedicated structures with corresponding member variables in toml11.\nWhen using these, you can directly extract the values or use toml::get and toml::find to convert them into types such as std::chrono::system_clock::time_point or std::tm.\nConverting Using toml::get\u0026lt;T\u0026gt; # toml::get\u0026lt;T\u0026gt; is a function that converts and retrieves the value stored in toml::value. Specify the desired target type as T.\nconst toml::value v = /*...*/; std::cout \u0026lt;\u0026lt; toml::get\u0026lt;int\u0026gt;(v) \u0026lt;\u0026lt; std::endl; The toml::find\u0026lt;T\u0026gt; function, described later, also has the same functionality for type conversion.\nIf an unsupported type is specified for the stored value, a toml::type_error is thrown.\nSimple Conversions # boolean_type # Conversion from boolean_type is possible only to bool.\ninteger_type # Any type for which std::is_integral\u0026lt;T\u0026gt; is true, except bool, can be converted from integer_type.\ntoml::value v(42); const auto u32 = toml::get\u0026lt;std::uint32_t\u0026gt;(v); const auto i16 = toml::get\u0026lt;short\u0026gt;(v); floating_type # Any type for which std::is_floating_point\u0026lt;T\u0026gt; is true can be converted from floating_type.\ntoml::value v(3.14); const auto f64 = toml::get\u0026lt;double\u0026gt;(v); const auto f32 = toml::get\u0026lt;float \u0026gt;(v); string_type # string_type can be converted to std::string. From C++17 onwards, it can also be converted to std::string_view.\ntoml::value v(\u0026#34;foo\u0026#34;); const auto s = toml::get\u0026lt;std::string\u0026gt;(v); // C++17 const auto sv = toml::get\u0026lt;std::string_view\u0026gt;(v); datetime variants # local_date, local_datetime, and offset_datetime represent specific dates and times, so they can be converted to std::chrono::system_clock::time_point.\nHowever, since local_time does not include date information, it supports conversion to std::chrono::duration as the elapsed time from 00:00.00.\nAdditionally, local_date and local_datetime conversions take the executing machine\u0026rsquo;s timezone into account.\ndate = 2024-01-23 time = 12:30:00 l_dt = 2024-01-23T12:30:00 o_dt = 2024-01-23T12:30:00+09:00 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto date = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;date\u0026#34;)); const auto l_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;l_dt\u0026#34;)); const auto o_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;o_dt\u0026#34;)); const auto time = toml::get\u0026lt;std::chrono::minutes\u0026gt;(input.at(\u0026#34;time\u0026#34;)); // 12 * 60 + 30 min Conditions for Obtaining References # toml::get\u0026lt;T\u0026gt; can return a reference if T is the exact type stored in toml::value.\nConversely, if a conversion is necessary (e.g., extracting an integer stored as std::int64_t into std::uint32_t), it is not possible to return a reference to the converted type.\nWhen no conversion is needed, the returned reference can be used to modify the value.\ntoml::value v(42); toml::get\u0026lt;toml::value::integer_type\u0026gt;(v) = 6 * 9; assert(v.as_integer() == 54); Converting Arrays to STL Containers # If all elements in an array have the same type and can be converted to T, it is possible to convert them to std::vector\u0026lt;T\u0026gt;.\na = [1, 2, 3, 4, 5] const auto a = toml::get\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); Other STL containers can also be used.\nconst auto a1 = toml::get\u0026lt;std::deque\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a2 = toml::get\u0026lt;std::list \u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a3 = toml::get\u0026lt;std::array\u0026lt;int, 5\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); When converting to std::array, the number of elements must match. If they don\u0026rsquo;t match, a std::out_of_range exception is thrown.\nNon-STL containers that have a default constructor and a push_back method can also be converted using toml::get.\nconst auto a = toml::get\u0026lt;boost::container::small_vector\u0026lt;int, 8\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); Converting Arrays to std::pair or std::tuple # If an array contains elements of different types, it can be converted to std::pair or std::tuple.\na = [true, 3.14] b = [42, 2.718, \u0026#34;foo\u0026#34;] const auto a = toml::get\u0026lt;std::pair\u0026lt;bool, double\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto b = toml::get\u0026lt;std::tuple\u0026lt;int, double, std::string\u0026gt;\u0026gt;(input.at(\u0026#34;b\u0026#34;)); As with std::array, the length of the array must match the number of elements in the std::pair or std::tuple. If they don\u0026rsquo;t match, a std::out_of_range exception is thrown.\nAdditionally, each element must be convertible to the corresponding element in the std::pair or std::tuple. If conversion is not possible, a toml::type_error exception is thrown.\nConverting Nested Arrays # Nested arrays can be converted to nested containers.\na = [ [1, 2, 3], [4, 5, 6] ] const auto a = toml::get\u0026lt;std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); If the types are different, std::pair or std::tuple can be useful.\na = [ [1, 2, 3], [\u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;] ] const auto a = toml::get\u0026lt; std::pair\u0026lt;std::vector\u0026lt;int\u0026gt;, std::vector\u0026lt;std::string\u0026gt;\u0026gt; \u0026gt;(input.at(\u0026#34;a\u0026#34;)); Converting Tables to std::map # If all values in a table have the same type, they can be converted to std::map or std::unordered_map.\nt = {a = 1, b = 2} const auto t = toml::get\u0026lt;std::map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); Non-STL containers that have a default constructor and an emplace(key, mapped) method can also be converted using toml::get.\nconst auto t = toml::get\u0026lt;boost::container::flat_map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); If the conversion of any element fails, a toml::type_error exception is thrown.\nUsing toml::get_or to Specify a Value on Failure # toml::get throws a toml::type_error exception if the conversion fails.\nBy using toml::get_or, you can specify a default value to return instead of an exception in case of a conversion failure.\nUnlike toml::get\u0026lt;T\u0026gt;, get_or infers the target type from the arguments, so there is no need to specify \u0026lt;T\u0026gt;.\nconst auto a = toml::get_or(input.at(\u0026#34;a\u0026#34;), 42); The types that can be converted are the same as for toml::get.\nIf you specify toml::value::xxx_type, you can also retrieve a reference, but in that case, the argument must also be a reference.\ntoml::value::integer_type a_default = 42; auto a\u0026amp; = toml::get_or(input.at(\u0026#34;a\u0026#34;), a_default); Using toml::find\u0026lt;T\u0026gt; to Search and Convert Simultaneously # toml::find\u0026lt;T\u0026gt; is a function that searches for a value in a toml::value holding a table and simultaneously performs the same type conversion as toml::get.\nconst auto a = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;); // Equivalent to: const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;)); toml::find\u0026lt;T\u0026gt; can also be used with arrays.\nconst auto a = input.at(\u0026#34;a\u0026#34;); const auto a2 = toml::find\u0026lt;int\u0026gt;(a, 2); // Equivalent to: const auto a2 = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2)); If an error occurs during type conversion, toml::find\u0026lt;T\u0026gt; throws the same toml::type_error as toml::get. If the key is not found or the index does not exist, it throws std::out_of_range.\nIf no type is specified, toml::find returns a toml::value without type conversion.\nconst auto a = toml::find(input, \u0026#34;a\u0026#34;); // Equivalent to: const auto a = input.at(\u0026#34;a\u0026#34;); toml::find\u0026lt;T\u0026gt; can access values recursively.\na = {b = {c = 42}} const auto a_b_c = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, \u0026#34;b\u0026#34;, \u0026#34;c\u0026#34;); // Equivalent to: const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).at(\u0026#34;c\u0026#34;)); You can mix keys and indexes.\na = [ {b = 1}, {b = 2}, {b = 3} ] const auto a_2_b = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, 2, \u0026#34;b\u0026#34;); // Equivalent to: const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2).at(\u0026#34;c\u0026#34;)); TOML supports a feature called quoted keys, which allows using normally disallowed characters in keys by enclosing them in \u0026quot;\u0026quot; or ''. Within quoted keys, . does not introduce tables.\n\u0026#34;127.0.0.1\u0026#34; = \u0026#34;value\u0026#34; site.\u0026#34;google.com\u0026#34; = true You can read this TOML file as follows:\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;127.0.0.1\u0026#34;).as_string() == \u0026#34;value\u0026#34;); assert(input.at(\u0026#34;site\u0026#34;).at(\u0026#34;google.com\u0026#34;).as_boolean()); To handle such cases seamlessly, toml11 does not automatically split keys containing .. Explicitly specifying the table hierarchy helps in structuring the input file correctly.\nReference: toml.io/Key\nUsing toml::find_or to Search and Specify a Value on Failure # toml::find_or works similarly to toml::find\u0026lt;T\u0026gt;, but allows specifying a default value to return if the search or conversion fails.\nThis is useful when you want to provide a fallback value instead of handling exceptions.\nconst auto a = toml::find_or(input, \u0026#34;a\u0026#34;, 42); Defining Conversions for User-Defined Types # With toml::get and toml::find, you can use user-defined types by employing one of the following methods.\nDefining toml::from # In toml11, there is a toml::from type that supports conversions from user-defined types by specializing it as follows:\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { static extlib::foo from_toml(const toml::value\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml If you also want to support toml::value with a modified type configuration, do as follows:\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml This definition can be automatically generated using TOML11_DEFINE_CONVERSION_NON_INTRUSIVE.\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b) Alternatively, you can use a reflection library. Refer to the sample in example using boost-ext/reflect.\nDefining a from_toml Member Function # You can also define a conversion by defining a from_toml member function.\nWhen using this method, a default constructor is required.\nstruct bar { int a; std::string b; void from_toml(const toml::value\u0026amp; v) { this-\u0026gt;a = toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;); this-\u0026gt;b = toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;); return ; } }; If both are defined, toml::from takes precedence.\nConstructor Accepting toml::value # If there is a constructor that accepts toml::value, conversion via toml::get can be performed.\nstruct baz { explicit baz(const toml::value\u0026amp; v) : a(toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;)), b(toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)) {} int a; std::string b; }; If both are defined, toml::from and from_toml take precedence.\nApplying Functions with toml::visit # If you have a function object that can be applied to all types stored in toml::value, you can directly call that function without type conversion using toml::visit.\nstruct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating Constructing toml::value # toml::value can be constructed not only internally by the parser but also in user code.\nYou can construct it by passing a type that is either the same as or convertible to the types stored in toml::value.\ntoml::value v1(true); toml::value v2(42); toml::value v3(3.14); For arrays, you can use toml::array:\ntoml::value v(toml::array{1, 2, 3}); Alternatively, you can pass containers such as std::vector directly:\nconst std::vector\u0026lt;toml::value\u0026gt; a{1,2,3}; toml::value v(a); For tables, you can use toml::table:\ntoml::value v(toml::table{{\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3}}); Or pass containers such as std::map directly:\nconst std::map\u0026lt;std::string, toml::value\u0026gt; t{ {\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3} } toml::value v(t); You can pass format_info and comments to the constructor.\nThe type of comments is std::vector\u0026lt;std::string\u0026gt;. Each element corresponds to a line.\ntoml::integer_format_info fmt; fmt.fmt = toml::integer_format::hex; fmt.spacer = 4; toml::value v1(0xDEADBEEF, fmt); toml::value v2(0xC0FFEE, fmt, {\u0026#34;hex value!\u0026#34;}); Converting to toml::value # When constructing toml::value from user-defined types, you can customize the behavior by defining toml::into or into_toml.\ntoml::into is particularly useful when converting types from other libraries.\nDefining toml::into # By specializing toml::into, you can enable conversions to toml::value.\nThis is useful for types from external libraries that do not provide a conversion to toml::value.\nSince toml::value passes type_config during conversion, you need to accept the template argument of basic_value.\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { return toml::basic_value\u0026lt;TC\u0026gt;(typename toml::basic_value\u0026lt;TC\u0026gt;::table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; Defining into_toml Member Function # Similar to from_toml, you can define the conversion through a member function.\nIf toml::into is defined, it takes precedence.\nstruct bar { int a; std::string b; template\u0026lt;typename TC\u0026gt; toml::basic_value\u0026lt;TC\u0026gt; into_toml() const { return toml::basic_value\u0026lt;TC\u0026gt;(typename toml::basic_value\u0026lt;TC\u0026gt;::table_type{ {\u0026#34;a\u0026#34;, this-\u0026gt;a}, {\u0026#34;b\u0026#34;, this-\u0026gt;b} }); } }; "},{"id":6,"href":"/toml11/docs/features/error_message/","title":"error message","section":"features","content":" Outputting Error Messages # toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get\u0026lt;T\u0026gt;/find\u0026lt;T\u0026gt;, and as_integer(), among others.\nFor instance, if a syntax error in an integer is detected during parsing, an error message might look like this:\n[error] bad integer: `_` must be surrounded by digits --\u0026gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 Or, if a type different from the one actually stored is requested:\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11 provides methods to create such error messages from toml::value.\nBy utilizing this feature, you can inform users not only about TOML syntax errors but also about application-specific errors. For example, if a negative number appears where only positive values are allowed, you can highlight the location within the TOML file to convey the error to the user.\nCreating Error Messages from toml::value Location Information # toml::value retains information about the location where it was parsed.\nThis information is encapsulated in toml::source_location and can be retrieved using toml::value::location().\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); const toml::source_location src = a.location(); When a file is parsed with toml::parse, the TOML filename and line numbers are stored.\nIf parsed with toml::parse_str, the TOML filename is not available, but instead, the filename and line number of the C++ source code that called toml::parse_str are stored as the TOML filename. The first example on this page was output from toml::parse_str. Note the filename part.\nFor details, see the reference.\nYou can build error information by passing a toml::source_location or toml::value and the associated error message to toml::make_error_info. Passing this to toml::format_error formats the error message into a std::string.\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34; // Message next to the value ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } This will output:\n[error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value You can also add a supplementary message at the end. This part is not indented.\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34;, // Message next to the value \u0026#34;Hint: `a` means length of the data\u0026#34; // Supplementary message ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } This will output:\n[error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value Hint: `a` means length of the data The ability to output lines from the file using toml::value is because the parsed file is retained in memory as a string.\nThe parsed string is shared by toml::value via a std::shared_ptr. Copying it does not duplicate the entire file string. The file information is freed from memory when all toml::value instances constructed from parsing the file are destructed.\nTherefore, when using this in an application, it is recommended to extract and store the required values during loading rather than directly storing toml::value.\nAdding Colors to Strings # You can add color to error messages using ANSI escape codes.\nIf TOML11_COLORIZE_ERROR_MESSAGE is defined at compile time, the error messages output by toml11 will be colored by default.\nIf not, you can enable color for subsequent error messages by calling toml::color::enable(). Conversely, if you do not want colored output, for example, because the output is not to a console, call toml::color::disable(). You can check whether coloring is enabled at any point by calling toml::color::should_color().\nAdditionally, while the error title, error message, and supplementary information are not colored by default, you can use manipulators from toml::color to add color to them.\nstd::ostringstream oss; oss \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;but got negative value\u0026#34;; const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, oss.str(), // Message next to the value \u0026#34;Hint: `a` means length of the data\u0026#34; // Supplementary message ); For more details, see the reference.\nChanging the Prefix of Error Messages from [error] # There may be different types of errors, and the default [error] prefix might not always be appropriate.\nWith toml::format_error, you can provide a std::string before toml::error_info to replace the [error] prefix.\nFor example:\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34; // Message next to the value ); std::ostringstream prefix; prefix \u0026lt;\u0026lt; toml::color::bold \u0026lt;\u0026lt; toml::color::yellow \u0026lt;\u0026lt; \u0026#34;[warn]\u0026#34;; std::cerr \u0026lt;\u0026lt; toml::format_error(prefix.str(), err) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer(); } This will output a warning starting with [warn].\nAdditionally, you can create error messages without the [error] prefix by directly passing the components of error_info to toml::format_error.\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { std::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[warn] positive integer is required\u0026#34;, // Error title a, \u0026#34;but got negative value\u0026#34; // Message next to the value ) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer() } Creating Error Messages Referencing Multiple toml::value # In application settings, the range of permissible values might change based on previously read values.\nIn such cases, you may want to output the values causing the error simultaneously.\ntoml::format_error and toml::make_error_info can take multiple pairs of toml::value and their corresponding error messages as std::string.\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34; ) \u0026lt;\u0026lt; std::endl; You can also add supplementary information at the end.\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34;, \u0026#34;Hint: all the values must be in the range [a, b)\u0026#34; ) \u0026lt;\u0026lt; std::endl; When passing toml::value or toml::source_location, an error message related to it must follow. If not, it will result in a very confusing compilation error.\n"},{"id":7,"href":"/toml11/docs/features/serialize/","title":"serializing values","section":"features","content":" Outputting TOML Files # Using toml::format, you can convert a toml::value to a string.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } If the toml::value contains a table_type, it is interpreted as the root table of the file.\nIf a toml::value containing anything other than table_type is passed, only that value is formatted.\nCertain format specifications may require a key to be provided for formatting. For example, toml::array_format::array_of_tables formats as [[array.of.tables]], which requires key access.\nIf a format specification that requires a key is provided without a key, a toml::serialization_error is thrown.\nAdditionally, if there are values that contradict the format specification, a toml::serialization_error is thrown. For instance, specifying integer_format::hex for a negative integer, or string_format::literal for a string containing newlines, will cause an error.\nThe method for specifying formats is explained later.\nOutputting with Keys # You can pass a key to toml::format as a std::string.\nIn this case, the key is considered to be under the root table, and the passed value corresponds to that key.\nFor nested keys, you can pass a std::vector\u0026lt;std::string\u0026gt;.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(\u0026#34;bar\u0026#34;, v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } Specifying Formats # Each type in toml::value has a corresponding format information type.\nFor toml::value::integer_type, there is toml::integer_format_info. For toml::value::table_type, there is toml::table_format_info.\nThese format information types are set when parsing and are retained even if the value is changed, as long as the type remains the same.\nYou can access and directly edit these formats using member functions like as_integer_fmt() or as_table_fmt().\nBelow are some examples explaining how to use these formats.\nFor more details on how to access formats, refer to the toml::value reference. For a complete list and detailed information on format information classes, see the format reference.\nSpecifying Integer Formats # For integers, you can specify the radix, width, and the position of _.\nWhen using hex, oct, or bin, values are padded with zeros until the specified width is reached. For dec, the width specification adds spaces, which are not parsed.\nFor more details, see the integer format reference.\nSingle-Line and Multi-Line Arrays # For arrays, you can specify toml::array_format::oneline or toml::array_format::multiline.\n# oneline a = [1, 2, 3, 4, 5] # multiline a = [ 1, 2, 3, 4, 5 ] When using multiline, you can specify the indentation. Each element is indented by the amount specified in body_indent, and the closing bracket ] is indented by the amount specified in closing_indent.\nThe type of character used for indentation is specified by indent_type, and you can choose between toml::indent_char::space or toml::indent_char::tab.\nEnsure that the same type of character is used for indentation throughout the document.\nIf different types of characters are specified for indentation within the same file, the result is undefined. Some form of indentation will be applied, but the type of character and the depth of the indentation may be inconsistent.\nIf all elements of an array have table_type, you can specify toml::array_format::array_of_tables.\nIf you do not specify array_of_tables and use multiline, the tables will be formatted as inline tables.\n# multiline a = [ {foo = 42}, {bar = \u0026#34;hoge\u0026#34;}, ] # array_of_tables [[a]] foo = 42 [[a]] bar = \u0026#34;hoge\u0026#34; By default, toml::array_format::default_format is used. This automatically selects an appropriate format.\nFor example, with default_format, if all elements are table_type, it will choose array_of_tables. Short arrays are formatted as oneline, while long or nested arrays, or those with complex elements, are formatted as multiline.\nFor more details, see the array format reference.\nInline Tables # To format a table as an inline table, specify toml::table_format::oneline. For standard tables, use toml::table_format::multiline.\noneline = {a = 42, b = \u0026#34;foo\u0026#34;} [multiline] a = 42 b = \u0026#34;foo\u0026#34; In TOML v1.1.0, line breaks within inline tables are allowed. In this case, use toml::table_format::multiline_oneline. This is only applied if the corresponding feature flag is set to true as per the TOML version specification described later.\nmultiline_oneline = { a = 42, b = \u0026#34;foo\u0026#34; } For more details, see the table format reference.\nSpecifying the TOML Language Version for Output # Certain language features, such as line breaks within inline tables and \\x escape sequences, are only available after TOML v1.1.0.\nThe toml::format function accepts a toml::spec as its argument.\nThis allows you to specify the version of TOML to use during serialization.\nWhen you use toml::parse with a toml::spec to leverage new features, the parsed values may contain format information that is only compatible with that specific version. Ensure that you pass the same toml::spec to toml::format to maintain compatibility.\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto spec = toml::spec::v(1, 1, 0); const toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, spec); std::cout \u0026lt;\u0026lt; toml::format(v, spec) \u0026lt;\u0026lt; std::endl; return 0; } "},{"id":8,"href":"/toml11/docs/features/configure_types/","title":"configuring types","section":"features","content":" Customizing Types # The toml::value class uses std::int64_t for integer_type and std::unordered_map\u0026lt;key_type, value_type\u0026gt; for table_type.\nHowever, in some cases, you may want to use boost::multiprecision::int128_t or std::map.\nTo accommodate this, toml::value is implemented with template parameters that allow you to change the stored types.\nJust as std::string is actually an alias for std::basic_string\u0026lt;char, std::char_traits\u0026lt;char\u0026gt;, std::allocator\u0026lt;char\u0026gt;\u0026gt;, toml::value is an alias for toml::basic_value\u0026lt;toml::type_config\u0026gt;.\nHere, we will explain the types contained in toml::type_config and how to define a different config type.\ntype_config # The type_config class contains the following member types and static member functions:\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; } toml::basic_value\u0026lt;TypeConfig\u0026gt; defines the stored boolean_type as TypeConfig::boolean_type, the stored integer_type as TypeConfig::integer_type, and so on.\nAdditionally, array_type is defined as TypeConfig::array_type\u0026lt;toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt; and table_type is defined as TypeConfig::table_type\u0026lt;key_type, toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt;.\nBy passing a class that defines these member types and functions to toml::basic_value, you can customize the types used by that toml::basic_value.\nThe parse_int and parse_float functions provide parsing methods when custom numeric types are used. These functions receive strings with prefixes like 0x and digit separators like _ removed, such as 123456 or DEADBEEF. The base parameter will be one of 10, 16, 8, or 2. Implement these functions to parse your custom integer_type and floating_type.\nAs a default implementation, toml::read_int and toml::read_float are provided.\nstatic result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } The read_int function uses istream and employs std::hex and std::oct for hexadecimal and octal parsing, respectively. For binary parsing, it is implemented using multiplication and addition. If your type supports these operations, you can use read_int as-is.\nThe read_float function also uses istream. Hexadecimal floating-point numbers are only supported for double and float types. If read_float is called with any other type and hexfloat is used, it will always return a parse error. Therefore, if you need to use a floating-point type other than double or float with hexfloat, you will need to implement support for that. If hexfloat is not used, no additional implementation is necessary.\nPreserving Order of Values in Tables # In addition to the default toml::type_config, there is also toml::ordered_type_config. This changes the table_type to an ordered_map.\nUsing this, toml::ordered_value is defined, along with aliases for its array and table types as toml::ordered_array and toml::ordered_table, respectively.\nYou can use toml::ordered_value by calling toml::parse(...) as toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(...).\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::ordered_value input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;example.toml\u0026#34;); std::cout \u0026lt;\u0026lt; toml::format(input) \u0026lt;\u0026lt; std::endl; return 0; } Not Preserving Comments # The type_config defines a container for storing comments via comment_type.\nIf comments do not contain significant information and can be discarded during parsing, specify toml::discard_comments for comment_type.\nstruct wo_comment_config { using comment_type = toml::discard_comments; // XXX using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; Using Containers Other Than std::vector for Arrays # To use a container other than vector (e.g., std::deque) for implementing TOML arrays, modify array_type as follows.\nSimilarly, to use a container other than unordered_map (e.g., std::map) for table types, modify table_type as shown below.\nstruct deque_map_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::deque\u0026lt;T\u0026gt;; // XXX template\u0026lt;typename K, typename T\u0026gt; using table_type = std::map\u0026lt;K, T\u0026gt;; // XXX static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; Using boost::multiprecision for Numeric Types # By using boost::multiprecision::cpp_int and boost::multiprecision::cpp_bin_float_oct, you can utilize a wider integer type and a more precise floating-point type.\nThese types implement stream operators, so you can use the default implementations of read_int and read_float without modification.\nstruct large_num_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = boost::multiprecision::cpp_int; using floating_type = boost::multiprecision::cpp_bin_float_oct; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static toml::result\u0026lt;integer_type, toml::error_info\u0026gt; parse_int(const std::string\u0026amp; str, const toml::source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static toml::result\u0026lt;floating_type, toml::error_info\u0026gt; parse_float(const std::string\u0026amp; str, const toml::source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; "},{"id":9,"href":"/toml11/docs/features/literal/","title":"toml literal","section":"features","content":" _toml Literal # With the \u0026quot;\u0026quot;_toml literal, you can format TOML files inline.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = 42\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); return 0; } When including line breaks, raw string literals come in handy.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(v.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } If a value is written on its own, that value is returned.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto a = \u0026#34;42\u0026#34;_toml; const auto b = \u0026#34;12:34:56\u0026#34;_toml; assert(a.as_integer() == 42); assert(b.as_local_time().hour == 12); assert(b.as_local_time().minute == 34); assert(b.as_local_time().second == 56); return 0; } TOML allows keys consisting solely of numbers. Therefore, [1] is a valid table name.\nWhen there\u0026rsquo;s ambiguity between table definitions and arrays, table definitions take precedence.\nTo interpret as an array, please use a trailing comma.\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto t = \u0026#34;[1]\u0026#34;_toml; // {1 = {}} const auto a = \u0026#34;[1,]\u0026#34;_toml; // [1,] assert(t.is_table()); assert(t.at(\u0026#34;1\u0026#34;).is_table()); assert(a.is_array()); assert(a.at(0).as_integer() == 1); return 0; } "},{"id":10,"href":"/toml11/docs/features/toml_spec/","title":"toml spec","section":"features","content":" TOML Language Version # You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec.\nSpecifying TOML Version # You can construct a toml::spec from toml::semantic_version.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } However, to make this shorter, the toml::spec::v() function is provided.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } If not specified explicitly, toml::spec::default_version() is used to construct with default values.\nThe default value depends on the version of toml11 and follows the latest version of the TOML language released at that time.\nAs of v4.0.0, TOML v1.1.0 has not been released yet, so the default TOML version is v1.0.0.\nSome features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.\nIf they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.\nAs such, any features related to future versions should be considered unstable.\nParsing with Version Specification # The overload of toml::parse takes a toml::spec following the file name.\nThis allows you to change the TOML version being used.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); return 0; } Serializing with Version Specification # The overload of toml::format takes a toml::spec following the toml::value.\nThis allows you to change the TOML version being used.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); std::cout \u0026lt;\u0026lt; toml::format(v, toml::spec::v(1, 1, 0)) \u0026lt;\u0026lt; std::endl; return 0; } If a format is passed that is not permitted by the provided toml::spec, it will be ignored, and another format will be used as a fallback.\nSpecifying Newly Added Features in TOML # With version upgrades in TOML, multiple new features are introduced, and it\u0026rsquo;s possible to enable only some of them.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 0, 0); // Allowing newlines in inline tables spec.v1_1_0_allow_newlines_in_inline_tables = true; toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, spec); return 0; } For a full list of all flags, refer to toml::spec.\n"},{"id":11,"href":"/toml11/docs/features/extension/","title":"extension","section":"features","content":" TOML Language Extensions # The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0.\nAmong the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all.\nIn toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future.\nAdditionally, these features are disabled by default. To use them, you must explicitly set the corresponding feature flags to true. This design choice ensures that non-standard features are only used intentionally.\nSome of these features may eventually be merged into the TOML language itself. If a feature is officially adopted, the corresponding experimental implementation in toml11 may be removed in a minor version update after the official feature is implemented.\nnull # This feature allows the use of null as a value in TOML files.\na = null b = [ 1, 2, 3, null, 5] To enable this, set the ext_null_value flag in toml::spec to true.\nWhen parsed, it will be treated as toml::value_t::empty, similar to a default-constructed value. However, the location information within the file will be set.\nnull is parsed only in the context of values. Therefore, if null is used as a key, it will be interpreted as the string \u0026quot;null\u0026quot;, as it has been in the standard TOML.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(\u0026#34;a = null\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_empty()); assert(v.at(\u0026#34;a\u0026#34;).is(toml::value_t::empty)); return 0; } Hexadecimal Format for Floating-Point Numbers # This feature allows the use of hexadecimal format for floating-point numbers in TOML files.\na = 0x1.91eb851eb851fp+1 # 3.14 To enable this, set the ext_hex_float flag in toml::spec to true.\nThe format follows the printf specification for %a/%A.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 0x1.91eb851eb851fp+1\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_floating()); assert(v.at(\u0026#34;a\u0026#34;).as_floating() == 3.14); return 0; } Suffixes for Integers and Floating-Point Numbers # This feature allows the use of suffixes for numbers in TOML files. It can be applied to integers and floating-point numbers in decimal notation.\nThis is particularly useful for displaying units.\na = 86_400_sec b = 3.1416_rad c = 10_μm However, these are purely suffixes and do not perform any unit conversion. If unit conversion is needed, users should implement it by referencing the suffix.\nTo enable this, set the ext_num_suffix flag in toml::spec to true.\nThe suffix must be separated from the number by an underscore (_).\nFor clarity, the suffix cannot start with a digit.\ndistance = 100_m # valid distance = 10_0m # invalid distance = 10_0_m # valid The suffix is stored as std::string suffix in the format information.\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 86_400_sec\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_integer()); assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 86400); assert(v.at(\u0026#34;a\u0026#34;).as_integer_fmt().suffix == \u0026#34;sec\u0026#34;); return 0; } "},{"id":12,"href":"/toml11/docs/reference/color/","title":"color.hpp","section":"reference","content":" color.hpp # In color.hpp, functions related to colorizing error messages are defined.\nColors are specified using ANSI escape code. In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read.\nMacros # TOML11_COLORIZE_ERROR_MESSAGE # If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default.\nIf not defined, colors are not applied by default. You need to specify them using toml::color::enable().\nTOML11_USE_THREAD_LOCAL_COLORIZATION # If this macro is defined during compilation (-DTOML11_USE_THREAD_LOCAL_COLORIZATION), the colorization flag becomes thread_local. In this case, toml::color::enable() or toml::color::disable() will only affect the colorization flag in the thread that called it. This means that if you want to use a different setting from the default, you will need to set it again when starting a new thread. This makes toml::color::enable() and toml::color::disable() thread safe.\nBy default, the setting is global. When it is global, if one thread executes toml::color::enable(), the error messages will be colored in all threads. However, if one thread executes enable() or disable() while another executes enable(), disable() or should_color(), the result is undefined.\nFunctions # enable() # namespace toml { namespace color { void enable(); } // color } // toml Enables colorization using ANSI escape code.\nExample # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::enable(); // All subsequent errors will be colored. const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml Disables colorization using ANSI escape code.\nExample # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::disable(); // All subsequent errors will not be colored. const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } should_color() # namespace toml { namespace color { bool should_color(); } // color } // toml Returns true if colorization is enabled, false otherwise.\nExample # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iomanip\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; \u0026#34;colorized? : \u0026#34; \u0026lt;\u0026lt; std::boolalpha \u0026lt;\u0026lt; toml::color::should_color() \u0026lt;\u0026lt; std::endl; return 0; } Manipulators # namespace toml { namespace color { std::ostream\u0026amp; reset (std::ostream\u0026amp;); std::ostream\u0026amp; bold (std::ostream\u0026amp;); std::ostream\u0026amp; grey (std::ostream\u0026amp;); std::ostream\u0026amp; gray (std::ostream\u0026amp;); std::ostream\u0026amp; red (std::ostream\u0026amp;); std::ostream\u0026amp; green (std::ostream\u0026amp;); std::ostream\u0026amp; yellow (std::ostream\u0026amp;); std::ostream\u0026amp; blue (std::ostream\u0026amp;); std::ostream\u0026amp; magenta(std::ostream\u0026amp;); std::ostream\u0026amp; cyan (std::ostream\u0026amp;); std::ostream\u0026amp; white (std::ostream\u0026amp;); } // color } // toml Colorizes the foreground with ANSI escape code.\nExample # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;red!\u0026#34; \u0026lt;\u0026lt; toml::color::reset \u0026lt;\u0026lt; std::endl; return 0; } Related # error_info.hpp "},{"id":13,"href":"/toml11/docs/reference/comments/","title":"comments.hpp","section":"reference","content":" comments.hpp # In comments.hpp, comment containers are provided.\ntoml::preserve_comments # preserve_comments is a container that preserves comments.\nIt has all the member functions of std::vector\u0026lt;std::string\u0026gt;.\nComments are preserved as std::string. If the comment does not start with #, it will be prefixed with # during output. However, this prefixing is not done when adding comments to the container.\nSpaces are not automatically added, so if you want a space immediately after #, either start the comment with a space or pass the comment with #.\nnamespace toml { class preserve_comments; bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); } //toml Member types # using container_type = std::vector\u0026lt;std::string\u0026gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; Member Functions # Default Constructor # preserve_comments() = default; Constructs an empty preserve_comments.\nCopy and Move Constructors # preserve_comments(preserve_comments const\u0026amp;) = default; preserve_comments(preserve_comments \u0026amp;\u0026amp;) = default; Constructs a preserve_comments by copying or moving.\nConstructor (std::vector\u0026lt;std::string\u0026gt;) # explicit preserve_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit preserve_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Constructs a preserve_comments holding the contents of std::vector\u0026lt;std::string\u0026gt;.\nConstructor (discard_comments) # explicit preserve_comments(const discard_comments\u0026amp;); Constructs an empty preserve_comments.\nConstructor (Iterator) # template\u0026lt;typename InputIterator\u0026gt; preserve_comments(InputIterator first, InputIterator last); Constructs a preserve_comments from the range represented by InputIterator pointing to std::string.\nConstructor (std::initializer_list) # preserve_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); Constructs a preserve_comments from the range represented by std::initializer_list\u0026lt;std::string\u0026gt;.\nConstructor (Size Specified) # explicit preserve_comments(size_type n); preserve_comments(size_type n, const std::string\u0026amp; x); Constructs a preserve_comments with n comments.\nIf a std::string is passed, it replicates that comment n times.\nDestructor # ~preserve_comments() = default; Destroys the preserve_comments.\noperator=(preserve_comments) # preserve_comments\u0026amp; operator=(preserve_comments const\u0026amp;) = default; preserve_comments\u0026amp; operator=(preserve_comments \u0026amp;\u0026amp;) = default; Assigns a preserve_comments by copying or moving.\noperator=(std::vector\u0026lt;std::string\u0026gt;) # preserve_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); preserve_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Assigns a std::vector\u0026lt;std::string\u0026gt; by copying or moving.\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); The same as std::vector\u0026lt;std::string\u0026gt;::assign.\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); The same as std::vector\u0026lt;std::string\u0026gt;::insert.\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); The same as std::vector\u0026lt;std::string\u0026gt;::emplace.\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); The same as std::vector\u0026lt;std::string\u0026gt;::erase.\nswap # void swap(preserve_comments\u0026amp; other); Swaps the comments.\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); The same as std::vector\u0026lt;std::string\u0026gt;::push_back.\npop_back # void pop_back(); The same as std::vector\u0026lt;std::string\u0026gt;::pop_back.\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); The same as std::vector\u0026lt;std::string\u0026gt;::emplace_back.\nclear # void clear(); The same as std::vector\u0026lt;std::string\u0026gt;::clear.\nsize # size_type size() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::size.\nmax_size # size_type max_size() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::max_size.\ncapacity # size_type capacity() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::capacity.\nempty # bool empty() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::empty.\nreserve # void reserve(size_type n); The same as std::vector\u0026lt;std::string\u0026gt;::reserve.\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); The same as std::vector\u0026lt;std::string\u0026gt;::resize.\nshrink_to_fit # void shrink_to_fit(); The same as std::vector\u0026lt;std::string\u0026gt;::shrink_to_fit.\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::operator[].\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; The same as std::vector\u0026lt;std::string\u0026gt;::at.\nfront # reference front() noexcept; const_reference front() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::front.\nback # reference back() noexcept; const_reference back() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::back.\ndata # pointer data() noexcept; const_pointer data() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::data.\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::begin/end.\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; The same as std::vector\u0026lt;std::string\u0026gt;::rbegin/rend\nnon-member functions # Comparison operator # bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); It compares two preserve_comments in the same way as std::vector\u0026lt;std::string\u0026gt;.\nswap # void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); Stream operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); Outputs as TOML comments.\nIf the first character is not #, it adds #.\ntoml::discard_comments # discard_comments serves as a container for discarding comments.\nIt encompasses all the member functions of std::vector\u0026lt;std::string\u0026gt;, but invoking functions that modify the content has no effect, leaving it perpetually empty.\nnamespace toml { class discard_comments; bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); } //toml Member types # // container_type is not defined using size_type = std::size_t; using difference_type = std::ptrdiff_t; using value_type = std::string; using reference = std::string\u0026amp;; using const_reference = std::string const\u0026amp;; using pointer = std::string*; using const_pointer = std::string const*; using iterator = /* internal type: empty-iterator */ using const_iterator = /* internal type: empty-iterator */ using reverse_iterator = /* internal type: empty-iterator */ using const_reverse_iterator = /* internal type: empty-iterator */ Default Constructor # discard_comments() = default; Constructs an empty discard_comments.\nCopy / Move Constructor # discard_comments(discard_comments const\u0026amp;) = default; discard_comments(discard_comments \u0026amp;\u0026amp;) = default; Constructs a discard_comments by copying or moving.\nConstructor(std::vector\u0026lt;std::string\u0026gt;) # explicit discard_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit discard_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(preserve_comments) # explicit discard_comments(const preserve_comments\u0026amp;); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(Iterator) # template\u0026lt;typename InputIterator\u0026gt; discard_comments(InputIterator first, InputIterator last); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(std::initializer_list) # discard_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); Constructs an empty discard_comments. Arguments are ignored.\nConstructor(サイズ指定) # explicit discard_comments(size_type n); discard_comments(size_type n, const std::string\u0026amp; x); Constructs an empty discard_comments. Arguments are ignored.\nDestructor # ~discard_comments() = default; Destroys discard_comments.\noperator=(discard_comments) # discard_comments\u0026amp; operator=(discard_comments const\u0026amp;) = default; discard_comments\u0026amp; operator=(discard_comments \u0026amp;\u0026amp;) = default; Assigns discard_comments by copying or moving.\noperator=(std::vector\u0026lt;std::string\u0026gt;) # discard_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); discard_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); Does nothing.\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); Does nothing.\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); Does nothing.\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); Does nothing.\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); Does nothing.\nswap # void swap(discard_comments\u0026amp; other); Swaps two discard_comments. Effectively it does nothing.\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); Does nothing.\npop_back # void pop_back(); Does nothing.\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); Does nothing.\nclear # void clear(); Does nothing.\nsize # size_type size() const noexcept; Returns 0.\nmax_size # size_type max_size() const noexcept; Returns 0.\ncapacity # size_type capacity() const noexcept; Returns 0.\nempty # bool empty() const noexcept; Returns true.\nreserve # void reserve(size_type n); Does nothing.\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); Does nothing.\nshrink_to_fit # void shrink_to_fit(); Does nothing.\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; Causes undefined behavior.\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; Throws std::out_of_range.\nfront # reference front() noexcept; const_reference front() const noexcept; Causes undefined behavior.\nback # reference back() noexcept; const_reference back() const noexcept; Causes undefined behavior.\ndata # pointer data() noexcept; const_pointer data() const noexcept; Returns nullptr.\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; Returns an internally defined empty-iterator.\nThe empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.\nAccessing the target of the empty-iterator always calls std::terminate.\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; Returns an internally defined empty-iterator.\nThe empty-iterator remains at the same value after incrementing or decrementing and all values are equivalent.\nAccessing the target of the empty-iterator always calls std::terminate.\nnon-member functions # Comparison operator # bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); All the instances of discard_comments are the same value. operator== returns true, operator=! returns false.\nswap # void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); Swaps discard_comments. Effectively it does nothing.\nStream operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); Outputs nothing.\nRelated # value.hpp "},{"id":14,"href":"/toml11/docs/reference/conversion/","title":"conversion.hpp","section":"reference","content":" conversion.hpp # Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find.\nTOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) Example # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) Related # from.hpp into.hpp "},{"id":15,"href":"/toml11/docs/reference/datetime/","title":"datetime.hpp","section":"reference","content":" datetime.hpp # Defines a class that stores date and time information used in TOML\u0026rsquo;s datetime.\nenum class month_t # Enum class to specify months.\nDue to its relationship with std::tm, local_date treats January as 0. To avoid confusion, month_t allows specification of months by their names.\nnamespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # local_date holds a date.\nyear represents the year in AD. For month, January is represented as 0 to align with std::tm. day holds the day of the month.\nnamespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm\u0026amp; t); explicit local_date(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); std::string to_string(const local_date\u0026amp; date); } Member Variables # year # std::int16_t year; Represents the year in AD. There\u0026rsquo;s no offset. 2024 is simply 2024.\nmonth # std::uint8_t month; Represents the month. To align with std::tm, January is 0, February is 1, and so on.\nTo avoid confusion, use month_t during construction.\nday # std::uint8_t day; Represents the day of the month. The first day is 1.\nMember Functions # Constructor # local_date() = default; Uses the default implementation.\nDestructor # ~local_date() = default; Uses the default implementation.\nCopy and Move Constructors # local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; Uses the default implementations.\nCopy and Move Assignment Operators # local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; Uses the default implementations.\nConstructor (int year, month_t month, int day) # local_date(int y, month_t m, int d); Constructs a local_date from the specified values.\nDoes not perform boundary checks.\nConstructor (std::tm) # local_date(const std::tm\u0026amp;); Constructs a local_date from the specified std::tm value.\nConstructor (std::chrono::system_clock::time_point) # local_date(const std::chrono::system_clock::time_point\u0026amp;); Constructs a local_date from the specified std::chrono::system_clock::time_point value.\nTime zone is determined by the environment.\nConstructor (std::time_t) # local_date(const std::time_t); Constructs a local_date from the specified std::time_t value.\nTime zone is determined by the environment.\noperator std::chrono::system_clock::time_point # operator std::chrono::system_clock::time_point() const; Converts to std::chrono::system_clock::time_point.\nTime zone is determined by the environment.\nTime is set to 0 hours and 0 minutes.\noperator std::time_t # operator std::time_t() const; Converts to std::time_t.\nTime zone is determined by the execution environment.\nTime is set to 0 hours and 0 minutes.\nNon-member Functions # Comparison Operators # bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); Compares two dates.\nStream Operators # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); Outputs in the default TOML format.\nto_string # std::string to_string(const local_date\u0026amp; date); Converts to a string in the default TOML format.\nlocal_time # namespace toml { struct local_time { std::uint8_t hour; // [0, 23] std::uint8_t minute; // [0, 59] std::uint8_t second; // [0, 60] std::uint16_t millisecond; // [0, 999] std::uint16_t microsecond; // [0, 999] std::uint16_t nanosecond; // [0, 999] local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); explicit local_time(const std::tm\u0026amp; t); template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); operator std::chrono::nanoseconds() const; local_time() = default; ~local_time() = default; local_time(local_time const\u0026amp;) = default; local_time(local_time\u0026amp;\u0026amp;) = default; local_time\u0026amp; operator=(local_time const\u0026amp;) = default; local_time\u0026amp; operator=(local_time\u0026amp;\u0026amp;) = default; }; bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); std::string to_string(const local_time\u0026amp; time); } Member Values # hour # std::uint8_t hour; Represents the hour. Values range from 0 to 23.\nminute # std::uint8_t minute; // [0, 59] Represents the minute. Values range from 0 to 59.\nsecond # std::uint8_t second; // [0, 60] Represents the second. Values range from 0 to 60.\nmillisecond # std::uint16_t millisecond; // [0, 999] Represents the millisecond. Values range from 0 to 999.\nmicrosecond # std::uint16_t microsecond; // [0, 999] Represents the microsecond. Values range from 0 to 999.\nnanosecond # std::uint16_t nanosecond; // [0, 999] Represents the nanosecond. Values range from 0 to 999.\nMember Functions # default constructor # local_time() = default; Initializes all values to 0.\nconstructor (h, m, s, ms = 0, us = 0, ns = 0) # local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); Constructs using the specified time components.\nNo boundary checks are performed.\nconstructor(std::tm) # explicit local_time(const std::tm\u0026amp; t); Constructs using tm_hour, tm_min, and tm_sec from std::tm.\nSubseconds are initialized to 0.\nconstructor(std::chrono::duration) # template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); Constructs as the time of day from 0 hours of the day specified by duration.\noperator std::chrono::nanoseconds # operator std::chrono::nanoseconds() const; Converts to std::chrono::nanoseconds.\nNon-member Functions # Comparison Operators # bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); Compares based on time values.\nStream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); Outputs in the default TOML format.\nto_string # std::string to_string(const local_time\u0026amp; time); Converts to a string in the default TOML format.\ntime_offset # namespace toml { struct time_offset { std::int8_t hour{0}; // [-12, 12] std::int8_t minute{0}; // [-59, 59] time_offset(int h, int m); operator std::chrono::minutes() const; time_offset() = default; ~time_offset() = default; time_offset(time_offset const\u0026amp;) = default; time_offset(time_offset\u0026amp;\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset const\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset\u0026amp;\u0026amp;) = default; }; bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp; offset); std::string to_string(const time_offset\u0026amp; offset); } Member Variables # hour # std::int8_t hour{0}; // [-12, 12] Represents the hour offset, ranging from -12 to +12.\nminute # std::int8_t minute{0}; // [-59, 59] Represents the minute offset, ranging from -59 to +59.\nMember Functions # Constructor # time_offset(int h, int m); Constructs with given hours and minutes.\nNo boundary checking is performed.\noperator std::chrono::minutes # operator std::chrono::minutes() const; Converts to std::chrono::minutes.\nNon-member Functions # Comparison Operators # bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); Compares based on time length.\nStream Output Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp;); Outputs in the default TOML format.\nto_string # std::string to_string(const time_offset\u0026amp;); Converts to a string in the default TOML format.\nlocal_datetime # namespace toml { struct local_datetime { local_date date; local_time time; local_datetime(local_date d, local_time t); explicit local_datetime(const std::tm\u0026amp; t); explicit local_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_datetime(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; local_datetime() = default; ~local_datetime() = default; local_datetime(local_datetime const\u0026amp;) = default; local_datetime(local_datetime\u0026amp;\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime const\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp; dt); std::string to_string(const local_datetime\u0026amp; dt); } Member Variables # local_date date # local_date date; Stores the date component data.\nlocal_time time # local_time time; Stores the time component data.\nMember Functions # Default Constructor # Constructs both date and time with default values.\nConstructor (local_date, local_time) # Constructs with the specified date and time.\nConstructor (std::tm) # Constructs from std::tm.\nThe timezone is selected based on the execution environment.\nConstructor (std::chrono::system_clock::time_point) # Constructs from std::chrono::system_clock::time_point.\nThe timezone is selected based on the execution environment.\nConstructor (std::time_t) # Constructs from std::time_t.\nThe timezone is selected based on the execution environment.\noperator std::chrono::system_clock::time_point # Converts to std::chrono::system_clock::time_point.\noperator std::time_t # Converts to std::time_t.\nNon-member Functions # Comparison Operators # bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); Compares based on chronological order.\nStream Output Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp;); Outputs in the default TOML format.\nto_string # std::string to_string(const local_datetime\u0026amp;); Converts to a string in the default TOML format.\noffset_datetime # namespace toml { struct offset_datetime { local_date date; local_time time; time_offset offset; offset_datetime(local_date d, local_time t, time_offset o); offset_datetime(const local_datetime\u0026amp; dt, time_offset o); explicit offset_datetime(const local_datetime\u0026amp; ld); explicit offset_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit offset_datetime(const std::time_t\u0026amp; t); explicit offset_datetime(const std::tm\u0026amp; t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; offset_datetime() = default; ~offset_datetime() = default; offset_datetime(offset_datetime const\u0026amp;) = default; offset_datetime(offset_datetime\u0026amp;\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime const\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp; dt); std::string to_string(const offset_datetime\u0026amp; dt); } Member Variables # date # local_date date; Stores the date component.\ntime # local_time time; Stores the time component.\noffset # time_offset offset; Stores the offset component.\nMember Functions # Default Constructor # Constructs date, time, and offset with default values.\nConstructor (local_date, local_time, time_offset) # Constructs with the specified date, time, and offset.\nConstructor (local_datetime, time_offset) # Constructs from local_datetime and offset.\nConstructor (std::tm) # Constructs from std::tm.\nThe timezone is UTC (00:00).\nConstructor (std::chrono::system_clock::time_point) # Constructs from std::chrono::system_clock::time_point.\nThe timezone is UTC (00:00).\nConstructor (std::time_t) # Constructs from std::time_t.\nThe timezone is UTC (00:00).\noperator std::chrono::system_clock::time_point # Converts to std::chrono::system_clock::time_point.\nThe timezone is UTC (00:00).\noperator std::time_t # Converts to std::time_t.\nThe timezone is UTC (00:00).\nNon-member Functions # Comparison Operators # bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); Compares based on chronological order.\nIf dates are the same, compares based on timezone order.\nStream Output Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp;); Outputs in the default TOML format.\nto_string # std::string to_string(const offset_datetime\u0026amp;); Converts to a string in the default TOML format.\n"},{"id":16,"href":"/toml11/docs/reference/error_info/","title":"error_info.hpp","section":"reference","content":" error_info.hpp # In error_info.hpp, definitions for error_info and functions to format it are provided.\ntoml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = \u0026#34;\u0026#34;); error_info(std::string t, std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; l, std::string s = \u0026#34;\u0026#34;); std::string const\u0026amp; title() const noexcept; std::string \u0026amp; title() noexcept; std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; const\u0026amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const\u0026amp; suffix() const noexcept; std::string \u0026amp; suffix() noexcept; }; template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); } Member Functions # Constructor (title, loc, msg, suffix) # Constructs error_info with specified title, location information loc, message msg, and optional suffix.\nsuffix defaults to empty.\nConstructor (title, [{loc, msg}, ...], suffix) # Constructs error_info with specified title, an array of location-message pairs [{loc, msg}, ...], and optional suffix.\nsuffix defaults to empty.\nstd::string title() # Returns the title of the error message.\nstd::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; locations() # Returns the list of locations where errors occurred along with their respective messages.\nMultiple locations can be specified.\nstd::string suffix() # Returns the suffix message to display at the end, providing hints or additional information.\nNon-Member Functions # make_error_info # template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Creates a new error_info.\nMust be followed by a msg related to source_location or basic_value.\nOverloads are added in value.hpp when passing toml::basic_value instead of source_location.\nPossible to pass suffix at the end.\nformat_error # Formats error_info as follows:\n{title} --\u0026gt; {locations().at(0).first.file_name()} | 1 | {locations().at(0).first.line()} | ^-- {locations().at(0).second} | 2 | {locations().at(1).first.line()} | ^-- {locations().at(1).second} {suffix} If file names differ between two source_location, the file name is displayed again.\nstd::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); Formats error_info.\nIf errkind is not provided, a red-bold [error] prefix is added before title.\nIf errkind is provided (including an empty string), it replaces [error].\nnamespace toml { template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); } // toml Returns a formatted string using format_error for error_info created with make_error_info.\nOverloads are added in value.hpp when passing toml::basic_value instead of source_location.\nStream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); Calls format_error(e) and outputs it.\nRelated # color.hpp parser.hpp source_location.hpp "},{"id":17,"href":"/toml11/docs/reference/exception/","title":"exception.hpp","section":"reference","content":" exception.hpp # toml::exception # Base class for exception types defined in toml11.\nnamespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} }; } // toml Member Functions # Destructor # virtual ~exception() noexcept override = default; Override when derived.\nwhat # virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} Returns the error message. Override when derived.\n"},{"id":18,"href":"/toml11/docs/reference/find/","title":"find.hpp","section":"reference","content":" find.hpp # This function searches for a value in a toml::value and performs type conversion if necessary.\ntoml::value can change the type it stores, and toml::find accommodates these types. Technically, all functions use toml::basic_value\u0026lt;TC\u0026gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::find # Overview # toml::find uses template arguments for the type you want to retrieve and function arguments for the key of the value you want to find.\ntemplate\u0026lt;typename T, typename TC, typename ... Keys\u0026gt; T find(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, Keys ... keys); The supported types for T and the behavior of the conversion are the same as for toml::get.\nIf T is not specified, a toml::value will be returned.\nKeys can be of type toml::value::key_type or std::size_t. When multiple keys are provided, the function will search recursively through sub-tables or arrays. If a toml::value::key_type is given, toml::value is interpreted as a toml::table; if a std::size_t is given, toml::value is interpreted as a toml::array.\nNote on Recursive Search # TOML allows for bare keys as well as quoted keys (enclosed in \u0026quot; or '). Using a quoted key like \u0026quot;foo.bar\u0026quot; = \u0026quot;baz\u0026quot; means no sub-table is constructed, and the key is \u0026quot;foo.bar\u0026quot;. To handle such patterns, toml11 does not split keys containing . and searches using the full string.\nConsider the following TOML file:\n[foo] [foo.bar] baz = \u0026#34;hoge\u0026#34; [\u0026#34;foo.bar\u0026#34;] baz = \u0026#34;fuga\u0026#34; The corresponding usage of toml::find is shown below:\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto baz1 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;, \u0026#34;baz\u0026#34;); // hoge const auto baz2 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo.bar\u0026#34;, \u0026#34;baz\u0026#34;); // fuga cf. toml.io/en/v1.0.0#keys\ntoml::find(value, key) # Searches for key in value as if value were a toml::table, then converts using toml::get.\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); If T is not specified, the function returns a toml::value without conversion.\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find( basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); Exceptions # If the toml::value does not contain a table, a toml::type_error is thrown.\nIf the contained table does not have the specified element, a std::out_of_range is thrown.\nIf the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.\ntoml::find(value, index) # Accesses the index-th element of value as if value were a toml::array, then converts using toml::get.\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t index); If T is not specified, the function returns a toml::value without conversion.\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find(basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t ky); Exceptions # If the toml::value does not contain an array, a toml::type_error is thrown.\nIf the contained array does not have the specified number of elements, a std::out_of_range is thrown.\nIf the specified element cannot be converted to T (i.e., toml::get fails), a toml::type_error is thrown.\ntoml::find(value, keys...) # template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* Equivalent to toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); This function calls toml::find recursively.\nThe failure conditions and the exceptions thrown are the same as those for toml::find.\ntoml::find_or(value, key, fallback) # template\u0026lt;typename T, typename TC, typename Key\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const Key\u0026amp; key, T\u0026amp;\u0026amp; opt); The find_or function takes a default value to avoid throwing an exception when the search fails.\nThe default value must be of the same type as the return type T. Therefore, unlike toml::find\u0026lt;T\u0026gt;, find_or infers the type T.\nYou can specify T explicitly with find_or\u0026lt;T\u0026gt;, but this always returns a new value. To obtain a reference, do not specify T.\nWhen T is basic_value # template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.\nIf the value is not found, the default value is returned.\nWhen T is toml::value::{some_type} # template\u0026lt;typename T, typename TC, typename K\u0026gt; T\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC, typename K\u0026gt; T const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const T\u0026amp; opt) noexcept Searches for the corresponding value and returns it without conversion. Because no conversion is needed, a reference can be returned.\nIf the value is not found or if a different type is stored, the default value is returned.\nWhen T is const char* # template\u0026lt;typename T, typename TC, typename K\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T opt) Searches for the corresponding value and returns it as a std::string.\nSince the fallback is constructed from const char* to std::string, a reference cannot be returned in case of failure.\nWhen T is any other type # template\u0026lt;typename T, typename TC, typename K\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T opt); Searches for the corresponding value and converts it to T before returning it.\nBecause conversion is performed, a reference cannot be returned.\nWhen multiple keys are provided # template\u0026lt;typename Value, typename K1, typename K2, typename K3, typename ... Ks\u0026gt; auto find_or(Value\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, K3\u0026amp;\u0026amp; k3, Ks\u0026amp;\u0026amp; ... keys) noexcept -\u0026gt; decltype(find_or(v, k2, std::forward\u0026lt;K3\u0026gt;(k3), std::forward\u0026lt;Ks\u0026gt;(keys)...)) Interprets the last element in the key sequence as the default value and applies find_or recursively.\nIf the inferred type of T is toml::value or toml::value::some_type, a reference can be returned.\nIf T is explicitly specified, conversion is always performed.\nRelated # get.hpp value.hpp "},{"id":19,"href":"/toml11/docs/reference/format/","title":"format.hpp","section":"reference","content":" format.hpp # Defines structures and enumerations related to formatting information for toml::value.\nindent_char # An enumeration representing the indentation character choice.\nenum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const indent_char\u0026amp; c); std::string to_string(const indent_char); Choosing none means no indentation is used, regardless of the value in super tables.\nIf both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.\nboolean_format_info # Formatting information for boolean.\nstruct boolean_format_info {}; bool operator==(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; bool operator!=(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; There is only one way to format boolean, so no configurable values are provided.\ninteger_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const integer_format f); std::string to_string(const integer_format); Specifies the radix of an integer.\ninteger_format_info # struct integer_format_info { integer_format fmt = integer_format::dec; bool uppercase = true; // use uppercase letters std::size_t width = 0; // minimal width (may exceed) std::size_t spacer = 0; // position of `_` (if 0, no spacer) std::string suffix = \u0026#34;\u0026#34;; // _suffix (library extension) }; bool operator==(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; bool operator!=(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; Member Variables # integer_format fmt # Specifies the radix.\nbool uppercase # Uses uppercase letters when formatted as a hexadecimal integer.\nstd::size_t width # Specifies the minimum width. The formatted value may exceed this width.\nFor values smaller than this width, if integer_format::dec, no effect. Otherwise, leading zeros are added.\nstd::size_t spacer # Specifies the width at which underscores _ are inserted.\nIf 3, formatted as 1_234_567. If 4, formatted as 0xdead_beef. If 0, no underscores are inserted. Irregular widths are not allowed.\nstd::string suffix # Stores the suffix when spec::ext_num_suffix of toml11 extension is true.\ncf. spec.hpp\nfloating_format # enum class floating_format : std::uint8_t { defaultfloat = 0, fixed = 1, // does not include exponential part scientific = 2, // always include exponential part hex = 3 // hexfloat extension }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const floating_format f); std::string to_string(const floating_format); Specifies the formatting style for floating numbers. Corresponds to std::defaultfloat, std::fixed, std::scientific, std::hexfloat.\nhexfloat is available only if toml::spec::ext_hex_float is true.\ncf. spec.hpp\nfloating_format_info # struct floating_format_info { floating_format fmt = floating_format::defaultfloat; std::size_t prec = 0; // precision (if 0, use the default) std::string suffix = \u0026#34;\u0026#34;; // 1.0e+2_suffix (library extension) }; bool operator==(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; bool operator!=(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; Member Variables # floating_format fmt # Specifies the formatting style.\nstd::size_t prec # Specifies the precision after the decimal point.\nstd::string suffix # Stores the suffix when spec::ext_num_suffix of toml11 extension is true.\ncf. spec.hpp\nstring_format # enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const string_format f); std::string to_string(const string_format); Specifies the formatting style for strings.\nstring_format_info # struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; bool operator==(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; bool operator!=(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; Member Variables # string_format fmt # Specifies the formatting information for strings.\nbool start_with_newline # For multiline_basic or multiline_literal, specifies whether to include a newline after the initial \u0026quot;\u0026quot;\u0026quot; or '''.\ndatetime_delimiter_kind # enum class datetime_delimiter_kind : std::uint8_t { upper_T = 0, lower_t = 1, space = 2, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const datetime_delimiter_kind d); std::string to_string(const datetime_delimiter_kind); Specifies the delimiter used between date and time in datetime.\nPossible options include T, t, and a space .\noffset_datetime_format_info # struct offset_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; bool operator!=(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; Member Variables # datetime_delimiter_kind delimiter # Specifies the delimiter to use.\nbool has_seconds # Specifies whether to omit seconds.\nstd::size_t subsecond_precision # Specifies how many digits to output for subseconds.\nlocal_datetime_format_info # struct local_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; bool operator!=(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; Member Variables # datetime_delimiter_kind delimiter # Specifies the delimiter to use.\nbool has_seconds # Specifies whether to omit seconds.\nstd::size_t subsecond_precision # Specifies how many digits to output for subseconds.\nlocal_date_format_info # struct local_date_format_info { // nothing, for now }; bool operator==(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; bool operator!=(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; No formatting parameters are specified for local_date.\nlocal_time_format_info # struct local_time_format_info { bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; bool operator!=(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; Member Variables # bool has_seconds # Specifies whether to omit seconds.\nstd::size_t subsecond_precision # Specifies how many digits to output for subseconds.\narray_format # enum class array_format : std::uint8_t { default_format = 0, oneline = 1, multiline = 2, array_of_tables = 3 // [[format.in.this.way]] }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const array_format f); std::string to_string(const array_format); default_format Automatically selects the appropriate format. Longer arrays may span multiple lines. oneline Formats all elements in a single line. multiline Outputs each element on its own line. array_of_tables Formats in the [[array.of.tables]] style. Cannot contain elements other than table. array_format_info # struct array_format_info { array_format fmt = array_format::default_format; indent_char indent_type = indent_char::space; std::int32_t body_indent = 4; // indent in case of multiline std::int32_t closing_indent = 0; // indent of `]` }; bool operator==(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; bool operator!=(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; Member Variables # array_format fmt # Specifies the format style.\nindent_char indent_type # Selects the type of character used for indentation.\nstd::int32_t body_indent # Specifies the number of characters to indent before each element in array_format::multiline.\nstd::int32_t closing_indent # Specifies the number of characters to indent before the closing bracket ] in array_format::multiline.\ntable_format # enum class table_format : std::uint8_t { multiline = 0, // [foo] \\n bar = \u0026#34;baz\u0026#34; oneline = 1, // foo = {bar = \u0026#34;baz\u0026#34;} dotted = 2, // foo.bar = \u0026#34;baz\u0026#34; multiline_oneline = 3, // foo = { \\n bar = \u0026#34;baz\u0026#34; \\n } implicit = 4 // [x] defined by [x.y.z]. skip in serializer. }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const table_format f); std::string to_string(const table_format); multiline Formats as a multiline normal table. oneline Formats as an inline table. dotted Formats in the form of a.b.c = \u0026quot;d\u0026quot;. multiline_oneline Formats as a multiline inline table with line breaks. Available from TOML v1.1.0 onwards. cf. spec.hpp implicit Skips implicit definitions like [x.y.z.w], leaving [x], [x.y], [x.y.z] as implicit. According to TOML syntax, dotted table can have sub-tables:\n[fruit] apple.color = \u0026#34;red\u0026#34; apple.taste.sweet = true # [fruit.apple] # INVALID # [fruit.apple.taste] # INVALID [fruit.apple.texture] # you can add sub-tables smooth = true toml11 currently does not support this format. Sub-tables under a dotted table would all be dotted, and tables are forced into inline table format.\ntable_format_info # struct table_format_info { table_format fmt = table_format::multiline; indent_char indent_type = indent_char::space; std::int32_t body_indent = 0; // indent of values std::int32_t name_indent = 0; // indent of [table] std::int32_t closing_indent = 0; // in case of {inline-table} }; bool operator==(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; bool operator!=(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; Member Variables # table_format fmt # Specifies the formatting method.\nindent_char indent_type # Specifies the character used for indentation.\nstd::int32_t body_indent # Specifies the width of indentation before keys.\nThe indentation width of the super table is not added.\nstd::int32_t name_indent # Specifies the indentation of keys in [table] format.\nThe indentation width of the super table is not added.\nstd::int32_t closing_indent # Specifies the indentation width before the closing brace } in the case of multiline_oneline.\n"},{"id":20,"href":"/toml11/docs/reference/from/","title":"from.hpp","section":"reference","content":" from.hpp # Defines a struct used for conversion from toml::value in toml::get and toml::find.\nYou can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from\u0026lt;T\u0026gt;.\nThis file does not provide specific implementations. Please specialize this struct when using.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct from; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/from.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)}; } }; } // toml Related # conversion.hpp into.hpp "},{"id":21,"href":"/toml11/docs/reference/get/","title":"get.hpp","section":"reference","content":" get.hpp # These are functions for extracting values from toml::value and performing type conversions if necessary.\ntoml::value can change the type it stores, and toml::get accommodates these types. Technically, all functions use toml::basic_value\u0026lt;TC\u0026gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::get\u0026lt;T\u0026gt; # Overview # Generally, toml::get behaves as follows: You specify T as in toml::get\u0026lt;int\u0026gt;(v).\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); However, depending on the type of T, toml::get can exhibit different behaviors.\nThe types of T can be categorized into:\nTypes that do not require conversion Types that require conversion Detailed conditions and the specific types supported are discussed later.\nTypes that Do Not Require Conversion # No conversion is needed if the provided toml::value is already storing the desired type. For instance, since toml::value::integer_type is an alias for std::int64_t, toml::get\u0026lt;std::int64_t\u0026gt;(v) requires no conversion. In this case, toml::get retrieves the integer value from toml::value and returns a reference to it.\nIf the provided toml::value is a mutable reference (\u0026amp;), the returned value is also a mutable reference (\u0026amp;). If it is an immutable reference (const\u0026amp;), the returned value will also be an immutable reference (const\u0026amp;). Returning a mutable reference allows you to overwrite the value stored in toml::value through that reference.\nTypes that Require Conversion # Types other than the ones mentioned above require conversion. For example, since toml::value::integer_type is an alias for std::int64_t, toml::get\u0026lt;std::size_t\u0026gt;(toml::value\u0026amp;) requires conversion. In this case, toml::get retrieves the integer value from toml::value and casts it to return the appropriate type.\ntoml11 supports not only simple casts but also complex type conversions like converting from toml::array to std::tuple\u0026lt;int, double, std::string\u0026gt;, std::array\u0026lt;double, 4\u0026gt;, or from toml::table to std::map\u0026lt;std::string, int\u0026gt;. For specifics, refer to the subsequent sections.\nWhen Conversion Fails # Sometimes, the expected type conversion cannot be performed. For example, applying toml::get\u0026lt;int\u0026gt;(v) to a toml::value that holds a table.\nIn such cases, an attempt to convert to the type most similar to the desired type (in this case, int using as_integer) fails, and a toml::type_error is thrown.\nWhen parsing from a file, an error message similar to the following is output:\nterminate called after throwing an instance of \u0026#39;toml::type_error\u0026#39; what(): toml::value::as_integer(): bad_cast to integer --\u0026gt; input.toml | 6 | [fruit] | ^^^^^^^-- the actual type is table When T is identical to toml::value # template\u0026lt;typename T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); Condition:\nstd::is_same\u0026lt;T, basic_value\u0026lt;TC\u0026gt;\u0026gt; is satisfied. Since this involves retrieving toml::value from toml::value, no conversion is performed, and the value is returned as is. This exists solely to generalize the implementation of other functions.\nThis does not fail.\nWhen T is one of toml::value::{some_type} # template\u0026lt;typename T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); Condition:\nT must be the same as one of the types that toml::value can store (e.g., toml::value::boolean_type). If toml::value is storing a type that matches the specified type in toml::get\u0026lt;T\u0026gt;, such as toml::value::integer_type, no type conversion is needed, and a reference can be returned.\nIf a different type is stored, a toml::type_error is thrown.\nWhen T is basic_value\u0026lt;OtherTC\u0026gt; with a different TypeConfig # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is not toml::basic_value\u0026lt;TC\u0026gt;. T is toml::basic_value\u0026lt;OtherTC\u0026gt;. When a basic_value that can store different types is specified, conversion is performed.\nSince type conversion occurs, the returned value is a new value and not a reference.\nThis does not fail (except in cases like memory exhaustion).\nWhen T is an integer type # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_integral\u0026lt;T\u0026gt; is satisfied T is not bool T is not toml::value::integer_type The function assumes that toml::value holds an integer_type, retrieves its value, converts it to T, and returns it.\nIf a type other than toml::value::integer_type is stored, a toml::type_error is thrown.\nWhen T is a floating-point type # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_floating_point\u0026lt;T\u0026gt; is satisfied T is not toml::value::floating_type The function assumes that toml::value holds a floating_type, retrieves its value, converts it to T, and returns it.\nIf a type other than toml::value::floating_type is stored, a toml::type_error is thrown.\nWhen T is std::string_view # This is only available in C++17 and later.\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_same\u0026lt;std::string_view, T\u0026gt; is satisfied The function assumes that toml::value holds a string_type, retrieves its value, constructs a std::string_view from it, and returns it.\nIf a type other than toml::value::string_type is stored, a toml::type_error is thrown.\nWhen T is std::chrono::duration # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::chrono::duration\u0026lt;Rep, Period\u0026gt; The function assumes that toml::value holds a local_time, retrieves its value, converts it to std::chrono::duration, and returns it.\nIf a type other than toml::value::local_time is stored, a toml::type_error is thrown.\nWhen T is std::chrono::system_clock::time_point # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nstd::is_same\u0026lt;T, std::chrono::system_clock::time_point\u0026gt; is satisfied If the toml::value holds a local_date, local_datetime, or offset_datetime, this function retrieves the value and converts it to std::chrono::system_clock::time_point, returning the result.\nIf the value is of a type other than local_date, local_datetime, or offset_datetime, a toml::type_error is thrown.\nWhen T is array-like # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\nT has an iterator T has a value_type T supports push_back(x) T is not toml::value::array_type T is not std::string T is not std::string_view T is not map-like T does not have from_toml() member function toml::from\u0026lt;T\u0026gt; is not defined A constructor from toml::basic_value\u0026lt;TC\u0026gt; is not defined This includes types like std::vector\u0026lt;int\u0026gt; and std::deque\u0026lt;std::string\u0026gt;.\nIf the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.\nIf the value is of a type other than toml::value::array_type, a toml::type_error is thrown.\nWhen T is std::array # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nT is std::array\u0026lt;U, N\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to the specified container type, returning the result.\nIf the value is of a type other than toml::value::array_type, a toml::type_error is thrown.\nIf the array held by toml::value does not contain enough elements, a std::out_of_range is thrown.\nWhen T is std::forward_list # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::forward_list\u0026lt;U\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to a std::forward_list, returning the result.\nIf the value is of a type other than toml::value::array_type, a toml::type_error is thrown.\nWhen T is std::pair # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::pair\u0026lt;T1, T2\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to std::pair\u0026lt;T1, T2\u0026gt;, returning the result.\nThe first and second elements are recursively converted.\nIf the value is of a type other than basic_value::array_type, a toml::type_error is thrown.\nIf the array held by toml::value does not contain exactly 2 elements, a std::out_of_range is thrown.\nWhen T is std::tuple # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nT is std::tuple\u0026lt;T1, T2, ... TN\u0026gt; If the toml::value holds an array, this function retrieves the value and converts it to std::tuple\u0026lt;T1, T2, ...TN\u0026gt;, returning the result.\nEach element is recursively converted.\nIf the value is of a type other than basic_value::array_type, a toml::type_error is thrown.\nIf the array held by toml::value does not contain exactly std::tuple_size\u0026lt;T\u0026gt;::value elements, a std::out_of_range is thrown.\nWhen T is map-like # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\nT has an iterator T has a key_type T has a value_type T has a mapped_type T is not toml::value::table_type T does not have a from_toml() member function toml::from\u0026lt;T\u0026gt; is not defined A constructor from toml::basic_value\u0026lt;TC\u0026gt; is not defined This includes types like std::map\u0026lt;std::string, int\u0026gt; and std::unordered_map\u0026lt;std::string, float\u0026gt;.\nIf the toml::value holds a table, this function retrieves the value and converts it to T, returning the result.\nElements are recursively converted.\nIf the value is of a type other than basic_value::table_type, a toml::type_error is thrown.\nWhen T is a user-defined type with a specialization of toml::from\u0026lt;T\u0026gt; # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Condition:\nA specialization of toml::from\u0026lt;T\u0026gt; is defined If a specialization of toml::from for T is defined, it is used for type conversion.\nEnsure this does not conflict with individually supported types (std::array, std::pair, std::tuple etc).\nWhen T is a user-defined type with a from_toml member function # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\ntoml::from\u0026lt;T\u0026gt; is not defined T has from_toml() member function If T has a from_toml(toml::basic_value\u0026lt;TC\u0026gt;) member function, it is used for type conversion.\nIf toml::from\u0026lt;T\u0026gt; is defined, it takes precedence.\nWhen T is a user-defined type with a constructor that takes toml::basic_value\u0026lt;TC\u0026gt; # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); Conditions:\ntoml::from\u0026lt;T\u0026gt; is not defined T does not have from_toml() member function T has a constructor that takes toml::basic_value\u0026lt;TC\u0026gt; If T has a constructor that takes toml::basic_value\u0026lt;TC\u0026gt;, it is used for type conversion.\nIf toml::from\u0026lt;T\u0026gt; or T::from_toml is defined, they take precedence.\ntoml::get_or\u0026lt;T\u0026gt; # get_or takes a default value for use when the conversion fails, avoiding exceptions.\nThe default value must be of the same type as the target type T. Therefore, unlike toml::get\u0026lt;T\u0026gt;, T can be inferred in get_or.\nWhen T is basic_value\u0026lt;TC\u0026gt; # template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; opt) Since the conversion target is the same toml::value, this never fails.\nIt exists solely to generalize the implementation of other functions.\nWhen T is basic_value\u0026lt;TC\u0026gt;::{some_type} # template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, T\u0026amp;\u0026amp; opt) noexcept Performs the same conversion as toml::get\u0026lt;T\u0026gt;. If it fails, the second argument is returned.\nWhen T is const char* # template\u0026lt;typename TC\u0026gt; typename basic_value\u0026lt;TC\u0026gt;::string_type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::string_type::value_type* opt); When const char* is passed, the conversion target is interpreted as std::string.\nWhen T is something else # template\u0026lt;typename TC\u0026gt; typename std::remove_cv\u0026lt;typename std::remove_reference\u0026lt;T\u0026gt;::type\u0026gt;::type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp;\u0026amp; opt); Performs the same conversion as toml::get\u0026lt;T\u0026gt;. If it fails, the second argument is returned.\nRelated # find.hpp from.hpp value.hpp "},{"id":22,"href":"/toml11/docs/reference/into/","title":"into.hpp","section":"reference","content":" into.hpp # Defines a struct used for conversion from user-defined types into toml::value constructors.\nYou can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into\u0026lt;T\u0026gt;.\nThis file does not provide specific implementations. Please specialize this struct when using.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct into; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/into.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { using value_type = toml::basic_value\u0026lt;TC\u0026gt;; using table_type = typename value_type::table_type; return value_type(table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; } // toml Related # conversion.hpp from.hpp "},{"id":23,"href":"/toml11/docs/reference/literal/","title":"literal.hpp","section":"reference","content":" literal.hpp # In literal.hpp, the _toml literal is defined.\nThe _toml literal parses string literals into toml::value.\nnamespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); toml::value operator\u0026#34;\u0026#34; _toml(const char8_t* str, std::size_t len); // Available in C++20 and later } // toml_literals } // literals } // toml Free Functions # operator\u0026quot;\u0026quot; _toml(const char*) # toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); Converts a string literal into a toml::value by parsing it.\nFor typical TOML files, this performs equivalent parsing to toml::parse.\nconst auto v1 = \u0026#34;a = \u0026#39;foo\u0026#39;\u0026#34;_toml; // v1: {a = \u0026#39;foo\u0026#39;} When dealing with multiline content, raw string literal is convenient.\nconst auto v1 = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; If the value is a standalone entity, it represents that value.\nconst auto v2 = \u0026#34;\u0026#39;foo\u0026#39;\u0026#34;_toml; // v2: \u0026#39;foo\u0026#39; TOML allows keys consisting solely of numbers. When distinguishing between table definitions and arrays is ambiguous (e.g., [1]), table definitions take precedence.\nTo interpret as an array, use a trailing comma.\nconst auto v3 = \u0026#34;[1]\u0026#34;_toml; // v3: {1 = {}} const auto v4 = \u0026#34;[1,]\u0026#34;_toml; // v4: [1,] operator\u0026quot;\u0026quot; _toml(const char8_t*) # Defined when char8_t is available. Otherwise identical in functionality, differing only in argument type.\nExample # #include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = \\\u0026#34;foo\\\u0026#34;\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } "},{"id":24,"href":"/toml11/docs/reference/ordered_map/","title":"ordered_map.hpp","section":"reference","content":" ordered_map.hpp # Defines toml::ordered_map, which is used to maintain the order of values in a file.\nclass ordered_map # namespace toml { template\u0026lt;typename Key, typename Val, typename Cmp = std::equal_to\u0026lt;Key\u0026gt;, typename Allocator = std::allocator\u0026lt;std::pair\u0026lt;Key, Val\u0026gt;\u0026gt;\u0026gt; class ordered_map; } The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order.\nAs a linear container, searches require O(n) time relative to the number of elements. Use this when search operations are infrequent and maintaining the order of values is important.\nNon-Member Types # namespace toml { struct ordered_type_config; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } Use these in place of toml::type_config and toml::value.\nSince toml::parse defaults to using type_config, specify\nconst auto input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;input.toml\u0026#34;); when parsing.\nMember Types # using key_type = Key; using mapped_type = Val; using value_type = std::pair\u0026lt;Key, Val\u0026gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector\u0026lt;value_type, Allocator\u0026gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; Member Functions # Constructors # ordered_map() = default; Constructs an empty ordered_map.\nConstructors (Comparator, Allocator) # explicit ordered_map(const Cmp\u0026amp; cmp, const Allocator\u0026amp; alloc = Allocator()); explicit ordered_map(const Allocator\u0026amp; alloc); Constructs an ordered_map with a specified comparator for key comparison and an allocator for memory management.\nCopy and Move Constructors # ordered_map(const ordered_map\u0026amp;) = default; ordered_map(ordered_map\u0026amp;\u0026amp;) = default; ordered_map(const ordered_map\u0026amp; other, const Allocator\u0026amp; alloc); ordered_map(ordered_map\u0026amp;\u0026amp; other, const Allocator\u0026amp; alloc); Constructs an ordered_map by copying or moving the contents from another ordered_map. An allocator can also be specified for memory management.\nConstructors (Iterator) # template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Allocator\u0026amp; alloc = Allocator()); Constructs an ordered_map with a range represented by iterators. The order of the elements follows the order of the iterators.\nConstructors (std::initializer_list) # ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Allocator\u0026amp; alloc); Initializes the ordered_map using an initializer list.\nCopy and Move Assignment Operators # ordered_map\u0026amp; operator=(const ordered_map\u0026amp;) = default; ordered_map\u0026amp; operator=(ordered_map\u0026amp;\u0026amp;) = default; Assigns the contents of another ordered_map to this one, using copy or move semantics.\nAssignment Operator (std::initializer_list) # ordered_map\u0026amp; operator=(std::initializer_list\u0026lt;value_type\u0026gt; v); Assigns the contents of an initializer list to the ordered_map.\nDestructor # ~ordered_map() = default; Destroys the ordered_map.\nbegin(), end() # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; Returns iterators to the beginning and end of the container, allowing iteration over its contents in order.\nempty() # bool empty() const noexcept; Returns true if the ordered_map is empty, false otherwise.\nsize() # std::size_t size() const noexcept; Returns the number of elements in the ordered_map.\nmax_size() # std::size_t max_size() const noexcept; Returns the maximum number of elements the ordered_map can hold.\nclear() # void clear(); Clears all elements from the ordered_map.\npush_back(kv) # void push_back(const value_type\u0026amp;); void push_back(value_type\u0026amp;\u0026amp;); Appends a key-value pair to the end of the ordered_map.\nemplace_back(k, v) # void emplace_back(key_type, mapped_type); Appends a key-value pair to the end of the ordered_map by constructing it in place.\npop_back() # void pop_back(); Removes the last element from the ordered_map.\ninsert(kv) # void insert(value_type); Inserts a key-value pair at the end of the ordered_map.\nemplace(k, v) # void emplace(key_type, mapped_type); Inserts a key-value pair at the end of the ordered_map by constructing it in place.\ncount(k) # std::size_t count(const key_type\u0026amp;) const noexcept; Returns the number of elements with the specified key. Since duplicate keys are not allowed, this will return either 1 if the key exists or 0 if it does not.\ncontains(k) # bool contains(const key_type\u0026amp;) const noexcept; Returns true if the ordered_map contains an element with the specified key, false otherwise.\nfind(k) # iterator find(const key_type\u0026amp; key) noexcept; const_iterator find(const key_type\u0026amp; key) const noexcept; Finds an element with the specified key and returns an iterator to it. If the key is not found, returns end().\nat(k) # mapped_type\u0026amp; at(const key_type\u0026amp; k); mapped_type const\u0026amp; at(const key_type\u0026amp; k) const; Finds an element with the specified key and returns a reference to its value. Throws std::out_of_range if the key is not found.\noperator[](k) # mapped_type\u0026amp; operator[](const key_type\u0026amp; k); mapped_type const\u0026amp; operator[](const key_type\u0026amp; k) const; Finds an element with the specified key and returns a reference to its value. If the key is not found, a new value is constructed and returned. If the ordered_map is const, throws std::out_of_range instead.\nkey_comp() # key_compare key_comp() const; Returns the comparator used for key comparison.\nNotes # Key Modification # Since ordered_map uses std::pair\u0026lt;Key, Val\u0026gt; for value_type, it is possible to modify the key through an iterator. However, this practice is not recommended.\nIf you modify a key this way and it conflicts with an existing key, one of the conflicting keys will become unsearchable.\nWhen using operator[], push_back, or insert, collisions with existing keys are detected.\nOrder Preservation Details # ordered_map maintains the order of keys, but this order preservation applies only to keys defined within the same table. Order across different tables is not maintained.\nFor example, the order in the following file will be preserved:\napple.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.type = \u0026#34;fruit\u0026#34; orange.skin = \u0026#34;thick\u0026#34; orange.color = \u0026#34;orange\u0026#34; In contrast, the order in the following file will not be preserved:\napple.type = \u0026#34;fruit\u0026#34; orange.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; orange.skin = \u0026#34;thick\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.color = \u0026#34;orange\u0026#34; ordered_map preserves the order of the apple and orange definitions at the root table level, and the order of type, skin, color within each apple and orange table.\nRelated # parser.hpp types.hpp value.hpp "},{"id":25,"href":"/toml11/docs/reference/parser/","title":"parser.hpp","section":"reference","content":" parser.hpp # Defines functions for parsing files or strings and the exceptions they use.\nWhile parse throws an exception on failure, try_parse returns error information.\nparse # Parses the content of a given file and returns a toml::basic_value.\nIn case of failure, toml::syntax_error is thrown.\nThe type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.\nparse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::string fname, spec s = spec::default_version()); } Parses the content of the given filename.\nIf reading the file fails, toml::file_io_error is thrown.\nIf parsing fails, toml::syntax_error is thrown.\nparse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } Parses the content of the given filename from a string literal.\nIf reading the file fails, toml::file_io_error is thrown.\nIf parsing fails, toml::syntax_error is thrown.\nparse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } This is defined only if \u0026lt;filesystem\u0026gt; is available.\nParses the content of the file at the given file path.\nIf reading the file fails, toml::file_io_error is thrown.\nIf parsing fails, toml::syntax_error is thrown.\nparse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } Parses the content of the given std::istream\u0026amp;.\nOpen a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nThe filename information is taken as the third argument. If the filename is not provided, it defaults to \u0026quot;unknown file\u0026quot;.\nparse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; parse(FILE* fp, std::string filename, spec s = spec::default_version()); } Parses the content of the file pointed to by FILE*.\nOpen a stream in binary mode by passing \u0026quot;rb\u0026quot; to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nIf reading the file fails, file_io_error containing errno is thrown.\nIf parsing fails, syntax_error is thrown.\nparse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } Parses the byte sequence as a TOML file.\nIf parsing fails, toml::syntax_error is thrown.\nparse_str # parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } Parses a string as a TOML file.\nIn case of failure, toml::syntax_error is thrown.\nThe type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec.\nYou generally don\u0026rsquo;t need to manually set the third argument, cxx::source_location. If std::source_location, std::experimental::source_location, or __builtin_FILE is available, the location information where parse_str was called will be stored.\ntry_parse # Parses the contents of the given file and returns a toml::basic_value if successful, or a std::vector\u0026lt;toml::error_info\u0026gt; if it fails.\nThe type information of basic_value is specified by template, and the version of the TOML language is specified by toml::spec.\nUnlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. However, please note that exceptions thrown by the standard library will still propagate.\nFor instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.\ntry_parse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::string fname, spec s = spec::default_version()); } Takes a file name and parses its content.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } Takes a string literal as a file name and parses its content.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } Takes a file path and parses its content.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } Takes a std::istream\u0026amp; and parses its content.\nOpen a stream in binary mode by passing std::ios::binary to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nThe file name information is taken as the second argument. If a file name is not provided, it defaults to \u0026quot;unknown file\u0026quot;.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(FILE* fp, std::string filename, spec s = spec::default_version()); } Takes a FILE* and parses its content.\nOpen a stream in binary mode by passing \u0026quot;rb\u0026quot; to avoid inconsistency between the file size and the number of characters due to automatic conversion of newline characters by the standard library.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } Takes a byte array and parses its content as a TOML file.\nIf parsing fails, a result holding the error type std::vector\u0026lt;error_info\u0026gt; is returned.\nIf successful, a result holding a basic_value is returned.\ntry_parse_str # try_parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } Parses a string as a TOML file, returning a toml::basic_value if successful, or a std::vector\u0026lt;toml::error_info\u0026gt; if it fails.\nUnlike parse_str, it does not throw syntax_error, but instead returns error information as the failure type of the result.\nIf std::source_location, std::experimental::source_location, or __builtin_FILE is available, it will record the location information.\nTypically, you do not need to manually set the third argument cxx::source_location. If any of std::source_location, std::experimental::source_location, or __builtin_FILE are available, the information of the location where parse_str was called will be saved as the location information.\nUnlike parse, try_parse does not throw exceptions defined in toml11 such as syntax_error. However, please note that exceptions thrown by the standard library will still propagate.\nFor instance, errors occurring internally within std::ifstream or memory exhaustion in std::vector will throw exceptions.\nsyntax_error # namespace toml { struct syntax_error final : public ::toml::exception { public: syntax_error(std::string what_arg, std::vector\u0026lt;error_info\u0026gt; err); ~syntax_error() noexcept override = default; const char* what() const noexcept override; std::vector\u0026lt;error_info\u0026gt; const\u0026amp; errors() const noexcept }; } An exception thrown when a syntax error is detected in TOML.\nIt is thrown by parse but not by try_parse.\nfile_io_error # namespace toml { struct file_io_error final : public ::toml::exception { public: file_io_error(const std::string\u0026amp; msg, const std::string\u0026amp; fname); file_io_error(int errnum, const std::string\u0026amp; msg, const std::string\u0026amp; fname); ~file_io_error() noexcept override = default; const char* what() const noexcept override; bool has_errno() const noexcept; int get_errno() const noexcept; }; } An exception thrown when reading the contents of a file fails.\nWhen using FILE* to read a file, errno is set.\nhas_errno # If std::ifstream fails, errno is not set.\nIn this case, has_errno returns false.\nget_errno # Particularly when passing a FILE*, retrieves the value of errno.\nIf has_errno is false, it returns 0.\nRelated # error_info.hpp result.hpp spec.hpp value.hpp "},{"id":26,"href":"/toml11/docs/reference/result/","title":"result.hpp","section":"reference","content":" result.hpp # result.hpp defines the result type, which can hold either a success value or a failure value.\nThis is used as the return type for toml::try_parse, which does not throw exceptions.\nsuccess # A type that holds a success value.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success\u0026amp;) = default; success(success\u0026amp;\u0026amp;) = default; success\u0026amp; operator=(const success\u0026amp;) = default; success\u0026amp; operator=(success\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]) } Member Types # using value_type = T; The type of the success value.\nMember Functions # Constructor # explicit success(value_type v); Constructs with a value_type argument.\ntemplate\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); Constructs with another type that can be converted to value_type.\ntemplate\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); Constructs with another success type that can be converted to value_type.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nNon-Member Functions # ok(T) # template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]); Constructs and returns a success type from a success value.\nConverts a string literal into std::string.\nsuccess\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # Specialization of success for when the success value is a reference.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit success(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; } Member Types # using value_type = T; The type of the success value. It is T from std::reference_wrapper\u0026lt;T\u0026gt;, not the reference itself.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nfailure # A type that holds a failure value.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure { using value_type = T; explicit failure(value_type v); ~failure() = default; failure(const failure\u0026amp;) = default; failure(failure\u0026amp;\u0026amp;) = default; failure\u0026amp; operator=(const failure\u0026amp;) = default; failure\u0026amp; operator=(failure\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); } Member Types # using value_type = T; The type of the failure value.\nMember Functions # Constructor # explicit failure(value_type v); Constructs with a value_type argument.\ntemplate\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); Constructs with another type that can be converted to value_type.\ntemplate\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); Constructs with another failure type that can be converted to value_type.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nNon-Member Functions # err(T) # template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); Constructs and returns a failure type from a failure value.\nConverts a string literal into std::string.\nfailure\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # Specialization of failure for when the failure value is a reference.\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit failure(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept {return value.get();} value_type const\u0026amp; get() const noexcept {return value.get();} }; } Member Types # using value_type = T; The type of the failure value. It is T from std::reference_wrapper\u0026lt;T\u0026gt;, not the reference itself.\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; Accesses the stored value.\nresult # A type that holds either a success value or a failure value.\nnamespace toml { template\u0026lt;typename T, typename E\u0026gt; struct result { using success_type = success\u0026lt;T\u0026gt;; using failure_type = failure\u0026lt;E\u0026gt;; using value_type = typename success_type::value_type; using error_type = typename failure_type::value_type; result(success_type s); result(failure_type f); template\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); result\u0026amp; operator=(success_type s); result\u0026amp; operator=(failure_type f); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); ~result() noexcept; result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); template\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); bool is_ok() const noexcept; bool is_err() const noexcept; explicit operator bool() const noexcept; value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; }; } Member Types # success_type # success\u0026lt;T\u0026gt;.\nfailure_type # failure\u0026lt;E\u0026gt;.\nvalue_type # The type T of the success value, alias for success_type::value_type.\nIf T is std::reference_wrapper\u0026lt;U\u0026gt;, then it is U.\nerror_type # The type E of the failure value, alias for failure_type::value_type.\nIf E is std::reference_wrapper\u0026lt;F\u0026gt;, then it is F.\nMember Functions # Constructor # result() = delete; Cannot construct result type by default. Needs to be given either a success or failure type.\nresult(success_type s); result(failure_type f); Constructs with a success_type or failure_type.\ntemplate\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); Constructs with a success\u0026lt;U\u0026gt; or failure\u0026lt;U\u0026gt; that is convertible to value_type or error_type.\ntemplate\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); Constructs from or assigns to another result with convertible success or failure types.\nCopy and Move Constructors # result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); Can be copy or move constructed.\noperator= # result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); Can be copy or move assigned.\ntemplate\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); Can be assigned from convertible success or failure types.\nis_ok() # bool is_ok() const noexcept; Returns true if it holds a success value, false otherwise.\nis_err() # bool is_err() const noexcept; Returns true if it holds a failure value, false otherwise.\noperator bool() # explicit operator bool() const noexcept; Returns true if it holds a success value, false otherwise.\nunwrap() # value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; Returns the stored success value.\nThrows toml::bad_result_access if it holds a failure value.\nIf std::source_location or equivalent compiler extension is available, the file name and line number where unwrap() occurred are included in the what() string.\nunwrap_or() # value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; Returns the stored success value if present, otherwise returns the provided default value.\nunwrap_err() # error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; Returns the stored failure value.\nThrows toml::bad_result_access if it holds a success value.\nIf std::source_location or equivalent compiler extension is available, the file name and line number where unwrap_err() occurred are included in the what() string.\nas_ok() # value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; Returns the success value without checking.\nBehavior is undefined if it holds a failure value.\nas_err() # error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; Returns the failure value without checking.\nBehavior is undefined if it holds a success value.\nbad_result_access # An exception thrown when unwrap or unwrap_err fails in a result.\nnamespace toml { struct bad_result_access : public ::toml::exception { public: explicit bad_result_access(const std::string\u0026amp; what_arg); virtual ~bad_result_access() noexcept override = default; virtual const char* what() const noexcept override; protected: std::string what_; }; } "},{"id":27,"href":"/toml11/docs/reference/serializer/","title":"serializer.hpp","section":"reference","content":" serializer.hpp # format # Serializes the data.\nnamespace toml { template\u0026lt;typename TC\u0026gt; std::string format(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; k, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const std::vector\u0026lt;typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026gt;\u0026amp; ks, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); } If there\u0026rsquo;s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.\nformat(v, spec) # Formats a toml::value according to its format information and the provided spec.\nIf it\u0026rsquo;s a table_type, it\u0026rsquo;s formatted as if it were the root table. Otherwise, only the value is formatted.\nformat(k, v, spec) # Formats a toml::value along with the given key.\nv is interpreted as being defined under that key.\nformat([k,...], v, spec) # v is interpreted as being defined under those keys. If multiple keys are provided, it\u0026rsquo;s interpreted as a recursively defined table.\nserialization_error # Reports errors that occurred during serialization.\nnamespace toml { struct serialization_error final : public ::toml::exception { public: explicit serialization_error(std::string what_arg, source_location loc); ~serialization_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; } "},{"id":28,"href":"/toml11/docs/reference/source_location/","title":"source_location.hpp","section":"reference","content":" source_location.hpp # source_location.hpp defines a class representing a specific area within a TOML file.\nThis class is used to represent problematic areas in error messages.\ntoml::source_location # source_location is a class representing a specific area within a TOML file.\nnamespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const\u0026amp;) = default; source_location(source_location \u0026amp;\u0026amp;) = default; source_location\u0026amp; operator=(source_location const\u0026amp;) = default; source_location\u0026amp; operator=(source_location \u0026amp;\u0026amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const\u0026amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const\u0026amp; first_line() const; std::string const\u0026amp; last_line() const; std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; }; template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); } //toml Member Functions # Constructor # explicit source_location(/* implementation-defined */); toml::source_location can only be constructed via toml::parse or the _toml literal.\nis_ok() # bool is_ok() const noexcept; Returns true if the source_location holds a valid value, false otherwise.\nThe result of location() from toml::value constructed outside of toml::parse or _toml literals returns false for is_ok as it points to nothing.\nlength() # std::size_t length() const noexcept; Returns the length of the area pointed to by the source_location.\nReturns 0 if it does not hold a valid value.\nfirst_line_number() # std::size_t first_line_number() const noexcept; Returns the line number of the first line of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nfirst_column_number() # std::size_t first_column_number() const noexcept; Returns the column number of the first column of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nlast_line_number() # std::size_t last_line_number() const noexcept; Returns the line number of the last line of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nlast_column_number() # std::size_t last_column_number() const noexcept; Returns the column number of the last column of the area pointed to by the source_location.\nReturns 1 if it does not hold a valid value.\nfile_name() # std::string const\u0026amp; file_name() const noexcept; Returns the file name containing the area pointed to by the source_location.\nReturns \u0026quot;unknown file\u0026quot; if it does not hold a valid value.\nnum_lines() # std::size_t num_lines() const noexcept; Returns the number of lines in the area pointed to by the source_location.\nReturns 0 if it does not hold a valid value.\nfirst_line() # std::string const\u0026amp; first_line() const; Returns the first line of the area pointed to by the source_location.\nThrows std::out_of_range if it does not hold a valid value.\nlast_line() # std::string const\u0026amp; last_line() const; Returns the last line of the area pointed to by the source_location.\nThrows std::out_of_range if it does not hold a valid value.\nlines() # std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; Returns all lines in the area pointed to by the source_location.\nReturns a reference to an empty std::vector if it does not hold a valid value.\nNon-Member Functions # format_location # template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); Formats the specified source_location and its associated message as follows:\n-\u0026gt; {filename.toml} | 1 | a = 42 | ^-- {message} If colorization is enabled, ANSI escape sequences will be added for coloring.\nWhen multiple locs_and_msgs are provided, they must be in the order of const source_location\u0026amp; followed by const std::string\u0026amp;, and the next pair in the same order, and so on.\nExample: Multiple source_location and std::string # When multiple source_location and std::string pairs are provided, they are formatted as follows:\nsource_location\u0026amp; loc0; source_location\u0026amp; loc1; source_location\u0026amp; loc2; std::string msg0; std::string msg1; std::string msg2; format_location(loc0, msg0, loc1, msg1, loc2, msg2); -\u0026gt; {filename0.toml} | 1 | a = 42 | ^-- {message0} | -\u0026gt; {filename1.toml} | 2 | b = 3.14 | ^-- {message1} | -\u0026gt; {filename2.toml} | 3 | c = \u0026#34;foo\u0026#34; | ^-- {message2} Related # error_info.hpp value.hpp "},{"id":29,"href":"/toml11/docs/reference/spec/","title":"spec.hpp","section":"reference","content":" spec.hpp # spec.hpp defines classes for specifying the version of TOML.\ntoml::semantic_version # semantic_version is a class that stores version information.\nnamespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); } //toml Member Functions # Constructor # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a semantic_version instance with the specified major, minor, and patch version numbers.\nNon-Member Functions # Comparison Operators # constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; Compares two semantic_version instances according to semantic versioning rules.\nStream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); Outputs the version in the format {major}.{minor}.{patch}.\nto_string # std::string to_string(const semantic_version\u0026amp; ver); Converts the version to a string in the format {major}.{minor}.{patch}.\ntoml::spec # spec is a class that stores TOML version information.\nstruct spec { constexpr static spec default_version() noexcept; constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; semantic_version version; // toml version // diff from v1.0.0 -\u0026gt; v1.1.0 bool v1_1_0_allow_control_characters_in_comments; bool v1_1_0_allow_newlines_in_inline_tables; bool v1_1_0_allow_trailing_comma_in_inline_tables; bool v1_1_0_allow_non_english_in_bare_keys; bool v1_1_0_add_escape_sequence_e; bool v1_1_0_add_escape_sequence_x; bool v1_1_0_make_seconds_optional; // library extensions bool ext_hex_float; // allow hex float bool ext_num_suffix; // allow number suffix bool ext_null_value; // allow null value }; Member Functions # Constructor # constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; Constructs a spec with the specified TOML version.\nSupports TOML v1.0.0 and TOML v1.1.0.\ndefault_version() # constexpr static spec default_version() noexcept; Constructs a spec with the default version.\nUsed as the default value for toml::parse and toml::format.\nIn toml11 v4.0.0, the value is v1.0.0.\nv(major, minor, patch) # constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a spec with the specified version.\nMember Variables # Each flag is automatically set to true when the specified version includes the corresponding feature.\nYou can modify these flags to change the behavior of toml::parse and toml::format.\nSome features of TOML v1.1.0 are still under fairly lengthy discussion and may still be reverted.\nIf they are indeed reverted, toml11 will remove those features in a minor version upgrade or move them to a corresponding later version.\nAs such, any features related to future versions should be considered unstable.\nExample # auto spec = toml::spec::v(1, 0, 0); // Allow newlines in inline tables in addition to v1.0.0 features. // Other v1.1.0 features are not enabled. spec.v1_1_0_allow_newlines_in_inline_tables = true; auto input = toml::parse(\u0026#34;input_file.toml\u0026#34;, spec); v1_1_0_allow_control_characters_in_comments # bool v1_1_0_allow_control_characters_in_comments; Allows most control characters in comments.\nAdded in TOML v1.1.0.\nv1_1_0_allow_newlines_in_inline_tables # bool v1_1_0_allow_newlines_in_inline_tables; Allows newlines in inline tables.\nAdded in TOML v1.1.0.\nv1_1_0_allow_trailing_comma_in_inline_tables # bool v1_1_0_allow_trailing_comma_in_inline_tables; Allows trailing commas in inline tables.\nAdded in TOML v1.1.0.\nv1_1_0_add_escape_sequence_e # bool v1_1_0_add_escape_sequence_e; Allows \\e to represent the ESC character.\nAdded in TOML v1.1.0.\nv1_1_0_add_escape_sequence_x # bool v1_1_0_add_escape_sequence_x; Allows \\xHH to represent a single byte character.\nAdded in TOML v1.1.0.\nv1_1_0_make_seconds_optional # bool v1_1_0_make_seconds_optional; Makes the seconds component in time optional.\nUnspecified seconds default to 0.\nAdded in TOML v1.1.0.\next_hex_float # bool ext_hex_float; This is a language extension specific to toml11.\nIt is initialized to false regardless of the specified version. You must explicitly set it to true if you want to use it.\nAllows hexadecimal representation of floating-point numbers.\nThe hexadecimal representation conforms to the printf format specifier %a/%A.\nhexf = 0xC0FFEEp-10 toml::format will format using hexadecimal notation only if the passed toml::spec has ext_hex_float set to true. If the format specifier indicates hex but the toml::spec passed to toml::format has ext_hex_float set to false, the hexadecimal specification is ignored, and the number is output in decimal notation with maximum precision.\next_num_suffix # bool ext_num_suffix; This is a language extension specific to toml11.\nIt is initialized to false regardless of the specified version. You must explicitly set it to true if you want to use it.\nAllows the addition of suffixes to decimal integers and floating-point numbers. This does not apply to hexadecimal, octal, or binary notations.\nThere must be an _ separator between the number and the suffix.\nThe suffix cannot start with a digit to avoid confusion with the numeric part.\ndistance = 10_m # valid distance = 10_2m # invalid distance = 10_2_m # valid The suffix is stored in the format information as std::string suffix. The _ separating the number from the suffix is not included in the suffix.\ntoml::value distance = toml::find(input, \u0026#34;distance\u0026#34;); assert(distance.as_integer_fmt().suffix == std::string(\u0026#34;m\u0026#34;)); toml::format will format the value with the suffix only if the passed toml::spec has ext_num_suffix set to true.\nThe suffix follows the grammar defined as:\nnon-digit-graph = ALPHA / non-ascii graph = ALPHA / DIGIT / non-ascii suffix = _ non-digit-graph *( graph / ( _ graph ) ) ext_null_value # bool ext_null_value; This is a language extension specific to toml11.\nAllows the use of null as a value.\nA toml::value specified as null will have no value, and is_empty() will return true.\ntoml::format will format it as null only if the passed toml::spec has ext_null_value set to true. Otherwise, toml::format will terminate with an error.\n"},{"id":30,"href":"/toml11/docs/reference/toml_fwd/","title":"toml_fwd.hpp","section":"reference","content":" toml_fwd.hpp # toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions.\nWhen only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time.\nSince this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value\u0026lt;toml::type_config\u0026gt;::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value. This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.\n"},{"id":31,"href":"/toml11/docs/reference/toml/","title":"toml.hpp","section":"reference","content":" toml.hpp # toml.hpp includes all other headers.\nThis allows access to all features of toml11.\nThis header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${toml11_include_dir}/toml11/.\n"},{"id":32,"href":"/toml11/docs/reference/types/","title":"types.hpp","section":"reference","content":" types.hpp # This document defines classes that specifies type information.\ntype_config # type_config is a type that encapsulates parameters given to toml::basic_value.\nWhen using different types within toml::basic_value\u0026lt;T\u0026gt;, you need to define and pass this type separately. All elements listed are required.\nIf you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float.\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; using value = basic_value\u0026lt;type_config\u0026gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static Member Functions # parse_int(str, src, base) # static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); If you use a type as integer_type that cannot utilize standard stream operators, implement this function. Otherwise, use read_int described later.\nThe str parameter receives a string with prefixes, leading zeros, and underscores removed.\nThe src parameter receives a source_location pointing to where the string was defined.\nThe base parameter receives one of 10, 2, 8, or 16.\nparse_float(str, src, is_hex) # static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); If you use a type as floating_type that cannot utilize standard stream operators, implement this function. Otherwise, use read_float described later.\nThe str parameter receives a string with prefixes, leading zeros, and underscores removed.\nThe src parameter receives a source_location pointing to where the string was defined.\nThe is_hex parameter indicates whether the format is hexfloat. If you don\u0026rsquo;t use the hexfloat extension, you don\u0026rsquo;t need to implement this.\nFor details on the hexfloat extension, refer to spec.hpp.\nNon-member Functions # read_int # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); This is the default function used. It parses using std::istringstream.\nIf operator\u0026gt;\u0026gt; and manipulators like std::hex, and std::numeric_limits\u0026lt;T\u0026gt; are defined (such as for boost::multiprecision), you can use this without modifications.\nread_float # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); This is the default function used. It parses decimals using std::istringstream and hexfloats using sscanf().\nIt supports double and float.\nFor other types, if operator\u0026gt;\u0026gt; is defined and hex is not used, you can use this function.\nordered_type_config # ordered_type_config is a variation of toml::type_config where the table type is replaced with toml::ordered_map. Additionally, it defines the toml::ordered_value alias.\nOther than these changes, it is identical to type_config.\nnamespace toml { struct ordered_type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = ordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } // toml "},{"id":33,"href":"/toml11/docs/reference/value_t/","title":"value_t.hpp","section":"reference","content":" value_t.hpp # value_t # value_t is used to handle the type information of toml::value.\nnamespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); std::string to_string(value_t t); } // toml Non-member Functions # Stream Operator # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); Outputs the string representation of the value_t to the stream.\nto_string # std::string to_string(value_t t); Returns the string representation of the value_t.\n"},{"id":34,"href":"/toml11/docs/reference/value/","title":"value.hpp","section":"reference","content":" value.hpp # value.hpp defines basic_value.\ntoml::basic_value # basic_value is a class that stores TOML values.\nnamespace toml { template \u0026lt;class TypeConfig\u0026gt; class basic_value; // Defined in types.hpp // using value = basic_value\u0026lt;type_config\u0026gt;; // using table = typename basic_value\u0026lt;type_config\u0026gt;::table_type; // using array = typename basic_value\u0026lt;type_config\u0026gt;::array_type; template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); } //toml Member Types # The following member types are defined.\nYou can modify the member types using TypeConfig.\nSee also: types.hpp\nName Definition char_type typename TypeConfig::char_type key_type typename TypeConfig::string_type value_type basic_value\u0026lt;TypeConfig\u0026gt; boolean_type typename TypeConfig::boolean_type integer_type typename TypeConfig::integer_type floating_type typename TypeConfig::floating_type string_type typename TypeConfig::string_type local_time_type toml::local_time local_date_type toml::local_date local_datetime_type toml::local_datetime offset_datetime_type toml::offset_datetime array_type typename TypeConfig::template array_type\u0026lt;value_type\u0026gt; table_type typename TypeConfig::template table_type\u0026lt;key_type, value_type\u0026gt; comment_type typename TypeConfig::comment_type Member Functions # Default Constructor # basic_value() noexcept Constructs an empty toml::value.\nThe constructed toml::value will be empty.\nCopy and Move Constructors # basic_value(const basic_value\u0026amp; v) basic_value(basic_value\u0026amp;\u0026amp; v) Copies or moves all information including values, format information, comments, and file regions.\nCopy and Move Constructors with Comments # basic_value(basic_value v, std::vector\u0026lt;std::string\u0026gt; com) Copies or moves the object while overwriting comments.\nConversion Constructors # template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other) template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other, std::vector\u0026lt;std::string\u0026gt; com) Copies or moves from a basic_value with a different type_config.\nConstructor (boolean) # basic_value(boolean_type x) basic_value(boolean_type x, boolean_format_info fmt) basic_value(boolean_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(boolean_type x, boolean_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a bool, its format information, and comments.\nConstructor (integer) # template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, integer_format_info fmt) template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* std::is_integral\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with an integer, its format information, and comments.\nConstructor (floating) # template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, floating_format_info fmt) template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* std::is_floating_point\u0026lt;T\u0026gt; is true */\u0026gt; basic_value(T x, floating_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a floating point number, its format information, and comments.\nConstructor (string) # basic_value(string_type x) basic_value(string_type x, string_format_info fmt) basic_value(string_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x) basic_value(const string_type::value_type* x, string_format_info fmt) basic_value(const string_type::value_type* x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) // C++17以降 basic_value(string_view_type x) basic_value(string_view_type x, string_format_info fmt) basic_value(string_view_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_view_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a string, its format information, and comments.\nstring_view_type shares the same value_type and traits_type as string_type.\nConstructor (local_date) # basic_value(local_date_type x) basic_value(local_date_type x, local_date_format_info fmt) basic_value(local_date_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_date_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a local_date_type, its format information, and comments.\nConstructor (local_time) # basic_value(local_time_type x) basic_value(local_time_type x, local_time_format_info fmt) basic_value(local_time_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_time_type x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a local_time_type, its format information, and comments.\nFor std::chrono::duration, constructs as a time span from 00:00:00.\nConstructor (local_datetime) # basic_value(local_datetime_type x) basic_value(local_datetime_type x, local_date_format_info fmt) basic_value(local_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_datetime_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a local_datetime_type, its format information, and comments.\nConstructor (offset_datetime) # basic_value(offset_datetime_type x) basic_value(offset_datetime_type x, offset_date_format_info fmt) basic_value(offset_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt) basic_value(std::chrono::system_clock::time_point x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with an offset_datetime_type, its format information, and comments.\nFor std::chrono::system_clock::time_point, constructs for the pointed time.\nConstructor (array) # basic_value(array_type x) basic_value(array_type x, integer_format_info fmt) basic_value(array_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(array_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with an array, its format information, and comments.\narray-like types must meet the following criteria:\nHas T::iterator. Has T::value_type. Does not have T::key_type. Does not have T::mapped_type. Is not std::string. Is not std::string_view (since C++17). Constructor (table) # basic_value(table_type x) basic_value(table_type x, integer_format_info fmt) basic_value(table_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(table_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) Constructs an object with a table, its format information, and comments.\ntable-like types must meet the following criteria:\nHas T::iterator. Has T::value_type. Has T::key_type. Has T::mapped_type. Constructor (user-defined) # template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is defined */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is defined */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is not defined, but T{}.into_toml() exists */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt; is not defined, but T{}.into_toml() exists */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); If toml::into\u0026lt;T\u0026gt; is defined, constructs from the result of toml::into\u0026lt;T\u0026gt;(ud).\nIf toml::into\u0026lt;T\u0026gt; is not defined but T has a into_toml() member function, constructs from the result of ud.into_toml().\noperator=(basic_value) # basic_value\u0026amp; operator=(const basic_value\u0026amp; v) basic_value\u0026amp; operator=(basic_value\u0026amp;\u0026amp; v) template\u0026lt;typename TI\u0026gt; basic_value\u0026amp; operator=(basic_value\u0026lt;TI\u0026gt; other) Assigns the right-hand side basic_value to the current object.\noperator=(T) # template\u0026lt;typename T\u0026gt; basic_value\u0026amp; operator=(T x) Assigns a value corresponding to T.\nThe contents pointed to by source_location are discarded.\nIf the object already holds a value of the same type, the original format information is retained.\nis\u0026lt;T\u0026gt;() # bool is\u0026lt;T\u0026gt;() const noexcept Requirements # T must be an exact TOML type, meaning it corresponds to one of the toml::value::xxx_type.\nReturn Value # Returns true if the stored type matches T, otherwise returns false.\nis(toml::value_t) # bool is(toml::value_t t) const noexcept Return Value # Returns true if the tag of the stored type matches t, otherwise returns false.\nis_xxx() # bool is_boolean() const noexcept; bool is_integer() const noexcept; bool is_floating() const noexcept; bool is_string() const noexcept; bool is_offset_datetime() const noexcept; bool is_local_datetime() const noexcept; bool is_local_date() const noexcept; bool is_local_time() const noexcept; bool is_array() const noexcept; bool is_table() const noexcept; Return Value # Returns true if the stored type matches the corresponding type, otherwise returns false.\nis_empty() # bool is_empty() const noexcept; Return Value # Returns true if the object is default constructed and no value is assigned, otherwise returns false.\nis_array_of_tables() # bool is_array_of_tables() const noexcept; Return Value # Returns true if the stored type is an array that is not empty and all elements are tables, otherwise returns false.\ntype() # toml::value_t type() const noexcept Return Value # Returns the tag corresponding to the stored type.\nas_xxx() # boolean_type const\u0026amp; as_boolean () const; integer_type const\u0026amp; as_integer () const; floating_type const\u0026amp; as_floating () const; string_type const\u0026amp; as_string () const; offset_datetime_type const\u0026amp; as_offset_datetime() const; local_datetime_type const\u0026amp; as_local_datetime () const; local_date_type const\u0026amp; as_local_date () const; local_time_type const\u0026amp; as_local_time () const; array_type const\u0026amp; as_array () const; table_type const\u0026amp; as_table () const; boolean_type \u0026amp; as_boolean (); integer_type \u0026amp; as_integer (); floating_type \u0026amp; as_floating (); string_type \u0026amp; as_string (); offset_datetime_type\u0026amp; as_offset_datetime(); local_datetime_type \u0026amp; as_local_datetime (); local_date_type \u0026amp; as_local_date (); local_time_type \u0026amp; as_local_time (); array_type \u0026amp; as_array (); table_type \u0026amp; as_table (); Return Value # Returns a reference to the value of the specified type.\nException # Throws toml::type_error if the stored value\u0026rsquo;s type does not match the specified type.\nas_xxx(std::nothrow) # Invoke with a std::nothrow object.\nboolean_type const\u0026amp; as_boolean (const std::nothrow_t\u0026amp;) const noexcept; integer_type const\u0026amp; as_integer (const std::nothrow_t\u0026amp;) const noexcept; floating_type const\u0026amp; as_floating (const std::nothrow_t\u0026amp;) const noexcept; string_type const\u0026amp; as_string (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_type const\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_type const\u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) const noexcept; local_date_type const\u0026amp; as_local_date (const std::nothrow_t\u0026amp;) const noexcept; local_time_type const\u0026amp; as_local_time (const std::nothrow_t\u0026amp;) const noexcept; array_type const\u0026amp; as_array (const std::nothrow_t\u0026amp;) const noexcept; table_type const\u0026amp; as_table (const std::nothrow_t\u0026amp;) const noexcept; boolean_type \u0026amp; as_boolean (const std::nothrow_t\u0026amp;) noexcept; integer_type \u0026amp; as_integer (const std::nothrow_t\u0026amp;) noexcept; floating_type \u0026amp; as_floating (const std::nothrow_t\u0026amp;) noexcept; string_type \u0026amp; as_string (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_type\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) noexcept; local_datetime_type \u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) noexcept; local_date_type \u0026amp; as_local_date (const std::nothrow_t\u0026amp;) noexcept; local_time_type \u0026amp; as_local_time (const std::nothrow_t\u0026amp;) noexcept; array_type \u0026amp; as_array (const std::nothrow_t\u0026amp;) noexcept; table_type \u0026amp; as_table (const std::nothrow_t\u0026amp;) noexcept; Return Value # Returns a reference to the value of the specified type.\nNote # If the type of the stored value does not match the specified type, the behavior is undefined.\nas_xxx_fmt() # Accesses format information.\nboolean_format_info \u0026amp; as_boolean_fmt (); integer_format_info \u0026amp; as_integer_fmt (); floating_format_info \u0026amp; as_floating_fmt (); string_format_info \u0026amp; as_string_fmt (); offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(); local_datetime_format_info \u0026amp; as_local_datetime_fmt (); local_date_format_info \u0026amp; as_local_date_fmt (); local_time_format_info \u0026amp; as_local_time_fmt (); array_format_info \u0026amp; as_array_fmt (); table_format_info \u0026amp; as_table_fmt (); boolean_format_info const\u0026amp; as_boolean_fmt () const; integer_format_info const\u0026amp; as_integer_fmt () const; floating_format_info const\u0026amp; as_floating_fmt () const; string_format_info const\u0026amp; as_string_fmt () const; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt() const; local_datetime_format_info const\u0026amp; as_local_datetime_fmt () const; local_date_format_info const\u0026amp; as_local_date_fmt () const; local_time_format_info const\u0026amp; as_local_time_fmt () const; array_format_info const\u0026amp; as_array_fmt () const; table_format_info const\u0026amp; as_table_fmt () const; Return Value # Returns a reference to the structure holding the format information for the specified type.\nException # Throws toml::type_error if the stored value\u0026rsquo;s type does not match the specified type.\nas_xxx_fmt(std::nothrow) # Invoke with a std::nothrow object.\nboolean_format_info \u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) noexcept; integer_format_info \u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) noexcept; floating_format_info \u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) noexcept; string_format_info \u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) noexcept; local_datetime_format_info \u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) noexcept; local_date_format_info \u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) noexcept; local_time_format_info \u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) noexcept; array_format_info \u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) noexcept; table_format_info \u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) noexcept; boolean_format_info const\u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) const noexcept; integer_format_info const\u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) const noexcept; floating_format_info const\u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) const noexcept; string_format_info const\u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_format_info const\u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_date_format_info const\u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_time_format_info const\u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) const noexcept; array_format_info const\u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) const noexcept; table_format_info const\u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) const noexcept; Return Value # Returns a reference to the structure holding the format information for the specified type.\nNote # If the type of the stored value does not match the specified type, the behavior is undefined.\nat(key) # value_type\u0026amp; at(const key_type\u0026amp; key); value_type const\u0026amp; at(const key_type\u0026amp; key) const; Return Value # Casts the current value to a table and returns the element specified by key.\nException # Throws toml::type_error if the stored value is not a table.\nThrows std::out_of_range if the table does not contain the specified element.\noperator[](key) # value_type\u0026amp; operator[](const key_type\u0026amp; k); Return Value # Casts the current value to a table and returns a reference to the element specified by key.\nIf the element specified by key does not exist, it is default-constructed.\nException # Throws toml::type_error if the stored value is not a table.\ncount(key) # std::size_t count(const key_type\u0026amp; key) const; Return Value # Casts the current value to a table and returns 1 if the element corresponding to key is present, otherwise returns 0.\nException # Throws toml::type_error if the stored value is not a table.\ncontains(key) # bool contains(const key_type\u0026amp; key) const; Return Value # Casts the current value to a table and returns true if the element corresponding to key is present, otherwise returns false.\nException # Throws toml::type_error if the stored value is not a table.\nat(idx) # value_type\u0026amp; at(const std::size_t idx); value_type const\u0026amp; at(const std::size_t idx) const; Return Value # Casts the current value to an array and returns the element specified by idx.\nException # Throws toml::type_error if the stored value is not an array.\nThrows std::out_of_range if the specified element does not exist in the array.\noperator[](idx) # value_type\u0026amp; operator[](const std::size_t idx) noexcept; value_type const\u0026amp; operator[](const std::size_t idx) const noexcept; Return Value # Casts the current value to an array and returns a reference to the element specified by idx.\nNote # Performs no checks. Behavior is undefined if the stored value is not an array or if the specified element does not exist.\npush_back(value) # void push_back(const value_type\u0026amp; x); void push_back(value_type\u0026amp;\u0026amp; x); Casts the current value to an array and performs push_back on the array.\nReturn Value # None.\nException # Throws toml::type_error if the stored value is not an array.\nemplace_back(args...) # template\u0026lt;typename ... Ts\u0026gt; value_type\u0026amp; emplace_back(Ts\u0026amp;\u0026amp; ... args) Casts the current value to an array and performs emplace_back on the array.\nReturn Value # A reference to the constructed value.\nException # Throws toml::type_error if the stored value is not an array.\nsize() # std::size_t size() const; Return Value # Casts the current value to an array, string, or table and returns the number of elements. For a string, it returns the number of characters.\nException # Throws toml::type_error if the stored value is not an array, string, or table.\nlocation() # source_location location() const; Return Value # Returns a source_location object representing the position within the TOML document where the value is defined.\nIf the value was not constructed by parsing a TOML document, returns a source_location that points to nowhere.\ncomments() # comment_type const\u0026amp; comments() const noexcept; comment_type\u0026amp; comments() noexcept; Return Value # Returns a reference to the comment container.\nNon-Member Functions # operator== # template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); Two basic_value\u0026lt;T\u0026gt; instances are considered equal if they satisfy the following conditions:\nThe contained type is the same. The contained values are identical. The comments are identical at the byte level. operator!= # template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs == rhs); } operator\u0026lt; # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); Comparison order:\nTOML type If TOML types are the same, their values If both the TOML types and values are the same, the comments TOML types have the following order (from smallest to largest):\ntoml::value_t::empty toml::value_t::boolean toml::value_t::integer toml::value_t::floating toml::value_t::string toml::value_t::offset_datetime toml::value_t::local_datetime toml::value_t::local_date toml::value_t::local_time toml::value_t::array toml::value_t::table operator\u0026lt;= # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return (lhs \u0026lt; rhs) || (lhs == rhs); } operator\u0026gt; # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt;= rhs); } operator\u0026gt;= # Defined only if array_type and table_type have operator\u0026lt;.\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt; rhs); } toml::type_error # Exception thrown in case of a type error.\nContains the location information of the value that caused the type error.\nstruct type_error final : public ::toml::exception { public: type_error(std::string what_arg, source_location loc); ~type_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; toml::make_error_info # template\u0026lt;typename TC, typename ... Ts\u0026gt; error_info make_error_info( std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Calls location() on a basic_value, passes the resulting source_location to make_error_info to create an error_info.\nRefer to error_info for more details.\ntoml::format_error # template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); Calls location() on a basic_value, passes the resulting source_location to format_error to create an error_info, then converts it to a string and returns it.\nRefer to error_info for more details.\nRelated # comments.hpp source_location.hpp types.hpp visit.hpp "},{"id":35,"href":"/toml11/docs/reference/version/","title":"version.hpp","section":"reference","content":" version.hpp # In version.hpp, macros related to the version information of toml11 are defined.\nMacros # TOML11_VERSION_MAJOR # The major version of toml11.\nTOML11_VERSION_MINOR # The minor version of toml11.\nTOML11_VERSION_PATCH # The patch version of toml11.\nFunction # license_notice # namespace toml { const char* license_notice() noexcept; } Returns the license notice.\nProvided for convenience when redistributing without source code.\n"},{"id":36,"href":"/toml11/docs/reference/visit/","title":"visit.hpp","section":"reference","content":" visit.hpp # In visit.hpp, toml::visit is defined.\ntoml::visit # Functions # namespace toml { template\u0026lt;typename Visitor, typename TC\u0026gt; /* Return value when Visitor is called with a value of basic_value\u0026lt;TC\u0026gt; */ visit(Visitor\u0026amp;\u0026amp; visitor, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename Visitor, typename TC\u0026gt; /* Return value when Visitor is called with a value of basic_value\u0026lt;TC\u0026gt; */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename Visitor, typename TC\u0026gt; /* Return value when Visitor is called with a value of basic_value\u0026lt;TC\u0026gt; */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); } toml::visit calls the overload of Visitor corresponding to the type held by basic_value\u0026lt;TC\u0026gt;, and returns the result.\nRequirements # Visitor must be a function or function object callable with any type held by basic_value\u0026lt;TC\u0026gt;.\nAdditionally, the return value must be consistent across all overloads.\nExample # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; struct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; int main() { toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating return 0; } Related # value.hpp "}] \ No newline at end of file diff --git a/en.search.min.74781468e10e8d2bfd8fd05883410d8de36799987666b3d71b86e7a47c8612ad.js b/en.search.min.74781468e10e8d2bfd8fd05883410d8de36799987666b3d71b86e7a47c8612ad.js new file mode 100644 index 00000000..d799f92b --- /dev/null +++ b/en.search.min.74781468e10e8d2bfd8fd05883410d8de36799987666b3d71b86e7a47c8612ad.js @@ -0,0 +1 @@ +"use strict";(function(){const o="/toml11/en.search-data.min.d8166c23b8fabfabd79ab8547f814c8dfc751139d757d328e7724a2f1beae5a5.json",i=Object.assign({cache:!0},{includeScore:!0,useExtendedSearch:!0,fieldNormWeight:1.5,threshold:.2,ignoreLocation:!0,keys:[{name:"title",weight:.7},{name:"content",weight:.3}]}),e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",a);function a(t){if(t.target.value!==void 0)return;if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!r(n))return;e.focus(),t.preventDefault()}function r(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,fetch(o).then(e=>e.json()).then(e=>{window.bookSearchIndex=new Fuse(e,i)}).then(()=>e.required=!1).then(s)}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value).slice(0,10);n.forEach(function(e){const n=c("
  • "),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.item.href,s.textContent=e.item.title,o.textContent=e.item.section,t.appendChild(n)})}function c(e){const t=document.createElement("div");return t.innerHTML=e,t.firstChild}})() \ No newline at end of file diff --git a/en/index.html b/en/index.html new file mode 100644 index 00000000..5b05163f --- /dev/null +++ b/en/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/ + \ No newline at end of file diff --git a/en/sitemap.xml b/en/sitemap.xml new file mode 100644 index 00000000..37b024f2 --- /dev/null +++ b/en/sitemap.xml @@ -0,0 +1 @@ +https://toruniina.github.io/toml11/docs/installation/https://toruniina.github.io/toml11/docs/features/https://toruniina.github.io/toml11/docs/reference/https://toruniina.github.io/toml11/docs/changelog/https://toruniina.github.io/toml11/docs/features/parsing_files/https://toruniina.github.io/toml11/docs/features/value/https://toruniina.github.io/toml11/docs/features/error_message/https://toruniina.github.io/toml11/docs/features/serialize/https://toruniina.github.io/toml11/docs/features/configure_types/https://toruniina.github.io/toml11/docs/features/literal/https://toruniina.github.io/toml11/docs/features/toml_spec/https://toruniina.github.io/toml11/docs/features/extension/https://toruniina.github.io/toml11/categories/https://toruniina.github.io/toml11/docs/reference/color/https://toruniina.github.io/toml11/docs/reference/comments/https://toruniina.github.io/toml11/docs/reference/conversion/https://toruniina.github.io/toml11/docs/reference/datetime/https://toruniina.github.io/toml11/docs/https://toruniina.github.io/toml11/docs/reference/error_info/https://toruniina.github.io/toml11/docs/reference/exception/https://toruniina.github.io/toml11/docs/reference/find/https://toruniina.github.io/toml11/docs/reference/format/https://toruniina.github.io/toml11/docs/reference/from/https://toruniina.github.io/toml11/docs/reference/get/https://toruniina.github.io/toml11/docs/reference/into/https://toruniina.github.io/toml11/https://toruniina.github.io/toml11/docs/reference/literal/https://toruniina.github.io/toml11/docs/reference/ordered_map/https://toruniina.github.io/toml11/docs/reference/parser/https://toruniina.github.io/toml11/docs/reference/result/https://toruniina.github.io/toml11/docs/reference/serializer/https://toruniina.github.io/toml11/docs/reference/source_location/https://toruniina.github.io/toml11/docs/reference/spec/https://toruniina.github.io/toml11/tags/https://toruniina.github.io/toml11/docs/reference/toml_fwd/https://toruniina.github.io/toml11/docs/reference/toml/https://toruniina.github.io/toml11/docs/reference/types/https://toruniina.github.io/toml11/docs/reference/value_t/https://toruniina.github.io/toml11/docs/reference/value/https://toruniina.github.io/toml11/docs/reference/version/https://toruniina.github.io/toml11/docs/reference/visit/ \ No newline at end of file diff --git a/favicon.png b/favicon.png new file mode 100644 index 00000000..59c7c2a2 Binary files /dev/null and b/favicon.png differ diff --git a/favicon.svg b/favicon.svg new file mode 100644 index 00000000..a3c696de --- /dev/null +++ b/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fonts/roboto-mono-v13-latin-regular.woff b/fonts/roboto-mono-v13-latin-regular.woff new file mode 100644 index 00000000..f319fbfa Binary files /dev/null and b/fonts/roboto-mono-v13-latin-regular.woff differ diff --git a/fonts/roboto-mono-v13-latin-regular.woff2 b/fonts/roboto-mono-v13-latin-regular.woff2 new file mode 100644 index 00000000..ed384d22 Binary files /dev/null and b/fonts/roboto-mono-v13-latin-regular.woff2 differ diff --git a/fonts/roboto-v27-latin-700.woff b/fonts/roboto-v27-latin-700.woff new file mode 100644 index 00000000..a5d98fc6 Binary files /dev/null and b/fonts/roboto-v27-latin-700.woff differ diff --git a/fonts/roboto-v27-latin-700.woff2 b/fonts/roboto-v27-latin-700.woff2 new file mode 100644 index 00000000..01d05fa5 Binary files /dev/null and b/fonts/roboto-v27-latin-700.woff2 differ diff --git a/fonts/roboto-v27-latin-regular.woff b/fonts/roboto-v27-latin-regular.woff new file mode 100644 index 00000000..86b38637 Binary files /dev/null and b/fonts/roboto-v27-latin-regular.woff differ diff --git a/fonts/roboto-v27-latin-regular.woff2 b/fonts/roboto-v27-latin-regular.woff2 new file mode 100644 index 00000000..ebe1795f Binary files /dev/null and b/fonts/roboto-v27-latin-regular.woff2 differ diff --git a/fuse.min.js b/fuse.min.js new file mode 100644 index 00000000..1f534ad9 --- /dev/null +++ b/fuse.min.js @@ -0,0 +1,9 @@ +/** + * Fuse.js v7.0.0 - Lightweight fuzzy-search (http://fusejs.io) + * + * Copyright (c) 2023 Kiro Risk (http://kiro.me) + * All Rights Reserved. Apache Software License 2.0 + * + * http://www.apache.org/licenses/LICENSE-2.0 + */ +var e,t;e=this,t=function(){"use strict";function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function t(t){for(var n=1;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{},n=t.getFn,i=void 0===n?$.getFn:n,o=t.fieldNormWeight,c=void 0===o?$.fieldNormWeight:o;r(this,e),this.norm=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,t);return{get:function(t){var i=t.match(F).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*e),c=parseFloat(Math.round(o*r)/r);return n.set(i,c),c},clear:function(){n.clear()}}}(c,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(e,[{key:"setSources",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=e}},{key:"setIndexRecords",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=e}},{key:"setKeys",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=t,this._keysMap={},t.forEach((function(t,n){e._keysMap[t.id]=n}))}},{key:"create",value:function(){var e=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,m(this.docs[0])?this.docs.forEach((function(t,n){e._addString(t,n)})):this.docs.forEach((function(t,n){e._addObject(t,n)})),this.norm.clear())}},{key:"add",value:function(e){var t=this.size();m(e)?this._addString(e,t):this._addObject(e,t)}},{key:"removeAt",value:function(e){this.records.splice(e,1);for(var t=e,n=this.size();t2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?$.getFn:r,o=n.fieldNormWeight,c=void 0===o?$.fieldNormWeight:o,a=new R({getFn:i,fieldNormWeight:c});return a.setKeys(e.map(A)),a.setSources(t),a.create(),a}function N(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.errors,r=void 0===n?0:n,i=t.currentLocation,o=void 0===i?0:i,c=t.expectedLocation,a=void 0===c?0:c,s=t.distance,u=void 0===s?$.distance:s,h=t.ignoreLocation,l=void 0===h?$.ignoreLocation:h,f=r/e.length;if(l)return f;var d=Math.abs(a-o);return u?f+d/u:d?1:f}var W=32;function T(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?$.location:i,c=r.distance,a=void 0===c?$.distance:c,s=r.threshold,u=void 0===s?$.threshold:s,h=r.findAllMatches,l=void 0===h?$.findAllMatches:h,f=r.minMatchCharLength,d=void 0===f?$.minMatchCharLength:f,v=r.includeMatches,g=void 0===v?$.includeMatches:v,y=r.ignoreLocation,p=void 0===y?$.ignoreLocation:y;if(t.length>W)throw new Error("Pattern length exceeds max of ".concat(W,"."));for(var m,k=t.length,M=e.length,b=Math.max(0,Math.min(o,M)),x=u,w=b,S=d>1||g,L=S?Array(M):[];(m=e.indexOf(t,w))>-1;){var _=N(t,{currentLocation:m,expectedLocation:b,distance:a,ignoreLocation:p});if(x=Math.min(_,x),w=m+k,S)for(var O=0;O=P;D-=1){var K=D-1,q=n[e.charAt(K)];if(S&&(L[K]=+!!q),z[D]=(z[D+1]<<1|1)&q,E&&(z[D]|=(j[D+1]|j[D])<<1|1|j[D+1]),z[D]&C&&(A=N(t,{errors:E,currentLocation:K,expectedLocation:b,distance:a,ignoreLocation:p}))<=x){if(x=A,(w=K)<=b)break;P=Math.max(1,2*b-w)}}if(N(t,{errors:E+1,currentLocation:b,expectedLocation:b,distance:a,ignoreLocation:p})>x)break;j=z}var B={isMatch:w>=0,score:Math.max(.001,A)};if(S){var J=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:$.minMatchCharLength,n=[],r=-1,i=-1,o=0,c=e.length;o=t&&n.push([r,i]),r=-1)}return e[o-1]&&o-r>=t&&n.push([r,o-1]),n}(L,d);J.length?g&&(B.indices=J):B.isMatch=!1}return B}function z(e){for(var t={},n=0,r=e.length;n1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,c=void 0===o?$.location:o,a=i.threshold,s=void 0===a?$.threshold:a,u=i.distance,h=void 0===u?$.distance:u,l=i.includeMatches,f=void 0===l?$.includeMatches:l,d=i.findAllMatches,v=void 0===d?$.findAllMatches:d,g=i.minMatchCharLength,y=void 0===g?$.minMatchCharLength:g,p=i.isCaseSensitive,m=void 0===p?$.isCaseSensitive:p,k=i.ignoreLocation,M=void 0===k?$.ignoreLocation:k;if(r(this,e),this.options={location:c,threshold:s,distance:h,includeMatches:f,findAllMatches:v,minMatchCharLength:y,isCaseSensitive:m,ignoreLocation:M},this.pattern=m?t:t.toLowerCase(),this.chunks=[],this.pattern.length){var b=function(e,t){n.chunks.push({pattern:e,alphabet:z(e),startIndex:t})},x=this.pattern.length;if(x>W){for(var w=0,S=x%W,L=x-S;w1&&void 0!==arguments[1]?arguments[1]:{},c=o.location,a=void 0===c?$.location:c,s=o.threshold,u=void 0===s?$.threshold:s,h=o.distance,l=void 0===h?$.distance:h,f=o.includeMatches,d=void 0===f?$.includeMatches:f,v=o.findAllMatches,g=void 0===v?$.findAllMatches:v,y=o.minMatchCharLength,p=void 0===y?$.minMatchCharLength:y,m=o.isCaseSensitive,k=void 0===m?$.isCaseSensitive:m,M=o.ignoreLocation,b=void 0===M?$.ignoreLocation:M;return r(this,n),(i=t.call(this,e))._bitapSearch=new D(e,{location:a,threshold:u,distance:l,includeMatches:d,findAllMatches:g,minMatchCharLength:p,isCaseSensitive:k,ignoreLocation:b}),i}return o(n,[{key:"search",value:function(e){return this._bitapSearch.searchIn(e)}}],[{key:"type",get:function(){return"fuzzy"}},{key:"multiRegex",get:function(){return/^"(.*)"$/}},{key:"singleRegex",get:function(){return/^(.*)$/}}]),n}(K),X=function(e){a(n,e);var t=l(n);function n(e){return r(this,n),t.call(this,e)}return o(n,[{key:"search",value:function(e){for(var t,n=0,r=[],i=this.pattern.length;(t=e.indexOf(this.pattern,n))>-1;)n=t+i,r.push([t,n-1]);var o=!!r.length;return{isMatch:o,score:o?0:1,indices:r}}}],[{key:"type",get:function(){return"include"}},{key:"multiRegex",get:function(){return/^'"(.*)"$/}},{key:"singleRegex",get:function(){return/^'(.*)$/}}]),n}(K),Y=[B,X,U,V,H,G,J,Q],Z=Y.length,ee=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,te=new Set([Q.type,X.type]),ne=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=n.isCaseSensitive,o=void 0===i?$.isCaseSensitive:i,c=n.includeMatches,a=void 0===c?$.includeMatches:c,s=n.minMatchCharLength,u=void 0===s?$.minMatchCharLength:s,h=n.ignoreLocation,l=void 0===h?$.ignoreLocation:h,f=n.findAllMatches,d=void 0===f?$.findAllMatches:f,v=n.location,g=void 0===v?$.location:v,y=n.threshold,p=void 0===y?$.threshold:y,m=n.distance,k=void 0===m?$.distance:m;r(this,e),this.query=null,this.options={isCaseSensitive:o,includeMatches:a,minMatchCharLength:u,findAllMatches:d,ignoreLocation:l,location:g,threshold:p,distance:k},this.pattern=o?t:t.toLowerCase(),this.query=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.split("|").map((function(e){for(var n=e.trim().split(ee).filter((function(e){return e&&!!e.trim()})),r=[],i=0,o=n.length;i2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n;return ue(e)||(e=he(e)),function e(n){var i=Object.keys(n),o=function(e){return!!e[ae]}(n);if(!o&&i.length>1&&!ue(n))return e(he(n));if(function(e){return!g(e)&&b(e)&&!ue(e)}(n)){var c=o?n[ae]:i[0],a=o?n[se]:n[c];if(!m(a))throw new Error(function(e){return"Invalid value for key ".concat(e)}(c));var s={keyId:C(c),pattern:a};return r&&(s.searcher=ie(a,t)),s}var u={children:[],operator:i[0]};return i.forEach((function(t){var r=n[t];g(r)&&r.forEach((function(t){u.children.push(e(t))}))})),u}(e)}function fe(e,t){var n=e.matches;t.matches=[],x(n)&&n.forEach((function(e){if(x(e.indices)&&e.indices.length){var n={indices:e.indices,value:e.value};e.key&&(n.key=e.key.src),e.idx>-1&&(n.refIndex=e.idx),t.matches.push(n)}}))}function de(e,t){t.score=e.score}var ve=function(){function e(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;r(this,e),this.options=t(t({},$),i),this.options.useExtendedSearch,this._keyStore=new j(this.options.keys),this.setCollection(n,o)}return o(e,[{key:"setCollection",value:function(e,t){if(this._docs=e,t&&!(t instanceof R))throw new Error("Incorrect 'index' type");this._myIndex=t||P(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(e){x(e)&&(this._docs.push(e),this._myIndex.add(e))}},{key:"remove",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},t=[],n=0,r=this._docs.length;n1&&void 0!==arguments[1]?arguments[1]:{}).limit,n=void 0===t?-1:t,r=this.options,i=r.includeMatches,o=r.includeScore,c=r.shouldSort,a=r.sortFn,s=r.ignoreFieldNorm,u=m(e)?m(this._docs[0])?this._searchStringList(e):this._searchObjectList(e):this._searchLogical(e);return function(e,t){var n=t.ignoreFieldNorm,r=void 0===n?$.ignoreFieldNorm:n;e.forEach((function(e){var t=1;e.matches.forEach((function(e){var n=e.key,i=e.norm,o=e.score,c=n?n.weight:null;t*=Math.pow(0===o&&c?Number.EPSILON:o,(c||1)*(r?1:i))})),e.score=t}))}(u,{ignoreFieldNorm:s}),c&&u.sort(a),k(n)&&n>-1&&(u=u.slice(0,n)),function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?$.includeMatches:r,o=n.includeScore,c=void 0===o?$.includeScore:o,a=[];return i&&a.push(fe),c&&a.push(de),e.map((function(e){var n=e.idx,r={item:t[n],refIndex:n};return a.length&&a.forEach((function(t){t(e,r)})),r}))}(u,this._docs,{includeMatches:i,includeScore:o})}},{key:"_searchStringList",value:function(e){var t=ie(e,this.options),n=this._myIndex.records,r=[];return n.forEach((function(e){var n=e.v,i=e.i,o=e.n;if(x(n)){var c=t.searchIn(n),a=c.isMatch,s=c.score,u=c.indices;a&&r.push({item:n,idx:i,matches:[{score:s,value:n,norm:o,indices:u}]})}})),r}},{key:"_searchLogical",value:function(e){var t=this,n=le(e,this.options),r=function e(n,r,i){if(!n.children){var o=n.keyId,c=n.searcher,a=t._findMatches({key:t._keyStore.get(o),value:t._myIndex.getValueForItemAtKeyId(r,o),searcher:c});return a&&a.length?[{idx:i,item:r,matches:a}]:[]}for(var s=[],u=0,h=n.children.length;u1&&void 0!==arguments[1]?arguments[1]:{},n=t.getFn,r=void 0===n?$.getFn:n,i=t.fieldNormWeight,o=void 0===i?$.fieldNormWeight:i,c=e.keys,a=e.records,s=new R({getFn:r,fieldNormWeight:o});return s.setKeys(c),s.setIndexRecords(a),s},ve.config=$,function(){re.push.apply(re,arguments)}(ne),ve},"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Fuse=t(); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..d3ed7aa5 --- /dev/null +++ b/index.html @@ -0,0 +1,22 @@ +Introduction | toml11 + +
    Introduction +

    Introduction +#

    日本語版はこちら

    Installation +#

    This section describes how to build and install toml11.

    Features +#

    This section describes how to use toml11’s features with examples.

    Reference +#

    This section details toml11 functions and classes.

    ChangeLog +#

    This section describes changes from release to release.

    \ No newline at end of file diff --git a/index.xml b/index.xml new file mode 100644 index 00000000..154bf696 --- /dev/null +++ b/index.xml @@ -0,0 +1,80 @@ +Introduction on toml11https://toruniina.github.io/toml11/Recent content in Introduction on toml11Hugoenparsing fileshttps://toruniina.github.io/toml11/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/parsing_files/Parsing Files and Strings # In toml11, you can parse files, strings, and byte arrays using toml::parse or toml::try_parse. +Upon success, these functions return a toml::value. Although the parsed file is always a table, the return type is not toml::table. This is because toml::value contains metadata about the file, whereas toml::table is merely an alias for std::unordered_map&lt;std::string, toml::value&gt;. To include metadata, a toml::value is returned instead of a toml::table. The toml::value corresponding to the root of the file will always hold a table_type.getting valueshttps://toruniina.github.io/toml11/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/value/Retrieving Values # This section explains how to access the values stored in toml::value. +Accessing Values Using Member Functions # is_something and as_something # toml::value has member functions like is_boolean() and is_integer() which allow you to check the type of the stored value. +Additionally, it has member functions like as_boolean() and as_integer() that allow you to access the value of that type. +For a complete list, refer to the toml::value reference.error messagehttps://toruniina.github.io/toml11/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/error_message/Outputting Error Messages # toml11 provides error messages that include location information within the file when using functions like toml::parse, toml::get&lt;T&gt;/find&lt;T&gt;, and as_integer(), among others. +For instance, if a syntax error in an integer is detected during parsing, an error message might look like this: +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 Or, if a type different from the one actually stored is requested:serializing valueshttps://toruniina.github.io/toml11/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/serialize/Outputting TOML Files # Using toml::format, you can convert a toml::value to a string. +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If the toml::value contains a table_type, it is interpreted as the root table of the file. +If a toml::value containing anything other than table_type is passed, only that value is formatted.configuring typeshttps://toruniina.github.io/toml11/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/configure_types/Customizing Types # The toml::value class uses std::int64_t for integer_type and std::unordered_map&lt;key_type, value_type&gt; for table_type. +However, in some cases, you may want to use boost::multiprecision::int128_t or std::map. +To accommodate this, toml::value is implemented with template parameters that allow you to change the stored types. +Just as std::string is actually an alias for std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt;, toml::value is an alias for toml::basic_value&lt;toml::type_config&gt;. +Here, we will explain the types contained in toml::type_config and how to define a different config type.toml literalhttps://toruniina.github.io/toml11/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/literal/_toml Literal # With the &quot;&quot;_toml literal, you can format TOML files inline. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } When including line breaks, raw string literals come in handy. +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } If a value is written on its own, that value is returned.toml spechttps://toruniina.github.io/toml11/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/toml_spec/TOML Language Version # You can specify the version of the TOML language and individual feature flags to use with toml::parse or toml::format through toml::spec. +Specifying TOML Version # You can construct a toml::spec from toml::semantic_version. +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } However, to make this shorter, the toml::spec::v() function is provided. +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } If not specified explicitly, toml::spec::default_version() is used to construct with default values.extensionhttps://toruniina.github.io/toml11/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/features/extension/TOML Language Extensions # The TOML language is currently at version v1.0.0, but several new features have been discussed and merged, with ongoing discussions for v1.1.0. +Among the proposed features, some were deemed to have limited use cases, some faced implementation challenges in their proposed form, and others were not adopted at all. +In toml11, we have experimentally implemented a selection of these features. Please note that these features are supported in toml11 but are not supported by other parsers and are unlikely to be supported in the future.color.hpphttps://toruniina.github.io/toml11/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/color/color.hpp # In color.hpp, functions related to colorizing error messages are defined. +Colors are specified using ANSI escape code. In terminals or other output destinations that do not support ANSI escape code, the output may become difficult to read. +Macros # TOML11_COLORIZE_ERROR_MESSAGE # If this macro is defined during compilation (-DTOML11_COLORIZE_ERROR_MESASGE), error messages are colored by default. +If not defined, colors are not applied by default. You need to specify them using toml::color::enable().comments.hpphttps://toruniina.github.io/toml11/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/comments/comments.hpp # In comments.hpp, comment containers are provided. +toml::preserve_comments # preserve_comments is a container that preserves comments. +It has all the member functions of std::vector&lt;std::string&gt;. +Comments are preserved as std::string. If the comment does not start with #, it will be prefixed with # during output. However, this prefixing is not done when adding comments to the container. +Spaces are not automatically added, so if you want a space immediately after #, either start the comment with a space or pass the comment with #.conversion.hpphttps://toruniina.github.io/toml11/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/conversion/ conversion.hpp # Provides macros to automatically define conversion functions for supporting user-defined types with toml::get and toml::find. +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) Example # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) Related # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/datetime/datetime.hpp # Defines a class that stores date and time information used in TOML&rsquo;s datetime. +enum class month_t # Enum class to specify months. +Due to its relationship with std::tm, local_date treats January as 0. To avoid confusion, month_t allows specification of months by their names. +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # local_date holds a date.error_info.hpphttps://toruniina.github.io/toml11/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/error_info/error_info.hpp # In error_info.hpp, definitions for error_info and functions to format it are provided. +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename .exception.hpphttps://toruniina.github.io/toml11/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/exception/exception.hpp # toml::exception # Base class for exception types defined in toml11. +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml Member Functions # Destructor # virtual ~exception() noexcept override = default; Override when derived. +what # virtual const char* what() const noexcept override {return &#34;&#34;;} Returns the error message.find.hpphttps://toruniina.github.io/toml11/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/find/find.hpp # This function searches for a value in a toml::value and performs type conversion if necessary. +toml::value can change the type it stores, and toml::find accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly.format.hpphttps://toruniina.github.io/toml11/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/format/format.hpp # Defines structures and enumerations related to formatting information for toml::value. +indent_char # An enumeration representing the indentation character choice. +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); Choosing none means no indentation is used, regardless of the value in super tables. +If both space and tab are specified within the serializable value, the behavior is unspecified; typically, the unspecified indentation character appears.from.hpphttps://toruniina.github.io/toml11/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/from/from.hpp # Defines a struct used for conversion from toml::value in toml::get and toml::find. +You can achieve the same functionality by adding a from_toml member function, but for classes where you cannot add member functions, use from&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct from; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.get.hpphttps://toruniina.github.io/toml11/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/get/get.hpp # These are functions for extracting values from toml::value and performing type conversions if necessary. +toml::value can change the type it stores, and toml::get accommodates these types. Technically, all functions use toml::basic_value&lt;TC&gt;. However, for simplicity, we refer to it as toml::value in explanations unless a distinction is necessary. In the documentation, if the template parameter TC changes the type, assume that types like toml::value::integer_type will also change accordingly. toml::get&lt;T&gt; # Overview # Generally, toml::get behaves as follows: You specify T as in toml::get&lt;int&gt;(v).into.hpphttps://toruniina.github.io/toml11/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/into/into.hpp # Defines a struct used for conversion from user-defined types into toml::value constructors. +You can achieve the same functionality by adding an into_toml member function, but for classes where you cannot add member functions, use into&lt;T&gt;. +This file does not provide specific implementations. Please specialize this struct when using. +namespace toml { template&lt;typename T&gt; struct into; } // toml Example # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.literal.hpphttps://toruniina.github.io/toml11/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/literal/literal.hpp # In literal.hpp, the _toml literal is defined. +The _toml literal parses string literals into toml::value. +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // Available in C++20 and later } // toml_literals } // literals } // toml Free Functions # operator&quot;&quot; _toml(const char*) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); Converts a string literal into a toml::value by parsing it.ordered_map.hpphttps://toruniina.github.io/toml11/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/ordered_map/ordered_map.hpp # Defines toml::ordered_map, which is used to maintain the order of values in a file. +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } The ordered_map is a map type that preserves the insertion order of values, allowing iteration in that order. +As a linear container, searches require O(n) time relative to the number of elements.parser.hpphttps://toruniina.github.io/toml11/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/parser/parser.hpp # Defines functions for parsing files or strings and the exceptions they use. +While parse throws an exception on failure, try_parse returns error information. +parse # Parses the content of a given file and returns a toml::basic_value. +In case of failure, toml::syntax_error is thrown. +The type information of basic_value is provided by a template, and the TOML language version is specified by toml::spec. +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } Parses the content of the given filename.result.hpphttps://toruniina.github.io/toml11/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/result/result.hpp # result.hpp defines the result type, which can hold either a success value or a failure value. +This is used as the return type for toml::try_parse, which does not throw exceptions. +success # A type that holds a success value. +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } Member Types # using value_type = T; The type of the success value.serializer.hpphttps://toruniina.github.io/toml11/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/serializer/serializer.hpp # format # Serializes the data. +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } If there&rsquo;s a conflict between the format information and the spec, for example, when using v1.0.0 with table_format::multiline_oneline, the spec takes precedence.source_location.hpphttps://toruniina.github.io/toml11/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/source_location/source_location.hpp # source_location.hpp defines a class representing a specific area within a TOML file. +This class is used to represent problematic areas in error messages. +toml::source_location # source_location is a class representing a specific area within a TOML file. +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/spec/spec.hpp # spec.hpp defines classes for specifying the version of TOML. +toml::semantic_version # semantic_version is a class that stores version information. +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml Member Functions # Constructor # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; Constructs a semantic_version instance with the specified major, minor, and patch version numbers.toml_fwd.hpphttps://toruniina.github.io/toml11/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hpp contains forward declarations of structures defined in toml11 and macro definitions. +When only forward declarations of toml11 structures are needed and implementation is not required, including toml_fwd.hpp instead of toml.hpp can reduce compilation time. +Since this file only contains forward declarations, you cannot use toml::table, defined as toml::basic_value&lt;toml::type_config&gt;::table_type, and similarly defined toml::array. This is because they require the implementation of basic_value. This header file and toml.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${TOML11_INCLUDE_DIR}/toml11/.toml.hpphttps://toruniina.github.io/toml11/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/toml/toml.hpp # toml.hpp includes all other headers. +This allows access to all features of toml11. +This header file and toml_fwd.hpp are located under ${TOML11_INCLUDE_DIR}/, while other header files are located under ${toml11_include_dir}/toml11/.types.hpphttps://toruniina.github.io/toml11/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/types/types.hpp # This document defines classes that specifies type information. +type_config # type_config is a type that encapsulates parameters given to toml::basic_value. +When using different types within toml::basic_value&lt;T&gt;, you need to define and pass this type separately. All elements listed are required. +If you use numerical types that cannot use standard stream operators, define and replace the equivalents for read_int and read_float. +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static Member Functions # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); If you use a type as integer_type that cannot utilize standard stream operators, implement this function.value_t.hpphttps://toruniina.github.io/toml11/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value_t/value_t.hpp # value_t # value_t is used to handle the type information of toml::value. +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml Non-member Functions # Stream Operator # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); Outputs the string representation of the value_t to the stream.value.hpphttps://toruniina.github.io/toml11/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/value/value.hpp # value.hpp defines basic_value. +toml::basic_value # basic_value is a class that stores TOML values. +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // Defined in types.hpp // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml Member Types # The following member types are defined.version.hpphttps://toruniina.github.io/toml11/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/version/version.hpp # In version.hpp, macros related to the version information of toml11 are defined. +Macros # TOML11_VERSION_MAJOR # The major version of toml11. +TOML11_VERSION_MINOR # The minor version of toml11. +TOML11_VERSION_PATCH # The patch version of toml11. +Function # license_notice # namespace toml { const char* license_notice() noexcept; } Returns the license notice. +Provided for convenience when redistributing without source code.visit.hpphttps://toruniina.github.io/toml11/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/docs/reference/visit/visit.hpp # In visit.hpp, toml::visit is defined. +toml::visit # Functions # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Return value when Visitor is called with a value of basic_value&lt;TC&gt; */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v); } toml::visit calls the overload of Visitor corresponding to the type held by basic_value&lt;TC&gt;, and returns the result. \ No newline at end of file diff --git a/ja.search-data.min.fa09cc522c4a93fc076bd8faf0b07efa2ed3c02ae773cc7d80ce188d80fc981a.json b/ja.search-data.min.fa09cc522c4a93fc076bd8faf0b07efa2ed3c02ae773cc7d80ce188d80fc981a.json new file mode 100644 index 00000000..f0cb0649 --- /dev/null +++ b/ja.search-data.min.fa09cc522c4a93fc076bd8faf0b07efa2ed3c02ae773cc7d80ce188d80fc981a.json @@ -0,0 +1 @@ +[{"id":0,"href":"/toml11/ja/docs/installation/","title":"installation","section":"Docs","content":" installation # single_includeを使用する # single_include/toml.hppは、toml11が持つ全ての機能を単一のファイルにまとめたシングルファイル・ヘッダオンリーライブラリです。\nこれをINCLUDE_PATHが通っている箇所にコピーして#include \u0026lt;toml.hpp\u0026gt;とするのが最も単純な使用方法です。\nMITライセンスの許諾表示はコメントとtoml:license_notice()関数の両方に含まれます。 ソースコードを公開せずに再頒布する場合は、toml11のライセンスファイルをコピーして同梱するか、この関数を呼び出せるようにしておいてください。\ntoml11をクローンし、cmakeを使って使用する # toml11をgit submoduleなどによって自身のレポジトリ下に配置した場合、cmakeを使用している場合はadd_subdirectory(toml11)のようにすることで使用可能になります。\nadd_subdirectory(toml11) add_executable(main main.cpp) target_link_libraries(main PUBLIC toml11::toml11) toml11は自身がルートプロジェクトのときのみ、テストとインストールを行います。\ncmakeを使用してインストールする # toml11をクローンしたのち、cmakeを使ってインストールすることができます。\n$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --install ./build/ --prefix=/opt/toml11 インストールの前にテストプログラムを実行する際は、最初に-DTOML11_BUILD_TESTS=ONを設定してください。\nインストールが完了すれば、以下のようにして使用できます。\nfind_package(toml11) add_executable(main main.cpp) target_link_libraries(main PRIVATE toml11::toml11) cmakeを使用してコンパイルし、静的ライブラリを作成する # cmakeの実行時に-DTOML11_PRECOMPILE=ONを定義することで、toml11の関数のうちコンパイルできるものを先にコンパイルして、全体のコンパイル時間を短縮することができます。\n$ cmake -B ./build/ -DTOML11_PRECOMPILE=ON ライブラリをリンクする場合は、CMakeで\ntarget_link_libraries(your_target PUBLIC toml11::toml11) とするか、ヘッダ内の関数のinline化を避けるためにコンパイラに-DTOML11_COMPILE_SOURCESを渡してください。\nただし、toml11は複数のC++バージョンに対応するため、__cplusplusの値などによって型を切り替えることがあります。 そのため、ビルドした際のバージョンと使用時のバージョンが異なる場合、リンクに失敗する可能性があります。 問題が生じた場合はCMAKE_CXX_STANDARDによって必要なバージョンを設定してコンパイルしてください。 それが難しい場合は、通常通りヘッダオンリーライブラリとして使用してください。\nfind_package(toml11)によってTOML11_INCLUDE_DIRが定義されます。 コンパイル済みライブラリとしてインストールした場合でも、 TOML11_INCLUDE_DIR を include_directories に追加した上で target_link_libraries を 使用しないようにすれば、ヘッダオンリーライブラリとして使用可能です。\nfind_package(toml11) add_executable(main main.cpp) # インクルードのみ可能にし、リンクを行わない target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR}) examplesをコンパイルする # -DTOML11_BUILD_EXAMPLES=ONとすることで、examples/をコンパイルできます。\n$ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON $ cmake --build ./build/ examplesの実行バイナリはexamples/に生成されます。\nテストを実行する # テストをビルドするためには、-DTOML11_BUILD_TESTS=ONとします。\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON $ cmake --build ./build/ $ ctest --test_dir ./build/ toml-lang/toml-testsを実行するには、-DTOML11_BUILD_TOML_TESTS=ONとします。 すると、tests/にtoml11_decoderとtoml11_encoderがビルドされます。\n$ git submodule update --init --recursive $ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON $ cmake --build ./build/ $ ctest --test_dir ./build/ "},{"id":1,"href":"/toml11/ja/docs/features/","title":"features","section":"Docs","content":" features # ここでは、toml11が提供する主な機能について、例を挙げながら説明します。\nファイル・文字列をパースする # ファイルや文字列をパースする関数と、それが出力するエラーの扱い方について説明します。\n以下の内容を含みます。\nファイルをパースする 文字列をパースする バイト列をパースする 例外を投げずにファイルをパースする 例外を投げずに文字列をパースする 例外を投げずにバイト列をパースする toml::valueから値を取り出す # toml::valueが持つデータの型を調べ、取り出す方法、型変換を行う方法について説明します。\n以下の内容を含みます。\nメンバ関数を使って値の型を調べる メンバ関数を使って値にアクセスする コメントにアクセスする インラインテーブル・ドットキーの取り扱い 日付情報の取り扱い toml::get\u0026lt;T\u0026gt;を使って変換する toml::get_orを使って失敗時の値を指定する toml::find\u0026lt;T\u0026gt;を使って検索と変換を行う toml::find_orを使って失敗時の値を指定する ユーザー定義型との変換を定義する toml::visitで関数を適用する toml::valueを構築する エラーメッセージを作る # toml::valueの値を使って、TOMLファイル中の位置情報つきのエラーメッセージを生成する方法について説明します。\n以下の内容を含みます。\ntoml::value の位置情報を取り出す エラーメッセージを構築する 出力に色を付ける TOMLファイルを出力する # toml::valueの値をフォーマットする方法と、可能なフォーマット指定について説明します。\n以下の内容を含みます。\ntoml::valueの値ごとにフォーマットを指定する toml::valueをフォーマットして文字列化する toml::valueの型を変更する # toml::valueが格納する型(integer_typeやtable_typeをカスタマイズする方法について説明します。\n以下の内容を含みます。\ntype_configの定義 ordered_type_configを使用する コメントを保存しないようにする std::dequeなどの異なるコンテナを使用する boost::multiprecisionなどの異なる数値型を使用する TOMLリテラル # C++内にTOMLファイルを埋め込むための_tomlリテラルについて説明します。\n以下の内容を含みます。\nTOMLリテラルを使用する TOML言語バージョン # toml11がサポートするTOML言語のバージョン、主にTOML-v1.1.0で追加された言語機能を制御する方法について説明します。\n以下の内容を含みます。\nTOML言語の1.1.0を使用する TOML言語の1.1.0の一部の機能のみ使用する TOML言語拡張 # toml11独自のTOML言語拡張について説明します。\n以下の内容を含みます。\nnull をサポートする 浮動小数点数の16進数フォーマットをサポートする 数値に単位を付けられるようにする "},{"id":2,"href":"/toml11/ja/docs/reference/","title":"reference","section":"Docs","content":" Reference # 以下では、toml11が公開するクラスと関数の効果を説明します。\nディレクトリ構造 # toml.hpp と toml_fwd.hpp は ${TOML11_INCLUDE_DIR} にあります。 他のファイルは、${TOML11_INCLUDE_DIR}/toml11 にあります。\nもし各機能のファイルを個別に #include したい場合は、 #include \u0026lt;toml11/color.hpp\u0026gt; としてください。 全てを一度に #include する場合は、 #include \u0026lt;toml.hpp\u0026gt; としてください。\ncolor.hpp # エラーメッセージの色付けに関する関数を定義します。\ncomments.hpp # コメントを持つpreserve_comment型とdiscard_comment型を定義します。\nconversion.hpp # toml::valueとユーザー定義クラスを自動的に変換するマクロを定義します。\ndatetime.hpp # 日時情報を持つクラスを定義します。\nerror_info.hpp # エラー情報を持つクラスを定義します。\nexception.hpp # toml11で使用される例外の基底クラス、toml::exceptionを定義します。\nfind.hpp # 値を探し変換するtoml::find関数を定義します。\nformat.hpp # 値のフォーマット情報を持つクラスを定義します。\nfrom.hpp # ユーザー定義型を変換するためのfrom\u0026lt;T\u0026gt;型の前方宣言です。\nget.hpp # toml::valueの値を取り出し変換するtoml::get\u0026lt;T\u0026gt;関数を定義します。\ninto.hpp # ユーザー定義型を変換するためのinto\u0026lt;T\u0026gt;型の前方宣言です。\nliteral.hpp # operator\u0026quot;\u0026quot; _tomlリテラルを定義します。\nordered_map.hpp # toml::ordered_mapを定義します。\nparser.hpp # ファイルまたは文字列をパースする関数を定義します。\nresult.hpp # 他の関数の返り値として使われる、成功値または失敗値を持つresult\u0026lt;T, E\u0026gt;型を定義します。\nserializer.hpp # シリアライズに用いるtoml::format関数とtoml::serializerを定義します。\nsource_location.hpp # エラー情報に用いられる、ファイル内のある領域を指すsource_location型を定義します。\nspec.hpp # TOML言語のバージョン情報と機能フラグを制御する、toml::semantic_version型とtoml::spec型を定義します。\ntoml.hpp # toml.hppは、他の全てのヘッダを include します。 toml11の全機能が使用可能になります。\ntoml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。\ntypes.hpp # toml::valueの持つ型を制御するためのtoml::type_config型を定義します。\nvalue.hpp # toml::value型を定義します。\nvalue_t.hpp # 列挙型toml::value_tを定義します。\nversion.hpp # toml11のバージョン情報を定義します。\nvisit.hpp # toml::valueの持つ値に関数を適用するtoml::visit関数を定義します。\n備考 # ここで明記されない関数(主にnamespace toml::detailやnamespace toml::cxx以下に定義されるもの)は、 ソースコードを見ることで利用可能ではあるものの、そのインターフェースは今後のいかなるバージョンアップでも(パッチバージョンアップを含む)維持される保証はありません。\n"},{"id":3,"href":"/toml11/ja/docs/changelog/","title":"changelog","section":"Docs","content":" Change Log # v4.1.0 # Added # std::get\u0026lt;std::u8string\u0026gt;をサポート toml::value(std::u8string)をサポート string_type = std::u8stringをサポート operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, toml::value)をサポート toml::integer_formatに、16進数表示で大文字を使うことを指定するbool uppercaseを追加 templateを使って実装された into_toml() をサポート (by 萧迩珀) Fixed # Windowsで\\r\\nが改行に使われた際、出力時に\\rが重複する問題を修正 (by Andreas Keller) Changed # CIで複数コアを使うことでビルドを高速化 v4.0.3 # Fixed # toml_fwd.hppを使用した際にデフォルト引数が重複する問題を修正 toml::valueを複数渡した際にtoml::make_error_infoが使えない問題を修正 std::reference_wrapperを持つtoml::resultをコピー・ムーブする際の問題を修正 hugoの最新版でドキュメントがビルドできない問題を修正 コンパイラによる軽微な警告を多数修正 CMakeの互換性に関する警告を抑制 Changed # CIビルドで-Werror, /WXを追加 CIビルドでMSVCのwarningレベルを/W3から/W4に変更 READMEでより多くの機能を紹介するよう更新 v4.0.2 # Fixed # parse(FILE*) 内の fread の結果をチェック toml11/version.hppのマクロを修正 コンパイルオプションに関するドキュメントの更新 ファイルオープンモードに関するドキュメントの更新 Changed # CMakeLists.txt内のバージョン番号をversion.hppから取得するように変更 v4.0.1 # Fixed # sematic_version::{major, minor} と \u0026lt;sys/sysmacro.h\u0026gt; 内で定義されるマクロの衝突を解消 discard_comments の operator\u0026lt;\u0026lt; の定義を修正 (by Egor Pugin) format_locationを使用した際に最初の空行が出ない問題を解決 改行文字のみを含む行を指すsource_locationでエラーメッセージを生成した際に、同じ行が二回表示される問題を解決 README.md内のリンクを修正 example/unicodeのREADMEのタイトルを修正 Added # mainに変更があったとき、single_include/toml.hppを自動生成するようCIを設定 v3からv4への変化 # 破壊的変更 # toml::basic_valueのtemplate引数を変更 # toml11 v3では、toml::basic_valueはコメントコンテナ、テーブル型コンテナ、配列型コンテナをそれぞれ取っていました。\ntemplate\u0026lt;typename Comment, template\u0026lt;typename ...\u0026gt; class Table = std::unordered_map, template\u0026lt;typename ...\u0026gt; class Array = std::vector\u0026gt; class basic_value; ですが、integer_typeなどを変更したいという場合にはこれでは対応できません。\ntoml11 v4では、toml::basic_valueは単一のTypeConfigを受け取り、より多くの型を変更可能にします。\ntemplate\u0026lt;typename TypeConfig\u0026gt; class basic_value; デフォルトではtoml::valueが格納する型は変わりません。\n型を変更する際は、 type_config を参照してください。\ntoml::basic_valueのstd::initializer_listサポートを削除 # toml11 v3では、 toml::value に std::initializer_list を取るオーバーロードが用意されていました。\nこれにより、 toml::value を配列やテーブルで初期化する際により直観的な書き方が可能でした。\n// toml11 v3 toml::value v{1,2,3,4,5}; toml::value v{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }; しかし、これは同時に以下のような問題を引き起こしました。\n一つ目は、1要素の配列と通常の値の区別がつかず、常に配列になってしまうことです。\n// toml11 v3 toml::value v{1}; // 1 ではなく [1,] になってしまう 統一初期化記法が普及した現在、これは非常に不便です。\n二つ目は、値が全て文字列のテーブルと、ネストされた配列の区別がつかないことです。\n// toml11 v3 toml::value v{ {\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;} }; // {a = \u0026#34;foo\u0026#34;, b = \u0026#34;bar\u0026#34;} // [[\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;], [\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;]] // のどちらでもあり得る これらの問題は言語仕様上解決が困難です。\ntoml11 v4では、混乱を避けるため、std::initializer_listサポートを削除しました。\ntoml::value を配列で初期化する際はexplicitに toml::array を、 テーブルで初期化する際はexplicitに toml::table を指定する必要があります。\n// toml11 v4 toml::value v(toml::array{1,2,3,4,5}); toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;} }); toml::value v{toml::array{1}}; // [1,] toml::value v{1} // 1 toml::value v{toml::table{{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, {\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; toml::value v{toml::array{toml::array{\u0026#34;a\u0026#34;, \u0026#34;foo\u0026#34;}, toml::array{\u0026#34;b\u0026#34;, \u0026#34;bar\u0026#34;}}}; これにより toml::value をテーブルや配列で初期化する際に少し不便になりますが、 explicitに型情報を記述することにより予測不能な値になることは避けることができます。\ntoml::basic_value::is_uninitialized() を is_empty() に変更 # toml11 v3では、初期化されていない basic_value かどうかを判定する関数は is_uninitialized でした。\nしかし、toml11 v4では言語拡張で null をサポートするため、意図的に空にされた値が構築される可能性があります。 なので命名を変更し、 is_empty としました。\ntoml::string を廃止、フォーマット情報を陽に格納 # toml11 v3では、文字列が basic か literal かの情報を保持するため、 格納する文字列型に toml::string という std::string の薄いラッパーを使用していました。\n// toml11 v3 namespace toml { enum class string_t : std::uint8_t { basic = 0, literal = 1, }; struct string { string_t kind; std::string str; }; } // toml toml11 v4では、数値型の基数や配列を複数行にするかどうかなどのより多くのフォーマット情報を持たせるため、 全ての型に xxx_format 型を用意し、値とペアで格納することにしました。\n// toml11 v4 enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; これにより、より細かいフォーマット情報を保持することができるようになり、 特に数値型や配列、テーブル型のフォーマット情報がパース後も維持できるようになりました。\ntoml::formatの引数を変更 # toml11 v3では、 toml::format が数値型の精度や幅などの値を受け取っていました。\nしかし、これでは細かなフォーマット指定ができず、予想したようなファイルにシリアライズできませんでした。\ntoml11 v4では、各 toml::value にそれぞれのフォーマット情報を格納したため、 より細かいフォーマット情報を toml::value 自体が持ち運べるようになりました。\nこれにより、 toml::format 自体はフォーマット指定を受け取らず、 フォーマット時に使用できる言語機能フラグを持つ toml::spec のみを取るようになりました。\ntoml::source_locationのメンバ関数を変更 # toml11 v3では、 toml::source_location のメンバ型は一行分だけを意識したものでした。\ntoml11 v4では、 toml::source_location のメンバ型は複数行が前提になります。\ntoml::format_underlineをtoml::format_locationに変更 # toml11 v3では、 toml::source_location を使用して位置情報を文字列化するとき、 toml::format_underline を使用していました。\nしかしこれは名称としてわかりにくいため、 toml::format_location に変更しました。\nformat_errorの引数を変更 # toml11 v3ではエラー情報を表すクラスがなかったため、toml::format_errorの引数が複雑になっていました。\ntemplate\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; std::string format_error(const std::string\u0026amp; err_msg, const basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v, const std::string\u0026amp; comment, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); template\u0026lt;typename C, template\u0026lt;typename ...\u0026gt; class T, template\u0026lt;typename ...\u0026gt; class A\u0026gt; inline std::string format_error(const std::string\u0026amp; err_msg, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v1, const std::string\u0026amp; comment1, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v2, const std::string\u0026amp; comment2, const toml::basic_value\u0026lt;C, T, A\u0026gt;\u0026amp; v3, const std::string\u0026amp; comment3, std::vector\u0026lt;std::string\u0026gt; hints = {}, const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED); toml11 v4では、class error_infoとmake_error_infoを導入し、format_errorの引数を簡略化しました。\nstd::string format_error(const error_info\u0026amp; err); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); toml::color の制御を変更 # toml11 v3では、出力に色を付けるかどうかに toml::colorize というマニピュレータを、 toml::color::enable/disable と並列で使用していました。\nマニピュレータはストリームごとに色を付けるかどうかを決定できるものでしたが、 v4でストリームを使用する頻度が下がったことと、内部で使用する std::ios_base::xalloc がC++11ではスレッドセーフではないことなどから、 toml::color::enable/disable のみを使用するようにし、 toml::colorize を削除しました。\n破壊的でない変更 # parse_strの追加 # toml11 v3では、文字列そのものを取るtoml::parse関数はありませんでした。 なので文字列をパースする際にはstd::istringstreamを使う必要がありました。\nこれは不便なので、toml::parse_strを追加し、文字列を直接パース出来るようにしました。\ntry_parseの追加 # toml11 v3では、パーサはエラーを発見した際にはtoml::syntax_errorを送出していました。\nしかし、例外を投げられない環境や、パフォーマンスの都合や記法の都合によって例外を投げたくない場合があります。\ntoml11 v4では toml::result を使用して、例外を投げずにパース失敗を伝える toml::try_parse を実装しました。\nこれも必ず例外を投げないというわけではなく、使用している標準ライブラリの内部でのエラー、 例えばメモリ不足によるアロケーション失敗での std::bad_alloc などは送出される可能性があります。\nバイト列のパースをサポート # ファイルなど以外の方法で得られたTOMLコンテンツをパース出来るようにするため、 std::vector\u0026lt;unsigned char\u0026gt; を受け取る toml::parse, toml::try_parse を追加しました。\ntoml::specの追加 # toml11 v3では、TOML言語側の新機能は全て取り込み、またTOML言語の新バージョンに導入されることが決定した機能も マクロ TOML11_USE_UNRELEASED_TOML_FEATURES によって制御していました。\nこれは、toml11 v3を開発していた時点では TOML言語は0.4.0から0.5.0で、1.0.0に到達していなかったためです。\n最新のTOML言語仕様に全てのユーザーが詳しいわけではないため、 古い言語使用に基づいたエラーメッセージを表示すると、コミュニティ全体を混乱させてしまいます。 よって、v1.0.0に達するまでは、できる限り素早く新しい言語仕様を提供し、かつユーザーにもアップデートを促す必要がありました。\nしかし、現在のTOML言語仕様はv1.0.0です。 そのため、TOML v1.1.0がリリースされた後でもv1.0.0を使用する、という選択肢に気を配る必要が生じました。\nよって、より柔軟にTOML言語仕様を選択できるよう、toml::specを導入して、TOML言語バージョンを実行時に変更できるようにしました。\nまた、toml::specでは言語機能ごとにフラグを設定し、特定の言語機能のみを試すこともできるようにしました。\nこれは、toml11 v4特有の言語拡張でも使用します。\nフォーマット情報の追加 # toml11 v3では、文字列を除いてフォーマット情報が保存されず、シリアライズ時に考慮できるのは幅と精度だけでした。\nしかし、これでは16進数整数がシリアライズ時に10進数になってしまったり、確実にinline tableにする方法がありませんでした。\ntoml11 v4では、全てのTOML型にフォーマット情報(integer_format etc)を追加し、 パース時とシリアライズ時に考慮するようにしました。\nこれによって、16進数整数や、インラインテーブル等のフォーマット情報をより細かく、値ごとに設定できるようになりました。\nデフォルトでコメントを維持するよう変更 # toml11 v3では、デフォルトではコメントがパースされず、シリアライズもされませんでした。\nこれは、コメントが後期に導入された機能で、特別なハックによって読み込まれていたためです。\ntoml11 v4では、デフォルトでコメントをパースし、保存し、シリアライズするようになりました。\nまた、パーサの実装も大幅に変更され、コメントが他の要素と同様にパースされるようになりました。\nsingle_include/toml.hpp の追加 # toml11は多機能なライブラリなので、開発効率のために機能ごとに異なるヘッダファイルを持っています。 ですが、これはインストールにある程度の手間が必要ということでもあります。\nそこで、toml11 v4から全てのヘッダファイルを適切な順序で結合した single_include/toml.hpp ファイルを追加し、 単一のファイルで完結するライブラリをコピーするだけで導入できるようにしました。\nコンパイル済みライブラリを選択可能に # toml11は template を多用しているため、コンパイル時間が長くなります。\ntoml11 v4では、できるだけコンパイル可能な関数を増やし、それらを先にライブラリとしてコンパイルできるようにしました。\nこれにより、大規模な開発で使用する際にコンパイル時間を短くできると期待できます。\nリファレンス・ドキュメントの追加 # これまでは、READMEにすべてのfeatureを記載しており、関数の詳細な定義を示すリファレンスや、また日本語での資料などがありませんでした。\ntoml11 v4では、リファレンスを追加したドキュメントを同梱し、また日本語・英語両方で同一の内容を記載します。\nただし、ライブラリ作者は日本語母語話者であるため、日本語の内容を第一とし、英語の内容がそれと異なっていた場合は日本語の内容が正しいものとします。\n"},{"id":4,"href":"/toml11/ja/docs/features/parsing_files/","title":"parsing files","section":"features","content":" ファイル・文字列をパースする # toml11では、toml::parse や toml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。\nこれらは成功時に toml::value を返します。 ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 toml::value はファイルに関するメタデータを持っており、 toml::table は std::unordered_map\u0026lt;std::stirng, toml::value\u0026gt; のエイリアスでしかありません。 メタデータを返すために、 toml::table ではなく toml::value を返しています。 ファイルのルートに対応する toml::value は常に table_type を持ちます。\nファイルをパースする # ファイルをパースする際は、 toml::parse または toml::try_parse を使います。\ntoml::parse # std::stringでファイル名を指定する # toml::parse は、文字列でファイル名を受け取り、そのファイルを開いてパースします。\n以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } std::filesystem::pathでファイルを指定する # toml::parse には、std::filesystem::pathを渡すことも可能です。\n当然ですが、\u0026lt;filesystem\u0026gt;がサポートされるC++17以降でなければ使用できません。\nstd::istreamで入力ストリームを指定する # toml::parse には、std::istreamを渡すことも可能です。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 std::ios::binaryを使ってバイナリモードで開いてください。\nその際、ファイル名の情報がなくなるため、エラーメッセージ中では \u0026quot;unknown file\u0026quot; となります。\nこれを避けるため、 std::istream を取る場合は第二引数に std::string でファイル名を取ることもできます。\nstd::ifstream 以外にも、 std::istringstream 等の別のistreamを受け取ることができます。 ただし、呼び出した時点で内容が全て読み込める必要があります。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::string filename(\u0026#34;input.toml\u0026#34;); std::ifstream ifs(filename); const toml::value input = toml::parse(ifs, filename); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } FILE*でファイルを指定する # toml::parse には、FILE*を渡すことも可能です。\n標準ライブラリによる改行文字の自動変換によるファイルサイズと文字数との不整合を避けるため、 fopen(\u0026quot;example.toml\u0026quot;, \u0026quot;rb\u0026quot;)のようにしてバイナリモードで開いてください。\nこの場合も、std::istreamのときと同様に、第二引数に文字列でファイル名を与える必要があります。\nFILE*を渡した場合、ファイルの読み込みに失敗した際にはerrnoが報告されます。\nエラー時の挙動 # toml::parse は、文法エラーを発見した場合 toml::syntax_error を送出します。\ntoml::syntax_error は、 toml::exception から派生しており、またそれはstd::exceptionから派生します。\nよって、 toml::syntax_error からは what() メンバ関数を使ってエラーメッセージを取り出すことができます。\nまた、 toml::syntax_error は std::vector\u0026lt;toml::error_info\u0026gt; を持っており、errors()メンバ関数を使ってそれにアクセスすることもできます。\ntoml::parse はごく簡単なエラーならスキップして復帰し、複数のエラーを報告しようと努めます。 数値のフォーマットエラー程度なら復帰できることが多いですが、 配列やテーブルの中のエラーは復帰できずに似たようなエラーを複数回報告することもあります。 冗長であると感じた場合は、 std::vector\u0026lt;toml::error_info\u0026gt; の front() だけを使用するようにすると、 確実に問題のある個所に関するメッセージを得られます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { // parse try { const toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } catch(const toml::syntax_error\u0026amp; err) { // 全てのエラーを報告 std::cerr \u0026lt;\u0026lt; err.what() \u0026lt;\u0026lt; std::endl; // 最初のエラーのみ報告 std::cerr \u0026lt;\u0026lt; err.errors().front() \u0026lt;\u0026lt; std::endl; } } toml::try_parse # toml::parse は失敗時に例外を送出しますが、 toml::try_parse は失敗時に例外を投げません。\nその代わり、返り値が toml::value ではなく toml::result\u0026lt;toml::value, std::vector\u0026lt;toml::error_info\u0026gt;\u0026gt; になります。\nresult 型は成功値または失敗値のどちらかを持つ型です。 Rustの Result やHaskellの Either に相当します。\n#include \u0026lt;toml.hpp\u0026gt; int main() { const auto parse_result = toml::try_parse(\u0026#34;input.toml\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } result 型がどちらの値を保持しているかは is_ok(), is_err() 関数を使って確認できます。 また、 unwrap(), unwrap_err() によって成功値、失敗値をそれぞれ取り出せます。 unwrap が失敗した場合は、 bad_result_access 例外が送出されます。 as_ok() と as_err() 関数を使用すると、失敗時には例外が送出されず、未定義動作となります。\ntry_parse は syntax_error や file_io_error を投げず、同じ toml::error_info を result の失敗型として返しますが、絶対に例外を投げないわけではありません。\n標準ライブラリ内部でエラーが発生した場合、例えばメモリ不足の際に vector の allocate が失敗した場合などには std::bad_alloc が送出されますが、 toml::try_parse はこれが送出された場合は catch せずに通します。 そのため、それらのような標準ライブラリの内部で発生する例外は送出される恐れがあります。\n文字列をパースする # toml::parse_str # toml::parse_str は、ファイル名ではなくパースする文字列そのものを受け取ります。\nまた、エラーメッセージのTOMLファイルの名前に相当する部分には、std::source_location 相当のコンパイラ拡張機能が使用できる場合、 parse_str を呼び出したC++ファイルの名前と行数が代わりに使用されます。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const toml::value input = toml::parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse_str # toml::try_parse_str は、 parse_str と同じくパースする文字列そのものを受け取り、 try_parse と同じくエラーの報告に toml::result を使用します。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto parse_result = toml::try_parse_str(\u0026#34;title = \\\u0026#34;parse_str\\\u0026#34;\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } バイト列をパースする # ファイルではなくバイト列をパースすることも可能です。\nUTF-8でエンコードされている必要があるため、unsigned charを使っています。\ntoml::parse(std::vector\u0026lt;unsigned char\u0026gt;) # 挙動は toml::parse と同一です。\nバイト列をパースする際は、 filename を要求します。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const toml::value input = toml::parse(bytes, \u0026#34;internal bytes\u0026#34;); std::cout \u0026lt;\u0026lt; input.at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; return 0; } toml::try_parse(std::vector\u0026lt;unsigned char\u0026gt;) # 挙動は toml::try_parse と同一です。\nバイト列をパースする際は、 filename を要求します。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::vector\u0026lt;unsigned char\u0026gt; bytes{/* ... */}; const auto parse_result = toml::try_parse(bytes, \u0026#34;internal bytes\u0026#34;); if(parse_result.is_ok()) { std::cout \u0026lt;\u0026lt; parse_result.unwrap().at(\u0026#34;title\u0026#34;).as_string() \u0026lt;\u0026lt; std::endl; } else { std::cerr \u0026lt;\u0026lt; parse_result.unwrap_err().at(0) \u0026lt;\u0026lt; std::endl; } return 0; } "},{"id":5,"href":"/toml11/ja/docs/features/value/","title":"getting values","section":"features","content":" 値を取り出す # ここでは、 toml::value が格納している値にアクセスする方法を説明します。\nメンバ関数を使って値にアクセスする # is_something と as_something # toml::value は is_boolean() や is_integer() などのメンバ関数を持っており、 これらを使うと持っている型を調べることができます。\nまた、 as_boolean(), as_integer() などのメンバ関数も持っており、 これらを使ってその型にアクセスすることができます。\n完全なリストは toml::value のリファレンス を参照してください。\ntoml::value v = /* ... */; if(v.is_integer()) { std::cout \u0026lt;\u0026lt; v.as_integer() \u0026lt;\u0026lt; std::endl; } 指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。\nその what() は以下のようなメッセージを含みます。\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # 型情報は enum class toml::value_t で識別できます。\ntype() メンバ関数は、現時点で格納している値の型情報を返します。\ntoml::value v = /* ... */; switch(v.type()) { case toml:value_t::empty : { /*...*/ break; } case toml:value_t::boolean : { /*...*/ break; } case toml:value_t::integer : { /*...*/ break; } case toml:value_t::floating : { /*...*/ break; } case toml:value_t::string : { /*...*/ break; } case toml:value_t::offset_datetime: { /*...*/ break; } case toml:value_t::local_datetime : { /*...*/ break; } case toml:value_t::local_date : { /*...*/ break; } case toml:value_t::local_time : { /*...*/ break; } case toml:value_t::array : { /*...*/ break; } case toml:value_t::table : { /*...*/ break; } default: {break;} } is(toml::value_t) メンバ関数は、渡された value_t と同じ型の値を格納している場合 true を、 それ以外の場合 false を返します。\ntoml::value v = /* ... */; if(v.is(toml::value_t::integer)) { std::cout \u0026lt;\u0026lt; v.as_integer() \u0026lt;\u0026lt; std::endl; } at, [], contains, size, push_back, emplace_back # 標準ライブラリコンテナが持つメンバ関数の一部は、 toml::value も提供しています。\nこれらは、内部で toml::value を対応する型に変換し、そのメンバ関数を呼び出します。\nat(std::size_t i), operator[](std::size_t i) # as_array().at(i), as_array()[i] と同等です。\ntoml::value はデフォルトで std::vector\u0026lt;toml::value\u0026gt; を array_type に使うので、 エラーが発生した際には at は std::out_of_range を送出し、operator[] は未定義動作となります。\ntoml::value v(toml::array{1,2,3}); std::cout \u0026lt;\u0026lt; v.at(1); 格納している型が array_type ではなかった場合、 type_error を送出します。\nat(std::string key), operator[](std::string key) # as_table().at(key), as_table()[key] と同等です。\ntoml::value はデフォルトで std::unordered_map\u0026lt;std::string, toml::value\u0026gt; を table_type に使うので、 対応する値が存在しない場合は at は std::out_of_range を送出し、 operator[] は新しく toml::value を構築してそれへの参照を返します。 そのため、operator[] に const 版はありません。\ntoml::value v(toml::table{}); v[\u0026#34;a\u0026#34;] = 42; 格納している型が table_type ではなかった場合、 type_error を送出します。\nsize() # 長さを返します。\narray_type または table_type の場合は要素数、 string_type の場合は文字数を返します。\n格納している型がどれでもなかった場合、 type_error を送出します。\npush_back(), emplace_back() # as_array().push_back(), as_array().emplace_back() と同一です。\n格納している型が array_type ではなかった場合、 type_error を送出します。\nコメントにアクセスする # toml11では、デフォルトでコメントがパースされ、対応する値に行ごとに保存されます。\n対応する値は、連続するコメント行の直後に来る値か、もしくはそのコメントと同じ行に描かれている値です。\n直前または直後に値がなければ、そのコメントはどこにも紐づけられず、無視されます。\n# input.toml # これはaに関するコメントです。 a = 42 b = 3.14 # これはbに関するコメントです。 # このコメントには対応する値がないため無視されます。 # これは1番目のcに関するコメントです。 # これは2番目のcに関するコメントです。 c = \u0026#34;foo\u0026#34; # これは最後のcに関するコメントです。 値に対応するコメントには、toml::value の comments() メンバ関数を使ってアクセスします。\ncomments() は std::vector\u0026lt;std::string\u0026gt; と同じメンバ関数を持つコンテナを返します。\nconst auto v = toml::parse(\u0026#34;input.toml\u0026#34;); const auto\u0026amp; a = v.at(\u0026#34;a\u0026#34;); const auto\u0026amp; b = v.at(\u0026#34;b\u0026#34;); const auto\u0026amp; c = v.at(\u0026#34;c\u0026#34;); assert(a.comments().size() == 1); assert(a.comments().at(0) == \u0026#34;# これはaに関するコメントです。\u0026#34;); assert(b.comments().size() == 1); assert(b.comments().at(0) == \u0026#34;# これはbに関するコメントです。\u0026#34;); assert(c.comments().size() == 3); assert(c.comments().at(0) == \u0026#34;# これは1番目のcに関するコメントです。\u0026#34;); assert(c.comments().at(1) == \u0026#34;# これは2番目のcに関するコメントです。\u0026#34;); assert(c.comments().at(2) == \u0026#34;# これは最後のcに関するコメントです。\u0026#34;); ファイル全体に対応するルートテーブルに関するコメントは、ファイルの先頭に書きます。\n# ルートテーブルに関するコメントです。 # これもルートテーブルに関するコメントです。 # これはaに関するコメントです。 a = 42 ただし、もしファイルの先頭のコメントの直後に値が来た場合、 そのコメントはその値に関するコメントと解釈され、ルートテーブルのコメントはなくなります。\n# これはaに関するコメントです。 # これもaに関するコメントです。 a = 42 インラインテーブル・ドットキーの取り扱い # インラインテーブルは単にテーブルで、C++コード上で他のテーブルと異なる点はありません。\na = {b = 42, c = \u0026#34;foo\u0026#34;} ドットキーも単にテーブルで、C++コード上で他のテーブルと異なる点はありません。\na.b = 42 a.c = \u0026#34;foo\u0026#34; これらは以下のファイルと全く同じ構造を持ちます。\n[a] b = 42 c = \u0026#34;foo\u0026#34; なので、どの記法でも以下の全く同一のコードで処理できます。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).as_integer() == 42); assert(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;c\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); ただし、フォーマット情報によって区別することは可能です。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); switch(input.at(\u0026#34;a\u0026#34;).as_table_fmt().fmt) { case toml::table_format::oneline: { std::cout \u0026lt;\u0026lt; \u0026#34;inline table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::multiline: { std::cout \u0026lt;\u0026lt; \u0026#34;normal table\u0026#34; \u0026lt;\u0026lt; std::endl; break; } case toml::table_format::dotted: { std::cout \u0026lt;\u0026lt; \u0026#34;dotted keys\u0026#34; \u0026lt;\u0026lt; std::endl; break; } } このフォーマット情報は後述するシリアライズの際も考慮されます。\n日付情報の取り扱い # local_date, local_time, local_datetime, そして offset_datetime は、 toml11では対応するメンバ変数を持つ専用の構造体にパースされます。\n使用する際は、直接値を取り出す他にも、後述する toml::get や toml::find を使用して、 std::chrono::system_clock::time_point や std::tm 等の型に変換することができます。\ntoml::get\u0026lt;T\u0026gt;を使って変換する # toml::get\u0026lt;T\u0026gt; は、 toml::value の持つ値を変換して取り出す関数です。 T に変換先に指定したい型を指定します。\nconst toml::value v = /*...*/; std::cout \u0026lt;\u0026lt; toml::get\u0026lt;int\u0026gt;(v) \u0026lt;\u0026lt; std::endl; 後述する toml::find\u0026lt;T\u0026gt; も、型変換の部分は同一の機能を持ちます。\n格納されている型のそれぞれについて、 変換ができない型が指定された場合、 toml::type_error が送出されます。\n単純な変換 # boolean_type # boolean_type から変換が可能なのは、 bool のみです。\ninteger_type # bool 以外で std::is_integral\u0026lt;T\u0026gt; が true になる型は、 integer_type から変換できます。\ntoml::value v(42); const auto u32 = toml::get\u0026lt;std::uint32_t\u0026gt;(v); const auto i16 = toml::get\u0026lt;short\u0026gt;(v); floating_type # std::is_floating_point\u0026lt;T\u0026gt; が true になる型は、floating_type から変換できます。\ntoml::value v(3.14); const auto f64 = toml::get\u0026lt;double\u0026gt;(v); const auto f32 = toml::get\u0026lt;float \u0026gt;(v); string_type # string_type からは std::string へ変換できます。 また、C++17以降では、std::string_view へも変換できます。\ntoml::value v(\u0026#34;foo\u0026#34;); const auto s = toml::get\u0026lt;std::string\u0026gt;(v); // C++17以降 const auto sv = toml::get\u0026lt;std::string_view\u0026gt;(v); datetime variants # local_date, local_datetime, offset_datetime は ある日付と時刻を指しているため、 std::chrono::system_clock::time_point への変換が可能です。\nただし、local_time は 日付の情報がないため、0時0分からの経過時刻として std::chrono::duration への 変換をサポートします。\nまた、 local_date と local_datetime は実行中のマシンのタイムゾーンを取得して変換を行います。\ndate = 2024-01-23 time = 12:30:00 l_dt = 2024-01-23T12:30:00 o_dt = 2024-01-23T12:30:00+09:00 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto date = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;date\u0026#34;)); const auto l_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;l_dt\u0026#34;)); const auto o_dt = toml::get\u0026lt;std::chrono::system_clock::time_point\u0026gt;(input.at(\u0026#34;o_dt\u0026#34;)); const auto time = toml::get\u0026lt;std::chrono::minutes\u0026gt;(input.at(\u0026#34;time\u0026#34;)); // 12 * 60 + 30 min 参照を取得できる条件 # toml::get\u0026lt;T\u0026gt; は、 T が toml::value が格納する型そのものだった場合、参照を返すことができます。\n逆に、変換が必要な場合( std::int64_t で格納されている整数を std::uint32_t で取り出そうとした場合)は、 変換後の型への参照を返すことは不可能です。\n変換が必要ない型の場合、返された参照を経由して値を書き換えることも可能です。\ntoml::value v(42); toml::get\u0026lt;toml::value::integer_type\u0026gt;(v) = 6 * 9; assert(v.as_integer() == 54); 配列をSTLコンテナに # 配列の要素型が全て同じ場合、要素型が T に変換可能であれば、 std::vector\u0026lt;T\u0026gt; に変換可能です。\na = [1, 2, 3, 4, 5] const auto a = toml::get\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); 他のSTLコンテナにも変換可能です。\nconst auto a1 = toml::get\u0026lt;std::deque\u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a2 = toml::get\u0026lt;std::list \u0026lt;int\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto a3 = toml::get\u0026lt;std::array\u0026lt;int, 5\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); std::array に変換する場合、要素数が一致している必要があります。 もし要素数が一致しなかった場合、 std::out_of_range が送出されます。\nSTL以外のコンテナであっても、デフォルトコンストラクタと push_back を持っている場合、 toml::get で変換が可能です。\nconst auto a = toml::get\u0026lt;boost::container::small_vector\u0026lt;int, 8\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); 配列を std::pair, std::tuple に # 配列の要素型が異なる場合、 std::pair や std::tuple に変換が可能です。\na = [true, 3.14] b = [42, 2.718, \u0026#34;foo\u0026#34;] const auto a = toml::get\u0026lt;std::pair\u0026lt;bool, double\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); const auto b = toml::get\u0026lt;std::tuple\u0026lt;int, double, std::string\u0026gt;\u0026gt;(input.at(\u0026#34;b\u0026#34;)); std::array の場合と同様に、配列の長さは std::pair, std::tuple の要素数と一致している必要があります。 もし要素数が一致しなかった場合、 std::out_of_range が送出されます。\nまた、各要素は対応する要素に変換できる必要があります。 変換できない場合、 toml::type_error が送出されます。\nネストされた配列の変換 # ネストされた配列は、ネストされたコンテナに変換可能です。\na = [ [1, 2, 3], [4, 5, 6] ] const auto a = toml::get\u0026lt;std::vector\u0026lt;std::vector\u0026lt;int\u0026gt;\u0026gt;\u0026gt;(input.at(\u0026#34;a\u0026#34;)); 型が異なる場合には、 std::pair/tuple が便利です。\na = [ [1, 2, 3], [\u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;] ] const auto a = toml::get\u0026lt; std::pair\u0026lt;std::vector\u0026lt;int\u0026gt;, std::vector\u0026lt;std::string\u0026gt;\u0026gt; \u0026gt;(input.at(\u0026#34;a\u0026#34;)); テーブルを std::map に変換 # テーブルに含まれる値の型が全て同じであれば、 std::map や std::unordered_map に変換が可能です。\nt = {a = 1, b = 2} const auto t = toml::get\u0026lt;std::map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); STL以外のコンテナであっても、デフォルトコンストラクタと emplace(key, mapped) を持っている場合、 toml::get で変換が可能です。\nconst auto t = toml::get\u0026lt;boost::container::flat_map\u0026lt;std::string, int\u0026gt;\u0026gt;(input.at(\u0026#34;t\u0026#34;)); 要素型の変換に失敗した場合は toml::type_error が送出されます。\ntoml::get_orを使って失敗時の値を指定する # toml::get は変換に失敗した際に toml::type_error 例外を送出します。\ntoml::get_or を使用することで、変換に失敗した際に例外ではなくデフォルト値を返せるようになります。\ntoml::get\u0026lt;T\u0026gt; とは異なり、 get_or は引数から変換先の型を推論するため、 \u0026lt;T\u0026gt; の指定は不要です。\nconst auto a = toml::get_or(input.at(\u0026#34;a\u0026#34;), 42); 変換可能な型は toml::get と同様です。\ntoml::value::xxx_typeを指定した場合は、参照を取り出すことも可能ですが、その場合は引数も参照である必要があります。\ntoml::value::integer_type a_default = 42; auto a\u0026amp; = toml::get_or(input.at(\u0026#34;a\u0026#34;), a_default); toml::find\u0026lt;T\u0026gt;を使って検索と変換を同時に行う # toml::find\u0026lt;T\u0026gt; は、テーブルを持つ toml::value から値を検索し、同時に toml::get と同じ型変換を行って取り出す関数です。\nconst auto a = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;); // const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;)); と同じ toml::find\u0026lt;T\u0026gt; は配列にも使用できます。\nconst auto a = input.at(\u0026#34;a\u0026#34;); const auto a2 = toml::find\u0026lt;int\u0026gt;(a, 2); // const auto a2 = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2)); と同じ 型変換の際にエラーが起きた場合、 toml::get と同じ toml::type_error を 送出します。 キーが見つからなかった場合またはインデックスが存在しない場合は、 std::out_of_range を送出します。\n型を指定しなかった場合、型変換を行わず toml::value を取り出します。\nconst auto a = toml::find(input, \u0026#34;a\u0026#34;); // const auto a = input.at(\u0026#34;a\u0026#34;); と同じ toml::find\u0026lt;T\u0026gt; は再帰的に値にアクセスることもできます。\na = {b = {c = 42}} const auto a_b_c = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, \u0026#34;b\u0026#34;, \u0026#34;c\u0026#34;); // const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(\u0026#34;b\u0026#34;).at(\u0026#34;c\u0026#34;)); と同じ このとき、キーとインデックスを混ぜることができます。\na = [ {b = 1}, {b = 2}, {b = 3} ] const auto a_2_b = toml::find\u0026lt;int\u0026gt;(input, \u0026#34;a\u0026#34;, 2, \u0026#34;b\u0026#34;); // const auto a = toml::get\u0026lt;int\u0026gt;(input.at(\u0026#34;a\u0026#34;).at(2).at(\u0026#34;c\u0026#34;)); と同じ TOMLはquoted keyという機能を持っています。\nこれは、 \u0026quot;\u0026quot; や '' を使うことで通常許可されない文字をキーに使えるというもので、 この中では . はテーブルを導入しません。\n\u0026#34;127.0.0.1\u0026#34; = \u0026#34;value\u0026#34; site.\u0026#34;google.com\u0026#34; = true このTOMLファイルは以下のようにして読みます。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); assert(input.at(\u0026#34;127.0.0.1\u0026#34;).as_string() == \u0026#34;value\u0026#34;); assert(input.at(\u0026#34;site\u0026#34;).at(\u0026#34;google.com\u0026#34;).as_boolean()); このような場合にも違和感なく対応するため、toml11ではキーに . が含まれていても 自動で分割はしません。\nテーブルの階層構造を陽に指定することが、適切な入力ファイルの構造化に資すると考えているからです。\n参考: toml.io キー\ntoml::find_orを使って失敗時の値を指定する # toml::find_or は、 toml::get_or と同様に、失敗時のデフォルト値を渡します。\nconst auto a = toml::find_or(input, \u0026#34;a\u0026#34;, 42); 型変換の失敗だけでなく、キーが見つからなかった場合もデフォルト値を返します。\nユーザー定義型との変換を定義する # toml::get や toml::find では、以下のどれかの方法を使うことで ユーザー定義型を使用することができます。\ntoml::from の定義 # toml11には toml::from という型があり、以下のように特殊化することでユーザー定義型からの 変換をサポートできます。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { static extlib::foo from_toml(const toml::value\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml 後述する型設定を変更した toml::value もサポートする場合、以下のようにしてください。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{ toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;) }; } }; } // toml この定義は、 TOML11_DEFINE_CONVERSION_NON_INTRUSIVE によって自動的に定義できます。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b) あるいは、リフレクションライブラリを使用することもできます。 example の boost-ext/reflect を使用したサンプルも参照してください。\nfrom_toml メンバ関数の定義 # from_toml メンバ関数を定義することによっても変換を定義することができます。\nこれを使用する場合、デフォルトコンストラクタが必要です。\nstruct bar { int a; std::string b; void from_toml(const toml::value\u0026amp; v) { this-\u0026gt;a = toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;); this-\u0026gt;b = toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;); return ; } }; 両方が定義されていた場合、 toml::from が優先されます。\ntoml::value を受け取るコンストラクタ # toml::value を受け取るコンストラクタがあれば、 toml::get による変換ができます。\nstruct baz { explicit baz(const toml::value\u0026amp; v) : a(toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;)), b(toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)) {} int a; std::string b; }; 両方が定義されていた場合、toml::from と from_toml が優先されます。\ntoml::visitで関数を適用する # toml::value が格納する型すべてに適用できる関数オブジェクトがあれば、 toml::visit によって型変換を経ずに直接その関数を呼ぶことができます。\nstruct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating toml::value を構築する # toml::value はパーサの内部だけでなく、ユーザーコードで構築することも可能です。\ntoml::value が格納する型と同じか変換可能な型を渡しての構築が可能です。\ntoml::value v1(true); toml::value v2(42); toml::value v3(3.14); 配列の場合、 toml::array を使うか、\ntoml::value v(toml::array{1, 2, 3}); 配列の場合、 std::vector などのコンテナを直接渡すことが可能です。\nconst std::vector\u0026lt;toml::value\u0026gt; a{1,2,3}; toml::value v(a); このコンテナには、 toml::get で変換可能なコンテナが使用できます。\nテーブルの場合も同様に、 toml::table を使うか、\ntoml::value v(toml::table{{\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3}}); std::map などのコンテナを直接渡します。\nconst std::map\u0026lt;std::string, toml::value\u0026gt; t{ {\u0026#34;foo\u0026#34;, 1}, {\u0026#34;bar\u0026#34;, 2}, {\u0026#34;baz\u0026#34;, 3} } toml::value v(t); コンストラクタには、 format_info と コメントを渡すことができます。\nコメントの型は std::vector\u0026lt;std::string\u0026gt; です。 各要素が一行分に相当します。\ntoml::integer_format_info fmt; fmt.fmt = toml::integer_format::hex; fmt.spacer = 4; toml::value v1(0xDEADBEEF, fmt); toml::value v2(0xC0FFEE, fmt, {\u0026#34;hex value!\u0026#34;}); toml::value に変換する # ユーザー定義型から toml::value を構築する際に、 toml::into や into_toml を 定義することで、その挙動をカスタマイズできます。\n特に、別のライブラリの型などを変換する際に toml::into が便利です。\ntoml::intoを定義する # toml::into を特殊化することで toml::value への変換が可能になります。\ntoml::value への変換が用意されていない外部ライブラリの型などに対して有効です。\ntoml::value が変換時に type_config を渡すため、basic_value の template 引数を受け取る必要があります。\nnamespace extlib { struct foo { int a; std::string b; }; } // extlib template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { return toml::basic_value\u0026lt;TC\u0026gt;(typename toml::basic_value\u0026lt;TC\u0026gt;::table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; into_toml メンバ関数を定義する # from_toml と同様、メンバ関数によっても変換を定義することができます。\ntoml::into が定義されていた場合、そちらが優先されます。\nstruct bar { int a; std::string b; toml::value into_toml() const { return toml::value(toml::table{{\u0026#34;a\u0026#34;, this-\u0026gt;a}, {\u0026#34;b\u0026#34;, this-\u0026gt;b}}); } }; "},{"id":6,"href":"/toml11/ja/docs/features/error_message/","title":"error message","section":"features","content":" エラーメッセージを出力する # toml11は toml::parse や toml::get\u0026lt;T\u0026gt;/find\u0026lt;T\u0026gt;, as_integer() などから ファイル内の位置情報を含んだエラーメッセージを出力します。\n例えば、パース時に整数の文法エラーを発見した場合、\n[error] bad integer: `_` must be surrounded by digits --\u0026gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 あるいは実際に格納されている型と異なる型を要求した場合\n[error] toml::value::as_string(): bad_cast to string --\u0026gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。\nこの機能を利用することで、TOMLの文法エラーだけでなく、 例えば正の値でなければならないところに負数が現れた場合などの アプリケーション固有のエラーメッセージを、TOMLファイル内の位置を指摘しながら ユーザーに伝えられるということです。\ntoml::value の位置情報からエラーメッセージを作成する # toml::value はそれがパースされた位置の情報を持っています。\nその情報は toml::source_location にまとめられ、toml::value::location() で取得できます。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); const toml::source_location src = a.location(); ファイルを toml::parse でパースした場合、そのTOMLファイル名と行数が保存されています。\ntoml::parse_str でパースした場合TOMLファイル名はありませんが、代わりに toml::parse_str を呼び出したC++ソースコードのファイル名と行数がTOMLファイル名として保存されています。 このページの最初の例は toml::parse_str から出力された例でした。 ファイル名の部分に注目してください。\n詳細は reference を参照してください。\ntoml::source_location または toml::value とそれに付随するエラーメッセージを toml::make_error_info に渡すことで、エラー情報を構築できます。 これをtoml::format_error に渡すと、エラーメッセージが std::string にフォーマットされます。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34; // 値の横に書くメッセージ ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } これは以下のようになります。\n[error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value 最後に補足をつけ足すこともできます。これはインデントされません。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34;, // 値の横に書くメッセージ \u0026#34;Hint: `a` means length of the data\u0026#34; // 補足 ); std::cerr \u0026lt;\u0026lt; toml::format_error(err) \u0026lt;\u0026lt; std::endl; } [error] positive integer is required --\u0026gt; input.toml | 1 | a = -123456 | ^^^^^^^-- but got negative value Hint: `a` means length of the data toml::value からファイル内の行を出力できるのは、 パースしたファイルが文字列としてメモリの中に残されているからです。\nパースした文字列はその全体が std::shared_ptr で toml::value に共有されています。 コピーしてもファイル文字列全体がコピーされることはありません。 また、そのファイルをパースして構築された toml::value が全てデストラクトされた時点で、 ファイル情報もメモリ上から解放されます。\nですので、アプリケーションで使用する際には、 toml::value を直接保存するのではなく 読み込み中に必要な値を全て取り出して、変換した値を保存した方がよいでしょう。\n文字列に色を付ける # エラーメッセージにはANSIエスケープコードを使って色を付けることができます。\nTOML11_COLORIZE_ERROR_MESSAGE をコンパイル時に定義していれば、 toml11の出力するエラーメッセージはデフォルトで色が付くようになります。\nそうでない場合は、 toml::color::enable() を呼び出すことにより、それ以降で出力される エラーメッセージには色が付くようになります。 逆に出力先がコンソールではないなどの理由で色をつけたくない場合は、 toml::color::disable() を呼び出してください。 その時点で色が付くようになっているかどうかは、 toml::color::should_color() の返り値で判定できます。\n詳細は reference を参照してください。\nまた、エラーのタイトルやエラーメッセージ、補足にはデフォルトで色が付きませんが、 toml::color にあるマニピュレータを使って色を付けることも可能です。\nstd::ostringstream oss; oss \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;but got negative value\u0026#34;; const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // Error title a, oss.str(), // Message next to the value \u0026#34;Hint: `a` means length of the data\u0026#34; // Supplementary message ); こちらも、詳細は reference を参照してください。\nエラーメッセージのprefixを[error]から変更する # エラーには種類があり、デフォルトの [error] ではよくない場合もあるでしょう。\ntoml::format_error では、 toml::error_info の前に std::string を取って、それを [error] の代わりに出力することができます。\n例えば、\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { const toml::error_info err = toml::make_error_info( \u0026#34;positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34; // 値の横に書くメッセージ ); std::ostringstream prefix; prefix \u0026lt;\u0026lt; toml::color::bold \u0026lt;\u0026lt; toml::color::yellow \u0026lt;\u0026lt; \u0026#34;[warn]\u0026#34;; std::cerr \u0026lt;\u0026lt; toml::format_error(prefix.str(), err) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer() } このようにすると、 [warn] から始まる警告を出力することができます。\n他にも、toml::format_error に直接 error_info の構成要素を渡すことで、 [error] なしのエラーメッセージを作成できます。\nconst toml::value\u0026amp; a = input.at(\u0026#34;a\u0026#34;); if(a.as_integer() \u0026lt; 0) { std::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[warn] positive integer is required\u0026#34;, // エラーのタイトル a, \u0026#34;but got negative value\u0026#34; // 値の横に書くメッセージ ) \u0026lt;\u0026lt; std::endl; return 0; } else { return a.as_integer() } 複数の toml::value を指すエラーメッセージを作成する # アプリケーションの設定では、先に読み込んだ値によって後に読み込んだ値が取れる範囲が変わることがあるでしょう。\nそのような場合には、エラーの原因となる別の値を同時に出力したいはずです。\ntoml::format_error と toml::make_error_info は、 toml::value とそれに対応するエラーメッセージ std::string のペアを任意個取ることができます。\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34; ) \u0026lt;\u0026lt; std::endl; こちらも末尾に補足を追加することができます。\nstd::cerr \u0026lt;\u0026lt; toml::format_error( \u0026#34;[error] invalid range\u0026#34;, a, \u0026#34;minimum value is defined here\u0026#34;, b, \u0026#34;maximum value is defined here\u0026#34;, c, \u0026#34;and it exceeds the range\u0026#34;, \u0026#34;Hint: all the value must be in the range, [a, b)\u0026#34; ) \u0026lt;\u0026lt; std::endl; toml::value または toml::source_location を渡した場合、必ずそれに関する エラーメッセージが続く必要があります。 そうしない場合、非常にわかりにくいコンパイルエラーになります。\n"},{"id":7,"href":"/toml11/ja/docs/features/serialize/","title":"serializing values","section":"features","content":" TOMLファイルを出力する # toml::format を使うと、 toml::value を文字列にすることができます。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。\nもし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。\n一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 例えば、 toml::array_format::array_of_tables は [[array.of.tables]] の形でフォーマットするので、 キーへのアクセスを要求します。\nキーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。\n他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 string_format::literal が指定された文字列が改行を含んでいる場合などです。\nフォーマットの指定方法は後述します。\nキーを渡して出力する # toml::format には std::string としてキーを渡すことが可能です。\nその場合、ルートテーブルの下にそのキーがあり、渡した値はそのキーに対応すると解釈されます。\nキーが複数段になる場合、 std::vector\u0026lt;std::string\u0026gt; を渡すことができます。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;cassert\u0026gt; int main() { const toml::value v(toml::table{ {\u0026#34;a\u0026#34;, 42}, {\u0026#34;b\u0026#34;, \u0026#34;foo\u0026#34;}, }); const std::string s = toml::format(\u0026#34;bar\u0026#34;, v); const toml::value u = toml::parse_str(s); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(u.at(\u0026#34;bar\u0026#34;).at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } フォーマットを指定する # toml::value のそれぞれの型には、対応するフォーマット情報型があります。\ntoml::value::integer_type には toml::integer_format_info が、 toml::value::table_type には toml::table_format_info があります。\nこれらは、パースした際に設定され、型が変わらない限り値を変更しても引き継がれます。\nまた、 as_integer_fmt() や as_table_fmt() といったメンバ関数によってアクセスすることができ、 直接編集することが可能です。\n以下ではいくつかの例を挙げて使い方を説明します。\nフォーマットへのアクセス方法は toml::valueのリファレンスを、 フォーマット情報クラスの完全なリストと詳細は formatのリファレンスを 参照してください。\n整数のフォーマットを指定する # 整数は、基数と幅、そして _ の位置を指定することができます。\nhex, oct, bin のとき、指定された幅に達するまでゼロで埋められます。 dec の場合は幅指定はスペースを追加しますが、これはパースされません。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value v(0x00C0\u0026#39;FFEE); v.as_integer_fmt().fmt = toml::integer_format::hex; v.as_integer_fmt().width = 8; v.as_integer_fmt().spacer = 4; const std::stirng s = toml::format(v); assert(s == \u0026#34;0x00C0_FFEE\u0026#34;); return 0; } 詳細は、reference を参照してください。\n配列を単一行・複数行にする # 配列には、 toml::array_format::oneline や toml::array_format::multiline を指定できます。\n# oneline a = [1, 2, 3, 4, 5] # multiline a = [ 1, 2, 3, 4, 5 ] multiline のときは、インデントを指定できます。 各要素は body_indent の分だけインデントされ、閉じ括弧 ] は closing_indent の分だけインデントされます。\n文字種は indent_type で指定され、 toml::indent_char::space または toml::indent_char::tab が選択できます。\nインデントに使用する文字種は統一してください。\n一つのファイル内でインデントに異なる文字種が指定された場合、結果は未規定になります。 何らかのインデントがされますが、全ての箇所で文字種やインデントの深さは不定となります。\nまた、 array の要素が全て table_type を持つ場合、 toml::array_format::array_of_tables が指定できます。\narray_of_tables を指定せずに multiline にした場合、テーブルはインラインテーブルになります。\n# multiline a = [ {foo = 42}, {bar = \u0026#34;hoge\u0026#34;}, ] # array_of_tables [[a]] foo = 42 [[a]] bar = \u0026#34;hoge\u0026#34; デフォルトでは、 toml::array_format::default_format が指定されます。 これは適したフォーマットを自動的に選択します。\n例えば、 default_format で全要素が table_type だった場合、 array_of_tables が選択されます。 また、十分短い配列は oneline に、長い配列またはネストされた配列などの複雑な配列は multiline になります。\n詳細は、reference を参照してください。\nテーブルをインラインテーブルにする # テーブルをインラインテーブルにする際は toml::table_format::oneline を指定します。 通常のテーブルにする際は、 toml::table_format::multiline を指定します。\noneline = {a = 42, b = \u0026#34;foo\u0026#34;} [multiline] a = 42 b = \u0026#34;foo\u0026#34; TOML v1.1.0ではインラインテーブル内での改行が許可されますが、その場合は toml::table_format::multiline_oneline とします。 これは、後述するTOMLバージョン指定で対応する機能フラグがtrueになっていない限り無視されます。\nmultiline_oneline = { a = 42, b = \u0026#34;foo\u0026#34; } 詳細は、reference を参照してください。\nTOML言語バージョンを指定して出力する # TOML v1.1.0で許可されたインラインテーブル内の改行や\\xエスケープシーケンスのように、 TOMLバージョンによって使用できない言語機能があります。\ntoml::format は最後の引数に toml::spec を取ることができます。\nこれにより、シリアライズ時に使用するTOMLのバージョンを指定することができます。\n特に、 toml::parse で toml::spec を使用して新機能を使用した場合は、 パースした値がそのバージョンでしか使えないフォーマット情報を持つ場合があるので、 toml::format にも同じ toml::spec を渡すことを忘れないようにしてください。\n#include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { const auto spec = toml::spec::v(1, 1, 0) const toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, spec); std::cout \u0026lt;\u0026lt; toml::format(v, spec); return 0; } "},{"id":8,"href":"/toml11/ja/docs/features/configure_types/","title":"configuring types","section":"features","content":" 型をカスタマイズする # toml::value は integer_type として std::int64_t を、 table_type として std::unordered_map\u0026lt;key_type, value_type\u0026gt; を使用します。\nしかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。\nそのため、 toml::value は template 引数を取って格納する型を変えられるように実装されています。\nstd::string が実際には std::basic_string\u0026lt;char, std::char_traits\u0026lt;char\u0026gt;, std::allocator\u0026lt;char\u0026gt;\u0026gt; の エイリアスであるように、 toml::value は実際には toml::basic_value\u0026lt;toml::type_config\u0026gt; のエイリアスです。\nここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。\ntype_config # type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; } toml::basic_value\u0026lt;TypeConfig\u0026gt; は、格納する boolean_type を TypeConfig::boolean_type、 格納する integer_type を TypeConfig::integer_type 、のようにして定義しています。\nまた、 array_type は TypeConfig::array_type\u0026lt;toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt; 、 table_type は TypeConfig::table_type\u0026lt;key_type, toml::basic_value\u0026lt;TypeConfig\u0026gt;\u0026gt; と 定義されます。\nこれらのメンバ型とメンバ関数を定義したクラスを toml::basic_value に 渡すことで、その toml::basic_value が持つ型を変更できます。\nparse_int と parse_float は、数値型を独自実装のものに変更した際にパース方法を提供するための関数です。 これらの関数には 0x などのprefixと桁区切りの _ が取り除かれた文字列、 例えば 123456 や DEADBEEF が渡されます。 base には 10, 16, 8, 2 のいずれかが渡されます。 これらを使って integer_type と floating_type をパース出来るような関数を渡してください。\nデフォルト実装として、toml::read_int と toml::read_float が提供されています。\nstatic result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } read_int は istream を使用し、16進と8進の場合は std::hex と std::oct を使用します。2進の場合は掛け算と足し算で実装されています。 これらをサポートしている型であれば、 read_int をそのまま使用できます。\nread_float は istream を使用します。 16進浮動小数点数は double と float の場合しかサポートされておらず、 それ以外の型のときに呼ばれると常にパースエラーを返す実装になっているので、 もし浮動小数点数型をこれら以外の型にし、かつ hexfloat を使用する場合は、 それを実装してください。 hexfloat を使用しないのであれば、実装する必要はありません。\nテーブル内の値の順序を維持する # デフォルトの toml::type_config の他に、 toml::ordered_type_config が提供されています。 これは、 table_type を ordered_map に変更したものです。\nこれを使用したものを toml::ordered_value 、その配列型とテーブル型のエイリアスを toml::ordered_array と toml::ordered_table と定義しています。\ntoml::parse(...) を toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(...) として呼び出すことで、 toml::ordered_value を使用することができます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::ordered_value input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;example.toml\u0026#34;); std::cout \u0026lt;\u0026lt; toml::format(input) \u0026lt;\u0026lt; std::endl; return 0; } コメントを保存しない # type_config は comment_type でコメントを保存するコンテナを定義しています。\nコメントに特に情報がなく、パースせずに捨ててしまっていい場合は、 comment_type に toml::discard_comments を指定してください。\nstruct wo_comment_config { using comment_type = toml::discard_comments; // XXX using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; 配列にstd::vector以外のコンテナを使用する # TOML配列の実装にvector以外のコンテナ(例:std::deque)を使用するには、 array_type を以下のように変更してください。\nまた、テーブル型のコンテナに unordered_map 以外のコンテナ(例:std::map)を使用するには、 table_type を以下のように変更してください。\nstruct deque_map_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::deque\u0026lt;T\u0026gt;; // XXX template\u0026lt;typename K, typename T\u0026gt; using table_type = std::map\u0026lt;K, T\u0026gt;; // XXX static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; 数値型に boost::multiprecision を使用する # boost::multiprecision::cpp_int と boost::multiprecision::cpp_bin_float_oct を使用することで、より幅の広い整数型とより精度の良い浮動小数点数型を使用することができます。\nこれらの型はストリーム演算子を実装しているため、デフォルト実装の read_int と read_float をそのまま使用できます。\nstruct large_num_config { using comment_type = toml::preserve_comments; using boolean_type = bool; using integer_type = boost::multiprecision::cpp_int; using floating_type = boost::multiprecision::cpp_bin_float_oct; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static toml::result\u0026lt;integer_type, toml::error_info\u0026gt; parse_int(const std::string\u0026amp; str, const toml::source_location src, const std::uint8_t base) { return toml::read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static toml::result\u0026lt;floating_type, toml::error_info\u0026gt; parse_float(const std::string\u0026amp; str, const toml::source_location src, const bool is_hex) { return toml::read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; "},{"id":9,"href":"/toml11/ja/docs/features/literal/","title":"toml literal","section":"features","content":" _tomlリテラル # \u0026quot;\u0026quot;_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = 42\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); return 0; } 改行を含む場合、生文字列リテラルが便利です。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(v.at(\u0026#34;b\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } 値が単体で書かれていた場合、その値が返されます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto a = \u0026#34;42\u0026#34;_toml; const auto b = \u0026#34;12:34:56\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 42); assert(v.at(\u0026#34;b\u0026#34;).as_local_time().hour == 12); assert(v.at(\u0026#34;b\u0026#34;).as_local_time().minute == 34); assert(v.at(\u0026#34;b\u0026#34;).as_local_time().second == 56); return 0; } TOMLは数値のみからなるキーを許可しています。 よって、[1]はテーブル名として合法です。\n[1]のようにテーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。\n配列として解釈させるには、trailing commaを使用してください。\n#include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto t = \u0026#34;[1]\u0026#34;_toml; // {1 = {}} const auto a = \u0026#34;[1,]\u0026#34;_toml; // [1,] assert(t.is_table()); assert(t.at(\u0026#34;1\u0026#34;).is_table()); assert(a.is_array()); assert(a.at(0).as_integer() == 1); return 0; } "},{"id":10,"href":"/toml11/ja/docs/features/toml_spec/","title":"toml spec","section":"features","content":" TOML言語バージョン # toml::spec によって、 toml::parse や toml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。\nTOMLのバージョンを指定する # toml::spec は toml::semantic_version から構築できます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } ですがこれは長いので、toml::spec::v()関数が用意されています。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } 特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。\nデフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。\nv4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。\nTOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。\n実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。\nそのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。\nバージョン指定でパースする # toml::parse のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。\nこれによって、使用するTOMLバージョンを変更できます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); return 0; } バージョン指定でシリアライズする # toml::format のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。\nこれによって、使用するTOMLバージョンを変更できます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::value v = toml::parse(\u0026#34;input.toml\u0026#34;, toml::spec::v(1, 1, 0)); std::cout \u0026lt;\u0026lt; toml::format(v, toml::spec::v(1, 1, 0)) \u0026lt;\u0026lt; std::endl; return 0; } もしフォーマット変数などによって指定されているフォーマットが渡された toml::spec では許可されていないものだった場合、指定は無視されて他のフォーマットにフォールバックされます。\nTOMLに追加された新機能を個別に指定する # TOMLのバージョンアップで追加された機能は複数あり、そのうちの一部だけを有効にすることが可能です。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec = toml::spec::v(1, 0, 0); // インラインテーブル内での改行を許可 spec.v1_1_0_allow_newlines_in_inline_tables = true; toml::value input = toml::parse(\u0026#34;input.toml\u0026#34;, spec); return 0; } 全てのフラグのリストは、 toml::spec を参照してください。\n"},{"id":11,"href":"/toml11/ja/docs/features/extension/","title":"extension","section":"features","content":" TOML言語拡張 # TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 v1.1.0に向けて議論が続いています。\nそこで議論された機能の中には、有用なケースが少ないと考えられたものや、 提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。\ntoml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また サポートされる予定もないことに注意してください。\nまた、これらの機能はデフォルトで使用されない設定になっており、 使用するためには機能フラグをそれぞれ true にしなければなりません。 非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。\nいくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は 本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。\nnull # TOMLファイル内で値としてnullを使えるようになります。\na = null b = [ 1, 2, 3, null, 5] これを使用するには、 toml::spec の ext_null_value を true にします。\nパースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 ただし、ファイル内の位置情報は設定されます。\nnull は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り \u0026quot;null\u0026quot; という文字列のキーとして解釈されます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(\u0026#34;a = null\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_empty()); assert(v.at(\u0026#34;a\u0026#34;).is(toml::value_t::empty)); return 0; } 浮動小数点数の16進数フォーマット # TOMLファイル内で浮動小数点数に16進数フォーマットを使用できるようになります。\na = 0x1.91eb851eb851fp+1 # 3.14 これを使用するには、 toml::spec の ext_hex_float を true にします。\nフォーマットは printf で %a/%A を指定した場合に準拠します。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 0x1.91eb851eb851fp+1\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_floating()); assert(v.at(\u0026#34;a\u0026#34;).as_floating() == 3.14); return 0; } 整数・浮動小数点数のsuffix # TOMLファイル内で数値の後ろにsuffixをつけられるようになります。 10進数表記の整数と浮動小数点数で使用できます。\n単位を表示するときなどに便利です。\na = 86_400_sec b = 3.1416_rad c = 10_μm ですが、これらはあくまで単なる suffix であり、単位換算は行われません。 単位換算が必要な場合は、ユーザーが suffix を参照して実装してください。\nこれを使用するには、 toml::spec の ext_num_suffix を true にします。\n数値と接尾辞の間は_で区切られている必要があります。\n数値部分との区別のため、suffixは数値で始まることはできません。\ndistance = 100_m # valid distance = 10_0m # invalid distance = 10_0_m # valid 接尾辞はstd::string suffixとしてフォーマット情報に保持されます。\n#include \u0026lt;toml.hpp\u0026gt; int main() { toml::spec spec; spec.ext_hex_float = true; const auto v = toml::parse_str(\u0026#34;a = 86_400_sec\u0026#34;, spec); assert(v.at(\u0026#34;a\u0026#34;).is_integer()); assert(v.at(\u0026#34;a\u0026#34;).as_integer() == 86400); assert(v.at(\u0026#34;a\u0026#34;).as_integer_fmt().suffix == \u0026#34;sec\u0026#34;); return 0; } "},{"id":12,"href":"/toml11/ja/docs/reference/color/","title":"color.hpp","section":"reference","content":" color.hpp # color.hppでは、エラーメッセージの色付けに関する関数が定義されます。\n色はANSIエスケープシーケンスによって指定されます。 ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。\nマクロ # TOML11_COLORIZE_ERROR_MESSAGE # コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 デフォルトでエラーメッセージに色が付きます。\n定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を 使用して指定する必要があります。\nTOML11_USE_THREAD_LOCAL_COLORIZATION # コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 toml::color::enableの設定がthread_localになります。 この場合、toml::color::enable()やtoml::color::disable()は、それを呼び出したスレッドでの設定しか変更しません。 つまり、新しいスレッドを起動した際にデフォルトと異なる設定にしたい場合は、再度設定が必要になります。 その代わり、toml::color::enable()やtoml::color::disable()はスレッドセーフになります。\nデフォルトでは設定はグローバルです。 グローバルの場合、一つのスレッドがtoml::color::enable()を実行した場合、すべてのスレッドで色が付きます。 ただし、あるスレッドがenable()またはdisable()を実行している間に別のスレッドがenable()、disable()、should_color()を実行した場合、その結果は未定義です。\n関数 # enable() # namespace toml { namespace color { void enable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行うよう設定します。\n例 # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行わないよう設定します。\n例 # #include \u0026lt;toml.hpp\u0026gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(\u0026#34;input.toml\u0026#34;); return 0; } should_color() # namespace toml { namespace color { bool should_color(); } // color } // toml 色付けを行う設定になっている場合trueが、そうでない場合falseが返されます。\n例 # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iomanip\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; \u0026#34;colorized? : \u0026#34; \u0026lt;\u0026lt; std::boolalpha \u0026lt;\u0026lt; toml::color::should_color() \u0026lt;\u0026lt; std::endl; return 0; } マニピュレータ # namespace toml { namespace color { std::ostream\u0026amp; reset (std::ostream\u0026amp;); std::ostream\u0026amp; bold (std::ostream\u0026amp;); std::ostream\u0026amp; grey (std::ostream\u0026amp;); std::ostream\u0026amp; gray (std::ostream\u0026amp;); std::ostream\u0026amp; red (std::ostream\u0026amp;); std::ostream\u0026amp; green (std::ostream\u0026amp;); std::ostream\u0026amp; yellow (std::ostream\u0026amp;); std::ostream\u0026amp; blue (std::ostream\u0026amp;); std::ostream\u0026amp; magenta(std::ostream\u0026amp;); std::ostream\u0026amp; cyan (std::ostream\u0026amp;); std::ostream\u0026amp; white (std::ostream\u0026amp;); } // color } // toml ANSIエスケープシーケンスによって、fgを色付けします。\n例 # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; int main() { std::cout \u0026lt;\u0026lt; toml::color::red \u0026lt;\u0026lt; \u0026#34;red!\u0026#34; \u0026lt;\u0026lt; std::endl; return 0; } 関連項目 # error_info.hpp "},{"id":13,"href":"/toml11/ja/docs/reference/comments/","title":"comments.hpp","section":"reference","content":" comments.hpp # color.hppでは、コメントを保持するクラスが提供されます。\ntoml::preserve_comments # preserve_commentsは、コメントを保持するコンテナです。\nstd::vector\u0026lt;std::string\u0026gt;が持つメンバ関数を全て持っています。\nコメントはstd::stringとして保持されます。 先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。\nnamespace toml { class preserve_comments; bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); } //toml メンバ型 # using container_type = std::vector\u0026lt;std::string\u0026gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; メンバ関数 # デフォルトコンストラクタ # preserve_comments() = default; 空のpreserve_commentsを構築します。\nコピー・ムーブコンストラクタ # preserve_comments(preserve_comments const\u0026amp;) = default; preserve_comments(preserve_comments \u0026amp;\u0026amp;) = default; preserve_commentsをコピー・ムーブ構築します。\nコンストラクタ(std::vector\u0026lt;std::string\u0026gt;) # explicit preserve_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit preserve_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); std::vector\u0026lt;std::string\u0026gt;の内容を持つpreserve_commentsを構築します。\nコンストラクタ(discard_comments) # explicit preserve_comments(const discard_comments\u0026amp;); 空のpreserve_commentsを構築します。\nコンストラクタ(Iterator) # template\u0026lt;typename InputIterator\u0026gt; preserve_comments(InputIterator first, InputIterator last); std::stringを指すInputIteratorが表す範囲からpreserve_commentsを構築します。\nコンストラクタ(std::initializer_list) # preserve_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); std::initializer_list\u0026lt;std::string\u0026gt;が表す範囲からpreserve_commentsを構築します。\nコンストラクタ(サイズ指定) # explicit preserve_comments(size_type n); preserve_comments(size_type n, const std::string\u0026amp; x); n個のコメントを持つpreserve_commentsを構築します。\nstd::stringを渡した場合、そのコメントをn個に複製します。\nデストラクタ # ~preserve_comments() = default; preserve_commentsを破棄します。\noperator=(preserve_comments) # preserve_comments\u0026amp; operator=(preserve_comments const\u0026amp;) = default; preserve_comments\u0026amp; operator=(preserve_comments \u0026amp;\u0026amp;) = default; preserve_commentsをコピー・ムーブ代入します。\noperator=(std::vector\u0026lt;std::string\u0026gt;) # preserve_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); preserve_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); std::vector\u0026lt;std::string\u0026gt;をコピー・ムーブ代入します。\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); std::vector\u0026lt;std::string\u0026gt;::assignと同等の効果を持ちます。\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); std::vector\u0026lt;std::string\u0026gt;::insertと同等の効果を持ちます。\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); std::vector\u0026lt;std::string\u0026gt;::insertと同等の効果を持ちます。\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); std::vector\u0026lt;std::string\u0026gt;::insertと同等の効果を持ちます。\nswap # void swap(preserve_comments\u0026amp; other); 他のpreserve_commentsと内容を交換します。\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); std::vector\u0026lt;std::string\u0026gt;::push_backと同等の効果を持ちます。\npop_back # void pop_back(); std::vector\u0026lt;std::string\u0026gt;::pop_backと同等の効果を持ちます。\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); std::vector\u0026lt;std::string\u0026gt;::emplace_backと同等の効果を持ちます。\nclear # void clear(); std::vector\u0026lt;std::string\u0026gt;::clearと同等の効果を持ちます。\nsize # size_type size() const noexcept; std::vector\u0026lt;std::string\u0026gt;::sizeと同等の効果を持ちます。\nmax_size # size_type max_size() const noexcept; std::vector\u0026lt;std::string\u0026gt;::max_sizeと同等の効果を持ちます。\ncapacity # size_type capacity() const noexcept; std::vector\u0026lt;std::string\u0026gt;::capacityと同等の効果を持ちます。\nempty # bool empty() const noexcept; std::vector\u0026lt;std::string\u0026gt;::emptyと同等の効果を持ちます。\nreserve # void reserve(size_type n); std::vector\u0026lt;std::string\u0026gt;::reserveと同等の効果を持ちます。\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); std::vector\u0026lt;std::string\u0026gt;::resizeと同等の効果を持ちます。\nshrink_to_fit # void shrink_to_fit(); std::vector\u0026lt;std::string\u0026gt;::shrink_to_fitと同等の効果を持ちます。\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; std::vector\u0026lt;std::string\u0026gt;::operator[]と同等の効果を持ちます。\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; std::vector\u0026lt;std::string\u0026gt;::atと同等の効果を持ちます。\nfront # reference front() noexcept; const_reference front() const noexcept; std::vector\u0026lt;std::string\u0026gt;::frontと同等の効果を持ちます。\nback # reference back() noexcept; const_reference back() const noexcept; std::vector\u0026lt;std::string\u0026gt;::backと同等の効果を持ちます。\ndata # pointer data() noexcept; const_pointer data() const noexcept; std::vector\u0026lt;std::string\u0026gt;::dataと同等の効果を持ちます。\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; std::vector\u0026lt;std::string\u0026gt;::begin/endと同等の効果を持ちます。\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; std::vector\u0026lt;std::string\u0026gt;::rbegin/rendと同等の効果を持ちます。\n非メンバ関数 # 比較演算子 # bool operator==(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator!=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026lt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt; (const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); bool operator\u0026gt;=(const preserve_comments\u0026amp;, const preserve_comments\u0026amp;); std::vector\u0026lt;std::string\u0026gt;と同様に比較を行います。\nswap # void swap(preserve_comments\u0026amp;, preserve_comments\u0026amp;); void swap(preserve_comments\u0026amp;, std::vector\u0026lt;std::string\u0026gt;\u0026amp;); void swap(std::vector\u0026lt;std::string\u0026gt;\u0026amp;, preserve_comments\u0026amp;); ストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const preserve_comments\u0026amp;); コメントとして出力します。\n先頭が#でない場合、#が補われます。\ntoml::discard_comments # discard_commentsは、コメントを破棄するコンテナです。\nstd::vector\u0026lt;std::string\u0026gt;が持つメンバ関数を全て持っていますが、内容を変更する関数を呼び出しても何も効果はなく、常に空になります。\nnamespace toml { class discard_comments; bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); } //toml メンバ型 # // container_type is not defined using size_type = std::size_t; using difference_type = std::ptrdiff_t; using value_type = std::string; using reference = std::string\u0026amp;; using const_reference = std::string const\u0026amp;; using pointer = std::string*; using const_pointer = std::string const*; using iterator = /* internal type: empty-iterator */ using const_iterator = /* internal type: empty-iterator */ using reverse_iterator = /* internal type: empty-iterator */ using const_reverse_iterator = /* internal type: empty-iterator */ デフォルトコンストラクタ # discard_comments() = default; 空のdiscard_commentsを構築します。\nコピー・ムーブコンストラクタ # discard_comments(discard_comments const\u0026amp;) = default; discard_comments(discard_comments \u0026amp;\u0026amp;) = default; discard_commentsをコピー・ムーブ構築します。\nコンストラクタ(std::vector\u0026lt;std::string\u0026gt;) # explicit discard_comments(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); explicit discard_comments(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(preserve_comments) # explicit discard_comments(const preserve_comments\u0026amp;); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(Iterator) # template\u0026lt;typename InputIterator\u0026gt; discard_comments(InputIterator first, InputIterator last); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(std::initializer_list) # discard_comments(std::initializer_list\u0026lt;std::string\u0026gt; x); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nコンストラクタ(サイズ指定) # explicit discard_comments(size_type n); discard_comments(size_type n, const std::string\u0026amp; x); 空のdiscard_commentsを構築します。引数の内容は無視されます。\nデストラクタ # ~discard_comments() = default; discard_commentsを破棄します。\noperator=(discard_comments) # discard_comments\u0026amp; operator=(discard_comments const\u0026amp;) = default; discard_comments\u0026amp; operator=(discard_comments \u0026amp;\u0026amp;) = default; discard_commentsをコピー・ムーブ代入します。\noperator=(std::vector\u0026lt;std::string\u0026gt;) # discard_comments\u0026amp; operator=(const std::vector\u0026lt;std::string\u0026gt;\u0026amp; c); discard_comments\u0026amp; operator=(std::vector\u0026lt;std::string\u0026gt;\u0026amp;\u0026amp; c); 何もしません。引数の内容は無視されます。\nassign # template\u0026lt;typename InputIterator\u0026gt; void assign(InputIterator first, InputIterator last); void assign(std::initializer_list\u0026lt;std::string\u0026gt; ini); void assign(size_type n, const std::string\u0026amp; val); 何もしません。引数の内容は無視されます。\ninsert # iterator insert(const_iterator p, const std::string\u0026amp; x); iterator insert(const_iterator p, std::string\u0026amp;\u0026amp; x); iterator insert(const_iterator p, size_type n, const std::string\u0026amp; x); template\u0026lt;typename InputIterator\u0026gt; iterator insert(const_iterator p, InputIterator first, InputIterator last); iterator insert(const_iterator p, std::initializer_list\u0026lt;std::string\u0026gt; ini); 何もしません。引数の内容は無視されます。\nemplace # template\u0026lt;typename ... Ts\u0026gt; iterator emplace(const_iterator p, Ts\u0026amp;\u0026amp; ... args); 何もしません。引数の内容は無視されます。\nerase # iterator erase(const_iterator pos); iterator erase(const_iterator first, const_iterator last); 何もしません。引数の内容は無視されます。\nswap # void swap(discard_comments\u0026amp; other); 他のdiscard_commentsと内容を交換します。\npush_back # void push_back(const std::string\u0026amp; v); void push_back(std::string\u0026amp;\u0026amp; v); 何もしません。引数の内容は無視されます。\npop_back # void pop_back(); 何もしません。引数の内容は無視されます。\nemplace_back # template\u0026lt;typename ... Ts\u0026gt; void emplace_back(Ts\u0026amp;\u0026amp; ... args); 何もしません。引数の内容は無視されます。\nclear # void clear(); 何もしません。引数の内容は無視されます。\nsize # size_type size() const noexcept; 常に0を返します。\nmax_size # size_type max_size() const noexcept; 常に0を返します。\ncapacity # size_type capacity() const noexcept; 常に0を返します。\nempty # bool empty() const noexcept; 常にtrueを返します。\nreserve # void reserve(size_type n); 何もしません。引数の内容は無視されます。\nresize # void resize(size_type n); void resize(size_type n, const std::string\u0026amp; c); 何もしません。引数の内容は無視されます。\nshrink_to_fit # void shrink_to_fit(); 何もしません。引数の内容は無視されます。\noperator[] # reference operator[](const size_type n) noexcept; const_reference operator[](const size_type n) const noexcept; 未定義動作です。\nat # reference at(const size_type n) ; const_reference at(const size_type n) const; std::out_of_rangeを送出します。\nfront # reference front() noexcept; const_reference front() const noexcept; 未定義動作です。\nback # reference back() noexcept; const_reference back() const noexcept; 未定義動作です。\ndata # pointer data() noexcept; const_pointer data() const noexcept; 常にnullptrを返します。\nbegin/end # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; 内部で定義されたempty-iteratorを返します。\nempty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。\nempty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。\nrbegin/rend # reverse_iterator rbegin() noexcept; reverse_iterator rend() noexcept; const_reverse_iterator rbegin() const noexcept; const_reverse_iterator rend() const noexcept; const_reverse_iterator crbegin() const noexcept; const_reverse_iterator crend() const noexcept; 内部で定義されたempty-iteratorを返します。\nempty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。\nempty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。\n非メンバ関数 # 比較演算子 # bool operator==(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator!=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026lt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt; (const discard_comments\u0026amp;, const discard_comments\u0026amp;); bool operator\u0026gt;=(const discard_comments\u0026amp;, const discard_comments\u0026amp;); discard_commentsは全て同じ値です。==には常にtrueを、!=には常にfalseを返します。\nswap # void swap(discard_comments\u0026amp;, discard_comments\u0026amp;); 二つのdiscard_commentsを交換します。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp;, const discard_comments\u0026amp;); 何も出力しません。\n関連項目 # value.hpp "},{"id":14,"href":"/toml11/ja/docs/reference/conversion/","title":"conversion.hpp","section":"reference","content":" conversion.hpp # toml::getやtoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。\nTOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) 例 # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) 関連項目 # from.hpp into.hpp "},{"id":15,"href":"/toml11/ja/docs/reference/datetime/","title":"datetime.hpp","section":"reference","content":" datetime.hpp # TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。\nenum class month_t # 月を指定するenum classです。\nstd::tmとの関係で、local_dateは1月を0としています。 混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。\nnamespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # 日付を保持する構造体です。\nyearは西暦を、monthはstd::tmとの対応のため1月を0として、dayは日付を保持します。\nnamespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm\u0026amp; t); explicit local_date(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); std::string to_string(const local_date\u0026amp; date); } メンバ変数 # year # std::int16_t year; 西暦です。オフセットはありません。2024年は2024です。\nmonth # std::uint8_t month; 月を表します。std::tmとの対応のため、1月は0, 2月は1と続きます。\n混乱を避けるため、構築の際はmonth_tを使用します。\nday # std::uint8_t day; 日付を表します。1日は1です。\nメンバ関数 # コンストラクタ # local_date() = default; デフォルト実装を使用します。\nデストラクタ # ~local_date() = default; デフォルト実装を使用します。\nコピー・ムーブコンストラクタ # local_date(local_date const\u0026amp;) = default; local_date(local_date\u0026amp;\u0026amp;) = default; デフォルト実装を使用します。\nコピー・ムーブ代入演算子 # local_date\u0026amp; operator=(local_date const\u0026amp;) = default; local_date\u0026amp; operator=(local_date\u0026amp;\u0026amp;) = default; デフォルト実装を使用します。\nコンストラクタ(int year, month_t month, int day) # local_date(int y, month_t m, int d); 指定した値からlocal_dateを構築します。\n境界チェックなどは行いません。\nコンストラクタ(std::tm) # local_date(const std::tm\u0026amp;); 指定した値からlocal_dateを構築します。\nコンストラクタ(std::chrono::system_clock::time_point) # local_date(const std::chrono::system_clock::time_point\u0026amp;); 指定した値からlocal_dateを構築します。\nタイムゾーンは実行環境でのものが選択されます。\nコンストラクタ(std::time_t) # local_date(const std::time_t); 指定した値からlocal_dateを構築します。\nタイムゾーンは実行環境でのものが選択されます。\noperator std::chrono::system_clock::time_point # operator std::chrono::system_clock::time_point() const; std::chrono::system_clock::time_pointに変換します。\nタイムゾーンは実行環境でのものが選択されます。\n時刻は0時00分とします。\noperator std::time_t # operator std::time_t() const; std::time_tに変換します。\nタイムゾーンは実行環境でのものが選択されます。\n時刻は0時00分とします。\n非メンバ関数 # 比較演算子 # bool operator==(const local_date\u0026amp;, const local_date\u0026amp;); bool operator!=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026lt;=(const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt; (const local_date\u0026amp;, const local_date\u0026amp;); bool operator\u0026gt;=(const local_date\u0026amp;, const local_date\u0026amp;); 日付の順序によって比較します。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_date\u0026amp; date); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const local_date\u0026amp; date); TOMLのデフォルトのフォーマットで文字列化します。\nlocal_time # namespace toml { struct local_time { std::uint8_t hour; // [0, 23] std::uint8_t minute; // [0, 59] std::uint8_t second; // [0, 60] std::uint16_t millisecond; // [0, 999] std::uint16_t microsecond; // [0, 999] std::uint16_t nanosecond; // [0, 999] local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); explicit local_time(const std::tm\u0026amp; t); template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); operator std::chrono::nanoseconds() const; local_time() = default; ~local_time() = default; local_time(local_time const\u0026amp;) = default; local_time(local_time\u0026amp;\u0026amp;) = default; local_time\u0026amp; operator=(local_time const\u0026amp;) = default; local_time\u0026amp; operator=(local_time\u0026amp;\u0026amp;) = default; }; bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); std::string to_string(const local_time\u0026amp; time); } メンバ変数 # hour # std::uint8_t hour; 時間を表します。0から23の値を取ります。\nminute # std::uint8_t minute; // [0, 59] 分を表します。0から59の値を取ります。\nsecond # std::uint8_t second; // [0, 60] 秒を表します。0から60の値を取ります。\nmillisecond # std::uint16_t millisecond; // [0, 999] ミリ秒を表します。0から999の値を取ります。\nmicrosecond # std::uint16_t microsecond; // [0, 999] マイクロ秒を表します。0から999の値を取ります。\nnanosecond # std::uint16_t nanosecond; // [0, 999] ナノ秒を表します。0から999の値を取ります。\nメンバ関数 # デフォルトコンストラクタ # local_time() = default; 全ての値を0で初期化します。\nコンストラクタ(h, m, s, ms = 0, us = 0, ns = 0) # local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0); 指定された時刻を使って構築します。\n境界チェックは行われません。\nコンストラクタ(std::tm) # explicit local_time(const std::tm\u0026amp; t); std::tmのtm_hour, tm_min, tm_secを使って構築します。\nサブセコンドは全て0で初期化されます。\nコンストラクタ(std::chrono::duration) # template\u0026lt;typename Rep, typename Period\u0026gt; explicit local_time(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; t); durationをその日の0時からの時間として構築します。\noperator std::chrono::nanoseconds # operator std::chrono::nanoseconds() const; std::chrono::nanosecondsへ変換します。\n非メンバ関数 # 比較演算子 # bool operator==(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator!=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026lt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt; (const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); bool operator\u0026gt;=(const local_time\u0026amp; lhs, const local_time\u0026amp; rhs); 時刻の値によって比較を行います。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_time\u0026amp; time); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const local_time\u0026amp; time); TOMLのデフォルトのフォーマットで文字列化します。\ntime_offset # namespace toml { struct time_offset { std::int8_t hour{0}; // [-12, 12] std::int8_t minute{0}; // [-59, 59] time_offset(int h, int m); operator std::chrono::minutes() const; time_offset() = default; ~time_offset() = default; time_offset(time_offset const\u0026amp;) = default; time_offset(time_offset\u0026amp;\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset const\u0026amp;) = default; time_offset\u0026amp; operator=(time_offset\u0026amp;\u0026amp;) = default; }; bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp; offset); std::string to_string(const time_offset\u0026amp; offset); } メンバ変数 # hour # std::int8_t hour{0}; // [-12, 12] 時間のオフセットです。-12から+12の範囲の値を取ります。\nminute # std::int8_t minute{0}; // [-59, 59] 分のオフセットです。-59から+59の範囲の値を取ります。\nメンバ関数 # コンストラクタ # time_offset(int h, int m); 時間と分を取って構築します。\n境界チェックは行いません。\noperator std::chrono::minutes # operator std::chrono::minutes() const; std::chrono::minutesへの変換を行います。\n非メンバ関数 # 比較演算子 # bool operator==(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator!=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026lt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt; (const time_offset\u0026amp;, const time_offset\u0026amp;); bool operator\u0026gt;=(const time_offset\u0026amp;, const time_offset\u0026amp;); 時刻の長さで比較します。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const time_offset\u0026amp;); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const time_offset\u0026amp;); TOMLのデフォルトのフォーマットで文字列化します。\nlocal_datetime # namespace toml { struct local_datetime { local_date date; local_time time; local_datetime(local_date d, local_time t); explicit local_datetime(const std::tm\u0026amp; t); explicit local_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit local_datetime(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; local_datetime() = default; ~local_datetime() = default; local_datetime(local_datetime const\u0026amp;) = default; local_datetime(local_datetime\u0026amp;\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime const\u0026amp;) = default; local_datetime\u0026amp; operator=(local_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp; dt); std::string to_string(const local_datetime\u0026amp; dt); } メンバ変数 # local_date date # local_date date; 日付部分のデータを保持します。\nlocal_time time # local_time time; 時刻部分のデータを保持します。\nメンバ関数 # デフォルトコンストラクタ # date, timeの双方をデフォルト構築します。\nコンストラクタ(local_date, local_time) # 指定されたdateとtimeで構築します。\nコンストラクタ(std::tm) # std::tmから構築します。\nタイムゾーンは実行環境でのものが選択されます。\nコンストラクタ(std::chrono::system_clock::time_point) # std::chrono::system_clock::time_pointから構築します。\nタイムゾーンは実行環境でのものが選択されます。\nコンストラクタ(std::time_t) # std::time_tから構築します。\nタイムゾーンは実行環境でのものが選択されます。\noperator std::chrono::system_clock::time_point # std::chrono::system_clock::time_pointへ変換します。\noperator std::time_t # std::time_tへ変換します。\n非メンバ関数 # 比較演算子 # bool operator==(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator!=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026lt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt; (const local_datetime\u0026amp;, const local_datetime\u0026amp;); bool operator\u0026gt;=(const local_datetime\u0026amp;, const local_datetime\u0026amp;); 日付順で比較します。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const local_datetime\u0026amp;); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const local_datetime\u0026amp;); TOMLのデフォルトのフォーマットで文字列化します。\noffset_datetime # namespace toml { struct offset_datetime { local_date date; local_time time; time_offset offset; offset_datetime(local_date d, local_time t, time_offset o); offset_datetime(const local_datetime\u0026amp; dt, time_offset o); explicit offset_datetime(const local_datetime\u0026amp; ld); explicit offset_datetime(const std::chrono::system_clock::time_point\u0026amp; tp); explicit offset_datetime(const std::time_t\u0026amp; t); explicit offset_datetime(const std::tm\u0026amp; t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; offset_datetime() = default; ~offset_datetime() = default; offset_datetime(offset_datetime const\u0026amp;) = default; offset_datetime(offset_datetime\u0026amp;\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime const\u0026amp;) = default; offset_datetime\u0026amp; operator=(offset_datetime\u0026amp;\u0026amp;) = default; }; bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp; dt); std::string to_string(const offset_datetime\u0026amp; dt); } メンバ変数 # date # local_date date; 日付部分のデータを保持します。\ntime # local_time time; 時刻部分のデータを保持します。\noffset # time_offset offset; オフセット部分のデータを保持します。\nメンバ関数 # デフォルトコンストラクタ # date, time, offsetを全てデフォルト構築します。\nコンストラクタ(local_date, local_time, time_offset) # 指定されたdate, time, offsetで構築します。\nコンストラクタ(local_datetime, time_offset) # local_datetimeとoffsetから構築します。\nコンストラクタ(std::tm) # std::tmから構築します。\nタイムゾーンはUTC(00:00)になります。\nコンストラクタ(std::chrono::system_clock::time_point) # std::chrono::system_clock::time_pointから構築します。\nタイムゾーンはUTC(00:00)になります。\nコンストラクタ(std::time_t) # std::time_tから構築します。\nタイムゾーンはUTC(00:00)になります。\noperator std::chrono::system_clock::time_point # std::chrono::system_clock::time_pointへ変換します。\nタイムゾーンはUTC(00:00)になります。\noperator std::time_t # std::time_tへ変換します。\nタイムゾーンはUTC(00:00)になります。\n非メンバ関数 # 比較演算子 # bool operator==(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator!=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026lt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt; (const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); bool operator\u0026gt;=(const offset_datetime\u0026amp;, const offset_datetime\u0026amp;); 日付順で比較します。\n同じ日付の場合、タイムゾーン順で比較されます。\nストリーム出力演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const offset_datetime\u0026amp;); TOMLのデフォルトのフォーマットで出力を行います。\nto_string # std::string to_string(const offset_datetime\u0026amp;); TOMLのデフォルトのフォーマットで文字列化します。\n"},{"id":16,"href":"/toml11/ja/docs/reference/error_info/","title":"error_info.hpp","section":"reference","content":" error_info.hpp # error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。\ntoml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = \u0026#34;\u0026#34;); error_info(std::string t, std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; l, std::string s = \u0026#34;\u0026#34;); std::string const\u0026amp; title() const noexcept; std::string \u0026amp; title() noexcept; std::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; const\u0026amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const\u0026amp; suffix() const noexcept; std::string \u0026amp; suffix() noexcept; }; template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); } メンバ関数 # コンストラクタ(title, loc, msg, suffix) # 指定されたタイトル、位置情報、メッセージ、suffixからerror_infoを構築します。\nsuffixはデフォルトで空です。\nコンストラクタ(title, [{loc, msg}, ...], suffix) # 指定されたタイトル、位置情報とメッセージの配列、そしてsuffixからerror_infoを構築します。\nsuffixはデフォルトで空です。\nメンバ関数 # std::string title() # エラーメッセージのタイトルです。\nstd::vector\u0026lt;std::pair\u0026lt;source_location, std::string\u0026gt;\u0026gt; locations() # エラーの発生した位置とそれに関するメッセージです。\n複数指定可能です。\nstd::string suffix() # 最後に表示するメッセージです。ヒントや補足を表示します。\n非メンバ関数 # make_error_info # template\u0026lt;typename ... Ts\u0026gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); 新しくerror_infoを構築します。\nsource_locationまたはbasic_valueの後には、それに関するmsgが続かなければなりません。\nvalue.hpp では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。\n末尾にはsuffixを渡すことが可能です。\nformat_error # error_info を以下のようにフォーマットします。\n{title} --\u0026gt; {locations().at(0).first.file_name()} | 1 | {locations().at(0).first.line()} | ^-- {locations().at(0).second} | 2 | {locations().at(1).first.line()} | ^-- {locations().at(1).second} {suffix} 二つの source_location のファイル名が異なる場合は、ファイル名が再度表示されます。\nstd::string format_error(const std::string\u0026amp; errkind, const error_info\u0026amp; err); std::string format_error(const error_info\u0026amp; err); error_infoをフォーマットします。\nerrkindが与えられなかった場合、赤色太字の[error]がtitleの前につけ足されます。\nerrkindが与えられた場合(空文字列の場合も含みます)、それが[error]の代わりに表示されます。\nnamespace toml { template\u0026lt;typename ... Ts\u0026gt; std::string format_error(std::string title, source_location loc, std::string msg, Ts\u0026amp;\u0026amp; ... tail); } // toml make_error_info を使って作成した error_info を format_error でフォーマットした文字列を返します。\nvalue.hpp では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const error_info\u0026amp; e); format_error(e)を呼び出し、それを出力します。\n関連項目 # color.hpp parser.hpp source_location.hpp "},{"id":17,"href":"/toml11/ja/docs/reference/exception/","title":"exception.hpp","section":"reference","content":" exception.hpp # toml::exception # toml11で定義される例外型の基底クラスです。\nnamespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} }; } // toml メンバ関数 # デストラクタ # virtual ~exception() noexcept override = default; 派生する際に上書きします。\nwhat # virtual const char* what() const noexcept override {return \u0026#34;\u0026#34;;} エラーメッセージを返します。派生する際に上書きします。\n"},{"id":18,"href":"/toml11/ja/docs/reference/find/","title":"find.hpp","section":"reference","content":" find.hpp # toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。\ntoml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 厳密には全て toml::basic_value\u0026lt;TC\u0026gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::find # 概要 # toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。\ntemplate\u0026lt;typename T, typename TC, typename ... Keys\u0026gt; T find(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, Keys ... keys); サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。\nT が指定されなかった場合、 toml::value が返されます。\nキーは、 toml::value::key_type または std::size_t です。 複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。\n再帰的な検索に関しての注意 # TOMLには通常の bare key の他に、 \u0026quot; や ' で囲まれた quoted key というものがあります。 quoted key を使うと、 \u0026quot;foo.bar\u0026quot; = \u0026quot;baz\u0026quot; というようなキーを書くことができ、この場合はサブテーブルは構築されず、キーは foo.barとなります。 このようなパターンに対応するため、toml11ではキーの中に.が含まれていても分割は行わず、そのままの文字列で検索を行います。\n以下のTOMLファイルを考えます。\n[foo] [foo.bar] baz = \u0026#34;hoge\u0026#34; [\u0026#34;foo.bar\u0026#34;] baz = \u0026#34;fuga\u0026#34; これに対応するtoml::findの書き方は以下の通りです。\nconst auto input = toml::parse(\u0026#34;input.toml\u0026#34;); const auto baz1 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo\u0026#34;, \u0026#34;bar\u0026#34;, \u0026#34;baz\u0026#34;); // hoge const auto baz2 = toml::find\u0026lt;std::string\u0026gt;(input, \u0026#34;foo.bar\u0026#34;, \u0026#34;baz\u0026#34;); // fuga 参考:toml.io/ja/v1.0.0#キー\ntoml::find(value, key) # value を toml::table として key を検索したあと、 toml::get で変換を行います。\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) と同等 */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); Tが指定されない場合は、変換を行わずtoml::valueを返します。\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find( basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; ky); 例外 # toml::value が table を保持していなかった場合、 toml::type_error が送出されます。\n格納している table が指定された要素を持っていなかった場合、 std::out_of_range が送出されます。\n指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 toml::type_error が送出されます。\ntoml::find(value, index) # value を toml::array として index 番目にアクセスし、 toml::get で変換を行います。\ntemplate\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) と同等 */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t index); template\u0026lt;typename T, typename TC\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t index); Tが指定されない場合は、変換を行わずtoml::valueを返します。\ntemplate\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find(basic_value\u0026lt;TC\u0026gt; const\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const std::size_t ky); template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; find(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const std::size_t ky); 例外 # toml::value が array を保持していなかった場合、 toml::type_error が送出されます。\n格納している array が指定された数の要素を持っていなかった場合、std::out_of_rangeが送出されます。\n指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 toml::type_error が送出されます。\ntoml::find(value, keys...) # template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* toml::get\u0026lt;T\u0026gt;(const value\u0026amp;) と同等 */ find( const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); template\u0026lt;typename T, typename TC, typename K1, typename K2, typename ... Ks\u0026gt; /* toml::get\u0026lt;T\u0026gt;(value\u0026amp;\u0026amp;) と同等 */ find( basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, const Ks\u0026amp; ... ks); 再帰的にtoml::findが呼び出されます。\n失敗する条件とその際に送出される例外は toml::find と同じです。\ntoml::find_or(value, key, fallback) # template\u0026lt;typename T, typename TC, typename Key\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const Key\u0026amp; key, T\u0026amp;\u0026amp; opt); find_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。\nこのデフォルト値は受け取る型Tと同じ型でなければなりません。 よって、 toml::find\u0026lt;T\u0026gt; とは違って、 find_or では T を指定せずとも推論されます。\nfind_or\u0026lt;T\u0026gt;のように T を指定することもできますが、その場合は常に新規な値が返されます。 参照を取得したい場合は、 T を指定しないでください。\nTがbasic_valueである場合 # template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt;\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept template\u0026lt;typename TC, typename K\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) noexcept 対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。\n値が見つからなかった場合、デフォルト値を返します。\nTがtoml::value::{some_type}である場合 # template\u0026lt;typename T, typename TC, typename K\u0026gt; T\u0026amp; find_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC, typename K\u0026gt; T const\u0026amp; find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, const T\u0026amp; opt) noexcept 対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。\n値が見つからなかった場合、あるいは異なる型が格納されていた場合、デフォルト値を返します。\nTがconst char*である場合 # template\u0026lt;typename TC, typename K\u0026gt; std::string find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; k, const char* opt) 対応する値を検索し、 std::string として返します。\n失敗時に const char* から std::string を構築するため、参照を返すことはできません。\nTがその他の型である場合 # template\u0026lt;typename T, typename TC, typename K\u0026gt; T find_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const K\u0026amp; key, T opt) 対応する値を検索し、 T に変換して返します。\n変換を行うため、参照を返すことはできません。\n複数のキーが与えられた場合 # template\u0026lt;typename Value, typename K1, typename K2, typename K3, typename ... Ks\u0026gt; auto find_or(Value\u0026amp;\u0026amp; v, const K1\u0026amp; k1, const K2\u0026amp; k2, K3\u0026amp;\u0026amp; k3, Ks\u0026amp;\u0026amp; ... keys) noexcept -\u0026gt; decltype(find_or(v, k2, std::forward\u0026lt;K3\u0026gt;(k3), std::forward\u0026lt;Ks\u0026gt;(keys)...)) キーの列の最後の要素がデフォルト値であると解釈して、再帰的にfind_orを適用します。\nT の推論結果が toml::value または toml::value::some_type になる場合、参照を返すことができます。\nT を明示的に指定した場合、常に変換を行います。\n関連項目 # get.hpp value.hpp "},{"id":19,"href":"/toml11/ja/docs/reference/format/","title":"format.hpp","section":"reference","content":" format.hpp # toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。\nindent_char # インデント情報を表す列挙体です。\nenum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const indent_char\u0026amp; c); std::string to_string(const indent_char); noneを選んだ場合、super tableでの値によらず、インデントは使用されません。\nシリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。\nboolean_format_info # booleanのフォーマット情報です。\nstruct boolean_format_info {}; bool operator==(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; bool operator!=(const boolean_format_info\u0026amp;, const boolean_format_info\u0026amp;) noexcept; booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。\ninteger_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const integer_format f); std::string to_string(const integer_format); integerの基数を指定します。\ninteger_format_info # struct integer_format_info { integer_format fmt = integer_format::dec; bool uppercase = true; // use uppercase letters std::size_t width = 0; // minimal width (may exceed) std::size_t spacer = 0; // position of `_` (if 0, no spacer) std::string suffix = \u0026#34;\u0026#34;; // _suffix (library extension) }; bool operator==(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; bool operator!=(const integer_format_info\u0026amp;, const integer_format_info\u0026amp;) noexcept; メンバ変数 # integer_format fmt # 基数を指定します。\nbool uppercase # 16進数表記で大文字を使用します。\nstd::size_t width # 最小の幅を指定します。値によってはこの幅を超えることがあります。\nフォーマットした値がこの幅よりも小さい場合、integer_format::decの場合は効果はありませんが、それ以外の場合は先頭にリーディング0が追加されます。\nstd::size_t spacer # アンダースコア_を追加する幅を指定します。\n3の場合1_234_567のように、4の場合0xdead_beefのようにフォーマットされます。\n0の場合、アンダースコアは挿入されません。\n不規則な幅を指定することはできません。\nstd::string suffix # toml11拡張のspec::ext_num_suffixをtrueにしている場合、そのsuffixがここに保存されます。\n参考:spec.hpp\nfloating_format # enum class floating_format : std::uint8_t { defaultfloat = 0, fixed = 1, // does not include exponential part scientific = 2, // always include exponential part hex = 3 // hexfloat extension }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const floating_format f); std::string to_string(const floating_format); floatingのフォーマット形式を指定します。 それぞれ、std::defaultfloat, std::fixed, std::scientific, std::hexfloatに対応します。\nhexfloatは、toml::spec::ext_hex_floatがtrueの場合のみ使用可能です。\n参考:spec.hpp\nfloating_format_info # struct floating_format_info { floating_format fmt = floating_format::defaultfloat; std::size_t prec = 0; // precision (if 0, use the default) std::string suffix = \u0026#34;\u0026#34;; // 1.0e+2_suffix (library extension) }; bool operator==(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; bool operator!=(const floating_format_info\u0026amp;, const floating_format_info\u0026amp;) noexcept; メンバ変数 # floating_format fmt # フォーマット形式を指定します。\nstd::size_t prec # 小数点以下の精度を指定します。\nstd::string suffix # toml11拡張のspec::ext_num_suffixをtrueにしている場合、そのsuffixがここに保存されます。\n参考:spec.hpp\nstring_format # enum class string_format : std::uint8_t { basic = 0, literal = 1, multiline_basic = 2, multiline_literal = 3 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const string_format f); std::string to_string(const string_format); 文字列のフォーマット形式を指定します。\nstring_format_info # struct string_format_info { string_format fmt = string_format::basic; bool start_with_newline = false; }; bool operator==(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; bool operator!=(const string_format_info\u0026amp;, const string_format_info\u0026amp;) noexcept; メンバ変数 # string_format fmt # 文字列のフォーマット情報を指定します。\nbool start_with_newline # multiline_basicまたはmultiline_literalの場合、最初の\u0026quot;\u0026quot;\u0026quot;や'''の後に改行を入れるかどうかを指定します。\ndatetime_delimiter_kind # enum class datetime_delimiter_kind : std::uint8_t { upper_T = 0, lower_t = 1, space = 2, }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const datetime_delimiter_kind d); std::string to_string(const datetime_delimiter_kind); datetimeで日付と時刻の間のデリミタにどの文字を使うかを指定します。\nT, t, が使用可能です。\noffset_datetime_format_info # struct offset_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; bool operator!=(const offset_datetime_format_info\u0026amp;, const offset_datetime_format_info\u0026amp;) noexcept; メンバ変数 # datetime_delimiter_kind delimiter # 使用するデリミタを指定します。\nbool has_seconds # 秒数を省略するかどうかを指定します。\nstd::size_t subsecond_precision # 秒以下の精度を何桁出力するかを指定します。\nlocal_datetime_format_info # struct local_datetime_format_info { datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T; bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; bool operator!=(const local_datetime_format_info\u0026amp;, const local_datetime_format_info\u0026amp;) noexcept; メンバ変数 # datetime_delimiter_kind delimiter # 使用するデリミタを指定します。\nbool has_seconds # 秒数を省略するかどうかを指定します。\nstd::size_t subsecond_precision # 秒以下の精度を何桁出力するかを指定します。\nlocal_date_format_info # struct local_date_format_info { // nothing, for now }; bool operator==(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; bool operator!=(const local_date_format_info\u0026amp;, const local_date_format_info\u0026amp;) noexcept; local_datetimeにはフォーマット指定するパラメータはありません。\nlocal_time_format_info # struct local_time_format_info { bool has_seconds = true; std::size_t subsecond_precision = 6; // [us] }; bool operator==(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; bool operator!=(const local_time_format_info\u0026amp;, const local_time_format_info\u0026amp;) noexcept; メンバ変数 # bool has_seconds # 秒数を省略するかどうかを指定します。\nstd::size_t subsecond_precision # 秒以下の精度を何桁出力するかを指定します。\narray_format # enum class array_format : std::uint8_t { default_format = 0, oneline = 1, multiline = 2, array_of_tables = 3 // [[format.in.this.way]] }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const array_format f); std::string to_string(const array_format); default_format 適したフォーマットを自動的に選択します。ある程度長い配列は複数行になります。 oneline 全ての要素を一行でフォーマットします。 multiline 一行ごとに一つの要素を出力します。 array_of_tables [[array.of.tables]]の形式でフォーマットします。table以外の要素を含むことはできません。 array_format_info # struct array_format_info { array_format fmt = array_format::default_format; indent_char indent_type = indent_char::space; std::int32_t body_indent = 4; // indent in case of multiline std::int32_t closing_indent = 0; // indent of `]` }; bool operator==(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; bool operator!=(const array_format_info\u0026amp;, const array_format_info\u0026amp;) noexcept; メンバ変数 # array_format fmt # フォーマット形式を指定します。\nindent_char indent_type # インデントに使用する文字の種類を選択します。\nstd::int32_t body_indent # array_format::multilineの場合、要素の前に出力するインデントの文字数を指定します。\nstd::int32_t closing_indent # array_format::multilineの場合、閉じ括弧]の前に出力するインデントの文字数を指定します。\ntable_format # enum class table_format : std::uint8_t { multiline = 0, // [foo] \\n bar = \u0026#34;baz\u0026#34; oneline = 1, // foo = {bar = \u0026#34;baz\u0026#34;} dotted = 2, // foo.bar = \u0026#34;baz\u0026#34; multiline_oneline = 3, // foo = { \\n bar = \u0026#34;baz\u0026#34; \\n } implicit = 4 // [x] defined by [x.y.z]. skip in serializer. }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const table_format f); std::string to_string(const table_format); multiline 複数行の通常のテーブルとしてフォーマットします。 oneline インラインテーブルとしてフォーマットします。 dotted a.b.c = \u0026quot;d\u0026quot;の形式でフォーマットします。 multiline_oneline 改行を含むインラインテーブルとしてフォーマットします。TOML v1.1.0以降で使用可能です。 参考:spec.hpp implicit [x.y.z.w]だけが定義されている際の[x], [x.y], [x.y.z]のように、暗黙定義としてスキップします。 TOMLの文法上、dottedはサブテーブルを持つことができます。\n[fruit] apple.color = \u0026#34;red\u0026#34; apple.taste.sweet = true # [fruit.apple] # INVALID # [fruit.apple.taste] # INVALID [fruit.apple.texture] # you can add sub-tables smooth = true toml11は現時点ではこのフォーマットに対応していません。 dottedテーブルの下にあるテーブルは全てdottedになり、テーブルは強制的にインラインテーブルになります。\ntable_format_info # struct table_format_info { table_format fmt = table_format::multiline; indent_char indent_type = indent_char::space; std::int32_t body_indent = 0; // indent of values std::int32_t name_indent = 0; // indent of [table] std::int32_t closing_indent = 0; // in case of {inline-table} }; bool operator==(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; bool operator!=(const table_format_info\u0026amp;, const table_format_info\u0026amp;) noexcept; メンバ変数 # table_format fmt # フォーマット方法を指定します。\nindent_char indent_type # インデントに使用する文字を指定します。\nstd::int32_t body_indent # キーの前に出力するインデントの幅を指定します。\nスーパーテーブルのインデント幅は加算されません。\nstd::int32_t name_indent # [table]形式のキーのインデントを指定します。\nスーパーテーブルのインデント幅は加算されません。\nstd::int32_t closing_indent # multiline_onelineの場合に、閉じ括弧}の前のインデント幅を指定します。\n"},{"id":20,"href":"/toml11/ja/docs/reference/from/","title":"from.hpp","section":"reference","content":" from.hpp # toml::getやtoml::findで使用する、toml::valueからの変換を定義する構造体です。\nメンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom\u0026lt;T\u0026gt;を使用してください。\nこのファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct from; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/from.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct from\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static extlib::foo from_toml(const toml::basic_value\u0026lt;TC\u0026gt;\u0026amp; v) { return extlib::foo{toml::find\u0026lt;int\u0026gt;(v, \u0026#34;a\u0026#34;), toml::find\u0026lt;std::string\u0026gt;(v, \u0026#34;b\u0026#34;)}; } }; } // toml 関連項目 # conversion.hpp into.hpp "},{"id":21,"href":"/toml11/ja/docs/reference/get/","title":"get.hpp","section":"reference","content":" get.hpp # toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。\ntoml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 厳密には全て toml::basic_value\u0026lt;TC\u0026gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::get\u0026lt;T\u0026gt; # 概要 # 基本的に、toml::getは以下のような関数として振る舞います。 Tはtoml::get\u0026lt;int\u0026gt;(v)のようにして与えます。\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。\nTの型の種類は、\n変換が必要ない型 変換する必要がある型 に分けられます。\n細かい条件と、特別にサポートしている具体的な型については後述します。\n変換が必要ない型 # 変換が必要ないのは、渡された toml::value が格納している型です。 例えば、 toml::value::integer_type は std::int64_t のエイリアスなので、 toml::get\u0026lt;std::int64_t\u0026gt;(v) は変換を必要としません。 この場合、 toml:get は integer の値を toml::value から取り出し、その参照を返します。\n渡されたtoml::valueが可変参照(\u0026amp;)である場合、返す値も可変参照(\u0026amp;)です。 不変参照(const\u0026amp;)の場合、返す値も不変参照(const\u0026amp;)となります。 可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。\n変換が必要な型 # 上記の型以外については変換が必要です。 例えば、toml::value::integer_typeはstd::int64_tのエイリアスなので、toml::get\u0026lt;std::size_t\u0026gt;(toml::value\u0026amp;)は変換が必要です。 この場合、toml:getはintegerの値をtoml::valueから取り出し、それをキャストして返します。\ntoml11は簡単なキャストだけでなく、 toml::arrayからやstd::tuple\u0026lt;int, double, std::string\u0026gt;やstd::array\u0026lt;double, 4\u0026gt;、 toml::tableからstd::map\u0026lt;std::string, int\u0026gt;などの複雑な型変換をサポートします。 具体的には、続くセクションを参照してください。\n失敗した場合 # 期待した型変換を行えない場合があります。例えば、tableを持っているtoml::valueにtoml::get\u0026lt;int\u0026gt;(v)を適用した場合などです。\nこのような場合は、取り出そうとした型に最も似ている型への変換(今回はintなので、as_integer)が失敗したとして、toml::type_errorが送出されます。\nファイルからパースした場合、以下のようなエラーメッセージが出力されます。\nterminate called after throwing an instance of \u0026#39;toml::type_error\u0026#39; what(): toml::value::as_integer(): bad_cast to integer --\u0026gt; input.toml | 6 | [fruit] | ^^^^^^^-- the actual type is table Tがtoml::valueと同一のとき # template\u0026lt; T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); 条件:\nstd::is_same\u0026lt;T, basic_value\u0026lt;TC\u0026gt;\u0026gt; を満たす toml::valueからtoml::valueなので、変換は行われず、そのままの値が返されます。 他の関数の実装を一般化するためだけに存在しています。\n失敗しません。\nTがtoml::value::{some_type}のいずれかのとき # template\u0026lt;typename T, typename TC\u0026gt; T\u0026amp; get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v); 条件:\nTがtoml::valueが格納できる型(toml::value::boolean_typeなど)のどれかと同一であること toml::value が格納している型と同じ型、例えば toml::value::integer_type が toml::get\u0026lt;T\u0026gt; の T として指定されたとき、型変換の必要がないため参照を返すことが可能です。\n異なる型が格納されていた場合、toml::type_error が送出されます。\nTが異なるTypeConfigを持つbasic_value\u0026lt;OtherTC\u0026gt;のとき # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTがtoml::basic_value\u0026lt;TC\u0026gt;ではない Tがtoml::basic_value\u0026lt;OtherTC\u0026gt;である 異なる型を格納し得るbasic_valueが指定された場合、変換が行われます。\n型変換が発生するので、返す値は新規な値であり、参照ではありません。\n失敗しません(メモリ枯渇などの場合を除く)。\nTが整数型の場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_integral\u0026lt;T\u0026gt; を満たす std::is_same\u0026lt;T, bool\u0026gt; ではない toml::value::integer_type ではない toml::value を integer_type を保持しているとしてその値を取得し、それを T に変換して返します。\ntoml::value::integer_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTが浮動小数点数型の場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_floating_point\u0026lt;T\u0026gt; を満たす toml::value::floating_type ではない toml::valueをfloating_typeを保持しているとしてその値を取得し、それをTに変換して返します。\ntoml::value::floating_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::string_viewの場合 # C++17以降でのみ使用可能です。\ntemplate\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_same\u0026lt;std::string_view, T\u0026gt; を満たす toml::valueをstring_typeを保持しているとしてその値を取得し、それからstd::string_viewを構築して返します。\ntoml::value::string_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::chrono::durationの場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTがstd::chrono::duration\u0026lt;Rep, Period\u0026gt;である toml::valueをlocal_timeを保持しているとしてその値を取得し、それをstd::chrono::durationに変換して返します。\ntoml::value::local_time 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::chrono::system_clock::time_pointの場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nstd::is_same\u0026lt;T, std::chrono::system_clock::time_point\u0026gt;を満たす toml::value を local_date, local_datetime, offset_datetimeのどれかを保持しているとしてその値を取得し、それをstd::chrono::system_clock::time_pointに変換して返します。\nlocal_date, local_datetime, offset_datetime 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがarray-likeである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはT::iteratorを持つ TはT::value_typeを持つ TはT::push_back(x)を持つ Tはtoml::value::array_typeではない Tはstd::stringではない Tはstd::string_viewではない Tはmap-likeではない Tはfrom_toml()メンバ関数を持たない toml::from\u0026lt;T\u0026gt;が定義されていない toml::basic_value\u0026lt;TC\u0026gt;からのコンストラクタが定義されていない std::vector\u0026lt;int\u0026gt;やstd::deque\u0026lt;std::string\u0026gt;などが該当します。\ntoml::valueをarrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがstd::arrayである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::array\u0026lt;U, N\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\ntoml::value が持つ array が十分な数の要素を持っていなかった場合、std::out_of_rangeが送出されます。\nTがstd::forward_listである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::forward_list\u0026lt;U\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それをstd::forward_listに変換して返します。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nforward_listはpush_backを持たないので、別に実装されています。\nTがstd::pairである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::pair\u0026lt;T1, T2\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それをstd::pair\u0026lt;T1, T2\u0026gt;に変換して返します。\nfirst と second はそれぞれ再帰的に変換されます。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\ntoml::value が持つ array の要素数がちょうど2個でなかった場合、std::out_of_rangeが送出されます。\nTがstd::tupleである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはstd::tuple\u0026lt;T1, T2, ... TN\u0026gt;である toml::valueをarrayを保持しているとしてその値を取得し、それをstd::tuple\u0026lt;T1, T2, ...TN\u0026gt;に変換して返します。\n各要素はそれぞれ再帰的に変換されます。\ntoml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\ntoml::value が持つ array の要素数がちょうど std::tuple_size\u0026lt;T\u0026gt;::value 個でなかった場合、std::out_of_rangeが送出されます。\nTがmap-likeである場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\nTはT::iteratorを持つ TはT::key_typeを持つ TはT::value_typeを持つ TはT::mapped_typeを持つ Tはtoml::value::table_typeではない Tはfrom_toml()メンバ関数を持たない toml::from\u0026lt;T\u0026gt;が定義されていない toml::basic_value\u0026lt;TC\u0026gt;からのコンストラクタが定義されていない std::map\u0026lt;std::string, int\u0026gt;やstd::unordered_map\u0026lt;std::string, float\u0026gt;などが該当します。\ntoml::valueをtableを保持しているとしてその値を取得し、それを T に変換して返します。\n各要素はそれぞれ再帰的に変換されます。\nbasic_value::table_type 以外の型が格納されていた場合、 toml::type_error が送出されます。\nTがtoml::from\u0026lt;T\u0026gt;の特殊化を持つユーザー定義型である場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\ntoml::from\u0026lt;T\u0026gt;が定義されている toml::from の T に対する特殊化が定義されていた場合、それを使用した型変換が行われます。\n個別にサポートされる型( std::array, std::pair, std::tuple )と衝突しないようにしてください。\nTがT::from_tomlメンバ関数を持つユーザー定義型である場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\ntoml::from\u0026lt;T\u0026gt;が定義されていない Tはfrom_toml()メンバ関数を持つ T に from_toml(toml::basic_value\u0026lt;TC\u0026gt;) メンバ関数が定義されていた場合、それを使用した型変換が行われます。\ntoml::from\u0026lt;T\u0026gt; が定義されていると、そちらが優先されます。\nTがtoml::basic_value\u0026lt;TC\u0026gt;を取るコンストラクタを持つユーザー定義型である場合 # template\u0026lt;typename T, typename TC\u0026gt; T get(basic_value\u0026lt;TC\u0026gt;\u0026amp; v); 条件:\ntoml::from\u0026lt;T\u0026gt;が定義されていない Tはfrom_toml()メンバ関数を持たない Tはtoml::basic_value\u0026lt;TC\u0026gt;を取るコンストラクタを持つ T に toml::basic_value\u0026lt;TC\u0026gt; を取るコンストラクタが定義されていた場合、それを使用した型変換が行われます。\ntoml::from\u0026lt;T\u0026gt; または T::from_toml が定義されていると、そちらが優先されます。\ntoml::get_or\u0026lt;T\u0026gt; # get_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。\nこのデフォルト値は受け取る型Tと同じ型でなければなりません。 よって、 toml::get\u0026lt;T\u0026gt; とは違って、 get_or では T を指定せずとも推論されます。\nTがbasic_value\u0026lt;TC\u0026gt;である場合 # template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp; opt) template\u0026lt;typename TC\u0026gt; basic_value\u0026lt;TC\u0026gt; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; opt) 変換先は同一のtoml::valueなので、失敗しません。\n他の関数の実装を一般化するためだけに存在しています。\nTがbasic_value\u0026lt;TC\u0026gt;::{some_type}である場合 # template\u0026lt;typename T, typename TC\u0026gt; T const\u0026amp; get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T \u0026amp; get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp; opt) noexcept template\u0026lt;typename T, typename TC\u0026gt; T get_or(basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v, T\u0026amp;\u0026amp; opt) noexcept toml::get\u0026lt;T\u0026gt;と同様の変換を行います。失敗した場合は第二引数が返されます。\nTがconst char*である場合 # template\u0026lt;typename TC\u0026gt; typename basic_value\u0026lt;TC\u0026gt;::string_type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const typename basic_value\u0026lt;TC\u0026gt;::string_type::value_type* opt); const char* が渡された場合、変換先は std::string として解釈されます。\nTがその他の場合 # template\u0026lt;typename TC\u0026gt; typename std::remove_cv\u0026lt;typename std::remove_reference\u0026lt;T\u0026gt;::type\u0026gt;::type get_or(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, T\u0026amp;\u0026amp; opt); toml::get\u0026lt;T\u0026gt;と同様の変換を行います。失敗した場合は第二引数が返されます。\n関連項目 # find.hpp from.hpp value.hpp "},{"id":22,"href":"/toml11/ja/docs/reference/into/","title":"into.hpp","section":"reference","content":" into.hpp # toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。\nメンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto\u0026lt;T\u0026gt;を使用してください。\nこのファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct into; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include \u0026lt;toml11/into.hpp\u0026gt; namespace toml { template\u0026lt;\u0026gt; struct into\u0026lt;extlib::foo\u0026gt; { template\u0026lt;typename TC\u0026gt; static toml::basic_value\u0026lt;TC\u0026gt; into_toml(const extlib::foo\u0026amp; f) { using value_type = toml::basic_value\u0026lt;TC\u0026gt;; using table_type = typename value_type::table_type; return value_type(table_type{{\u0026#34;a\u0026#34;, f.a}, {\u0026#34;b\u0026#34;, f.b}}); } }; } // toml 関連項目 # conversion.hpp from.hpp "},{"id":23,"href":"/toml11/ja/docs/reference/literal/","title":"literal.hpp","section":"reference","content":" literal.hpp # literal.hppでは、_tomlリテラルが定義されます。\n_tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。\nnamespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); toml::value operator\u0026#34;\u0026#34; _toml(const char8_t* str, std::size_t len); // C++20以降 } // toml_literals } // literals } // toml 自由関数 # operator\u0026quot;\u0026quot; _toml(char) # toml::value operator\u0026#34;\u0026#34; _toml(const char* str, std::size_t len); 文字列リテラルをパースしてtoml::valueに変換します。\n通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。\nconst auto v1 = \u0026#34;a = \u0026#39;foo\u0026#39;\u0026#34;_toml; // v1: {a = \u0026#39;foo\u0026#39;} 改行を含む場合、生文字列リテラルが便利です。\nconst auto v1 = R\u0026#34;( a = 42 b = \u0026#34;foo\u0026#34; )\u0026#34;_toml; 値が単体で書かれていた場合、その値になります。\nconst auto v2 = \u0026#34;\u0026#39;foo\u0026#39;\u0026#34;_toml; // v2: \u0026#39;foo\u0026#39; TOMLは数値のみからなるキーを許可しています。 [1]のように、テーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。\n配列として解釈させるには、trailing commaを使用してください。\nconst auto v3 = \u0026#34;[1]\u0026#34;_toml; // v3: {1 = {}} const auto v4 = \u0026#34;[1,]\u0026#34;_toml; // v4: [1,] operator\u0026quot;\u0026quot; _toml(char8_t) # char8_tが利用可能な場合に定義されます。引数の型のほかに違いはありません。\n例 # #include \u0026lt;toml.hpp\u0026gt; int main() { using namespace toml::literals::toml_literals; const auto v = \u0026#34;a = \\\u0026#34;foo\\\u0026#34;\u0026#34;_toml; assert(v.at(\u0026#34;a\u0026#34;).as_string() == \u0026#34;foo\u0026#34;); return 0; } "},{"id":24,"href":"/toml11/ja/docs/reference/ordered_map/","title":"ordered_map.hpp","section":"reference","content":" ordered_map.hpp # ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。\nclass ordered_map # namespace toml { template\u0026lt;typename Key, typename Val, typename Cmp = std::equal_to\u0026lt;Key\u0026gt;, typename Allocator = std::allocator\u0026lt;std::pair\u0026lt;Key, Val\u0026gt;\u0026gt;\u0026gt; class ordered_map; } ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。\n線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。\n非メンバ型 # namespace toml { struct ordered_type_config; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } toml::type_config と toml::value の代わりに使用します。\ntoml::parse はデフォルトで type_config を使用するので、パースする際に\nconst auto input = toml::parse\u0026lt;toml::ordered_type_config\u0026gt;(\u0026#34;input.toml\u0026#34;); としてください。\nメンバ型 # using key_type = Key; using mapped_type = Val; using value_type = std::pair\u0026lt;Key, Val\u0026gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector\u0026lt;value_type, Allocator\u0026gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; メンバ関数 # コンストラクタ # ordered_map() = default; 空の ordered_map を構築します。\nコンストラクタ(コンパレータ、アロケータ) # explicit ordered_map(const Cmp\u0026amp; cmp, const Allocator\u0026amp; alloc = Allocator()); explicit ordered_map(const Allocator\u0026amp; alloc); キーの比較に使用するコンパレータや、コンテナのメモリ確保に使用するアロケータを指定して構築します。\nコピー・ムーブコンストラクタ # ordered_map(const ordered_map\u0026amp;) = default; ordered_map(ordered_map\u0026amp;\u0026amp;) = default; ordered_map(const ordered_map\u0026amp; other, const Allocator\u0026amp; alloc); ordered_map(ordered_map\u0026amp;\u0026amp; other, const Allocator\u0026amp; alloc); 別の ordered_map の内容をコピー・ムーブして構築します。\nコンテナのメモリ確保に使用するアロケータを指定することも可能です。\nコンストラクタ(Iterator) # template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); template\u0026lt;typename InputIterator\u0026gt; ordered_map(InputIterator first, InputIterator last, const Allocator\u0026amp; alloc = Allocator()); イテレータ範囲を受け取って構築します。\n順序は、イテレータの順序に従います。\nコンストラクタ(std::initializer_list) # ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Cmp\u0026amp; cmp = Cmp(), const Allocator\u0026amp; alloc = Allocator()); ordered_map(std::initializer_list\u0026lt;value_type\u0026gt; v, const Allocator\u0026amp; alloc); ordered_map{...}の形式で初期化します。\nコピー・ムーブ代入演算子 # ordered_map\u0026amp; operator=(const ordered_map\u0026amp;) = default; ordered_map\u0026amp; operator=(ordered_map\u0026amp;\u0026amp;) = default; 別の ordered_map の内容をコピー・ムーブ代入します。\n代入演算子(std::initializer_list) # ordered_map\u0026amp; operator=(std::initializer_list\u0026lt;value_type\u0026gt; v); std::initializer_list の内容を代入します。\nデストラクタ # ~ordered_map() = default; ordered_map を破棄します。\nbegin(), end() # iterator begin() noexcept; iterator end() noexcept; const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; コンテナの内容を順序通りにイテレートします。\nempty() # bool empty() const noexcept; ordered_map が空の場合 true を、そうでない場合 false を返します。\nsize() # std::size_t size() const noexcept; ordered_map の要素数を返します。\nmax_size() # std::size_t max_size() const noexcept; ordered_map が持つことのできる最大の要素数を返します。\nclear() # void clear(); 内容を消去します。\npush_back(kv) # void push_back(const value_type\u0026amp;); void push_back(value_type\u0026amp;\u0026amp;); キーと値のペアを末尾に追加します。\nemplace_back(k, v) # void emplace_back(key_type, mapped_type); キーと値のペアを末尾に追加します。\npop_back() # void pop_back(); 末尾の値を削除します。\ninsert(kv) # void insert(value_type); キーと値のペアを末尾に追加します。\nemplace(k, v) # void emplace(key_type, mapped_type); キーと値のペアを末尾に追加します。\ncount(k) # std::size_t count(const key_type\u0026amp;) const noexcept; キーに対応する値の数を返します。\n同じキーに複数の値を代入することはできないので、値が存在する場合は 1, そうでない場合は 0 を返します。\ncontains(k) # bool contains(const key_type\u0026amp;) const noexcept; キーに対応する値が存在するなら true を、そうでないなら false を返します。\nfind(k) # iterator find(const key_type\u0026amp; key) noexcept; const_iterator find(const key_type\u0026amp; key) const noexcept; キーに対応する値を検索し、それを指すイテレータを返します。\n存在しなかった場合、end()を返します。\nat(k) # mapped_type\u0026amp; at(const key_type\u0026amp; k); mapped_type const\u0026amp; at(const key_type\u0026amp; k) const; キーに対応する値を検索して返します。\n存在しなかった場合、std::out_of_rangeを送出します。\noperator[](k) # mapped_type\u0026amp; operator[](const key_type\u0026amp; k); mapped_type const\u0026amp; operator[](const key_type\u0026amp; k) const; キーに対応する値を検索して返します。\n存在しなかった場合、新規な値を構築して返します。\nordered_map が const の場合は新規な値を構築できないので、 std::out_of_range を送出します。\nkey_comp() # key_compare key_comp() const; 比較に使用するコンパレータを返します。\n使用上の注意 # キーの書き換え # ordered_map は value_type に std::pair\u0026lt;Key, Val\u0026gt; を使用しているので、イテレータを介してキーを書き換えることが可能になってしまっています。\nこの方法でキーを書き換えることは推奨されません。\nキーを書き換えて既存のキーと衝突した場合、衝突したうちの片方が検索できなくなります。\noperator[] や push_back, insert による書き込みの場合は、既存のキーとの衝突が検出されます。\n保たれる順序の詳細 # ordered_map はキーの順序を保ちますが、ここで保たれる順序は同じテーブルで定義されたキーの順序のみです。 よって、テーブルをまたいだ順序は保たれないことに注意してください。\n例えば、以下のファイルの順序は保たれます。\napple.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.type = \u0026#34;fruit\u0026#34; orange.skin = \u0026#34;thick\u0026#34; orange.color = \u0026#34;orange\u0026#34; 対して以下のファイルの順序は保たれません。\napple.type = \u0026#34;fruit\u0026#34; orange.type = \u0026#34;fruit\u0026#34; apple.skin = \u0026#34;thin\u0026#34; orange.skin = \u0026#34;thick\u0026#34; apple.color = \u0026#34;red\u0026#34; orange.color = \u0026#34;orange\u0026#34; ordered_map が保つ順序は、rootテーブルに定義された apple と orange の順序と、 apple 内で定義された type, skin, color の順序、 また orange 内で定義された type, skin, color の順序のみです。\n関連項目 # parser.hpp types.hpp value.hpp "},{"id":25,"href":"/toml11/ja/docs/reference/parser/","title":"parser.hpp","section":"reference","content":" parser.hpp # ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。\nparseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。\nparse # 与えられたファイルの内容をパースし、toml::basic_valueを返します。\n失敗した場合はtoml::syntax_errorが送出されます。\nbasic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。\nparse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。\nファイルの読み込みに失敗した場合、file_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルを受け取って、そのファイルの内容をパースします。\nファイルの読み込みに失敗した場合、file_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } \u0026lt;filesystem\u0026gt;が利用可能な場合のみ定義されます。\nファイルパスを受け取って、そのファイルの内容をパースします。\nファイルの読み込みに失敗した場合、file_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } std::istream\u0026amp;を受け取ってその内容をパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 std::ios::binaryを使ってバイナリモードで開いてください。\nファイル名の情報は第三引数で受け取ります。ファイル名が渡されなかった場合、\u0026quot;unknown file\u0026quot;になります。\nparse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; parse(FILE* fp, std::string filename, spec s = spec::default_version()); } FILE*が指すファイルを読み込んでパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 fopenには\u0026quot;rb\u0026quot;などを渡してバイナリモードで開いてください。\nファイルの読み込みに失敗した場合、errnoが含まれたfile_io_errorが送出されます。\nパースに失敗した場合、syntax_errorが送出されます。\nparse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } バイト列をTOMLファイルとしてパースします。\nパースに失敗した場合、syntax_errorが送出されます。\nparse_str # parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; basic_value\u0026lt;TC\u0026gt; parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } 文字列をTOMLファイルとしてパースします。\n失敗した場合はtoml::syntax_errorが送出されます。\nbasic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。\n第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 parse_strが呼ばれた地点の情報が位置情報として保存されます。\ntry_parse # 与えられたファイルの内容をパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector\u0026lt;toml::error_info\u0026gt;を返します。\nbasic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。\ntry_parseはparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 標準ライブラリから送出される例外はそのまま送出されることに注意してください。\n例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。\ntry_parse(std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(const char (\u0026amp;)[N] filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config, std::size_t N\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const char (\u0026amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルをファイル名として受け取って、その内容をパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(std::filesystem::path, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(const std::filesystem::path\u0026amp; fpath, spec s = spec::default_version()); } ファイルパスを受け取って、その内容をパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(std::istream\u0026amp;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::istream\u0026amp; is, std::string fname = \u0026#34;unknown file\u0026#34;, spec s = spec::default_version()); } std::istream\u0026amp;を受け取ってその内容をパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 std::ios::binaryを使ってバイナリモードで開いてください。\nファイル名の情報は第二引数で受け取ります。ファイル名が渡されなかった場合、\u0026quot;unknown file\u0026quot;になります。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(FILE*, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(FILE* fp, std::string filename, spec s = spec::default_version()); } FILE*を受け取って、そのファイルの内容をパースします。\n標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 fopenには\u0026quot;rb\u0026quot;などを渡してバイナリモードで開いてください。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse(std::vector\u0026lt;unsigned char\u0026gt;, std::string filename, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse(std::vector\u0026lt;unsigned char\u0026gt; content, std::string filename, spec s = spec::default_version()); } バイト列を受け取って、その内容をTOMLファイルとしてパースします。\nパースに失敗した場合、エラー型であるstd::vector\u0026lt;error_info\u0026gt;を持つresultが返されます。\n成功した場合、basic_valueを持つresultが返されます。\ntry_parse_str # try_parse_str(std::string, toml::spec) # namespace toml { template\u0026lt;typename TC = type_config\u0026gt; result\u0026lt;basic_value\u0026lt;TC\u0026gt;, std::vector\u0026lt;error_info\u0026gt;\u0026gt; try_parse_str(std::string content, spec s = spec::default_version(), cxx::source_location loc = cxx::source_location::current()); } 文字列をTOMLファイルとしてパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector\u0026lt;toml::error_info\u0026gt;を返します。\nparse_strと異なり、syntax_errorを送出せず、エラー情報をresultの失敗型として返します。\nstd::source_location, std::experimental::source_location, __builtin_FILEのどれかが利用可能な場合、それを位置情報に記録します。\n第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 parse_strが呼ばれた地点の情報が位置情報として保存されます。\ntry_parseはparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 標準ライブラリから送出される例外はそのまま送出されることに注意してください。\n例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。\nsyntax_error # namespace toml { struct syntax_error final : public ::toml::exception { public: syntax_error(std::string what_arg, std::vector\u0026lt;error_info\u0026gt; err); ~syntax_error() noexcept override = default; const char* what() const noexcept override; std::vector\u0026lt;error_info\u0026gt; const\u0026amp; errors() const noexcept }; } TOML言語の文法エラーが発見された場合に送出される例外です。\nparseからは送出されますが、try_parseからは送出されません。\nfile_io_error # namespace toml { struct file_io_error final : public ::toml::exception { public: file_io_error(const std::string\u0026amp; msg, const std::string\u0026amp; fname); file_io_error(int errnum, const std::string\u0026amp; msg, const std::string\u0026amp; fname); ~file_io_error() noexcept override = default; const char* what() const noexcept override; bool has_errno() const noexcept; int get_errno() const noexcept; }; } ファイルの内容を読むのに失敗した場合に送出される例外です。\nFILE*を使ってファイルを読み込んだ場合はerrnoが設定されます。\nhas_errno # std::ifstreamが失敗した場合はerrnoは設定されません。\nこのとき、has_errnoはfalseになります。\nget_errno # 特にFILE*を渡していた場合に、errnoの値を取得します。\nhas_errnoがfalseの場合は0となります。\n関連項目 # error_info.hpp result.hpp spec.hpp value.hpp "},{"id":26,"href":"/toml11/ja/docs/reference/result/","title":"result.hpp","section":"reference","content":" result.hpp # result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。\nこれは、例外を投げないtoml::try_parseの返り値として使用されます。\nsuccess # 成功値を持つ型です。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success\u0026amp;) = default; success(success\u0026amp;\u0026amp;) = default; success\u0026amp; operator=(const success\u0026amp;) = default; success\u0026amp; operator=(success\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]) } メンバ型 # using value_type = T; 成功値の型です。\nメンバ関数 # コンストラクタ # explicit success(value_type v); value_typeを受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit success(U\u0026amp;\u0026amp; v); value_typeに変換可能な他の型を受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit success(success\u0026lt;U\u0026gt; v); value_typeに変換可能な他の型を持つsuccess型を受け取って構築します。\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; 値にアクセスします。\n非メンバ関数 # ok(T) # template\u0026lt;typename T\u0026gt; success\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; ok(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; success\u0026lt;std::string\u0026gt; ok(const char (\u0026amp;literal)[N]) 成功値からsuccess型を構築して返します。\n文字列リテラルを与えた場合は、std::stringにして返します。\nsuccess\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # successの特殊化。成功値が参照であるときに使用されます。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct success\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit success(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; } メンバ型 # using value_type = T; 成功値の型です。参照ではなく、std::reference_wrapper\u0026lt;T\u0026gt;のTです。\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; 値にアクセスします。\nfailure # 失敗値を持つ型です。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure { using value_type = T; explicit failure(value_type v); ~failure() = default; failure(const failure\u0026amp;) = default; failure(failure\u0026amp;\u0026amp;) = default; failure\u0026amp; operator=(const failure\u0026amp;) = default; failure\u0026amp; operator=(failure\u0026amp;\u0026amp;) = default; template\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); template\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; }; template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); } メンバ型 # using value_type = T; 失敗値の型です。\nメンバ関数 # コンストラクタ # explicit failure(value_type v); value_typeを受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit failure(U\u0026amp;\u0026amp; v); value_typeに変換可能な他の型を受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; explicit failure(failure\u0026lt;U\u0026gt; v); value_typeに変換可能な他の型を持つfailure型を受け取って構築します。\nget() # value_type\u0026amp; get() noexcept; value_type const\u0026amp; get() const noexcept; 値にアクセスします。\n非メンバ関数 # err(T) # template\u0026lt;typename T\u0026gt; failure\u0026lt;typename std::decay\u0026lt;T\u0026gt;::type\u0026gt; err(T\u0026amp;\u0026amp; v); template\u0026lt;std::size_t N\u0026gt; failure\u0026lt;std::string\u0026gt; err(const char (\u0026amp;literal)[N]); 失敗値からfailure型を構築して返します。\n文字列リテラルを与えた場合は、std::stringにして返します。\nfailure\u0026lt;reference_wrapper\u0026lt;T\u0026gt;\u0026gt; # failureの特殊化。失敗値が参照であるときに使用されます。\nnamespace toml { template\u0026lt;typename T\u0026gt; struct failure\u0026lt;std::reference_wrapper\u0026lt;T\u0026gt;\u0026gt; { using value_type = T; explicit failure(std::reference_wrapper\u0026lt;value_type\u0026gt; v) noexcept; value_type\u0026amp; get() noexcept {return value.get();} value_type const\u0026amp; get() const noexcept {return value.get();} }; } メンバ型 # using value_type = T; 失敗値の型です。参照ではなく、std::reference_wrapper\u0026lt;T\u0026gt;のTです。\nget() # value_type\u0026amp; get() noexcept value_type const\u0026amp; get() const noexcept 値にアクセスします。\nresult # 成功値か失敗値かのどちらかを持つ型です。\nnamespace toml { template\u0026lt;typename T, typename E\u0026gt; struct result { using success_type = success\u0026lt;T\u0026gt;; using failure_type = failure\u0026lt;E\u0026gt;; using value_type = typename success_type::value_type; using error_type = typename failure_type::value_type; result(success_type s); result(failure_type f); template\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); result\u0026amp; operator=(success_type s); result\u0026amp; operator=(failure_type f); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); ~result() noexcept; result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); template\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); bool is_ok() const noexcept; bool is_err() const noexcept; explicit operator bool() const noexcept; value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; }; } メンバ型 # success_type # success\u0026lt;T\u0026gt;です。\nfailure_type # failure\u0026lt;E\u0026gt;です。\nvalue_type # 成功型Tです。success_type::value_typeのエイリアスです。\n成功型Tとしてstd::reference_wrapper\u0026lt;U\u0026gt;が渡された場合、その引数型のUになります。\nerror_type # 失敗型Eです。failure_type::value_typeのエイリアスです。\n失敗型Eとしてstd::reference_wrapper\u0026lt;F\u0026gt;が渡された場合、その引数型のFになります。\nメンバ関数 # コンストラクタ # result() = delete; result型はデフォルトでは構築できません。 成功型か失敗型を与える必要があります。\nresult(success_type s); result(failure_type f); 成功型、失敗型を受け取って構築します。\ntemplate\u0026lt;typename U\u0026gt; result(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result(failure\u0026lt;U\u0026gt; f); value_typeとerror_typeに変換可能な成功型、失敗型を受け取って構築します。\ntemplate\u0026lt;typename U, typename F\u0026gt; result(result\u0026lt;U, F\u0026gt; other); template\u0026lt;typename U, typename F\u0026gt; result\u0026amp; operator=(result\u0026lt;U, F\u0026gt; other); 変換可能な成功型、失敗型を持つresultから構築します。\nコピー・ムーブコンストラクタ # result(const result\u0026amp; other); result(result\u0026amp;\u0026amp; other); コピー・ムーブ構築可能です。\noperator= # result\u0026amp; operator=(const result\u0026amp; other); result\u0026amp; operator=(result\u0026amp;\u0026amp; other); コピー・ムーブ代入可能です。\ntemplate\u0026lt;typename U\u0026gt; result\u0026amp; operator=(success\u0026lt;U\u0026gt; s); template\u0026lt;typename U\u0026gt; result\u0026amp; operator=(failure\u0026lt;U\u0026gt; f); 変換可能な型を持つ成功型、失敗型は代入可能です。\nis_ok() # bool is_ok() const noexcept; 成功値を持っている場合trueを、そうでない場合falseを返します。\nis_err() # bool is_err() const noexcept; 失敗値を持っている場合trueを、そうでない場合falseを返します。\noperator bool() # explicit operator bool() const noexcept; 成功値を持っている場合trueを、そうでない場合falseを返します。\nunwrap() # value_type\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()); value_type const\u0026amp; unwrap(cxx::source_location loc = cxx::source_location::current()) const; 成功値を取り出します。\n成功値を持っていない場合、toml::bad_result_accessが送出されます。\nstd::source_locationまたはstd::experimental::source_locationが利用可能か、 あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に unwrap()が発生したソースコードのファイル名と行数が表示されます。\n利用可能でない場合、位置情報は表示されません。\nunwrap_or() # value_type\u0026amp; unwrap_or(value_type\u0026amp; opt) noexcept; value_type const\u0026amp; unwrap_or(value_type const\u0026amp; opt) const noexcept; 成功値を持っていた場合それを、持っていなかった場合は引数で与えられた値を返します。\nunwrap_err() # error_type\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()); error_type const\u0026amp; unwrap_err(cxx::source_location loc = cxx::source_location::current()) const; 失敗値を取り出します。\n失敗値を持っていない場合、toml::bad_result_accessが送出されます。\nstd::source_locationまたはstd::experimental::source_locationが利用可能か、 あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に unwrap()が発生したソースコードのファイル名と行数が表示されます。\n利用可能でない場合、位置情報は表示されません。\nas_ok() # value_type\u0026amp; as_ok() noexcept; value_type const\u0026amp; as_ok() const noexcept; チェックなしで成功値を返します。\n成功値を持っていなかった場合、その動作は未定義となります。\nas_err() # error_type\u0026amp; as_err() noexcept; error_type const\u0026amp; as_err() const noexcept; チェックなしで失敗値を返します。\n失敗値を持っていなかった場合、その動作は未定義となります。\nbad_result_access # resultのunwrapまたはunwrap_errで失敗した際に送出される例外です。\nnamespace toml { struct bad_result_access : public ::toml::exception { public: explicit bad_result_access(const std::string\u0026amp; what_arg); virtual ~bad_result_access() noexcept override = default; virtual const char* what() const noexcept override; protected: std::string what_; }; } "},{"id":27,"href":"/toml11/ja/docs/reference/serializer/","title":"serializer.hpp","section":"reference","content":" serializer.hpp # format # シリアライズを行います。\nnamespace toml { template\u0026lt;typename TC\u0026gt; std::string format(const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026amp; k, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); template\u0026lt;typename TC\u0026gt; std::string format(const std::vector\u0026lt;typename basic_value\u0026lt;TC\u0026gt;::key_type\u0026gt;\u0026amp; ks, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, const spec s = spec::default_version()); } フォーマット情報とspecが矛盾する場合、例えばv1.0.0でtable_format::multiline_onelineが指定されているときなどは、specが優先されます。\nformat(v, spec) # toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。\ntable_typeだった場合、それがルートであるとしてフォーマットします。 それ以外の値だった場合、値のみをフォーマットします。\nformat(k, v, spec) # toml::valueを、与えられたキーと同時にフォーマットします。\nvはそのキー以下に定義されていると解釈されます。\nformat([k,...], v, spec) # vはそのキー以下に定義されていると解釈されます。 キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。\nserialization_error # シリアライズ中に発生したエラーを報告します。\nnamespace toml { struct serialization_error final : public ::toml::exception { public: explicit serialization_error(std::string what_arg, source_location loc); ~serialization_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; } "},{"id":28,"href":"/toml11/ja/docs/reference/source_location/","title":"source_location.hpp","section":"reference","content":" source_location.hpp # source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。\nこのクラスは、エラーメッセージで問題の箇所を指摘するために使われます。\ntoml::source_location # source_locationは、TOMLファイル内のある領域を指すクラスです。\nnamespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const\u0026amp;) = default; source_location(source_location \u0026amp;\u0026amp;) = default; source_location\u0026amp; operator=(source_location const\u0026amp;) = default; source_location\u0026amp; operator=(source_location \u0026amp;\u0026amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const\u0026amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const\u0026amp; first_line() const; std::string const\u0026amp; last_line() const; std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; }; template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); } //toml メンバ関数 # コンストラクタ # explicit source_location(/* implementation-defined */); toml::source_locationをtoml::parseまたは_tomlリテラル以外で構築することはできません。\nis_ok() # bool is_ok() const noexcept; source_locationが有効な値を保持している場合、trueを、そうでない場合falseを返します。\ntoml::parseや_tomlリテラル以外から構築したtoml::valueのlocation()の結果は、指す対象がないため、is_okはfalseを返します。\nlength() # std::size_t length() const noexcept; source_locationが指す領域の長さを返します。\n有効な値を保持していない場合、0を返します。\nfirst_line_number() # std::size_t first_line_number() const noexcept; source_locationが指す領域の最初の行の行番号を返します。\n有効な値を保持していない場合、1を返します。\nfirst_column_number() # std::size_t first_column_number() const noexcept; source_locationが指す領域の最初の列の列番号を返します。\n有効な値を保持していない場合、1を返します。\nlast_line_number() # std::size_t last_line_number() const noexcept; source_locationが指す領域の最後の行の行番号を返します。\n有効な値を保持していない場合、1を返します。\nlast_column_number() # std::size_t last_column_number() const noexcept; source_locationが指す領域の最後の列の列番号を返します。\n有効な値を保持していない場合、1を返します。\nfile_name() # std::string const\u0026amp; file_name() const noexcept; source_locationが指す領域を含むファイルのファイル名を返します。\n有効な値を保持していない場合、\u0026quot;unknown file\u0026quot;を返します。\nnum_lines() # std::size_t num_lines() const noexcept; source_locationが指す領域の行数を返します。\n有効な値を保持していない場合、0を返します。\nfirst_line() # std::string const\u0026amp; first_line() const; source_locationが指す領域の最初の行を返します。\n有効な値を保持していない場合、std::out_of_range例外が送出されます。\nlast_line() # std::string const\u0026amp; last_line() const; source_locationが指す領域の最後の行を返します。\n有効な値を保持していない場合、std::out_of_range例外が送出されます。\nlines() # std::vector\u0026lt;std::string\u0026gt; const\u0026amp; lines() const noexcept; source_locationが指す領域の全ての行を返します。\n有効な値を保持していない場合、空のstd::vectorへの参照を返します。\n非メンバ関数 # format_location # template\u0026lt;typename ... Ts\u0026gt; std::string format_location(const source_location\u0026amp; loc, const std::string\u0026amp; msg, const Ts\u0026amp; ... locs_and_msgs); source_locationが指す箇所と、それについてのメッセージを以下のようにフォーマットします。\n-\u0026gt; {filename.toml} | 1 | a = 42 | ^-- {message} この時、色付けがONになっている場合、ANSIエスケープシーケンスによって色情報が追加されます。\nlocs_and_msgsが複数個ある場合、それらはconst source_location\u0026amp;とconst std::string\u0026amp;の順である必要があります。\n例:複数のsource_locationとstd::string # 複数のsource_locationとstd::stringを渡した場合、以下のようにフォーマットされます。\nsource_location\u0026amp; loc0; source_location\u0026amp; loc1; source_location\u0026amp; loc2; std::string msg0; std::string msg1; std::string msg2; format_location(loc0, msg0, loc1, msg1, loc2, msg2); -\u0026gt; {filename0.toml} | 1 | a = 42 | ^-- {message0} | -\u0026gt; {filename1.toml} | 2 | b = 3.14 | ^-- {message1} | -\u0026gt; {filename2.toml} | 3 | c = \u0026#34;foo\u0026#34; | ^-- {message2} 関連項目 # error_info.hpp value.hpp "},{"id":29,"href":"/toml11/ja/docs/reference/spec/","title":"spec.hpp","section":"reference","content":" spec.hpp # spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。\ntoml::semantic_version # semantic_versionは、バージョン情報を格納するクラスです。\nnamespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); } //toml メンバ関数 # コンストラクタ # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; major, minor, patchバージョンを指定して構築します。\n非メンバ関数 # 比較演算子 # constexpr bool operator==(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator!=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026lt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt; (const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; constexpr bool operator\u0026gt;=(const semantic_version\u0026amp;, const semantic_version\u0026amp;) noexcept; semantic versioningに従って比較します。\nストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, const semantic_version\u0026amp; ver); {major}.{minor}.{patch}の形式で出力します。\nto_string # std::string to_string(const semantic_version\u0026amp; ver); {major}.{minor}.{patch}の形式で文字列化します。\ntoml::spec # specは、TOMLのバージョン情報を格納するクラスです。\nstruct spec { constexpr static spec default_version() noexcept; constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; semantic_version version; // toml version // diff from v1.0.0 -\u0026gt; v1.1.0 bool v1_1_0_allow_control_characters_in_comments; bool v1_1_0_allow_newlines_in_inline_tables; bool v1_1_0_allow_trailing_comma_in_inline_tables; bool v1_1_0_allow_non_english_in_bare_keys; bool v1_1_0_add_escape_sequence_e; bool v1_1_0_add_escape_sequence_x; bool v1_1_0_make_seconds_optional; // library extensions bool ext_hex_float; // allow hex float bool ext_num_suffix; // allow number suffix bool ext_null_value; // allow null value }; メンバ関数 # コンストラクタ # constexpr explicit spec(const semantic_version\u0026amp; semver) noexcept; 指定されたTOMLバージョンでspecを構築します。\nTOML v1.0.0と、TOML v1.1.0に対応しています。\ndefault_version() # constexpr static spec default_version() noexcept; デフォルトのバージョンでspecを構築します。\ntoml::parse、toml::formatでのデフォルト値として使われます。\ntoml11 v4.0.0での値は、v1.0.0です。\nv(major, minor, patch) # constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; 指定されたバージョンでspecを構築します。\nメンバ変数 # 各フラグは機能追加がされたバージョンを指定されたとき、自動的にtrueになります。\n変更して渡すことで、toml::parse、toml::formatの挙動を変更できます。\nTOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。\n実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。\nそのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。\n例 # auto spec = toml::spec::v(1, 0, 0); // v1.0.0の機能に追加して、inline table内の改行を許可する。 // それ以外のv1.1.0の機能は有効化されない。 spec.v1_1_0_allow_newlines_in_inline_tables = true; auto input = toml::parse(\u0026#34;input_file.toml\u0026#34;, spec); v1_1_0_allow_control_characters_in_comments # bool v1_1_0_allow_control_characters_in_comments; ほとんどの制御文字をコメントに含むことを許可します。\ntoml v1.1.0で追加。\nv1_1_0_allow_newlines_in_inline_tables # bool v1_1_0_allow_newlines_in_inline_tables; inline table内で改行することを許可します。\ntoml v1.1.0で追加。\nv1_1_0_allow_trailing_comma_in_inline_tables # bool v1_1_0_allow_trailing_comma_in_inline_tables; inline table内での末尾コンマを許可します。\ntoml v1.1.0で追加。\nv1_1_0_add_escape_sequence_e # bool v1_1_0_add_escape_sequence_e; \\eでESC文字を指定できるようになります。\ntoml v1.1.0で追加。\nv1_1_0_add_escape_sequence_x # bool v1_1_0_add_escape_sequence_x; \\xHHで1バイトの文字を指定できるようになります。\ntoml v1.1.0で追加。\nv1_1_0_make_seconds_optional # bool v1_1_0_make_seconds_optional; 時刻での秒数指定を省略可能にします。\n指定されなかった秒数は0で初期化されます。\ntoml v1.1.0で追加。\next_hex_float # bool ext_hex_float; toml11限定の言語拡張です。\nどのバージョンを指定しても、falseで初期化されます。 使用する際は個別にtrueにしてください。\n浮動小数点数の16進数表記を許可します。\n16進数表記はprintfで%a/%Aを指定した場合に準拠します。\nhexf = 0xC0FFEEp-10 toml::format は、渡された toml::spec で ext_hex_format が true の場合のみ 16進表記でフォーマットします。 フォーマット情報で hex が指定されているにも関わらず toml::format に渡された toml::spec の ext_hex_float が false だった場合、16進数指定は無視され、 10進表記で最大の精度で出力されます。\next_num_suffix # bool ext_num_suffix; toml11限定の言語拡張です。\nどのバージョンを指定しても、falseで初期化されます。 使用する際は個別にtrueにしてください。\n10進数の整数と浮動小数点数に接尾辞を追加します。型を問わず、16進や8進、2進表記には適用されません。\n数値と接尾辞の間は_で区切られている必要があります。\n数値部分との区別のため、接尾辞は数値で始まることはできません。\ndistance = 10_m # valid distance = 10_2m # invalid distance = 10_2_m # valid 接尾辞は std::string suffix としてフォーマット情報に保持されます。 数値部分とを分ける _ は suffix に含まれません。\ntoml::value distance = toml::find(input, \u0026#34;distance\u0026#34;); assert(distance.as_integer_fmt().suffix == std::string(\u0026#34;m\u0026#34;)); toml::format は、渡された toml::spec の ext_num_suffix が true の場合のみ これをフォーマットします。\nsuffixは以下のような文法を持ちます。\nnon-digit-graph = ALPHA / non-ascii graph = ALPHA / DIGIT / non-ascii suffix = _ non-digit-graph *( graph / ( _ graph ) ) ext_null_value # bool ext_null_value; toml11限定の言語拡張です。\n値として null を許可します。\nnull を指定された toml::value は値を持たず、 is_empty() が true になります。\ntoml::format は、渡された toml::spec で ext_null_value が true の場合のみ null としてフォーマットします。 そうでない場合、 toml::format がエラーで終了します。\n"},{"id":30,"href":"/toml11/ja/docs/reference/toml_fwd/","title":"toml_fwd.hpp","section":"reference","content":" toml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。\ntoml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。\nこのファイルには前方宣言しか含まれていないため、 toml::basic_value\u0026lt;toml::type_config\u0026gt;::table_type として定義される toml::table と、同様に定義される toml::array は使用できません。 それらには basic_value の実装が必要だからです。 このヘッダファイルと toml.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。\n"},{"id":31,"href":"/toml11/ja/docs/reference/toml/","title":"toml.hpp","section":"reference","content":" toml.hpp # toml.hppは、他の全てのヘッダを include します。\nこれによって、toml11の全機能が使用可能になります。\nこのヘッダファイルと toml_fwd.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。\n"},{"id":32,"href":"/toml11/ja/docs/reference/types/","title":"types.hpp","section":"reference","content":" types.hpp # 型情報を与えるクラスが定義されます。\ntype_config # type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。\ntoml::basic_value\u0026lt;T\u0026gt;内で異なる型を使用する場合、これを別に定義して渡します。 記載のある要素は全て必須の要素です。\n通常のストリーム演算子を使用できない数値型を使用する場合、read_int、read_floatに相当するものを定義し、置き換えてください。\nnamespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = std::unordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); }; using value = basic_value\u0026lt;type_config\u0026gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static メンバ関数 # parse_int(str, src, base) # static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); 通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。\nstrには、prefix、(0xなどの場合)leading zero、underscoreが取り除かれた文字列が渡されます。\nsrcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。\nbaseには、10, 2, 8, 16のいずれかが渡されます。\nparse_float(str, src, is_hex) # static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); 通常のストリーム演算子などを使用できない型をfloating_typeとして使用する場合、この関数を実装してください。\nstrには、prefix、leading zero、underscoreが取り除かれた文字列が渡されます。\nsrcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。\nis_hexには、フォーマットがhexfloatであるかどうかが渡されます。hexfloat拡張を使用しない場合は使われないので、実装する必要はありません。\nhexfloat拡張に関しては、spec.hppを参照してください。\n非メンバ関数 # read_int # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base); デフォルトで使用される関数です。std::istringstreamを使用してパースします。\noperator\u0026gt;\u0026gt;とstd::hex等のマニピュレータ、std::numeric_limits\u0026lt;T\u0026gt;が定義されている場合(boost::multiprecisionなど)、特に変更なしにこれを使用できます。\nread_float # template\u0026lt;typename T\u0026gt; result\u0026lt;T, error_info\u0026gt; read_float(const std::string\u0026amp; str, const source_location src, const bool is_hex); デフォルトで使用される関数です。decimalの場合はstd::istringstreamを、hexfloatの場合はsscanf()を使用してパースします。\ndouble、floatに対応しています。\nそれ以外の型の場合、operator\u0026gt;\u0026gt;が定義されていて、かつhexを使用しないなら、これを使用できます。\nordered_type_config # ordered_type_configは、toml::type_configのテーブル型をtoml::ordered_mapに変更したものです。 また、toml::ordered_valueエイリアスを定義します。\nそのほかにtype_configとの違いはありません。\nnamespace toml { struct ordered_type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template\u0026lt;typename T\u0026gt; using array_type = std::vector\u0026lt;T\u0026gt;; template\u0026lt;typename K, typename T\u0026gt; using table_type = ordered_map\u0026lt;K, T\u0026gt;; static result\u0026lt;integer_type, error_info\u0026gt; parse_int(const std::string\u0026amp; str, const source_location src, const std::uint8_t base) { return read_int\u0026lt;integer_type\u0026gt;(str, src, base); } static result\u0026lt;floating_type, error_info\u0026gt; parse_float(const std::string\u0026amp; str, const source_location src, const bool is_hex) { return read_float\u0026lt;floating_type\u0026gt;(str, src, is_hex); } }; using ordered_value = basic_value\u0026lt;ordered_type_config\u0026gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } // toml "},{"id":33,"href":"/toml11/ja/docs/reference/value_t/","title":"value_t.hpp","section":"reference","content":" value_t.hpp # 型情報を表す列挙型です。\nvalue_t # value_tは、toml::valueが持つ型情報を扱う際に使用します。\nnamespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); std::string to_string(value_t t); } // toml 非メンバ関数 # ストリーム演算子 # std::ostream\u0026amp; operator\u0026lt;\u0026lt;(std::ostream\u0026amp; os, value_t t); value_tの値を文字列化してストリームへ出力します。\nto_string # std::string to_string(value_t t); value_tの値を文字列化して返します。\n"},{"id":34,"href":"/toml11/ja/docs/reference/value/","title":"value.hpp","section":"reference","content":" value.hpp # value.hppでは、basic_valueが定義されます。\ntoml::basic_value # basic_valueは、TOMLの値を格納するクラスです。\nnamespace toml { template \u0026lt;class TypeConfig\u0026gt; class basic_value; // 以下はtypes.hppで定義される // using value = basic_value\u0026lt;type_config\u0026gt;; // using table = typename basic_value\u0026lt;type_config\u0026gt;::table_type; // using array = typename basic_value\u0026lt;type_config\u0026gt;::array_type; template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt; (const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); template\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); } //toml メンバ型 # 以下のメンバ型が定義されます。\nTypeConfigを使って、メンバ型を変更することができます。\n参考: types.hpp\n名前 定義 char_type typename TypeConfig::char_type key_type typename TypeConfig::string_type value_type basic_value\u0026lt;TypeConfig\u0026gt; boolean_type typename TypeConfig::boolean_type integer_type typename TypeConfig::integer_type floating_type typename TypeConfig::floating_type string_type typename TypeConfig::string_type local_time_type toml::local_time local_date_type toml::local_date local_datetime_type toml::local_datetime offset_datetime_type toml::offset_datetime array_type typename TypeConfig::template array_type\u0026lt;value_type\u0026gt; table_type typename TypeConfig::template table_type\u0026lt;key_type, value_type\u0026gt; comment_type typename TypeConfig::comment_type メンバ関数 # デフォルトコンストラクタ # basic_value() noexcept 空のtoml::valueを構築します。\n構築されたtoml::valueは空になります。\nコピー・ムーブコンストラクタ # basic_value(const basic_value\u0026amp; v) basic_value(basic_value\u0026amp;\u0026amp; v) 値、フォーマット情報、コメント、ファイル領域の全ての情報をコピー・ムーブします。\nコピー・ムーブコンストラクタ(コメント指定) # basic_value(basic_value v, std::vector\u0026lt;std::string\u0026gt; com) コメントを上書きしながらコピー・ムーブします。\n変換コンストラクタ # template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other) template\u0026lt;typename TI\u0026gt; basic_value(basic_value\u0026lt;TI\u0026gt; other, std::vector\u0026lt;std::string\u0026gt; com) 異なるtype_configを持つbasic_valueからコピー・ムーブします。\nコンストラクタ (boolean) # basic_value(boolean_type x) basic_value(boolean_type x, boolean_format_info fmt) basic_value(boolean_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(boolean_type x, boolean_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) boolと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ (integer) # basic_value(integer_type x) basic_value(integer_type x, integer_format_info fmt) basic_value(integer_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(integer_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) integerと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(floating) # template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x, floating_format_info fmt) template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T は std::is_floating_point\u0026lt;T\u0026gt; を満たす */\u0026gt; basic_value(T x, floating_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) floatingと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(string) # basic_value(string_type x) basic_value(string_type x, string_format_info fmt) basic_value(string_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x) basic_value(const string_type::value_type* x, string_format_info fmt) basic_value(const string_type::value_type* x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(const string_type::value_type* x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) // C++17以降 basic_value(string_view_type x) basic_value(string_view_type x, string_format_info fmt) basic_value(string_view_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(string_view_type x, string_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) stringと、そのフォーマット情報、コメントを受け取って構築します。\nstring_view_typeは、string_typeと同じvalue_typeとtraits_typeを持ちます。\nコンストラクタ(local_date) # basic_value(local_date_type x) basic_value(local_date_type x, local_date_format_info fmt) basic_value(local_date_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_date_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) local_date_typeと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(local_time) # basic_value(local_time_type x) basic_value(local_time_type x, local_time_format_info fmt) basic_value(local_time_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_time_type x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename Rep, typename Period\u0026gt; basic_value(const std::chrono::duration\u0026lt;Rep, Period\u0026gt;\u0026amp; x, local_time_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) local_time_typeと、そのフォーマット情報、コメントを受け取って構築します。\nstd::chrono::durationは、00:00:00からの時間幅として構築します。\nコンストラクタ(local_datetime) # basic_value(local_datetime_type x) basic_value(local_datetime_type x, local_date_format_info fmt) basic_value(local_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(local_datetime_type x, local_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) local_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。\nコンストラクタ(offset_datetime) # basic_value(offset_datetime_type x) basic_value(offset_datetime_type x, offset_date_format_info fmt) basic_value(offset_datetime_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt) basic_value(std::chrono::system_clock::time_point x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) offset_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。\nstd::chrono::system_clock::time_pointの場合、それが指す時点として構築します。\nコンストラクタ(array) # basic_value(array_type x) basic_value(array_type x, integer_format_info fmt) basic_value(array_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(array_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is array-like */\u0026gt; basic_value(T x, array_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) arrayと、そのフォーマット情報、コメントを受け取って構築します。\narray-likeは、以下の条件を満たす型です。\nT::iterator を持つ。 T::value_type を持つ。 T::key_type を持たない。 T::mapped_type を持たない。 std::string ではない。 std::string_view ではない。(C++17以降) コンストラクタ(table) # basic_value(table_type x) basic_value(table_type x, integer_format_info fmt) basic_value(table_type x, std::vector\u0026lt;std::string\u0026gt; com) basic_value(table_type x, integer_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, std::vector\u0026lt;std::string\u0026gt; com) template\u0026lt;typename T, /* T is table-like */\u0026gt; basic_value(T x, table_format_info fmt, std::vector\u0026lt;std::string\u0026gt; com) tableと、そのフォーマット情報、コメントを受け取って構築します。\ntable-likeは、以下の条件を満たす型です。\nT::iterator を持つ。 T::value_type を持つ。 T::key_type を持つ。 T::mapped_type を持つ。 コンストラクタ(user-defined) # template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt;が定義されていること */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* toml::into\u0026lt;T\u0026gt;が定義されていること */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); template\u0026lt;typename T /* into\u0026lt;T\u0026gt;は定義されておらず、T{}.into_toml()が存在すること */\u0026gt; basic_value(const T\u0026amp; ud); template\u0026lt;typename T /* into\u0026lt;T\u0026gt;は定義されておらず、T{}.into_toml()が存在すること */\u0026gt; basic_value(const T\u0026amp; ud, std::vector\u0026lt;std::string\u0026gt; com); toml::into\u0026lt;T\u0026gt; が定義されていた場合、 toml::into\u0026lt;T\u0026gt;(ud) の結果から構築します。\ntoml::into\u0026lt;T\u0026gt; が定義されておらず、 T に into_toml() メンバ関数が定義されていた場合、 ud.into_toml()の結果から構築します。\noperator=(basic_value) # basic_value\u0026amp; operator=(const basic_value\u0026amp; v) basic_value\u0026amp; operator=(basic_value\u0026amp;\u0026amp; v) template\u0026lt;typename TI\u0026gt; basic_value\u0026amp; operator=(basic_value\u0026lt;TI\u0026gt; other) 右辺のbasic_valueを代入します。\noperator=(T) # template\u0026lt;typename T\u0026gt; basic_value\u0026amp; operator=(T x) Tに対応する値を代入します。\nsource_locationの指す内容は破棄されます。\nもし同じ型の値を持っていたなら、元のフォーマット情報が保持されます。\nis\u0026lt;T\u0026gt;() # bool is\u0026lt;T\u0026gt;() const noexcept 条件 # Tは厳密にTOML型であること。つまり、値に対応するtoml::value::xxx_typeのいずれかであること。\n戻り値 # 格納している型がTと一致した場合trueを、そうでない場合はfalseを返します。\nis(toml::value_t) # bool is(toml::value_t t) const noexcept 戻り値 # 格納している型のタグがtと一致した場合trueを、そうでない場合はfalseを返します。\nis_xxx() # bool is_boolean() const noexcept; bool is_integer() const noexcept; bool is_floating() const noexcept; bool is_string() const noexcept; bool is_offset_datetime() const noexcept; bool is_local_datetime() const noexcept; bool is_local_date() const noexcept; bool is_local_time() const noexcept; bool is_array() const noexcept; bool is_table() const noexcept; 戻り値 # 格納している型がその型である場合trueを、そうでない場合はfalseを返します。\nis_empty() # bool is_empty() const noexcept; 戻り値 # デフォルト構築され値が代入されていない場合trueを、そうでない場合はfalseを返します。\nis_array_of_tables() # bool is_array_of_tables() const noexcept; 戻り値 # 格納している型が配列であり、空ではなく、全要素がテーブルの場合はtrueを、そうでない場合はfalseを返します。\ntype() # toml::value_t type() const noexcept 戻り値 # 格納している型に対応するタグを返します。\nas_xxx() # boolean_type const\u0026amp; as_boolean () const; integer_type const\u0026amp; as_integer () const; floating_type const\u0026amp; as_floating () const; string_type const\u0026amp; as_string () const; offset_datetime_type const\u0026amp; as_offset_datetime() const; local_datetime_type const\u0026amp; as_local_datetime () const; local_date_type const\u0026amp; as_local_date () const; local_time_type const\u0026amp; as_local_time () const; array_type const\u0026amp; as_array () const; table_type const\u0026amp; as_table () const; boolean_type \u0026amp; as_boolean (); integer_type \u0026amp; as_integer (); floating_type \u0026amp; as_floating (); string_type \u0026amp; as_string (); offset_datetime_type\u0026amp; as_offset_datetime(); local_datetime_type \u0026amp; as_local_datetime (); local_date_type \u0026amp; as_local_date (); local_time_type \u0026amp; as_local_time (); array_type \u0026amp; as_array (); table_type \u0026amp; as_table (); 戻り値 # 指定された型への参照を返します。\n例外 # 格納されている値の型が指定と異なる場合、toml::type_errorを送出します。\nas_xxx(std::nothrow) # std::nothrowオブジェクトを渡して呼び出します。\nboolean_type const\u0026amp; as_boolean (const std::nothrow_t\u0026amp;) const noexcept; integer_type const\u0026amp; as_integer (const std::nothrow_t\u0026amp;) const noexcept; floating_type const\u0026amp; as_floating (const std::nothrow_t\u0026amp;) const noexcept; string_type const\u0026amp; as_string (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_type const\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_type const\u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) const noexcept; local_date_type const\u0026amp; as_local_date (const std::nothrow_t\u0026amp;) const noexcept; local_time_type const\u0026amp; as_local_time (const std::nothrow_t\u0026amp;) const noexcept; array_type const\u0026amp; as_array (const std::nothrow_t\u0026amp;) const noexcept; table_type const\u0026amp; as_table (const std::nothrow_t\u0026amp;) const noexcept; boolean_type \u0026amp; as_boolean (const std::nothrow_t\u0026amp;) noexcept; integer_type \u0026amp; as_integer (const std::nothrow_t\u0026amp;) noexcept; floating_type \u0026amp; as_floating (const std::nothrow_t\u0026amp;) noexcept; string_type \u0026amp; as_string (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_type\u0026amp; as_offset_datetime(const std::nothrow_t\u0026amp;) noexcept; local_datetime_type \u0026amp; as_local_datetime (const std::nothrow_t\u0026amp;) noexcept; local_date_type \u0026amp; as_local_date (const std::nothrow_t\u0026amp;) noexcept; local_time_type \u0026amp; as_local_time (const std::nothrow_t\u0026amp;) noexcept; array_type \u0026amp; as_array (const std::nothrow_t\u0026amp;) noexcept; table_type \u0026amp; as_table (const std::nothrow_t\u0026amp;) noexcept; 戻り値 # 指定された型への参照を返します。\n備考 # 格納されている値の型が指定と異なる場合、未定義動作となります。\nas_xxx_fmt() # フォーマット情報にアクセスします。\nboolean_format_info \u0026amp; as_boolean_fmt (); integer_format_info \u0026amp; as_integer_fmt (); floating_format_info \u0026amp; as_floating_fmt (); string_format_info \u0026amp; as_string_fmt (); offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(); local_datetime_format_info \u0026amp; as_local_datetime_fmt (); local_date_format_info \u0026amp; as_local_date_fmt (); local_time_format_info \u0026amp; as_local_time_fmt (); array_format_info \u0026amp; as_array_fmt (); table_format_info \u0026amp; as_table_fmt (); boolean_format_info const\u0026amp; as_boolean_fmt () const; integer_format_info const\u0026amp; as_integer_fmt () const; floating_format_info const\u0026amp; as_floating_fmt () const; string_format_info const\u0026amp; as_string_fmt () const; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt() const; local_datetime_format_info const\u0026amp; as_local_datetime_fmt () const; local_date_format_info const\u0026amp; as_local_date_fmt () const; local_time_format_info const\u0026amp; as_local_time_fmt () const; array_format_info const\u0026amp; as_array_fmt () const; table_format_info const\u0026amp; as_table_fmt () const; 戻り値 # 指定された型のフォーマット情報を持つ構造体への参照を返します。\n例外 # 格納されている値の型が指定と異なる場合、toml::type_errorを送出します。\nas_xxx_fmt(std::nothrow) # std::nothrowオブジェクトを渡して呼び出します。\nboolean_format_info \u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) noexcept; integer_format_info \u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) noexcept; floating_format_info \u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) noexcept; string_format_info \u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) noexcept; offset_datetime_format_info\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) noexcept; local_datetime_format_info \u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) noexcept; local_date_format_info \u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) noexcept; local_time_format_info \u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) noexcept; array_format_info \u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) noexcept; table_format_info \u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) noexcept; boolean_format_info const\u0026amp; as_boolean_fmt (const std::nothrow_t\u0026amp;) const noexcept; integer_format_info const\u0026amp; as_integer_fmt (const std::nothrow_t\u0026amp;) const noexcept; floating_format_info const\u0026amp; as_floating_fmt (const std::nothrow_t\u0026amp;) const noexcept; string_format_info const\u0026amp; as_string_fmt (const std::nothrow_t\u0026amp;) const noexcept; offset_datetime_format_info const\u0026amp; as_offset_datetime_fmt(const std::nothrow_t\u0026amp;) const noexcept; local_datetime_format_info const\u0026amp; as_local_datetime_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_date_format_info const\u0026amp; as_local_date_fmt (const std::nothrow_t\u0026amp;) const noexcept; local_time_format_info const\u0026amp; as_local_time_fmt (const std::nothrow_t\u0026amp;) const noexcept; array_format_info const\u0026amp; as_array_fmt (const std::nothrow_t\u0026amp;) const noexcept; table_format_info const\u0026amp; as_table_fmt (const std::nothrow_t\u0026amp;) const noexcept; 戻り値 # 指定された型のフォーマット情報を持つ構造体への参照を返します。\n備考 # 格納されている値の型が指定と異なる場合、未定義動作となります。\nat(key) # value_type\u0026amp; at(const key_type\u0026amp; key); value_type const\u0026amp; at(const key_type\u0026amp; key) const; 戻り値 # 今のvalueをtableにキャストしたあと、keyによって指定される要素を返します。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\nもし格納しているtableが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。\noperator[](key) # value_type\u0026amp; operator[](const key_type\u0026amp; k); 戻り値 # 今のvalueをtableにキャストしたあと、keyによって指定される要素への参照です。\nもしkeyによって指定される要素が存在しない場合、デフォルト構築されます。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\ncount(key) # std::size_t count(const key_type\u0026amp; key) const; 戻り値 # 今のvalueをtableにキャストしたあと、keyに対応する要素が含まれていれば1、そうでなければ0を返します。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\ncontains(key) # bool contains(const key_type\u0026amp; key) const; 戻り値 # 今のvalueをtableにキャストしたあと、keyに対応する要素が含まれていればtrue、そうでなければfalseを返します。\n例外 # もし格納している値がtableではなかった場合、toml::type_errorを送出します。\nat(idx) # value_type\u0026amp; at(const std::size_t idx); value_type const\u0026amp; at(const std::size_t idx) const; 戻り値 # 今のvalueをarrayにキャストしたあと、idxによって指定される要素を返します。\n例外 # もし格納している値がarrayではなかった場合、toml::type_errorを送出します。\nもし格納しているarrayが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。\noperator[](idx) # value_type\u0026amp; operator[](const std::size_t idx) noexcept; value_type const\u0026amp; operator[](const std::size_t idx) const noexcept; 戻り値 # 今のvalueをarrayにキャストしたあと、idxによって指定される要素への参照を返します。\n備考 # 一切のチェックを行いません。\nもし格納している値がarrayではなかった場合、あるいはidxによって指定される要素が存在しない場合、未定義動作となります。\npush_back(value) # void push_back(const value_type\u0026amp; x); void push_back(value_type\u0026amp;\u0026amp; x); valueをarrayにキャストしたのち、そのarrayに対してpush_backを実行します。\n戻り値 # なし。\n例外 # 格納している値がarrayではなかった場合、toml::type_errorを送出します。\nemplace_back(args...) # template\u0026lt;typename ... Ts\u0026gt; value_type\u0026amp; emplace_back(Ts\u0026amp;\u0026amp; ... args) valueをarrayにキャストしたのち、そのarrayに対してemplace_backを実行します。\n戻り値 # 構築した値への参照。\n例外 # 格納している値がarrayではなかった場合、toml::type_errorを送出します。\nsize() # std::size_t size() const; 戻り値 # 今のvalueをarray、string、tableのどれかにキャストしたあと、その要素数を返します。 stringの場合、文字数を返します。\n例外 # 格納している値がarray, string, tableのどれでもなかった場合、toml::type_errorを送出します。\nlocation() # source_location location() const; 戻り値 # そのvalueが定義されたTOML文書内の位置を表すsource_locationオブジェクトを返します。\nもしTOML文書のパースによって構築されたものでない場合、どこも指示さないsource_locationを返します。\ncomments() # comment_type const\u0026amp; comments() const noexcept; comment_type\u0026amp; comments() noexcept; 戻り値 # コメント用コンテナへの参照を返します。\n非メンバ関数 # operator== # template\u0026lt;typename TC\u0026gt; bool operator==(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); 以下を満たすとき、2つのbasic_value\u0026lt;T\u0026gt;は同値となります。\nTOML型が同一 含む値が同一 コメントがバイト単位で同一 operator!= # template\u0026lt;typename TC\u0026gt; bool operator!=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs == rhs); } operator\u0026lt; # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp;, const basic_value\u0026lt;TC\u0026gt;\u0026amp;); 以下の順番で比較されます。\nTOML型 TOML型が同一の場合、その値 TOML型とその値が同一の場合、コメント TOML型は、以下の順に小さい値を持ちます。\ntoml::value_t::empty toml::value_t::boolean toml::value_t::integer toml::value_t::floating toml::value_t::string toml::value_t::offset_datetime toml::value_t::local_datetime toml::value_t::local_date toml::value_t::local_time toml::value_t::array toml::value_t::table operator\u0026lt;= # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026lt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return (lhs \u0026lt; rhs) || (lhs == rhs); } operator\u0026gt; # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt;= rhs); } operator\u0026gt;= # array_typeとtable_typeがoperator\u0026lt;を持っている場合のみ定義されます。\ntemplate\u0026lt;typename TC\u0026gt; bool operator\u0026gt;=(const basic_value\u0026lt;TC\u0026gt;\u0026amp; lhs, const basic_value\u0026lt;TC\u0026gt;\u0026amp; rhs) { return !(lhs \u0026lt; rhs); } toml::type_error # 型エラーの際に送出される例外です。\n型エラーが生じた値の位置情報が格納されています。\nstruct type_error final : public ::toml::exception { public: type_error(std::string what_arg, source_location loc); ~type_error() noexcept override = default; const char* what() const noexcept override; source_location const\u0026amp; location() const noexcept; }; toml::make_error_info # template\u0026lt;typename TC, typename ... Ts\u0026gt; error_info make_error_info( std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); basic_value の location() を呼び出して、その source_location を make_error_info に渡して error_info を作成します。\n詳しくは error_info を参照してください。\ntoml::format_error # template\u0026lt;typename TC, typename ... Ts\u0026gt; std::string format_error(std::string title, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v, std::string msg, Ts\u0026amp;\u0026amp; ... tail); basic_value の location() を呼び出して、その source_location を format_error に渡して error_info を作成し、それを文字列化して返します。\n詳しくは error_info を参照してください。\n関連項目 # comments.hpp source_location.hpp types.hpp visit.hpp "},{"id":35,"href":"/toml11/ja/docs/reference/version/","title":"version.hpp","section":"reference","content":" version.hpp # version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。\nマクロ # TOML11_VERSION_MAJOR # toml11のメジャーバージョンです。\nTOML11_VERSION_MINOR # toml11のマイナーバージョンです。\nTOML11_VERSION_PATCH # toml11のパッチバージョンです。\n関数 # license_notice # namespace toml { const char* license_notice() noexcept; } ライセンス条項を返します。\nソースコードを公開せずに頒布する際の利便性のために用意されています。\n"},{"id":36,"href":"/toml11/ja/docs/reference/visit/","title":"visit.hpp","section":"reference","content":" visit.hpp # visit.hppでは、toml::visitが定義されます。\ntoml::visit # 関数 # namespace toml { template\u0026lt;typename Visitor, typename TC\u0026gt; /* Visitor を basic_value\u0026lt;TC\u0026gt;の値で呼び出した際の返り値 */ visit(Visitor\u0026amp;\u0026amp; visitor, const basic_value\u0026lt;TC\u0026gt;\u0026amp; v); template\u0026lt;typename Visitor, typename TC\u0026gt; /* Visitor を basic_value\u0026lt;TC\u0026gt;の値で呼び出した際の返り値 */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp; v) template\u0026lt;typename Visitor, typename TC\u0026gt; /* Visitor を basic_value\u0026lt;TC\u0026gt;の値で呼び出した際の返り値 */ visit(Visitor\u0026amp;\u0026amp; visitor, basic_value\u0026lt;TC\u0026gt;\u0026amp;\u0026amp; v) } basic_value\u0026lt;TC\u0026gt;が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。\n条件 # Visitorは、basic_value\u0026lt;TC\u0026gt;が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。\nまた、それぞれのオーバーロードで返り値は同じであることが要求されます。\n例 # #include \u0026lt;toml.hpp\u0026gt; #include \u0026lt;iostream\u0026gt; struct type_name_of { std::string operator()(const toml::value::boolean_type \u0026amp;) const {return \u0026#34;boolean\u0026#34;;} std::string operator()(const toml::value::integer_type \u0026amp;) const {return \u0026#34;integer\u0026#34;;} std::string operator()(const toml::value::floating_type \u0026amp;) const {return \u0026#34;floating\u0026#34;;} std::string operator()(const toml::value::string_type \u0026amp;) const {return \u0026#34;string\u0026#34;;} std::string operator()(const toml::value::local_time_type \u0026amp;) const {return \u0026#34;local_time\u0026#34;;} std::string operator()(const toml::value::local_date_type \u0026amp;) const {return \u0026#34;local_date\u0026#34;;} std::string operator()(const toml::value::local_datetime_type \u0026amp;) const {return \u0026#34;local_datetime\u0026#34;;} std::string operator()(const toml::value::offset_datetime_type\u0026amp;) const {return \u0026#34;offset_datetime\u0026#34;;} std::string operator()(const toml::value::array_type \u0026amp;) const {return \u0026#34;array\u0026#34;;} std::string operator()(const toml::value::table_type \u0026amp;) const {return \u0026#34;table\u0026#34;;} }; int main() { toml::value v(3.14); std::cout \u0026lt;\u0026lt; toml::visit(type_name_of{}, v) \u0026lt;\u0026lt; std::endl; // floating return 0; } 関連項目 # value.hpp "}] \ No newline at end of file diff --git a/ja.search.min.750d637ed1df7950d71803a3ae240a9c1316c25be82019605807ad9d9724518e.js b/ja.search.min.750d637ed1df7950d71803a3ae240a9c1316c25be82019605807ad9d9724518e.js new file mode 100644 index 00000000..9c678e28 --- /dev/null +++ b/ja.search.min.750d637ed1df7950d71803a3ae240a9c1316c25be82019605807ad9d9724518e.js @@ -0,0 +1 @@ +"use strict";(function(){const o="/toml11/ja.search-data.min.fa09cc522c4a93fc076bd8faf0b07efa2ed3c02ae773cc7d80ce188d80fc981a.json",i=Object.assign({encode:!1,tokenize:function(e){return e.replace(/[\x00-\x7F]/g,"").split("")}},{includeScore:!0,useExtendedSearch:!0,fieldNormWeight:1.5,threshold:.2,ignoreLocation:!0,keys:[{name:"title",weight:.7},{name:"content",weight:.3}]}),e=document.querySelector("#book-search-input"),t=document.querySelector("#book-search-results");if(!e)return;e.addEventListener("focus",n),e.addEventListener("keyup",s),document.addEventListener("keypress",a);function a(t){if(t.target.value!==void 0)return;if(e===document.activeElement)return;const n=String.fromCharCode(t.charCode);if(!r(n))return;e.focus(),t.preventDefault()}function r(t){const n=e.getAttribute("data-hotkeys")||"";return n.indexOf(t)>=0}function n(){e.removeEventListener("focus",n),e.required=!0,fetch(o).then(e=>e.json()).then(e=>{window.bookSearchIndex=new Fuse(e,i)}).then(()=>e.required=!1).then(s)}function s(){for(;t.firstChild;)t.removeChild(t.firstChild);if(!e.value)return;const n=window.bookSearchIndex.search(e.value).slice(0,10);n.forEach(function(e){const n=c("
  • "),s=n.querySelector("a"),o=n.querySelector("small");s.href=e.item.href,s.textContent=e.item.title,o.textContent=e.item.section,t.appendChild(n)})}function c(e){const t=document.createElement("div");return t.innerHTML=e,t.firstChild}})() \ No newline at end of file diff --git a/ja/404.html b/ja/404.html new file mode 100644 index 00000000..fede5781 --- /dev/null +++ b/ja/404.html @@ -0,0 +1,2 @@ +404 Page not found | toml11 +

    404

    Page Not Found

    toml11

    \ No newline at end of file diff --git a/ja/categories/index.html b/ja/categories/index.html new file mode 100644 index 00000000..9863ebf6 --- /dev/null +++ b/ja/categories/index.html @@ -0,0 +1,9 @@ +Categories | toml11 + +
    Categories +
    \ No newline at end of file diff --git a/ja/categories/index.xml b/ja/categories/index.xml new file mode 100644 index 00000000..f4d5cec9 --- /dev/null +++ b/ja/categories/index.xml @@ -0,0 +1 @@ +Categories on toml11https://toruniina.github.io/toml11/ja/categories/Recent content in Categories on toml11Hugoja \ No newline at end of file diff --git a/ja/categories/page/1/index.html b/ja/categories/page/1/index.html new file mode 100644 index 00000000..3fc6bb58 --- /dev/null +++ b/ja/categories/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/ja/categories/ + \ No newline at end of file diff --git a/ja/docs/changelog/index.html b/ja/docs/changelog/index.html new file mode 100644 index 00000000..e3dd5714 --- /dev/null +++ b/ja/docs/changelog/index.html @@ -0,0 +1,154 @@ +changelog | toml11 + +
    changelog +

    Change Log +#

    v4.1.0 +#

    Added +#

    • std::get<std::u8string>をサポート
    • toml::value(std::u8string)をサポート
    • string_type = std::u8stringをサポート
    • operator<<(std::ostream&, toml::value)をサポート
    • toml::integer_formatに、16進数表示で大文字を使うことを指定するbool uppercaseを追加
    • templateを使って実装された into_toml() をサポート (by 萧迩珀)

    Fixed +#

    • Windowsで\r\nが改行に使われた際、出力時に\rが重複する問題を修正 (by Andreas Keller)

    Changed +#

    • CIで複数コアを使うことでビルドを高速化

    v4.0.3 +#

    Fixed +#

    • toml_fwd.hppを使用した際にデフォルト引数が重複する問題を修正
    • toml::valueを複数渡した際にtoml::make_error_infoが使えない問題を修正
    • std::reference_wrapperを持つtoml::resultをコピー・ムーブする際の問題を修正
    • hugoの最新版でドキュメントがビルドできない問題を修正
    • コンパイラによる軽微な警告を多数修正
    • CMakeの互換性に関する警告を抑制

    Changed +#

    • CIビルドで-Werror, /WXを追加
    • CIビルドでMSVCのwarningレベルを/W3から/W4に変更
    • READMEでより多くの機能を紹介するよう更新

    v4.0.2 +#

    Fixed +#

    • parse(FILE*) 内の fread の結果をチェック
    • toml11/version.hppのマクロを修正
    • コンパイルオプションに関するドキュメントの更新
    • ファイルオープンモードに関するドキュメントの更新

    Changed +#

    • CMakeLists.txt内のバージョン番号をversion.hppから取得するように変更

    v4.0.1 +#

    Fixed +#

    • sematic_version::{major, minor}<sys/sysmacro.h> 内で定義されるマクロの衝突を解消
    • discard_commentsoperator<< の定義を修正 (by Egor Pugin)
    • format_locationを使用した際に最初の空行が出ない問題を解決
    • 改行文字のみを含む行を指すsource_locationでエラーメッセージを生成した際に、同じ行が二回表示される問題を解決
    • README.md内のリンクを修正
    • example/unicodeのREADMEのタイトルを修正

    Added +#

    • mainに変更があったとき、single_include/toml.hppを自動生成するようCIを設定

    v3からv4への変化 +#

    破壊的変更 +#

    toml::basic_valuetemplate引数を変更 +#

    toml11 v3では、toml::basic_valueはコメントコンテナ、テーブル型コンテナ、配列型コンテナをそれぞれ取っていました。

    template<typename Comment,
    +         template<typename ...> class Table = std::unordered_map,
    +         template<typename ...> class Array = std::vector>
    +class basic_value;
    +

    ですが、integer_typeなどを変更したいという場合にはこれでは対応できません。

    toml11 v4では、toml::basic_valueは単一のTypeConfigを受け取り、より多くの型を変更可能にします。

    template<typename TypeConfig>
    +class basic_value;
    +

    デフォルトではtoml::valueが格納する型は変わりません。

    型を変更する際は、 +type_config +を参照してください。

    toml::basic_valuestd::initializer_listサポートを削除 +#

    toml11 v3では、 toml::valuestd::initializer_list を取るオーバーロードが用意されていました。

    これにより、 toml::value を配列やテーブルで初期化する際により直観的な書き方が可能でした。

    // toml11 v3
    +toml::value v{1,2,3,4,5};
    +toml::value v{ {"a", 42}, {"b", "foo"} };
    +

    しかし、これは同時に以下のような問題を引き起こしました。

    一つ目は、1要素の配列と通常の値の区別がつかず、常に配列になってしまうことです。

    // toml11 v3
    +toml::value v{1}; // 1 ではなく [1,] になってしまう
    +

    統一初期化記法が普及した現在、これは非常に不便です。

    二つ目は、値が全て文字列のテーブルと、ネストされた配列の区別がつかないことです。

    // toml11 v3
    +toml::value v{ {"a", "foo"}, {"b", "bar"} };
    +// {a = "foo", b = "bar"}
    +// [["a", "foo"], ["b", "bar"]]
    +// のどちらでもあり得る
    +

    これらの問題は言語仕様上解決が困難です。

    toml11 v4では、混乱を避けるため、std::initializer_listサポートを削除しました。

    toml::value を配列で初期化する際はexplicitに toml::array を、 +テーブルで初期化する際はexplicitに toml::table を指定する必要があります。

    // toml11 v4
    +toml::value v(toml::array{1,2,3,4,5});
    +toml::value v(toml::table{ {"a", 42}, {"b", "foo"} });
    +
    +toml::value v{toml::array{1}}; // [1,]
    +toml::value v{1}               // 1
    +
    +toml::value v{toml::table{{"a", "foo"}, {"b", "bar"}}};
    +toml::value v{toml::array{toml::array{"a", "foo"}, toml::array{"b", "bar"}}};
    +

    これにより toml::value をテーブルや配列で初期化する際に少し不便になりますが、 +explicitに型情報を記述することにより予測不能な値になることは避けることができます。

    toml::basic_value::is_uninitialized()is_empty() に変更 +#

    toml11 v3では、初期化されていない basic_value かどうかを判定する関数は +is_uninitialized でした。

    しかし、toml11 v4では言語拡張で null をサポートするため、意図的に空にされた値が構築される可能性があります。 +なので命名を変更し、 is_empty としました。

    toml::string を廃止、フォーマット情報を陽に格納 +#

    toml11 v3では、文字列が basicliteral かの情報を保持するため、 +格納する文字列型に toml::string という std::string の薄いラッパーを使用していました。

    // toml11 v3
    +namespace toml
    +{
    +enum class string_t : std::uint8_t
    +{
    +    basic   = 0,
    +    literal = 1,
    +};
    +
    +struct string
    +{
    +    string_t    kind;
    +    std::string str;
    +};
    +} // toml
    +

    toml11 v4では、数値型の基数や配列を複数行にするかどうかなどのより多くのフォーマット情報を持たせるため、 +全ての型に xxx_format 型を用意し、値とペアで格納することにしました。

    // toml11 v4
    +enum class string_format : std::uint8_t
    +{
    +    basic             = 0,
    +    literal           = 1,
    +    multiline_basic   = 2,
    +    multiline_literal = 3
    +};
    +
    +struct string_format_info
    +{
    +    string_format fmt = string_format::basic;
    +    bool start_with_newline    = false;
    +};
    +

    これにより、より細かいフォーマット情報を保持することができるようになり、 +特に数値型や配列、テーブル型のフォーマット情報がパース後も維持できるようになりました。

    toml::formatの引数を変更 +#

    toml11 v3では、 toml::format が数値型の精度や幅などの値を受け取っていました。

    しかし、これでは細かなフォーマット指定ができず、予想したようなファイルにシリアライズできませんでした。

    toml11 v4では、各 toml::value にそれぞれのフォーマット情報を格納したため、 +より細かいフォーマット情報を toml::value 自体が持ち運べるようになりました。

    これにより、 toml::format 自体はフォーマット指定を受け取らず、 +フォーマット時に使用できる言語機能フラグを持つ toml::spec のみを取るようになりました。

    toml::source_locationのメンバ関数を変更 +#

    toml11 v3では、 toml::source_location のメンバ型は一行分だけを意識したものでした。

    toml11 v4では、 toml::source_location のメンバ型は複数行が前提になります。

    toml::format_underlinetoml::format_locationに変更 +#

    toml11 v3では、 toml::source_location を使用して位置情報を文字列化するとき、 +toml::format_underline を使用していました。

    しかしこれは名称としてわかりにくいため、 toml::format_location に変更しました。

    format_errorの引数を変更 +#

    toml11 v3ではエラー情報を表すクラスがなかったため、toml::format_errorの引数が複雑になっていました。

    template<typename C, template<typename ...> class T, template<typename ...> class A>
    +std::string format_error(const std::string& err_msg,
    +        const basic_value<C, T, A>& v, const std::string& comment,
    +        std::vector<std::string> hints = {},
    +        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
    +
    +template<typename C, template<typename ...> class T, template<typename ...> class A>
    +inline std::string format_error(const std::string& err_msg,
    +        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
    +        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
    +        std::vector<std::string> hints = {},
    +        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
    +
    +template<typename C, template<typename ...> class T, template<typename ...> class A>
    +inline std::string format_error(const std::string& err_msg,
    +        const toml::basic_value<C, T, A>& v1, const std::string& comment1,
    +        const toml::basic_value<C, T, A>& v2, const std::string& comment2,
    +        const toml::basic_value<C, T, A>& v3, const std::string& comment3,
    +        std::vector<std::string> hints = {},
    +        const bool colorize = TOML11_ERROR_MESSAGE_COLORIZED);
    +

    toml11 v4では、class error_infomake_error_infoを導入し、format_errorの引数を簡略化しました。

    std::string format_error(const error_info& err);
    +std::string format_error(const std::string& errkind, const error_info& err);
    +
    +template<typename ... Ts>
    +std::string format_error(std::string title,
    +        source_location loc, std::string msg, Ts&& ... tail);
    +
    +template<typename TC, typename ... Ts>
    +std::string format_error(std::string title,
    +        const basic_value<TC>& v, std::string msg, Ts&& ... tail);
    +

    toml::color の制御を変更 +#

    toml11 v3では、出力に色を付けるかどうかに toml::colorize というマニピュレータを、 +toml::color::enable/disable と並列で使用していました。

    マニピュレータはストリームごとに色を付けるかどうかを決定できるものでしたが、 +v4でストリームを使用する頻度が下がったことと、内部で使用する +std::ios_base::xalloc がC++11ではスレッドセーフではないことなどから、 +toml::color::enable/disable のみを使用するようにし、 toml::colorize を削除しました。

    破壊的でない変更 +#

    parse_strの追加 +#

    toml11 v3では、文字列そのものを取るtoml::parse関数はありませんでした。 +なので文字列をパースする際にはstd::istringstreamを使う必要がありました。

    これは不便なので、toml::parse_strを追加し、文字列を直接パース出来るようにしました。

    try_parseの追加 +#

    toml11 v3では、パーサはエラーを発見した際にはtoml::syntax_errorを送出していました。

    しかし、例外を投げられない環境や、パフォーマンスの都合や記法の都合によって例外を投げたくない場合があります。

    toml11 v4では toml::result を使用して、例外を投げずにパース失敗を伝える toml::try_parse を実装しました。

    これも必ず例外を投げないというわけではなく、使用している標準ライブラリの内部でのエラー、 +例えばメモリ不足によるアロケーション失敗での std::bad_alloc などは送出される可能性があります。

    バイト列のパースをサポート +#

    ファイルなど以外の方法で得られたTOMLコンテンツをパース出来るようにするため、 +std::vector<unsigned char> を受け取る toml::parse, toml::try_parse を追加しました。

    toml::specの追加 +#

    toml11 v3では、TOML言語側の新機能は全て取り込み、またTOML言語の新バージョンに導入されることが決定した機能も +マクロ TOML11_USE_UNRELEASED_TOML_FEATURES によって制御していました。

    これは、toml11 v3を開発していた時点では TOML言語は0.4.0から0.5.0で、1.0.0に到達していなかったためです。

    最新のTOML言語仕様に全てのユーザーが詳しいわけではないため、 +古い言語使用に基づいたエラーメッセージを表示すると、コミュニティ全体を混乱させてしまいます。 +よって、v1.0.0に達するまでは、できる限り素早く新しい言語仕様を提供し、かつユーザーにもアップデートを促す必要がありました。

    しかし、現在のTOML言語仕様はv1.0.0です。 +そのため、TOML v1.1.0がリリースされた後でもv1.0.0を使用する、という選択肢に気を配る必要が生じました。

    よって、より柔軟にTOML言語仕様を選択できるよう、toml::specを導入して、TOML言語バージョンを実行時に変更できるようにしました。

    また、toml::specでは言語機能ごとにフラグを設定し、特定の言語機能のみを試すこともできるようにしました。

    これは、toml11 v4特有の言語拡張でも使用します。

    フォーマット情報の追加 +#

    toml11 v3では、文字列を除いてフォーマット情報が保存されず、シリアライズ時に考慮できるのは幅と精度だけでした。

    しかし、これでは16進数整数がシリアライズ時に10進数になってしまったり、確実にinline tableにする方法がありませんでした。

    toml11 v4では、全てのTOML型にフォーマット情報(integer_format etc)を追加し、 +パース時とシリアライズ時に考慮するようにしました。

    これによって、16進数整数や、インラインテーブル等のフォーマット情報をより細かく、値ごとに設定できるようになりました。

    デフォルトでコメントを維持するよう変更 +#

    toml11 v3では、デフォルトではコメントがパースされず、シリアライズもされませんでした。

    これは、コメントが後期に導入された機能で、特別なハックによって読み込まれていたためです。

    toml11 v4では、デフォルトでコメントをパースし、保存し、シリアライズするようになりました。

    また、パーサの実装も大幅に変更され、コメントが他の要素と同様にパースされるようになりました。

    single_include/toml.hpp の追加 +#

    toml11は多機能なライブラリなので、開発効率のために機能ごとに異なるヘッダファイルを持っています。 +ですが、これはインストールにある程度の手間が必要ということでもあります。

    そこで、toml11 v4から全てのヘッダファイルを適切な順序で結合した single_include/toml.hpp ファイルを追加し、 +単一のファイルで完結するライブラリをコピーするだけで導入できるようにしました。

    コンパイル済みライブラリを選択可能に +#

    toml11は template を多用しているため、コンパイル時間が長くなります。

    toml11 v4では、できるだけコンパイル可能な関数を増やし、それらを先にライブラリとしてコンパイルできるようにしました。

    これにより、大規模な開発で使用する際にコンパイル時間を短くできると期待できます。

    リファレンス・ドキュメントの追加 +#

    これまでは、READMEにすべてのfeatureを記載しており、関数の詳細な定義を示すリファレンスや、また日本語での資料などがありませんでした。

    toml11 v4では、リファレンスを追加したドキュメントを同梱し、また日本語・英語両方で同一の内容を記載します。

    ただし、ライブラリ作者は日本語母語話者であるため、日本語の内容を第一とし、英語の内容がそれと異なっていた場合は日本語の内容が正しいものとします。

    \ No newline at end of file diff --git a/ja/docs/changelog/index.xml b/ja/docs/changelog/index.xml new file mode 100644 index 00000000..85b432d3 --- /dev/null +++ b/ja/docs/changelog/index.xml @@ -0,0 +1 @@ +changelog on toml11https://toruniina.github.io/toml11/ja/docs/changelog/Recent content in changelog on toml11Hugoja \ No newline at end of file diff --git a/ja/docs/features/configure_types/index.html b/ja/docs/features/configure_types/index.html new file mode 100644 index 00000000..52634dbc --- /dev/null +++ b/ja/docs/features/configure_types/index.html @@ -0,0 +1,170 @@ +configuring types | toml11 + +
    configuring types +

    型をカスタマイズする +#

    toml::valueinteger_type として std::int64_t を、 +table_type として std::unordered_map<key_type, value_type> を使用します。

    しかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。

    そのため、 toml::valuetemplate 引数を取って格納する型を変えられるように実装されています。

    std::string が実際には std::basic_string<char, std::char_traits<char>, std::allocator<char>> の +エイリアスであるように、 toml::value は実際には toml::basic_value<toml::type_config> のエイリアスです。

    ここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。

    type_config +#

    type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。

    namespace toml
    +{
    +struct type_config
    +{
    +    using comment_type  = preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex);
    +};
    +}
    +

    toml::basic_value<TypeConfig> は、格納する boolean_typeTypeConfig::boolean_type、 +格納する integer_typeTypeConfig::integer_type 、のようにして定義しています。

    また、 array_typeTypeConfig::array_type<toml::basic_value<TypeConfig>> 、 +table_typeTypeConfig::table_type<key_type, toml::basic_value<TypeConfig>> と +定義されます。

    これらのメンバ型とメンバ関数を定義したクラスを toml::basic_value に +渡すことで、その toml::basic_value が持つ型を変更できます。

    parse_intparse_float は、数値型を独自実装のものに変更した際にパース方法を提供するための関数です。 +これらの関数には 0x などのprefixと桁区切りの _ が取り除かれた文字列、 +例えば 123456DEADBEEF が渡されます。 +base には 10, 16, 8, 2 のいずれかが渡されます。 +これらを使って integer_typefloating_type をパース出来るような関数を渡してください。

    デフォルト実装として、toml::read_inttoml::read_float が提供されています。

    static result<integer_type, error_info>
    +parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +{
    +    return toml::read_int<integer_type>(str, src, base);
    +}
    +
    +static result<floating_type, error_info>
    +parse_float(const std::string& str, const source_location src, const bool is_hex)
    +{
    +    return toml::read_float<floating_type>(str, src, is_hex);
    +}
    +

    read_intistream を使用し、16進と8進の場合は std::hex と +std::oct を使用します。2進の場合は掛け算と足し算で実装されています。 +これらをサポートしている型であれば、 read_int をそのまま使用できます。

    read_floatistream を使用します。 +16進浮動小数点数は doublefloat の場合しかサポートされておらず、 +それ以外の型のときに呼ばれると常にパースエラーを返す実装になっているので、 +もし浮動小数点数型をこれら以外の型にし、かつ hexfloat を使用する場合は、 +それを実装してください。 hexfloat を使用しないのであれば、実装する必要はありません。

    テーブル内の値の順序を維持する +#

    デフォルトの toml::type_config の他に、 toml::ordered_type_config が提供されています。 +これは、 table_typeordered_map に変更したものです。

    これを使用したものを toml::ordered_value 、その配列型とテーブル型のエイリアスを +toml::ordered_arraytoml::ordered_table と定義しています。

    toml::parse(...)toml::parse<toml::ordered_type_config>(...) として呼び出すことで、 +toml::ordered_value を使用することができます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::ordered_value input = toml::parse<toml::ordered_type_config>("example.toml");
    +    std::cout << toml::format(input) << std::endl;
    +    return 0;
    +}
    +

    コメントを保存しない +#

    type_configcomment_type でコメントを保存するコンテナを定義しています。

    コメントに特に情報がなく、パースせずに捨ててしまっていい場合は、 comment_type に +toml::discard_comments を指定してください。

    struct wo_comment_config
    +{
    +    using comment_type  = toml::discard_comments; // XXX
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +    {
    +        return toml::read_int<integer_type>(str, src, base);
    +    }
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex)
    +    {
    +        return toml::read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +

    配列にstd::vector以外のコンテナを使用する +#

    TOML配列の実装にvector以外のコンテナ(例:std::deque)を使用するには、 +array_type を以下のように変更してください。

    また、テーブル型のコンテナに unordered_map 以外のコンテナ(例:std::map)を使用するには、 +table_type を以下のように変更してください。

    struct deque_map_config
    +{
    +    using comment_type  = toml::preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::deque<T>; // XXX
    +    template<typename K, typename T>
    +    using table_type = std::map<K, T>; // XXX
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +    {
    +        return toml::read_int<integer_type>(str, src, base);
    +    }
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex)
    +    {
    +        return toml::read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +

    数値型に boost::multiprecision を使用する +#

    boost::multiprecision::cpp_intboost::multiprecision::cpp_bin_float_oct +を使用することで、より幅の広い整数型とより精度の良い浮動小数点数型を使用することができます。

    これらの型はストリーム演算子を実装しているため、デフォルト実装の read_int と +read_float をそのまま使用できます。

    struct large_num_config
    +{
    +    using comment_type  = toml::preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = boost::multiprecision::cpp_int;
    +    using floating_type = boost::multiprecision::cpp_bin_float_oct;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static toml::result<integer_type, toml::error_info>
    +    parse_int(const std::string& str, const toml::source_location src, const std::uint8_t base)
    +    {
    +        return toml::read_int<integer_type>(str, src, base);
    +    }
    +    static toml::result<floating_type, toml::error_info>
    +    parse_float(const std::string& str, const toml::source_location src, const bool is_hex)
    +    {
    +        return toml::read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +
    \ No newline at end of file diff --git a/ja/docs/features/error_message/index.html b/ja/docs/features/error_message/index.html new file mode 100644 index 00000000..47aafc7a --- /dev/null +++ b/ja/docs/features/error_message/index.html @@ -0,0 +1,140 @@ +error message | toml11 + +
    error message +

    エラーメッセージを出力する +#

    toml11は toml::parsetoml::get<T>/find<T>, as_integer() などから +ファイル内の位置情報を含んだエラーメッセージを出力します。

    例えば、パース時に整数の文法エラーを発見した場合、

    [error] bad integer: `_` must be surrounded by digits
    + --> internal string at line 64 in file main.cpp
    +   |
    + 1 | a = 123__456
    +   |        ^-- invalid underscore
    +Hint: valid  : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755
    +Hint: invalid: _42, 1__000, 0123
    +

    あるいは実際に格納されている型と異なる型を要求した場合

    [error] toml::value::as_string(): bad_cast to string
    + --> input.toml
    +   |
    + 1 | a = 123_456
    +   |     ^^^^^^^-- the actual type is integer
    +

    toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。

    この機能を利用することで、TOMLの文法エラーだけでなく、 +例えば正の値でなければならないところに負数が現れた場合などの +アプリケーション固有のエラーメッセージを、TOMLファイル内の位置を指摘しながら +ユーザーに伝えられるということです。

    toml::value の位置情報からエラーメッセージを作成する +#

    toml::value はそれがパースされた位置の情報を持っています。

    その情報は toml::source_location にまとめられ、toml::value::location() で取得できます。

    const toml::value& a = input.at("a");
    +const toml::source_location src = a.location();
    +

    ファイルを toml::parse でパースした場合、そのTOMLファイル名と行数が保存されています。

    toml::parse_str でパースした場合TOMLファイル名はありませんが、代わりに +toml::parse_str を呼び出したC++ソースコードのファイル名と行数がTOMLファイル名として保存されています。 +このページの最初の例は toml::parse_str から出力された例でした。 +ファイル名の部分に注目してください。

    詳細は reference を参照してください。

    toml::source_location または toml::value とそれに付随するエラーメッセージを +toml::make_error_info に渡すことで、エラー情報を構築できます。 +これをtoml::format_error に渡すと、エラーメッセージが std::string にフォーマットされます。

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    const toml::error_info err = toml::make_error_info(
    +            "positive integer is required", // エラーのタイトル
    +            a, "but got negative value"     // 値の横に書くメッセージ
    +        );
    +    std::cerr << toml::format_error(err) << std::endl;
    +}
    +

    これは以下のようになります。

    [error] positive integer is required
    + --> input.toml
    +   |
    + 1 | a = -123456
    +   |     ^^^^^^^-- but got negative value
    +

    最後に補足をつけ足すこともできます。これはインデントされません。

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    const toml::error_info err = toml::make_error_info(
    +            "positive integer is required",      // エラーのタイトル
    +            a, "but got negative value",         // 値の横に書くメッセージ
    +            "Hint: `a` means length of the data" // 補足
    +        );
    +    std::cerr << toml::format_error(err) << std::endl;
    +}
    +
    [error] positive integer is required
    + --> input.toml
    +   |
    + 1 | a = -123456
    +   |     ^^^^^^^-- but got negative value
    +Hint: `a` means length of the data
    +

    toml::value からファイル内の行を出力できるのは、 +パースしたファイルが文字列としてメモリの中に残されているからです。

    パースした文字列はその全体が std::shared_ptrtoml::value に共有されています。 +コピーしてもファイル文字列全体がコピーされることはありません。 +また、そのファイルをパースして構築された toml::value が全てデストラクトされた時点で、 +ファイル情報もメモリ上から解放されます。

    ですので、アプリケーションで使用する際には、 toml::value を直接保存するのではなく +読み込み中に必要な値を全て取り出して、変換した値を保存した方がよいでしょう。

    文字列に色を付ける +#

    エラーメッセージにはANSIエスケープコードを使って色を付けることができます。

    TOML11_COLORIZE_ERROR_MESSAGE をコンパイル時に定義していれば、 +toml11の出力するエラーメッセージはデフォルトで色が付くようになります。

    そうでない場合は、 toml::color::enable() を呼び出すことにより、それ以降で出力される +エラーメッセージには色が付くようになります。 +逆に出力先がコンソールではないなどの理由で色をつけたくない場合は、 +toml::color::disable() を呼び出してください。 +その時点で色が付くようになっているかどうかは、 +toml::color::should_color() の返り値で判定できます。

    詳細は reference を参照してください。

    また、エラーのタイトルやエラーメッセージ、補足にはデフォルトで色が付きませんが、 +toml::color にあるマニピュレータを使って色を付けることも可能です。

    std::ostringstream oss;
    +oss << toml::color::red << "but got negative value";
    +
    +const toml::error_info err = toml::make_error_info(
    +        "positive integer is required",      // Error title
    +        a, oss.str(),                        // Message next to the value
    +        "Hint: `a` means length of the data" // Supplementary message
    +    );
    +

    こちらも、詳細は reference を参照してください。

    エラーメッセージのprefixを[error]から変更する +#

    エラーには種類があり、デフォルトの [error] ではよくない場合もあるでしょう。

    toml::format_error では、 toml::error_info の前に std::string を取って、それを +[error] の代わりに出力することができます。

    例えば、

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    const toml::error_info err = toml::make_error_info(
    +            "positive integer is required",      // エラーのタイトル
    +            a, "but got negative value"          // 値の横に書くメッセージ
    +        );
    +
    +    std::ostringstream prefix;
    +    prefix << toml::color::bold << toml::color::yellow << "[warn]";
    +    std::cerr << toml::format_error(prefix.str(), err) << std::endl;
    +    return 0;
    +}
    +else
    +{
    +    return a.as_integer()
    +}
    +

    このようにすると、 [warn] から始まる警告を出力することができます。

    他にも、toml::format_error に直接 error_info の構成要素を渡すことで、 +[error] なしのエラーメッセージを作成できます。

    const toml::value& a = input.at("a");
    +if(a.as_integer() < 0)
    +{
    +    std::cerr << toml::format_error(
    +            "[warn] positive integer is required",      // エラーのタイトル
    +            a, "but got negative value"          // 値の横に書くメッセージ
    +        ) << std::endl;
    +    return 0;
    +}
    +else
    +{
    +    return a.as_integer()
    +}
    +

    複数の toml::value を指すエラーメッセージを作成する +#

    アプリケーションの設定では、先に読み込んだ値によって後に読み込んだ値が取れる範囲が変わることがあるでしょう。

    そのような場合には、エラーの原因となる別の値を同時に出力したいはずです。

    toml::format_errortoml::make_error_info は、 toml::value とそれに対応するエラーメッセージ std::string のペアを任意個取ることができます。

    std::cerr << toml::format_error(
    +        "[error] invalid range",
    +        a, "minimum value is defined here",
    +        b, "maximum value is defined here",
    +        c, "and it exceeds the range"
    +    ) << std::endl;
    +

    こちらも末尾に補足を追加することができます。

    std::cerr << toml::format_error(
    +        "[error] invalid range",
    +        a, "minimum value is defined here",
    +        b, "maximum value is defined here",
    +        c, "and it exceeds the range",
    +        "Hint: all the value must be in the range, [a, b)"
    +    ) << std::endl;
    +

    toml::value または toml::source_location を渡した場合、必ずそれに関する +エラーメッセージが続く必要があります。 +そうしない場合、非常にわかりにくいコンパイルエラーになります。

    \ No newline at end of file diff --git a/ja/docs/features/extension/index.html b/ja/docs/features/extension/index.html new file mode 100644 index 00000000..53811154 --- /dev/null +++ b/ja/docs/features/extension/index.html @@ -0,0 +1,95 @@ +extension | toml11 + +
    extension +

    TOML言語拡張 +#

    TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 +v1.1.0に向けて議論が続いています。

    そこで議論された機能の中には、有用なケースが少ないと考えられたものや、 +提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。

    toml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 +これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また +サポートされる予定もないことに注意してください。

    また、これらの機能はデフォルトで使用されない設定になっており、 +使用するためには機能フラグをそれぞれ true にしなければなりません。 +非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。

    いくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 +もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は +本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。

    null +#

    TOMLファイル内で値としてnullを使えるようになります。

    a = null
    +b = [ 1, 2, 3, null, 5]
    +

    これを使用するには、 toml::specext_null_valuetrue にします。

    パースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 +ただし、ファイル内の位置情報は設定されます。

    null は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り +"null" という文字列のキーとして解釈されます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec;
    +    spec.ext_null_value = true;
    +
    +    const auto v = toml::parse_str("a = null", spec);
    +
    +    assert(v.at("a").is_empty());
    +    assert(v.at("a").is(toml::value_t::empty));
    +
    +    return 0;
    +}
    +

    浮動小数点数の16進数フォーマット +#

    TOMLファイル内で浮動小数点数に16進数フォーマットを使用できるようになります。

    a = 0x1.91eb851eb851fp+1 # 3.14
    +

    これを使用するには、 toml::specext_hex_floattrue にします。

    フォーマットは printf%a/%A を指定した場合に準拠します。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec;
    +    spec.ext_hex_float = true;
    +
    +    const auto v = toml::parse_str("a = 0x1.91eb851eb851fp+1", spec);
    +
    +    assert(v.at("a").is_floating());
    +    assert(v.at("a").as_floating() == 3.14);
    +
    +    return 0;
    +}
    +

    整数・浮動小数点数のsuffix +#

    TOMLファイル内で数値の後ろにsuffixをつけられるようになります。 +10進数表記の整数と浮動小数点数で使用できます。

    単位を表示するときなどに便利です。

    a = 86_400_sec
    +b = 3.1416_rad
    +c = 10_μm
    +

    ですが、これらはあくまで単なる suffix であり、単位換算は行われません。 +単位換算が必要な場合は、ユーザーが suffix を参照して実装してください。

    これを使用するには、 toml::specext_num_suffixtrue にします。

    数値と接尾辞の間は_で区切られている必要があります。

    数値部分との区別のため、suffixは数値で始まることはできません。

    distance = 100_m  # valid
    +distance = 10_0m  # invalid
    +distance = 10_0_m # valid
    +

    接尾辞はstd::string suffixとしてフォーマット情報に保持されます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec;
    +    spec.ext_hex_float = true;
    +
    +    const auto v = toml::parse_str("a = 86_400_sec", spec);
    +
    +    assert(v.at("a").is_integer());
    +    assert(v.at("a").as_integer() == 86400);
    +    assert(v.at("a").as_integer_fmt().suffix == "sec");
    +
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/index.html b/ja/docs/features/index.html new file mode 100644 index 00000000..a2c68c34 --- /dev/null +++ b/ja/docs/features/index.html @@ -0,0 +1,52 @@ +features | toml11 + +
    features +

    features +#

    ここでは、toml11が提供する主な機能について、例を挙げながら説明します。

    ファイル・文字列をパースする +#

    ファイルや文字列をパースする関数と、それが出力するエラーの扱い方について説明します。

    以下の内容を含みます。

    • ファイルをパースする
    • 文字列をパースする
    • バイト列をパースする
    • 例外を投げずにファイルをパースする
    • 例外を投げずに文字列をパースする
    • 例外を投げずにバイト列をパースする

    toml::valueから値を取り出す +#

    toml::valueが持つデータの型を調べ、取り出す方法、型変換を行う方法について説明します。

    以下の内容を含みます。

    • メンバ関数を使って値の型を調べる
    • メンバ関数を使って値にアクセスする
    • コメントにアクセスする
    • インラインテーブル・ドットキーの取り扱い
    • 日付情報の取り扱い
    • toml::get<T>を使って変換する
    • toml::get_orを使って失敗時の値を指定する
    • toml::find<T>を使って検索と変換を行う
    • toml::find_orを使って失敗時の値を指定する
    • ユーザー定義型との変換を定義する
    • toml::visitで関数を適用する
    • toml::valueを構築する

    エラーメッセージを作る +#

    toml::valueの値を使って、TOMLファイル中の位置情報つきのエラーメッセージを生成する方法について説明します。

    以下の内容を含みます。

    • toml::value の位置情報を取り出す
    • エラーメッセージを構築する
    • 出力に色を付ける

    TOMLファイルを出力する +#

    toml::valueの値をフォーマットする方法と、可能なフォーマット指定について説明します。

    以下の内容を含みます。

    • toml::valueの値ごとにフォーマットを指定する
    • toml::valueをフォーマットして文字列化する

    toml::valueの型を変更する +#

    toml::valueが格納する型(integer_typetable_typeをカスタマイズする方法について説明します。

    以下の内容を含みます。

    • type_configの定義
    • ordered_type_configを使用する
    • コメントを保存しないようにする
    • std::dequeなどの異なるコンテナを使用する
    • boost::multiprecisionなどの異なる数値型を使用する

    TOMLリテラル +#

    C++内にTOMLファイルを埋め込むための_tomlリテラルについて説明します。

    以下の内容を含みます。

    • TOMLリテラルを使用する

    TOML言語バージョン +#

    toml11がサポートするTOML言語のバージョン、主にTOML-v1.1.0で追加された言語機能を制御する方法について説明します。

    以下の内容を含みます。

    • TOML言語の1.1.0を使用する
    • TOML言語の1.1.0の一部の機能のみ使用する

    TOML言語拡張 +#

    toml11独自のTOML言語拡張について説明します。

    以下の内容を含みます。

    • null をサポートする
    • 浮動小数点数の16進数フォーマットをサポートする
    • 数値に単位を付けられるようにする
    \ No newline at end of file diff --git a/ja/docs/features/index.xml b/ja/docs/features/index.xml new file mode 100644 index 00000000..6ec953d4 --- /dev/null +++ b/ja/docs/features/index.xml @@ -0,0 +1,53 @@ +features on toml11https://toruniina.github.io/toml11/ja/docs/features/Recent content in features on toml11Hugojaparsing fileshttps://toruniina.github.io/toml11/ja/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/parsing_files/ファイル・文字列をパースする # toml11では、toml::parse や toml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。 +これらは成功時に toml::value を返します。 ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 toml::value はファイルに関するメタデータを持っており、 toml::table は std::unordered_map&lt;std::stirng, toml::value&gt; のエイリアスでしかありません。 メタデータを返すために、 toml::table ではなく toml::value を返しています。 ファイルのルートに対応する toml::value は常に table_type を持ちます。 +ファイルをパースする # ファイルをパースする際は、 toml::parse または toml::try_parse を使います。 +toml::parse # std::stringでファイル名を指定する # toml::parse は、文字列でファイル名を受け取り、そのファイルを開いてパースします。 +以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。 +#include &lt;toml.hpp&gt; #include &lt;iostream&gt; int main() { const toml::value input = toml::parse(&#34;input.toml&#34;); std::cout &lt;&lt; input.at(&#34;title&#34;).as_string() &lt;&lt; std::endl; return 0; } std::filesystem::pathでファイルを指定する # toml::parse には、std::filesystem::pathを渡すことも可能です。 +当然ですが、&lt;filesystem&gt;がサポートされるC++17以降でなければ使用できません。 +std::istreamで入力ストリームを指定する # toml::parse には、std::istreamを渡すことも可能です。getting valueshttps://toruniina.github.io/toml11/ja/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/value/値を取り出す # ここでは、 toml::value が格納している値にアクセスする方法を説明します。 +メンバ関数を使って値にアクセスする # is_something と as_something # toml::value は is_boolean() や is_integer() などのメンバ関数を持っており、 これらを使うと持っている型を調べることができます。 +また、 as_boolean(), as_integer() などのメンバ関数も持っており、 これらを使ってその型にアクセスすることができます。 +完全なリストは toml::value のリファレンス を参照してください。 +toml::value v = /* ... */; if(v.is_integer()) { std::cout &lt;&lt; v.as_integer() &lt;&lt; std::endl; } 指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。 +その what() は以下のようなメッセージを含みます。 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # 型情報は enum class toml::value_t で識別できます。error messagehttps://toruniina.github.io/toml11/ja/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/error_message/エラーメッセージを出力する # toml11は toml::parse や toml::get&lt;T&gt;/find&lt;T&gt;, as_integer() などから ファイル内の位置情報を含んだエラーメッセージを出力します。 +例えば、パース時に整数の文法エラーを発見した場合、 +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 あるいは実際に格納されている型と異なる型を要求した場合 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。serializing valueshttps://toruniina.github.io/toml11/ja/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/serialize/TOMLファイルを出力する # toml::format を使うと、 toml::value を文字列にすることができます。 +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。 +もし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。 +一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 例えば、 toml::array_format::array_of_tables は [[array.of.tables]] の形でフォーマットするので、 キーへのアクセスを要求します。 +キーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。 +他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 string_format::literal が指定された文字列が改行を含んでいる場合などです。 +フォーマットの指定方法は後述します。 +キーを渡して出力する # toml::format には std::string としてキーを渡すことが可能です。configuring typeshttps://toruniina.github.io/toml11/ja/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/configure_types/型をカスタマイズする # toml::value は integer_type として std::int64_t を、 table_type として std::unordered_map&lt;key_type, value_type&gt; を使用します。 +しかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。 +そのため、 toml::value は template 引数を取って格納する型を変えられるように実装されています。 +std::string が実際には std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt; の エイリアスであるように、 toml::value は実際には toml::basic_value&lt;toml::type_config&gt; のエイリアスです。 +ここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。 +type_config # type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; } toml::basic_value&lt;TypeConfig&gt; は、格納する boolean_type を TypeConfig::boolean_type、 格納する integer_type を TypeConfig::integer_type 、のようにして定義しています。toml literalhttps://toruniina.github.io/toml11/ja/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/literal/_tomlリテラル # &quot;&quot;_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } 改行を含む場合、生文字列リテラルが便利です。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } 値が単体で書かれていた場合、その値が返されます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto a = &#34;42&#34;_toml; const auto b = &#34;12:34:56&#34;_toml; assert(v.toml spechttps://toruniina.github.io/toml11/ja/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/toml_spec/TOML言語バージョン # toml::spec によって、 toml::parse や toml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。 +TOMLのバージョンを指定する # toml::spec は toml::semantic_version から構築できます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } ですがこれは長いので、toml::spec::v()関数が用意されています。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } 特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。 +デフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。 +v4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。 +TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。 +実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。 +そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。 +バージョン指定でパースする # toml::parse のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。 +これによって、使用するTOMLバージョンを変更できます。 +#include &lt;toml.hpp&gt; int main() { toml::value input = toml::parse(&#34;input.toml&#34;, toml::spec::v(1, 1, 0)); return 0; } バージョン指定でシリアライズする # toml::format のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。extensionhttps://toruniina.github.io/toml11/ja/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/extension/TOML言語拡張 # TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 v1.1.0に向けて議論が続いています。 +そこで議論された機能の中には、有用なケースが少ないと考えられたものや、 提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。 +toml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また サポートされる予定もないことに注意してください。 +また、これらの機能はデフォルトで使用されない設定になっており、 使用するためには機能フラグをそれぞれ true にしなければなりません。 非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。 +いくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は 本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。 +null # TOMLファイル内で値としてnullを使えるようになります。 +a = null b = [ 1, 2, 3, null, 5] これを使用するには、 toml::spec の ext_null_value を true にします。 +パースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 ただし、ファイル内の位置情報は設定されます。 +null は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り &quot;null&quot; という文字列のキーとして解釈されます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(&#34;a = null&#34;, spec); assert(v.at(&#34;a&#34;).is_empty()); assert(v. \ No newline at end of file diff --git a/ja/docs/features/literal/index.html b/ja/docs/features/literal/index.html new file mode 100644 index 00000000..1bfb8838 --- /dev/null +++ b/ja/docs/features/literal/index.html @@ -0,0 +1,78 @@ +toml literal | toml11 + +
    toml literal +

    _tomlリテラル +#

    ""_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto v = "a = 42"_toml;
    +
    +    assert(v.at("a").as_integer() == 42);
    +
    +    return 0;
    +}
    +

    改行を含む場合、生文字列リテラルが便利です。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto v = R"(
    +        a = 42
    +        b = "foo"
    +    )"_toml;
    +
    +    assert(v.at("a").as_integer() == 42);
    +    assert(v.at("b").as_string()  == "foo");
    +
    +    return 0;
    +}
    +

    値が単体で書かれていた場合、その値が返されます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto a = "42"_toml;
    +    const auto b = "12:34:56"_toml;
    +
    +    assert(v.at("a").as_integer() == 42);
    +    assert(v.at("b").as_local_time().hour   == 12);
    +    assert(v.at("b").as_local_time().minute == 34);
    +    assert(v.at("b").as_local_time().second == 56);
    +
    +    return 0;
    +}
    +

    TOMLは数値のみからなるキーを許可しています。 +よって、[1]はテーブル名として合法です。

    [1]のようにテーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。

    配列として解釈させるには、trailing commaを使用してください。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +
    +    const auto t = "[1]"_toml;  // {1 = {}}
    +    const auto a = "[1,]"_toml; // [1,]
    +
    +    assert(t.is_table());
    +    assert(t.at("1").is_table());
    +
    +    assert(a.is_array());
    +    assert(a.at(0).as_integer() == 1);
    +
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/parsing_files/index.html b/ja/docs/features/parsing_files/index.html new file mode 100644 index 00000000..e2c4e108 --- /dev/null +++ b/ja/docs/features/parsing_files/index.html @@ -0,0 +1,188 @@ +parsing files | toml11 + +
    parsing files +

    ファイル・文字列をパースする +#

    toml11では、toml::parsetoml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。

    これらは成功時に toml::value を返します。 +ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 +toml::value はファイルに関するメタデータを持っており、 +toml::tablestd::unordered_map<std::stirng, toml::value> のエイリアスでしかありません。 +メタデータを返すために、 toml::table ではなく toml::value を返しています。 +ファイルのルートに対応する toml::value は常に table_type を持ちます。

    ファイルをパースする +#

    ファイルをパースする際は、 +toml::parse +または +toml::try_parse +を使います。

    toml::parse +#

    std::stringでファイル名を指定する +#

    toml::parse +は、文字列でファイル名を受け取り、そのファイルを開いてパースします。

    以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const toml::value input = toml::parse("input.toml");
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    std::filesystem::pathでファイルを指定する +#

    toml::parse +には、std::filesystem::pathを渡すことも可能です。

    当然ですが、<filesystem>がサポートされるC++17以降でなければ使用できません。

    std::istreamで入力ストリームを指定する +#

    toml::parse +には、std::istreamを渡すことも可能です。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +std::ios::binaryを使ってバイナリモードで開いてください。

    その際、ファイル名の情報がなくなるため、エラーメッセージ中では "unknown file" となります。

    これを避けるため、 std::istream を取る場合は第二引数に std::string でファイル名を取ることもできます。

    std::ifstream 以外にも、 std::istringstream 等の別のistreamを受け取ることができます。 +ただし、呼び出した時点で内容が全て読み込める必要があります。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::string filename("input.toml");
    +    std::ifstream ifs(filename);
    +    const toml::value input = toml::parse(ifs, filename);
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    FILE*でファイルを指定する +#

    toml::parse +には、FILE*を渡すことも可能です。

    標準ライブラリによる改行文字の自動変換によるファイルサイズと文字数との不整合を避けるため、 +fopen("example.toml", "rb")のようにしてバイナリモードで開いてください。

    この場合も、std::istreamのときと同様に、第二引数に文字列でファイル名を与える必要があります。

    FILE*を渡した場合、ファイルの読み込みに失敗した際にはerrnoが報告されます。

    エラー時の挙動 +#

    toml::parse +は、文法エラーを発見した場合 +toml::syntax_error +を送出します。

    toml::syntax_error +は、 +toml::exception +から派生しており、またそれはstd::exceptionから派生します。

    よって、 +toml::syntax_error +からは what() メンバ関数を使ってエラーメッセージを取り出すことができます。

    また、 +toml::syntax_error +は +std::vector<toml::error_info> +を持っており、errors()メンバ関数を使ってそれにアクセスすることもできます。

    toml::parse はごく簡単なエラーならスキップして復帰し、複数のエラーを報告しようと努めます。 +数値のフォーマットエラー程度なら復帰できることが多いですが、 +配列やテーブルの中のエラーは復帰できずに似たようなエラーを複数回報告することもあります。 +冗長であると感じた場合は、 std::vector<toml::error_info>front() だけを使用するようにすると、 +確実に問題のある個所に関するメッセージを得られます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    // parse
    +    try {
    +        const toml::value input = toml::parse("input.toml");
    +        std::cout << input.at("title").as_string() << std::endl;
    +    } catch(const toml::syntax_error& err) {
    +        // 全てのエラーを報告
    +        std::cerr << err.what() << std::endl;
    +
    +        // 最初のエラーのみ報告
    +        std::cerr << err.errors().front() << std::endl;
    +    }
    +}
    +

    toml::try_parse +#

    toml::parse は失敗時に例外を送出しますが、 toml::try_parse は失敗時に例外を投げません。

    その代わり、返り値が toml::value ではなく toml::result<toml::value, std::vector<toml::error_info>> になります。

    result 型は成功値または失敗値のどちらかを持つ型です。 +Rustの Result やHaskellの Either に相当します。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    const auto parse_result = toml::try_parse("input.toml");
    +    if(parse_result.is_ok())
    +    {
    +        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
    +    }
    +    else
    +    {
    +        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
    +    }
    +    return 0;
    +}
    +

    result 型がどちらの値を保持しているかは +is_ok(), is_err() 関数を使って確認できます。 +また、 unwrap(), unwrap_err() によって成功値、失敗値をそれぞれ取り出せます。 +unwrap が失敗した場合は、 bad_result_access 例外が送出されます。 +as_ok()as_err() 関数を使用すると、失敗時には例外が送出されず、未定義動作となります。

    try_parsesyntax_errorfile_io_error を投げず、同じ toml::error_info を +result の失敗型として返しますが、絶対に例外を投げないわけではありません。

    標準ライブラリ内部でエラーが発生した場合、例えばメモリ不足の際に vector の +allocate が失敗した場合などには std::bad_alloc が送出されますが、 +toml::try_parse はこれが送出された場合は catch せずに通します。 +そのため、それらのような標準ライブラリの内部で発生する例外は送出される恐れがあります。

    文字列をパースする +#

    toml::parse_str +#

    toml::parse_str +は、ファイル名ではなくパースする文字列そのものを受け取ります。

    また、エラーメッセージのTOMLファイルの名前に相当する部分には、std::source_location +相当のコンパイラ拡張機能が使用できる場合、 parse_str を呼び出したC++ファイルの名前と行数が代わりに使用されます。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const toml::value input = toml::parse_str("title = \"parse_str\"");
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    toml::try_parse_str +#

    toml::try_parse_str +は、 parse_str と同じくパースする文字列そのものを受け取り、 +try_parse と同じくエラーの報告に +toml::result +を使用します。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const auto parse_result = toml::try_parse_str("title = \"parse_str\"");
    +    if(parse_result.is_ok())
    +    {
    +        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
    +    }
    +    else
    +    {
    +        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
    +    }
    +    return 0;
    +}
    +

    バイト列をパースする +#

    ファイルではなくバイト列をパースすることも可能です。

    UTF-8でエンコードされている必要があるため、unsigned charを使っています。

    toml::parse(std::vector<unsigned char>) +#

    挙動は toml::parse と同一です。

    バイト列をパースする際は、 filename を要求します。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::vector<unsigned char> bytes{/* ... */};
    +    const toml::value input = toml::parse(bytes, "internal bytes");
    +    std::cout << input.at("title").as_string() << std::endl;
    +    return 0;
    +}
    +

    toml::try_parse(std::vector<unsigned char>) +#

    挙動は toml::try_parse と同一です。

    バイト列をパースする際は、 filename を要求します。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::vector<unsigned char> bytes{/* ... */};
    +    const auto parse_result = toml::try_parse(bytes, "internal bytes");
    +    if(parse_result.is_ok())
    +    {
    +        std::cout << parse_result.unwrap().at("title").as_string() << std::endl;
    +    }
    +    else
    +    {
    +        std::cerr << parse_result.unwrap_err().at(0) << std::endl;
    +    }
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/serialize/index.html b/ja/docs/features/serialize/index.html new file mode 100644 index 00000000..fe448ce5 --- /dev/null +++ b/ja/docs/features/serialize/index.html @@ -0,0 +1,146 @@ +serializing values | toml11 + +
    serializing values +

    TOMLファイルを出力する +#

    toml::format を使うと、 toml::value を文字列にすることができます。

    #include <toml.hpp>
    +#include <cassert>
    +
    +int main()
    +{
    +    const toml::value v(toml::table{
    +        {"a", 42},
    +        {"b", "foo"},
    +    });
    +    const std::string s = toml::format(v);
    +
    +    const toml::value u = toml::parse_str(s);
    +
    +    assert(u.at("a").as_integer() == 42);
    +    assert(u.at("b").as_string()  == "foo");
    +
    +    return 0;
    +}
    +

    table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。

    もし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。

    一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 +例えば、 toml::array_format::array_of_tables[[array.of.tables]] の形でフォーマットするので、 +キーへのアクセスを要求します。

    キーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。

    他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 +例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 +string_format::literal が指定された文字列が改行を含んでいる場合などです。

    フォーマットの指定方法は後述します。

    キーを渡して出力する +#

    toml::format には std::string としてキーを渡すことが可能です。

    その場合、ルートテーブルの下にそのキーがあり、渡した値はそのキーに対応すると解釈されます。

    キーが複数段になる場合、 std::vector<std::string> を渡すことができます。

    #include <toml.hpp>
    +#include <cassert>
    +
    +int main()
    +{
    +    const toml::value v(toml::table{
    +        {"a", 42},
    +        {"b", "foo"},
    +    });
    +    const std::string s = toml::format("bar", v);
    +
    +    const toml::value u = toml::parse_str(s);
    +
    +    assert(u.at("bar").at("a").as_integer() == 42);
    +    assert(u.at("bar").at("b").as_string()  == "foo");
    +
    +    return 0;
    +}
    +

    フォーマットを指定する +#

    toml::value のそれぞれの型には、対応するフォーマット情報型があります。

    toml::value::integer_type には toml::integer_format_info が、 +toml::value::table_type には toml::table_format_info があります。

    これらは、パースした際に設定され、型が変わらない限り値を変更しても引き継がれます。

    また、 as_integer_fmt()as_table_fmt() といったメンバ関数によってアクセスすることができ、 +直接編集することが可能です。

    以下ではいくつかの例を挙げて使い方を説明します。

    フォーマットへのアクセス方法は +toml::valueのリファレンスを、 +フォーマット情報クラスの完全なリストと詳細は +formatのリファレンスを +参照してください。

    整数のフォーマットを指定する +#

    整数は、基数と幅、そして _ の位置を指定することができます。

    hex, oct, bin のとき、指定された幅に達するまでゼロで埋められます。 +dec の場合は幅指定はスペースを追加しますが、これはパースされません。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::value v(0x00C0'FFEE);
    +    v.as_integer_fmt().fmt    = toml::integer_format::hex;
    +    v.as_integer_fmt().width  = 8;
    +    v.as_integer_fmt().spacer = 4;
    +
    +    const std::stirng s = toml::format(v);
    +    assert(s == "0x00C0_FFEE");
    +
    +    return 0;
    +}
    +

    詳細は、reference を参照してください。

    配列を単一行・複数行にする +#

    配列には、 toml::array_format::onelinetoml::array_format::multiline を指定できます。

    # oneline
    +a = [1, 2, 3, 4, 5]
    +# multiline
    +a = [
    +  1,
    +  2,
    +  3,
    +  4, 
    +  5
    +]
    +

    multiline のときは、インデントを指定できます。 +各要素は body_indent の分だけインデントされ、閉じ括弧 ]closing_indent の分だけインデントされます。

    文字種は indent_type で指定され、 toml::indent_char::space または toml::indent_char::tab が選択できます。

    インデントに使用する文字種は統一してください。

    一つのファイル内でインデントに異なる文字種が指定された場合、結果は未規定になります。 +何らかのインデントがされますが、全ての箇所で文字種やインデントの深さは不定となります。

    また、 array の要素が全て table_type を持つ場合、 +toml::array_format::array_of_tables が指定できます。

    array_of_tables を指定せずに multiline にした場合、テーブルはインラインテーブルになります。

    # multiline
    +a = [
    +  {foo = 42},
    +  {bar = "hoge"},
    +]
    +
    +# array_of_tables
    +[[a]]
    +foo = 42
    +
    +[[a]]
    +bar = "hoge"
    +

    デフォルトでは、 toml::array_format::default_format が指定されます。 +これは適したフォーマットを自動的に選択します。

    例えば、 default_format で全要素が table_type だった場合、 array_of_tables が選択されます。 +また、十分短い配列は oneline に、長い配列またはネストされた配列などの複雑な配列は multiline になります。

    詳細は、reference を参照してください。

    テーブルをインラインテーブルにする +#

    テーブルをインラインテーブルにする際は toml::table_format::oneline を指定します。 +通常のテーブルにする際は、 toml::table_format::multiline を指定します。

    oneline = {a = 42, b = "foo"}
    +
    +[multiline]
    +a = 42
    +b = "foo"
    +

    TOML v1.1.0ではインラインテーブル内での改行が許可されますが、その場合は +toml::table_format::multiline_oneline とします。 +これは、後述するTOMLバージョン指定で対応する機能フラグがtrueになっていない限り無視されます。

    multiline_oneline = {
    +    a = 42,
    +    b = "foo"
    +}
    +

    詳細は、reference を参照してください。

    TOML言語バージョンを指定して出力する +#

    TOML v1.1.0で許可されたインラインテーブル内の改行や\xエスケープシーケンスのように、 +TOMLバージョンによって使用できない言語機能があります。

    toml::format は最後の引数に toml::spec を取ることができます。

    これにより、シリアライズ時に使用するTOMLのバージョンを指定することができます。

    特に、 toml::parsetoml::spec を使用して新機能を使用した場合は、 +パースした値がそのバージョンでしか使えないフォーマット情報を持つ場合があるので、 +toml::format にも同じ toml::spec を渡すことを忘れないようにしてください。

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    const auto spec = toml::spec::v(1, 1, 0)
    +
    +    const toml::value v = toml::parse("input.toml", spec);
    +
    +    std::cout << toml::format(v, spec);
    +
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/features/toml_spec/index.html b/ja/docs/features/toml_spec/index.html new file mode 100644 index 00000000..173ff20b --- /dev/null +++ b/ja/docs/features/toml_spec/index.html @@ -0,0 +1,86 @@ +toml spec | toml11 + +
    toml spec +

    TOML言語バージョン +#

    toml::spec +によって、 toml::parsetoml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。

    TOMLのバージョンを指定する +#

    toml::spec +は +toml::semantic_version +から構築できます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec(toml::semantic_version(1, 1, 0));
    +    return 0;
    +}
    +

    ですがこれは長いので、toml::spec::v()関数が用意されています。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec = toml::spec::v(1, 1, 0);
    +    return 0;
    +}
    +

    特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。

    デフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。

    v4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。

    TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。

    実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。

    そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。

    バージョン指定でパースする +#

    toml::parse +のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。

    これによって、使用するTOMLバージョンを変更できます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::value input = toml::parse("input.toml", toml::spec::v(1, 1, 0));
    +    return 0;
    +}
    +

    バージョン指定でシリアライズする +#

    toml::format +のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。

    これによって、使用するTOMLバージョンを変更できます。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::value v = toml::parse("input.toml", toml::spec::v(1, 1, 0));
    +    std::cout << toml::format(v, toml::spec::v(1, 1, 0)) << std::endl;
    +    return 0;
    +}
    +

    もしフォーマット変数などによって指定されているフォーマットが渡された toml::spec +では許可されていないものだった場合、指定は無視されて他のフォーマットにフォールバックされます。

    TOMLに追加された新機能を個別に指定する +#

    TOMLのバージョンアップで追加された機能は複数あり、そのうちの一部だけを有効にすることが可能です。

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::spec spec = toml::spec::v(1, 0, 0);
    +
    +    // インラインテーブル内での改行を許可
    +    spec.v1_1_0_allow_newlines_in_inline_tables = true;
    +
    +    toml::value input = toml::parse("input.toml", spec);
    +    return 0;
    +}
    +

    全てのフラグのリストは、 +toml::spec +を参照してください。

    \ No newline at end of file diff --git a/ja/docs/features/value/index.html b/ja/docs/features/value/index.html new file mode 100644 index 00000000..9e076db9 --- /dev/null +++ b/ja/docs/features/value/index.html @@ -0,0 +1,403 @@ +getting values | toml11 + +
    getting values +

    値を取り出す +#

    ここでは、 toml::value が格納している値にアクセスする方法を説明します。

    メンバ関数を使って値にアクセスする +#

    is_somethingas_something +#

    toml::valueis_boolean()is_integer() などのメンバ関数を持っており、 +これらを使うと持っている型を調べることができます。

    また、 as_boolean(), as_integer() などのメンバ関数も持っており、 +これらを使ってその型にアクセスすることができます。

    完全なリストは toml::value のリファレンス を参照してください。

    toml::value v = /* ... */;
    +if(v.is_integer())
    +{
    +    std::cout << v.as_integer() << std::endl;
    +}
    +

    指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。

    その what() は以下のようなメッセージを含みます。

    [error] toml::value::as_string(): bad_cast to string
    + --> input.toml
    +   |
    + 1 | a = 123_456
    +   |     ^^^^^^^-- the actual type is integer
    +

    toml::value_t +#

    型情報は enum class toml::value_t で識別できます。

    type() メンバ関数は、現時点で格納している値の型情報を返します。

    toml::value v = /* ... */;
    +switch(v.type())
    +{
    +    case toml:value_t::empty          : { /*...*/ break; }
    +    case toml:value_t::boolean        : { /*...*/ break; }
    +    case toml:value_t::integer        : { /*...*/ break; }
    +    case toml:value_t::floating       : { /*...*/ break; }
    +    case toml:value_t::string         : { /*...*/ break; }
    +    case toml:value_t::offset_datetime: { /*...*/ break; }
    +    case toml:value_t::local_datetime : { /*...*/ break; }
    +    case toml:value_t::local_date     : { /*...*/ break; }
    +    case toml:value_t::local_time     : { /*...*/ break; }
    +    case toml:value_t::array          : { /*...*/ break; }
    +    case toml:value_t::table          : { /*...*/ break; }
    +    default: {break;}
    +}
    +

    is(toml::value_t) メンバ関数は、渡された value_t と同じ型の値を格納している場合 true を、 +それ以外の場合 false を返します。

    toml::value v = /* ... */;
    +if(v.is(toml::value_t::integer))
    +{
    +    std::cout << v.as_integer() << std::endl;
    +}
    +

    at, [], contains, size, push_back, emplace_back +#

    標準ライブラリコンテナが持つメンバ関数の一部は、 toml::value も提供しています。

    これらは、内部で toml::value を対応する型に変換し、そのメンバ関数を呼び出します。

    at(std::size_t i), operator[](std::size_t i) +#

    as_array().at(i), as_array()[i] と同等です。

    toml::value はデフォルトで std::vector<toml::value>array_type に使うので、 +エラーが発生した際には atstd::out_of_range を送出し、operator[] は未定義動作となります。

    toml::value v(toml::array{1,2,3});
    +std::cout << v.at(1);
    +

    格納している型が array_type ではなかった場合、 type_error を送出します。

    at(std::string key), operator[](std::string key) +#

    as_table().at(key), as_table()[key] と同等です。

    toml::value はデフォルトで std::unordered_map<std::string, toml::value>table_type に使うので、 +対応する値が存在しない場合は atstd::out_of_range を送出し、 operator[] は新しく toml::value を構築してそれへの参照を返します。 +そのため、operator[]const 版はありません。

    toml::value v(toml::table{});
    +v["a"] = 42;
    +

    格納している型が table_type ではなかった場合、 type_error を送出します。

    size() +#

    長さを返します。

    array_type または table_type の場合は要素数、 string_type の場合は文字数を返します。

    格納している型がどれでもなかった場合、 type_error を送出します。

    push_back(), emplace_back() +#

    as_array().push_back(), as_array().emplace_back() と同一です。

    格納している型が array_type ではなかった場合、 type_error を送出します。

    コメントにアクセスする +#

    toml11では、デフォルトでコメントがパースされ、対応する値に行ごとに保存されます。

    対応する値は、連続するコメント行の直後に来る値か、もしくはそのコメントと同じ行に描かれている値です。

    直前または直後に値がなければ、そのコメントはどこにも紐づけられず、無視されます。

    # input.toml
    +
    +# これはaに関するコメントです。
    +a = 42
    +b = 3.14 # これはbに関するコメントです。
    +
    +# このコメントには対応する値がないため無視されます。
    +
    +# これは1番目のcに関するコメントです。
    +# これは2番目のcに関するコメントです。
    +c = "foo" # これは最後のcに関するコメントです。
    +

    値に対応するコメントには、toml::valuecomments() メンバ関数を使ってアクセスします。

    comments()std::vector<std::string> と同じメンバ関数を持つコンテナを返します。

    const auto v = toml::parse("input.toml");
    +const auto& a = v.at("a");
    +const auto& b = v.at("b");
    +const auto& c = v.at("c");
    +
    +assert(a.comments().size() == 1);
    +assert(a.comments().at(0) == "# これはaに関するコメントです。");
    +
    +assert(b.comments().size() == 1);
    +assert(b.comments().at(0) == "# これはbに関するコメントです。");
    +
    +assert(c.comments().size() == 3);
    +assert(c.comments().at(0) == "# これは1番目のcに関するコメントです。");
    +assert(c.comments().at(1) == "# これは2番目のcに関するコメントです。");
    +assert(c.comments().at(2) == "# これは最後のcに関するコメントです。");
    +

    ファイル全体に対応するルートテーブルに関するコメントは、ファイルの先頭に書きます。

    # ルートテーブルに関するコメントです。
    +# これもルートテーブルに関するコメントです。
    +
    +# これはaに関するコメントです。
    +a = 42
    +

    ただし、もしファイルの先頭のコメントの直後に値が来た場合、 +そのコメントはその値に関するコメントと解釈され、ルートテーブルのコメントはなくなります。

    # これはaに関するコメントです。
    +# これもaに関するコメントです。
    +a = 42
    +

    インラインテーブル・ドットキーの取り扱い +#

    インラインテーブルは単にテーブルで、C++コード上で他のテーブルと異なる点はありません。

    a = {b = 42, c = "foo"}
    +

    ドットキーも単にテーブルで、C++コード上で他のテーブルと異なる点はありません。

    a.b = 42
    +a.c = "foo"
    +

    これらは以下のファイルと全く同じ構造を持ちます。

    [a]
    +b = 42
    +c = "foo"
    +

    なので、どの記法でも以下の全く同一のコードで処理できます。

    const auto input = toml::parse("input.toml");
    +
    +assert(input.at("a").at("b").as_integer() == 42);
    +assert(input.at("a").at("c").as_string()  == "foo");
    +

    ただし、フォーマット情報によって区別することは可能です。

    const auto input = toml::parse("input.toml");
    +switch(input.at("a").as_table_fmt().fmt)
    +{
    +    case toml::table_format::oneline: 
    +    {
    +        std::cout << "inline table" << std::endl;
    +        break;
    +    }
    +    case toml::table_format::multiline:
    +    {
    +        std::cout << "normal table" << std::endl;
    +        break;
    +    }
    +    case toml::table_format::dotted:
    +    {
    +        std::cout << "dotted keys" << std::endl;
    +        break;
    +    }
    +}
    +

    このフォーマット情報は後述するシリアライズの際も考慮されます。

    日付情報の取り扱い +#

    local_date, +local_time, +local_datetime, そして +offset_datetime は、 +toml11では対応するメンバ変数を持つ専用の構造体にパースされます。

    使用する際は、直接値を取り出す他にも、後述する toml::gettoml::find を使用して、 +std::chrono::system_clock::time_pointstd::tm 等の型に変換することができます。

    toml::get<T>を使って変換する +#

    toml::get<T> は、 toml::value の持つ値を変換して取り出す関数です。 +T に変換先に指定したい型を指定します。

    const toml::value v = /*...*/;
    +std::cout << toml::get<int>(v) << std::endl;
    +

    後述する toml::find<T> も、型変換の部分は同一の機能を持ちます。

    格納されている型のそれぞれについて、 +変換ができない型が指定された場合、 toml::type_error が送出されます。

    単純な変換 +#

    boolean_type +#

    boolean_type から変換が可能なのは、 bool のみです。

    integer_type +#

    bool 以外で std::is_integral<T>true になる型は、 integer_type から変換できます。

    toml::value v(42);
    +const auto u32 = toml::get<std::uint32_t>(v);
    +const auto i16 = toml::get<short>(v);
    +

    floating_type +#

    std::is_floating_point<T>true になる型は、floating_type から変換できます。

    toml::value v(3.14);
    +const auto f64 = toml::get<double>(v);
    +const auto f32 = toml::get<float >(v);
    +

    string_type +#

    string_type からは std::string へ変換できます。 +また、C++17以降では、std::string_view へも変換できます。

    toml::value v("foo");
    +const auto s = toml::get<std::string>(v);
    +
    +// C++17以降
    +const auto sv = toml::get<std::string_view>(v);
    +

    datetime variants +#

    local_date, +local_datetime, +offset_datetime は +ある日付と時刻を指しているため、 +std::chrono::system_clock::time_point への変換が可能です。

    ただし、local_time は +日付の情報がないため、0時0分からの経過時刻として std::chrono::duration への +変換をサポートします。

    また、 local_datelocal_datetime は実行中のマシンのタイムゾーンを取得して変換を行います。

    date = 2024-01-23
    +time = 12:30:00
    +l_dt = 2024-01-23T12:30:00
    +o_dt = 2024-01-23T12:30:00+09:00
    +
    const auto input = toml::parse("input.toml");
    +
    +const auto date = toml::get<std::chrono::system_clock::time_point>(input.at("date"));
    +const auto l_dt = toml::get<std::chrono::system_clock::time_point>(input.at("l_dt"));
    +const auto o_dt = toml::get<std::chrono::system_clock::time_point>(input.at("o_dt"));
    +
    +const auto time = toml::get<std::chrono::minutes>(input.at("time")); // 12 * 60 + 30 min
    +

    参照を取得できる条件 +#

    toml::get<T> は、 Ttoml::value が格納する型そのものだった場合、参照を返すことができます。

    逆に、変換が必要な場合( std::int64_t で格納されている整数を std::uint32_t で取り出そうとした場合)は、 +変換後の型への参照を返すことは不可能です。

    変換が必要ない型の場合、返された参照を経由して値を書き換えることも可能です。

    toml::value v(42);
    +
    +toml::get<toml::value::integer_type>(v) = 6 * 9;
    +
    +assert(v.as_integer() == 54);
    +

    配列をSTLコンテナに +#

    配列の要素型が全て同じ場合、要素型が T に変換可能であれば、 std::vector<T> に変換可能です。

    a = [1, 2, 3, 4, 5]
    +
    const auto a = toml::get<std::vector<int>>(input.at("a"));
    +

    他のSTLコンテナにも変換可能です。

    const auto a1 = toml::get<std::deque<int>>(input.at("a"));
    +const auto a2 = toml::get<std::list <int>>(input.at("a"));
    +const auto a3 = toml::get<std::array<int, 5>>(input.at("a"));
    +

    std::array に変換する場合、要素数が一致している必要があります。 +もし要素数が一致しなかった場合、 std::out_of_range が送出されます。

    STL以外のコンテナであっても、デフォルトコンストラクタと push_back を持っている場合、 +toml::get で変換が可能です。

    const auto a = toml::get<boost::container::small_vector<int, 8>>(input.at("a"));
    +

    配列を std::pair, std::tuple に +#

    配列の要素型が異なる場合、 std::pairstd::tuple に変換が可能です。

    a = [true, 3.14]
    +b = [42, 2.718, "foo"]
    +
    const auto a = toml::get<std::pair<bool, double>>(input.at("a"));
    +const auto b = toml::get<std::tuple<int, double, std::string>>(input.at("b"));
    +

    std::array の場合と同様に、配列の長さは std::pair, std::tuple の要素数と一致している必要があります。 +もし要素数が一致しなかった場合、 std::out_of_range が送出されます。

    また、各要素は対応する要素に変換できる必要があります。 +変換できない場合、 toml::type_error が送出されます。

    ネストされた配列の変換 +#

    ネストされた配列は、ネストされたコンテナに変換可能です。

    a = [ [1, 2, 3], [4, 5, 6] ]
    +
    const auto a = toml::get<std::vector<std::vector<int>>>(input.at("a"));
    +

    型が異なる場合には、 std::pair/tuple が便利です。

    a = [ [1, 2, 3], ["foo", "bar"] ]
    +
    const auto a = toml::get<
    +    std::pair<std::vector<int>, std::vector<std::string>>
    +    >(input.at("a"));
    +

    テーブルを std::map に変換 +#

    テーブルに含まれる値の型が全て同じであれば、 std::mapstd::unordered_map に変換が可能です。

    t = {a = 1, b = 2}
    +
    const auto t = toml::get<std::map<std::string, int>>(input.at("t"));
    +

    STL以外のコンテナであっても、デフォルトコンストラクタと emplace(key, mapped) を持っている場合、 +toml::get で変換が可能です。

    const auto t = toml::get<boost::container::flat_map<std::string, int>>(input.at("t"));
    +

    要素型の変換に失敗した場合は toml::type_error が送出されます。

    toml::get_orを使って失敗時の値を指定する +#

    toml::get は変換に失敗した際に toml::type_error 例外を送出します。

    toml::get_or を使用することで、変換に失敗した際に例外ではなくデフォルト値を返せるようになります。

    toml::get<T> とは異なり、 get_or は引数から変換先の型を推論するため、 <T> の指定は不要です。

    const auto a = toml::get_or(input.at("a"), 42);
    +

    変換可能な型は toml::get と同様です。

    toml::value::xxx_typeを指定した場合は、参照を取り出すことも可能ですが、その場合は引数も参照である必要があります。

    toml::value::integer_type a_default = 42;
    +auto a& = toml::get_or(input.at("a"), a_default);
    +

    toml::find<T>を使って検索と変換を同時に行う +#

    toml::find<T> は、テーブルを持つ toml::value から値を検索し、同時に +toml::get と同じ型変換を行って取り出す関数です。

    const auto a = toml::find<int>(input, "a");
    +// const auto a = toml::get<int>(input.at("a")); と同じ
    +

    toml::find<T> は配列にも使用できます。

    const auto a  = input.at("a");
    +const auto a2 = toml::find<int>(a, 2);
    +// const auto a2 = toml::get<int>(input.at("a").at(2)); と同じ
    +

    型変換の際にエラーが起きた場合、 toml::get と同じ toml::type_error を +送出します。 +キーが見つからなかった場合またはインデックスが存在しない場合は、 +std::out_of_range を送出します。

    型を指定しなかった場合、型変換を行わず toml::value を取り出します。

    const auto a = toml::find(input, "a");
    +// const auto a = input.at("a"); と同じ
    +

    toml::find<T> は再帰的に値にアクセスることもできます。

    a = {b = {c = 42}}
    +
    const auto a_b_c = toml::find<int>(input, "a", "b", "c");
    +// const auto a = toml::get<int>(input.at("a").at("b").at("c")); と同じ
    +

    このとき、キーとインデックスを混ぜることができます。

    a = [ {b = 1}, {b = 2}, {b = 3} ]
    +
    const auto a_2_b = toml::find<int>(input, "a", 2, "b");
    +// const auto a = toml::get<int>(input.at("a").at(2).at("c")); と同じ
    +

    TOMLはquoted keyという機能を持っています。

    これは、 ""'' を使うことで通常許可されない文字をキーに使えるというもので、 +この中では . はテーブルを導入しません

    "127.0.0.1" = "value"
    +site."google.com" = true
    +

    このTOMLファイルは以下のようにして読みます。

    const auto input = toml::parse("input.toml");
    +
    +assert(input.at("127.0.0.1").as_string() == "value");
    +assert(input.at("site").at("google.com").as_boolean());
    +

    このような場合にも違和感なく対応するため、toml11ではキーに . が含まれていても +自動で分割はしません。

    テーブルの階層構造を陽に指定することが、適切な入力ファイルの構造化に資すると考えているからです。

    参考: toml.io キー

    toml::find_orを使って失敗時の値を指定する +#

    toml::find_or は、 toml::get_or と同様に、失敗時のデフォルト値を渡します。

    const auto a = toml::find_or(input, "a", 42);
    +

    型変換の失敗だけでなく、キーが見つからなかった場合もデフォルト値を返します。

    ユーザー定義型との変換を定義する +#

    toml::gettoml::find では、以下のどれかの方法を使うことで +ユーザー定義型を使用することができます。

    toml::from の定義 +#

    toml11には toml::from という型があり、以下のように特殊化することでユーザー定義型からの +変換をサポートできます。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +namespace toml
    +{
    +template<>
    +struct from<extlib::foo>
    +{
    +    static extlib::foo from_toml(const toml::value& v)
    +    {
    +        return extlib::foo{
    +            toml::find<int>(v, "a"),
    +            toml::find<std::string>(v, "b")
    +        };
    +    }
    +};
    +} // toml
    +

    後述する型設定を変更した toml::value もサポートする場合、以下のようにしてください。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +namespace toml
    +{
    +template<>
    +struct from<extlib::foo>
    +{
    +    template<typename TC>
    +    static extlib::foo from_toml(const toml::basic_value<TC>& v)
    +    {
    +        return extlib::foo{
    +            toml::find<int>(v, "a"),
    +            toml::find<std::string>(v, "b")
    +        };
    +    }
    +};
    +} // toml
    +

    この定義は、 TOML11_DEFINE_CONVERSION_NON_INTRUSIVE によって自動的に定義できます。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(extlib::foo, a, b)
    +

    あるいは、リフレクションライブラリを使用することもできます。 +exampleboost-ext/reflect を使用したサンプルも参照してください。

    from_toml メンバ関数の定義 +#

    from_toml メンバ関数を定義することによっても変換を定義することができます。

    これを使用する場合、デフォルトコンストラクタが必要です。

    struct bar
    +{
    +    int a;
    +    std::string b;
    +
    +    void from_toml(const toml::value& v)
    +    {
    +        this->a = toml::find<int>(v, "a");
    +        this->b = toml::find<std::string>(v, "b");
    +        return ;
    +    }
    +};
    +

    両方が定義されていた場合、 toml::from が優先されます。

    toml::value を受け取るコンストラクタ +#

    toml::value を受け取るコンストラクタがあれば、 toml::get による変換ができます。

    struct baz
    +{
    +    explicit baz(const toml::value& v)
    +        : a(toml::find<int>(v, "a")), b(toml::find<std::string>(v, "b"))
    +    {}
    +    int a;
    +    std::string b;
    +};
    +

    両方が定義されていた場合、toml::fromfrom_toml が優先されます。

    toml::visitで関数を適用する +#

    toml::value が格納する型すべてに適用できる関数オブジェクトがあれば、 +toml::visit によって型変換を経ずに直接その関数を呼ぶことができます。

    struct type_name_of
    +{
    +    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
    +    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
    +    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
    +    std::string operator()(const toml::value::string_type         &) const {return "string";}
    +    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
    +    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
    +    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
    +    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
    +    std::string operator()(const toml::value::array_type          &) const {return "array";}
    +    std::string operator()(const toml::value::table_type          &) const {return "table";}
    +};
    +
    +toml::value v(3.14);
    +std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
    +

    toml::value を構築する +#

    toml::value はパーサの内部だけでなく、ユーザーコードで構築することも可能です。

    toml::value が格納する型と同じか変換可能な型を渡しての構築が可能です。

    toml::value v1(true);
    +toml::value v2(42);
    +toml::value v3(3.14);
    +

    配列の場合、 toml::array を使うか、

    toml::value v(toml::array{1, 2, 3});
    +

    配列の場合、 std::vector などのコンテナを直接渡すことが可能です。

    const std::vector<toml::value> a{1,2,3};
    +toml::value v(a);
    +

    このコンテナには、 toml::get で変換可能なコンテナが使用できます。

    テーブルの場合も同様に、 toml::table を使うか、

    toml::value v(toml::table{{"foo", 1}, {"bar", 2}, {"baz", 3}});
    +

    std::map などのコンテナを直接渡します。

    const std::map<std::string, toml::value> t{
    +        {"foo", 1}, {"bar", 2}, {"baz", 3}
    +    }
    +toml::value v(t);
    +

    コンストラクタには、 format_info と コメントを渡すことができます。

    コメントの型は std::vector<std::string> です。 +各要素が一行分に相当します。

    toml::integer_format_info fmt;
    +fmt.fmt = toml::integer_format::hex;
    +fmt.spacer = 4;
    +
    +toml::value v1(0xDEADBEEF, fmt);
    +toml::value v2(0xC0FFEE, fmt, {"hex value!"});
    +

    toml::value に変換する +#

    ユーザー定義型から toml::value を構築する際に、 toml::intointo_toml を +定義することで、その挙動をカスタマイズできます。

    特に、別のライブラリの型などを変換する際に toml::into が便利です。

    toml::intoを定義する +#

    toml::into を特殊化することで toml::value への変換が可能になります。

    toml::value への変換が用意されていない外部ライブラリの型などに対して有効です。

    toml::value が変換時に type_config を渡すため、basic_valuetemplate 引数を受け取る必要があります。

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +template<>
    +struct into<extlib::foo>
    +{
    +    template<typename TC>
    +    static toml::basic_value<TC> into_toml(const extlib::foo& f)
    +    {
    +        return toml::basic_value<TC>(typename toml::basic_value<TC>::table_type{{"a", f.a}, {"b", f.b}});
    +    }
    +};
    +

    into_toml メンバ関数を定義する +#

    from_toml と同様、メンバ関数によっても変換を定義することができます。

    toml::into が定義されていた場合、そちらが優先されます。

    struct bar
    +{
    +    int a;
    +    std::string b;
    +
    +    toml::value into_toml() const
    +    {
    +        return toml::value(toml::table{{"a", this->a}, {"b", this->b}});
    +    }
    +};
    +
    \ No newline at end of file diff --git a/ja/docs/index.html b/ja/docs/index.html new file mode 100644 index 00000000..6e541670 --- /dev/null +++ b/ja/docs/index.html @@ -0,0 +1,9 @@ +Docs | toml11 + +
    Docs +
    \ No newline at end of file diff --git a/ja/docs/index.xml b/ja/docs/index.xml new file mode 100644 index 00000000..104f957d --- /dev/null +++ b/ja/docs/index.xml @@ -0,0 +1 @@ +Docs on toml11https://toruniina.github.io/toml11/ja/docs/Recent content in Docs on toml11Hugoja \ No newline at end of file diff --git a/ja/docs/installation/index.html b/ja/docs/installation/index.html new file mode 100644 index 00000000..25879a74 --- /dev/null +++ b/ja/docs/installation/index.html @@ -0,0 +1,74 @@ +installation | toml11 + +
    installation +

    installation +#

    single_includeを使用する +#

    single_include/toml.hppは、toml11が持つ全ての機能を単一のファイルにまとめたシングルファイル・ヘッダオンリーライブラリです。

    これをINCLUDE_PATHが通っている箇所にコピーして#include <toml.hpp>とするのが最も単純な使用方法です。

    MITライセンスの許諾表示はコメントとtoml:license_notice()関数の両方に含まれます。 +ソースコードを公開せずに再頒布する場合は、toml11のライセンスファイルをコピーして同梱するか、この関数を呼び出せるようにしておいてください。

    toml11をクローンし、cmakeを使って使用する +#

    toml11git submoduleなどによって自身のレポジトリ下に配置した場合、cmakeを使用している場合はadd_subdirectory(toml11)のようにすることで使用可能になります。

    add_subdirectory(toml11)
    +add_executable(main main.cpp)
    +target_link_libraries(main PUBLIC toml11::toml11)
    +

    toml11は自身がルートプロジェクトのときのみ、テストとインストールを行います。

    cmakeを使用してインストールする +#

    toml11をクローンしたのち、cmakeを使ってインストールすることができます。

    $ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
    +$ cmake --install ./build/ --prefix=/opt/toml11
    +

    インストールの前にテストプログラムを実行する際は、最初に-DTOML11_BUILD_TESTS=ONを設定してください。

    インストールが完了すれば、以下のようにして使用できます。

    find_package(toml11)
    +add_executable(main main.cpp)
    +target_link_libraries(main PRIVATE toml11::toml11)
    +

    cmakeを使用してコンパイルし、静的ライブラリを作成する +#

    cmakeの実行時に-DTOML11_PRECOMPILE=ONを定義することで、toml11の関数のうちコンパイルできるものを先にコンパイルして、全体のコンパイル時間を短縮することができます。

    $ cmake -B ./build/ -DTOML11_PRECOMPILE=ON
    +

    ライブラリをリンクする場合は、CMakeで

    target_link_libraries(your_target PUBLIC toml11::toml11)
    +

    とするか、ヘッダ内の関数のinline化を避けるためにコンパイラに-DTOML11_COMPILE_SOURCESを渡してください。

    ただし、toml11は複数のC++バージョンに対応するため、__cplusplusの値などによって型を切り替えることがあります。 +そのため、ビルドした際のバージョンと使用時のバージョンが異なる場合、リンクに失敗する可能性があります。 +問題が生じた場合はCMAKE_CXX_STANDARDによって必要なバージョンを設定してコンパイルしてください。 +それが難しい場合は、通常通りヘッダオンリーライブラリとして使用してください。

    find_package(toml11)によってTOML11_INCLUDE_DIRが定義されます。 +コンパイル済みライブラリとしてインストールした場合でも、 TOML11_INCLUDE_DIR を +include_directories に追加した上で target_link_libraries を +使用しないようにすれば、ヘッダオンリーライブラリとして使用可能です。

    find_package(toml11)
    +add_executable(main main.cpp)
    +# インクルードのみ可能にし、リンクを行わない
    +target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR})
    +

    examplesをコンパイルする +#

    -DTOML11_BUILD_EXAMPLES=ONとすることで、examples/をコンパイルできます。

    $ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON
    +$ cmake --build ./build/
    +

    examplesの実行バイナリはexamples/に生成されます。

    テストを実行する +#

    テストをビルドするためには、-DTOML11_BUILD_TESTS=ONとします。

    $ git submodule update --init --recursive
    +$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
    +$ cmake --build ./build/
    +$ ctest --test_dir ./build/
    +

    toml-lang/toml-testsを実行するには、-DTOML11_BUILD_TOML_TESTS=ONとします。 +すると、tests/toml11_decodertoml11_encoderがビルドされます。

    $ git submodule update --init --recursive
    +$ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON
    +$ cmake --build ./build/
    +$ ctest --test_dir ./build/
    +
    \ No newline at end of file diff --git a/ja/docs/installation/index.xml b/ja/docs/installation/index.xml new file mode 100644 index 00000000..f4c03cd4 --- /dev/null +++ b/ja/docs/installation/index.xml @@ -0,0 +1 @@ +installation on toml11https://toruniina.github.io/toml11/ja/docs/installation/Recent content in installation on toml11Hugoja \ No newline at end of file diff --git a/ja/docs/reference/color/index.html b/ja/docs/reference/color/index.html new file mode 100644 index 00000000..168987b7 --- /dev/null +++ b/ja/docs/reference/color/index.html @@ -0,0 +1,109 @@ +color.hpp | toml11 + +
    color.hpp +

    color.hpp +#

    color.hppでは、エラーメッセージの色付けに関する関数が定義されます。

    色はANSIエスケープシーケンスによって指定されます。 +ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。

    マクロ +#

    TOML11_COLORIZE_ERROR_MESSAGE +#

    コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 +デフォルトでエラーメッセージに色が付きます。

    定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を +使用して指定する必要があります。

    TOML11_USE_THREAD_LOCAL_COLORIZATION +#

    コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 +toml::color::enableの設定がthread_localになります。 +この場合、toml::color::enable()toml::color::disable()は、それを呼び出したスレッドでの設定しか変更しません。 +つまり、新しいスレッドを起動した際にデフォルトと異なる設定にしたい場合は、再度設定が必要になります。 +その代わり、toml::color::enable()toml::color::disable()はスレッドセーフになります。

    デフォルトでは設定はグローバルです。 +グローバルの場合、一つのスレッドがtoml::color::enable()を実行した場合、すべてのスレッドで色が付きます。 +ただし、あるスレッドがenable()またはdisable()を実行している間に別のスレッドがenable()disable()should_color()を実行した場合、その結果は未定義です。

    関数 +#

    enable() +#

    namespace toml {
    +namespace color {
    +void enable();
    +} // color
    +} // toml
    +

    ANSIエスケープシーケンスによる色付けを行うよう設定します。

    例 +#

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::color::enable(); // この後の全てのエラーがカラーになります。
    +    const auto input = toml::parse("input.toml");
    +    return 0;
    +}
    +

    disable() +#

    namespace toml {
    +namespace color {
    +void disable();
    +} // color
    +} // toml
    +

    ANSIエスケープシーケンスによる色付けを行わないよう設定します。

    例 +#

    #include <toml.hpp>
    +
    +int main()
    +{
    +    toml::color::enable(); // この後の全てのエラーがカラーになります。
    +    const auto input = toml::parse("input.toml");
    +    return 0;
    +}
    +

    should_color() +#

    namespace toml {
    +namespace color {
    +bool should_color();
    +} // color
    +} // toml
    +

    色付けを行う設定になっている場合trueが、そうでない場合falseが返されます。

    例 +#

    #include <toml.hpp>
    +#include <iomanip>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::cout << "colorized? : " << std::boolalpha << toml::color::should_color() << std::endl;
    +    return 0;
    +}
    +

    マニピュレータ +#

    namespace toml {
    +namespace color {
    +std::ostream& reset  (std::ostream&);
    +std::ostream& bold   (std::ostream&);
    +std::ostream& grey   (std::ostream&);
    +std::ostream& gray   (std::ostream&);
    +std::ostream& red    (std::ostream&);
    +std::ostream& green  (std::ostream&);
    +std::ostream& yellow (std::ostream&);
    +std::ostream& blue   (std::ostream&);
    +std::ostream& magenta(std::ostream&);
    +std::ostream& cyan   (std::ostream&);
    +std::ostream& white  (std::ostream&);
    +} // color
    +} // toml
    +

    ANSIエスケープシーケンスによって、fgを色付けします。

    例 +#

    #include <toml.hpp>
    +#include <iostream>
    +
    +int main()
    +{
    +    std::cout << toml::color::red << "red!" << std::endl;
    +    return 0;
    +}
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/comments/index.html b/ja/docs/reference/comments/index.html new file mode 100644 index 00000000..35172892 --- /dev/null +++ b/ja/docs/reference/comments/index.html @@ -0,0 +1,308 @@ +comments.hpp | toml11 + +
    comments.hpp +

    comments.hpp +#

    color.hppでは、コメントを保持するクラスが提供されます。

    toml::preserve_comments +#

    preserve_commentsは、コメントを保持するコンテナです。

    std::vector<std::string>が持つメンバ関数を全て持っています。

    コメントはstd::stringとして保持されます。 +先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 +スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。

    namespace toml
    +{
    +class preserve_comments;
    +
    +bool operator==(const preserve_comments&, const preserve_comments&);
    +bool operator!=(const preserve_comments&, const preserve_comments&);
    +bool operator< (const preserve_comments&, const preserve_comments&);
    +bool operator<=(const preserve_comments&, const preserve_comments&);
    +bool operator> (const preserve_comments&, const preserve_comments&);
    +bool operator>=(const preserve_comments&, const preserve_comments&);
    +
    +void swap(preserve_comments&,        preserve_comments&);
    +void swap(preserve_comments&,        std::vector<std::string>&);
    +void swap(std::vector<std::string>&, preserve_comments&);
    +
    +std::ostream& operator<<(std::ostream&, const preserve_comments&);
    +} //toml
    +

    メンバ型 +#

    using container_type         = std::vector<std::string>;
    +using size_type              = container_type::size_type;
    +using difference_type        = container_type::difference_type;
    +using value_type             = container_type::value_type;
    +using reference              = container_type::reference;
    +using const_reference        = container_type::const_reference;
    +using pointer                = container_type::pointer;
    +using const_pointer          = container_type::const_pointer;
    +using iterator               = container_type::iterator;
    +using const_iterator         = container_type::const_iterator;
    +using reverse_iterator       = container_type::reverse_iterator;
    +using const_reverse_iterator = container_type::const_reverse_iterator;
    +

    メンバ関数 +#

    デフォルトコンストラクタ +#

    preserve_comments() = default;
    +

    空のpreserve_commentsを構築します。

    コピー・ムーブコンストラクタ +#

    preserve_comments(preserve_comments const&) = default;
    +preserve_comments(preserve_comments &&)     = default;
    +

    preserve_commentsをコピー・ムーブ構築します。

    コンストラクタ(std::vector<std::string>) +#

    explicit preserve_comments(const std::vector<std::string>& c);
    +explicit preserve_comments(std::vector<std::string>&& c);
    +

    std::vector<std::string>の内容を持つpreserve_commentsを構築します。

    コンストラクタ(discard_comments) +#

    explicit preserve_comments(const discard_comments&);
    +

    空のpreserve_commentsを構築します。

    コンストラクタ(Iterator) +#

    template<typename InputIterator>
    +preserve_comments(InputIterator first, InputIterator last);
    +

    std::stringを指すInputIteratorが表す範囲からpreserve_commentsを構築します。

    コンストラクタ(std::initializer_list) +#

    preserve_comments(std::initializer_list<std::string> x);
    +

    std::initializer_list<std::string>が表す範囲からpreserve_commentsを構築します。

    コンストラクタ(サイズ指定) +#

    explicit preserve_comments(size_type n);
    +preserve_comments(size_type n, const std::string& x);
    +

    n個のコメントを持つpreserve_commentsを構築します。

    std::stringを渡した場合、そのコメントをn個に複製します。

    デストラクタ +#

    ~preserve_comments() = default;
    +

    preserve_commentsを破棄します。

    operator=(preserve_comments) +#

    preserve_comments& operator=(preserve_comments const&) = default;
    +preserve_comments& operator=(preserve_comments &&)     = default;
    +

    preserve_commentsをコピー・ムーブ代入します。

    operator=(std::vector<std::string>) +#

    preserve_comments& operator=(const std::vector<std::string>& c);
    +preserve_comments& operator=(std::vector<std::string>&& c);
    +

    std::vector<std::string>をコピー・ムーブ代入します。

    assign +#

    template<typename InputIterator>
    +void assign(InputIterator first, InputIterator last);
    +void assign(std::initializer_list<std::string> ini);
    +void assign(size_type n, const std::string& val);
    +

    std::vector<std::string>::assignと同等の効果を持ちます。

    insert +#

    iterator insert(const_iterator p, const std::string& x);
    +iterator insert(const_iterator p, std::string&&      x);
    +iterator insert(const_iterator p, size_type n, const std::string& x);
    +template<typename InputIterator>
    +iterator insert(const_iterator p, InputIterator first, InputIterator last);
    +iterator insert(const_iterator p, std::initializer_list<std::string> ini);
    +

    std::vector<std::string>::insertと同等の効果を持ちます。

    emplace +#

    template<typename ... Ts>
    +iterator emplace(const_iterator p, Ts&& ... args);
    +

    std::vector<std::string>::insertと同等の効果を持ちます。

    erase +#

    iterator erase(const_iterator pos);
    +iterator erase(const_iterator first, const_iterator last);
    +

    std::vector<std::string>::insertと同等の効果を持ちます。

    swap +#

    void swap(preserve_comments& other);
    +

    他のpreserve_commentsと内容を交換します。

    push_back +#

    void push_back(const std::string& v);
    +void push_back(std::string&&      v);
    +

    std::vector<std::string>::push_backと同等の効果を持ちます。

    pop_back +#

    void pop_back();
    +

    std::vector<std::string>::pop_backと同等の効果を持ちます。

    emplace_back +#

    template<typename ... Ts>
    +void emplace_back(Ts&& ... args);
    +

    std::vector<std::string>::emplace_backと同等の効果を持ちます。

    clear +#

    void clear();
    +

    std::vector<std::string>::clearと同等の効果を持ちます。

    size +#

    size_type size() const noexcept;
    +

    std::vector<std::string>::sizeと同等の効果を持ちます。

    max_size +#

    size_type max_size() const noexcept;
    +

    std::vector<std::string>::max_sizeと同等の効果を持ちます。

    capacity +#

    size_type capacity() const noexcept;
    +

    std::vector<std::string>::capacityと同等の効果を持ちます。

    empty +#

    bool empty() const noexcept;
    +

    std::vector<std::string>::emptyと同等の効果を持ちます。

    reserve +#

    void reserve(size_type n);
    +

    std::vector<std::string>::reserveと同等の効果を持ちます。

    resize +#

    void resize(size_type n);
    +void resize(size_type n, const std::string& c);
    +

    std::vector<std::string>::resizeと同等の効果を持ちます。

    shrink_to_fit +#

    void shrink_to_fit();
    +

    std::vector<std::string>::shrink_to_fitと同等の効果を持ちます。

    operator[] +#

    reference       operator[](const size_type n)       noexcept;
    +const_reference operator[](const size_type n) const noexcept;
    +

    std::vector<std::string>::operator[]と同等の効果を持ちます。

    at +#

    reference       at(const size_type n)      ;
    +const_reference at(const size_type n) const;
    +

    std::vector<std::string>::atと同等の効果を持ちます。

    front +#

    reference       front()       noexcept;
    +const_reference front() const noexcept;
    +

    std::vector<std::string>::frontと同等の効果を持ちます。

    back +#

    reference       back()        noexcept;
    +const_reference back()  const noexcept;
    +

    std::vector<std::string>::backと同等の効果を持ちます。

    data +#

    pointer         data()        noexcept;
    +const_pointer   data()  const noexcept;
    +

    std::vector<std::string>::dataと同等の効果を持ちます。

    begin/end +#

    iterator       begin()        noexcept;
    +iterator       end()          noexcept;
    +const_iterator begin()  const noexcept;
    +const_iterator end()    const noexcept;
    +const_iterator cbegin() const noexcept;
    +const_iterator cend()   const noexcept;
    +

    std::vector<std::string>::begin/endと同等の効果を持ちます。

    rbegin/rend +#

    reverse_iterator       rbegin()        noexcept;
    +reverse_iterator       rend()          noexcept;
    +const_reverse_iterator rbegin()  const noexcept;
    +const_reverse_iterator rend()    const noexcept;
    +const_reverse_iterator crbegin() const noexcept;
    +const_reverse_iterator crend()   const noexcept;
    +

    std::vector<std::string>::rbegin/rendと同等の効果を持ちます。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const preserve_comments&, const preserve_comments&);
    +bool operator!=(const preserve_comments&, const preserve_comments&);
    +bool operator< (const preserve_comments&, const preserve_comments&);
    +bool operator<=(const preserve_comments&, const preserve_comments&);
    +bool operator> (const preserve_comments&, const preserve_comments&);
    +bool operator>=(const preserve_comments&, const preserve_comments&);
    +

    std::vector<std::string>と同様に比較を行います。

    swap +#

    void swap(preserve_comments&,        preserve_comments&);
    +void swap(preserve_comments&,        std::vector<std::string>&);
    +void swap(std::vector<std::string>&, preserve_comments&);
    +

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream&, const preserve_comments&);
    +

    コメントとして出力します。

    先頭が#でない場合、#が補われます。

    toml::discard_comments +#

    discard_commentsは、コメントを破棄するコンテナです。

    std::vector<std::string>が持つメンバ関数を全て持っていますが、内容を変更する関数を呼び出しても何も効果はなく、常に空になります。

    namespace toml
    +{
    +class discard_comments;
    +
    +bool operator==(const discard_comments&, const discard_comments&);
    +bool operator!=(const discard_comments&, const discard_comments&);
    +bool operator< (const discard_comments&, const discard_comments&);
    +bool operator<=(const discard_comments&, const discard_comments&);
    +bool operator> (const discard_comments&, const discard_comments&);
    +bool operator>=(const discard_comments&, const discard_comments&);
    +
    +void swap(discard_comments&, discard_comments&);
    +
    +std::ostream& operator<<(std::ostream&, const discard_comments&);
    +} //toml
    +

    メンバ型 +#

    // container_type is not defined
    +using size_type              = std::size_t;
    +using difference_type        = std::ptrdiff_t;
    +using value_type             = std::string;
    +using reference              = std::string&;
    +using const_reference        = std::string const&;
    +using pointer                = std::string*;
    +using const_pointer          = std::string const*;
    +using iterator               = /* internal type: empty-iterator */
    +using const_iterator         = /* internal type: empty-iterator */
    +using reverse_iterator       = /* internal type: empty-iterator */
    +using const_reverse_iterator = /* internal type: empty-iterator */
    +

    デフォルトコンストラクタ +#

    discard_comments() = default;
    +

    空のdiscard_commentsを構築します。

    コピー・ムーブコンストラクタ +#

    discard_comments(discard_comments const&) = default;
    +discard_comments(discard_comments &&)     = default;
    +

    discard_commentsをコピー・ムーブ構築します。

    コンストラクタ(std::vector<std::string>) +#

    explicit discard_comments(const std::vector<std::string>& c);
    +explicit discard_comments(std::vector<std::string>&& c);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(preserve_comments) +#

    explicit discard_comments(const preserve_comments&);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(Iterator) +#

    template<typename InputIterator>
    +discard_comments(InputIterator first, InputIterator last);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(std::initializer_list) +#

    discard_comments(std::initializer_list<std::string> x);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    コンストラクタ(サイズ指定) +#

    explicit discard_comments(size_type n);
    +discard_comments(size_type n, const std::string& x);
    +

    空のdiscard_commentsを構築します。引数の内容は無視されます。

    デストラクタ +#

    ~discard_comments() = default;
    +

    discard_commentsを破棄します。

    operator=(discard_comments) +#

    discard_comments& operator=(discard_comments const&) = default;
    +discard_comments& operator=(discard_comments &&)     = default;
    +

    discard_commentsをコピー・ムーブ代入します。

    operator=(std::vector<std::string>) +#

    discard_comments& operator=(const std::vector<std::string>& c);
    +discard_comments& operator=(std::vector<std::string>&& c);
    +

    何もしません。引数の内容は無視されます。

    assign +#

    template<typename InputIterator>
    +void assign(InputIterator first, InputIterator last);
    +void assign(std::initializer_list<std::string> ini);
    +void assign(size_type n, const std::string& val);
    +

    何もしません。引数の内容は無視されます。

    insert +#

    iterator insert(const_iterator p, const std::string& x);
    +iterator insert(const_iterator p, std::string&&      x);
    +iterator insert(const_iterator p, size_type n, const std::string& x);
    +template<typename InputIterator>
    +iterator insert(const_iterator p, InputIterator first, InputIterator last);
    +iterator insert(const_iterator p, std::initializer_list<std::string> ini);
    +

    何もしません。引数の内容は無視されます。

    emplace +#

    template<typename ... Ts>
    +iterator emplace(const_iterator p, Ts&& ... args);
    +

    何もしません。引数の内容は無視されます。

    erase +#

    iterator erase(const_iterator pos);
    +iterator erase(const_iterator first, const_iterator last);
    +

    何もしません。引数の内容は無視されます。

    swap +#

    void swap(discard_comments& other);
    +

    他のdiscard_commentsと内容を交換します。

    push_back +#

    void push_back(const std::string& v);
    +void push_back(std::string&&      v);
    +

    何もしません。引数の内容は無視されます。

    pop_back +#

    void pop_back();
    +

    何もしません。引数の内容は無視されます。

    emplace_back +#

    template<typename ... Ts>
    +void emplace_back(Ts&& ... args);
    +

    何もしません。引数の内容は無視されます。

    clear +#

    void clear();
    +

    何もしません。引数の内容は無視されます。

    size +#

    size_type size() const noexcept;
    +

    常に0を返します。

    max_size +#

    size_type max_size() const noexcept;
    +

    常に0を返します。

    capacity +#

    size_type capacity() const noexcept;
    +

    常に0を返します。

    empty +#

    bool empty() const noexcept;
    +

    常にtrueを返します。

    reserve +#

    void reserve(size_type n);
    +

    何もしません。引数の内容は無視されます。

    resize +#

    void resize(size_type n);
    +void resize(size_type n, const std::string& c);
    +

    何もしません。引数の内容は無視されます。

    shrink_to_fit +#

    void shrink_to_fit();
    +

    何もしません。引数の内容は無視されます。

    operator[] +#

    reference       operator[](const size_type n)       noexcept;
    +const_reference operator[](const size_type n) const noexcept;
    +

    未定義動作です。

    at +#

    reference       at(const size_type n)      ;
    +const_reference at(const size_type n) const;
    +

    std::out_of_rangeを送出します。

    front +#

    reference       front()       noexcept;
    +const_reference front() const noexcept;
    +

    未定義動作です。

    back +#

    reference       back()        noexcept;
    +const_reference back()  const noexcept;
    +

    未定義動作です。

    data +#

    pointer         data()        noexcept;
    +const_pointer   data()  const noexcept;
    +

    常にnullptrを返します。

    begin/end +#

    iterator       begin()        noexcept;
    +iterator       end()          noexcept;
    +const_iterator begin()  const noexcept;
    +const_iterator end()    const noexcept;
    +const_iterator cbegin() const noexcept;
    +const_iterator cend()   const noexcept;
    +

    内部で定義されたempty-iteratorを返します。

    empty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。

    empty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。

    rbegin/rend +#

    reverse_iterator       rbegin()        noexcept;
    +reverse_iterator       rend()          noexcept;
    +const_reverse_iterator rbegin()  const noexcept;
    +const_reverse_iterator rend()    const noexcept;
    +const_reverse_iterator crbegin() const noexcept;
    +const_reverse_iterator crend()   const noexcept;
    +

    内部で定義されたempty-iteratorを返します。

    empty-iteratorはインクリメントやデクリメントしても同じ値でとどまり、全ての値が同値です。

    empty-iteratorが指す先にアクセスすると常にstd::terminateが呼び出されます。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const discard_comments&, const discard_comments&);
    +bool operator!=(const discard_comments&, const discard_comments&);
    +bool operator< (const discard_comments&, const discard_comments&);
    +bool operator<=(const discard_comments&, const discard_comments&);
    +bool operator> (const discard_comments&, const discard_comments&);
    +bool operator>=(const discard_comments&, const discard_comments&);
    +

    discard_commentsは全て同じ値です。==には常にtrueを、!=には常にfalseを返します。

    swap +#

    void swap(discard_comments&, discard_comments&);
    +

    二つのdiscard_commentsを交換します。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream&, const discard_comments&);
    +

    何も出力しません。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/conversion/index.html b/ja/docs/reference/conversion/index.html new file mode 100644 index 00000000..4f51285d --- /dev/null +++ b/ja/docs/reference/conversion/index.html @@ -0,0 +1,26 @@ +conversion.hpp | toml11 + +
    conversion.hpp +

    conversion.hpp +#

    toml::gettoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。

    TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...)
    +

    例 +#

    namespace foo
    +{
    +struct Foo
    +{
    +    std::string s;
    +    double      d;
    +    int         i;
    +};
    +} // foo
    +
    +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i)
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/datetime/index.html b/ja/docs/reference/datetime/index.html new file mode 100644 index 00000000..fca374f9 --- /dev/null +++ b/ja/docs/reference/datetime/index.html @@ -0,0 +1,370 @@ +datetime.hpp | toml11 + +
    datetime.hpp +

    datetime.hpp +#

    TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。

    enum class month_t +#

    月を指定するenum classです。

    std::tmとの関係で、local_dateは1月を0としています。 +混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。

    namespace toml
    +{
    +enum class month_t : std::uint8_t
    +{
    +    Jan =  0,
    +    Feb =  1,
    +    Mar =  2,
    +    Apr =  3,
    +    May =  4,
    +    Jun =  5,
    +    Jul =  6,
    +    Aug =  7,
    +    Sep =  8,
    +    Oct =  9,
    +    Nov = 10,
    +    Dec = 11
    +};
    +}
    +

    local_date +#

    日付を保持する構造体です。

    yearは西暦を、monthstd::tmとの対応のため1月を0として、dayは日付を保持します。

    namespace toml
    +{
    +struct local_date
    +{
    +    std::int16_t year;
    +    std::uint8_t month;
    +    std::uint8_t day;
    +
    +    local_date() = default;
    +    ~local_date() = default;
    +    local_date(local_date const&) = default;
    +    local_date(local_date&&)      = default;
    +    local_date& operator=(local_date const&) = default;
    +    local_date& operator=(local_date&&)      = default;
    +
    +    local_date(int y, month_t m, int d);
    +    explicit local_date(const std::tm& t);
    +    explicit local_date(const std::chrono::system_clock::time_point& tp);
    +    explicit local_date(const std::time_t t);
    +
    +    operator std::chrono::system_clock::time_point() const;
    +    operator std::time_t() const;
    +};
    +
    +bool operator==(const local_date&, const local_date&);
    +bool operator!=(const local_date&, const local_date&);
    +bool operator< (const local_date&, const local_date&);
    +bool operator<=(const local_date&, const local_date&);
    +bool operator> (const local_date&, const local_date&);
    +bool operator>=(const local_date&, const local_date&);
    +
    +std::ostream& operator<<(std::ostream& os, const local_date& date);
    +std::string to_string(const local_date& date);
    +}
    +

    メンバ変数 +#

    year +#

    std::int16_t year;
    +

    西暦です。オフセットはありません。2024年は2024です。

    month +#

    std::uint8_t month;
    +

    月を表します。std::tmとの対応のため、1月は0, 2月は1と続きます。

    混乱を避けるため、構築の際はmonth_tを使用します。

    day +#

    std::uint8_t day;
    +

    日付を表します。1日は1です。

    メンバ関数 +#

    コンストラクタ +#

    local_date() = default;
    +

    デフォルト実装を使用します。

    デストラクタ +#

    ~local_date() = default;
    +

    デフォルト実装を使用します。

    コピー・ムーブコンストラクタ +#

    local_date(local_date const&) = default;
    +local_date(local_date&&)      = default;
    +

    デフォルト実装を使用します。

    コピー・ムーブ代入演算子 +#

    local_date& operator=(local_date const&) = default;
    +local_date& operator=(local_date&&)      = default;
    +

    デフォルト実装を使用します。

    コンストラクタ(int year, month_t month, int day) +#

    local_date(int y, month_t m, int d);
    +

    指定した値からlocal_dateを構築します。

    境界チェックなどは行いません。

    コンストラクタ(std::tm) +#

    local_date(const std::tm&);
    +

    指定した値からlocal_dateを構築します。

    コンストラクタ(std::chrono::system_clock::time_point) +#

    local_date(const std::chrono::system_clock::time_point&);
    +

    指定した値からlocal_dateを構築します。

    タイムゾーンは実行環境でのものが選択されます。

    コンストラクタ(std::time_t) +#

    local_date(const std::time_t);
    +

    指定した値からlocal_dateを構築します。

    タイムゾーンは実行環境でのものが選択されます。

    operator std::chrono::system_clock::time_point +#

    operator std::chrono::system_clock::time_point() const;
    +

    std::chrono::system_clock::time_pointに変換します。

    タイムゾーンは実行環境でのものが選択されます。

    時刻は0時00分とします。

    operator std::time_t +#

    operator std::time_t() const;
    +

    std::time_tに変換します。

    タイムゾーンは実行環境でのものが選択されます。

    時刻は0時00分とします。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const local_date&, const local_date&);
    +bool operator!=(const local_date&, const local_date&);
    +bool operator< (const local_date&, const local_date&);
    +bool operator<=(const local_date&, const local_date&);
    +bool operator> (const local_date&, const local_date&);
    +bool operator>=(const local_date&, const local_date&);
    +

    日付の順序によって比較します。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const local_date& date);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const local_date& date);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    local_time +#

    namespace toml
    +{
    +struct local_time
    +{
    +    std::uint8_t  hour;        // [0, 23]
    +    std::uint8_t  minute;      // [0, 59]
    +    std::uint8_t  second;      // [0, 60]
    +    std::uint16_t millisecond; // [0, 999]
    +    std::uint16_t microsecond; // [0, 999]
    +    std::uint16_t nanosecond;  // [0, 999]
    +
    +    local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
    +
    +    explicit local_time(const std::tm& t);
    +
    +    template<typename Rep, typename Period>
    +    explicit local_time(const std::chrono::duration<Rep, Period>& t);
    +
    +    operator std::chrono::nanoseconds() const;
    +
    +    local_time() = default;
    +    ~local_time() = default;
    +    local_time(local_time const&) = default;
    +    local_time(local_time&&)      = default;
    +    local_time& operator=(local_time const&) = default;
    +    local_time& operator=(local_time&&)      = default;
    +};
    +
    +bool operator==(const local_time& lhs, const local_time& rhs);
    +bool operator!=(const local_time& lhs, const local_time& rhs);
    +bool operator< (const local_time& lhs, const local_time& rhs);
    +bool operator<=(const local_time& lhs, const local_time& rhs);
    +bool operator> (const local_time& lhs, const local_time& rhs);
    +bool operator>=(const local_time& lhs, const local_time& rhs);
    +
    +std::ostream& operator<<(std::ostream& os, const local_time& time);
    +std::string to_string(const local_time& time);
    +}
    +

    メンバ変数 +#

    hour +#

    std::uint8_t  hour;
    +

    時間を表します。0から23の値を取ります。

    minute +#

    std::uint8_t  minute;      // [0, 59]
    +

    分を表します。0から59の値を取ります。

    second +#

    std::uint8_t  second;      // [0, 60]
    +

    秒を表します。0から60の値を取ります。

    millisecond +#

    std::uint16_t millisecond; // [0, 999]
    +

    ミリ秒を表します。0から999の値を取ります。

    microsecond +#

    std::uint16_t microsecond; // [0, 999]
    +

    マイクロ秒を表します。0から999の値を取ります。

    nanosecond +#

    std::uint16_t nanosecond;  // [0, 999]
    +

    ナノ秒を表します。0から999の値を取ります。

    メンバ関数 +#

    デフォルトコンストラクタ +#

    local_time() = default;
    +

    全ての値を0で初期化します。

    コンストラクタ(h, m, s, ms = 0, us = 0, ns = 0) +#

    local_time(int h, int m, int s, int ms = 0, int us = 0, int ns = 0);
    +

    指定された時刻を使って構築します。

    境界チェックは行われません。

    コンストラクタ(std::tm) +#

    explicit local_time(const std::tm& t);
    +

    std::tmtm_hour, tm_min, tm_secを使って構築します。

    サブセコンドは全て0で初期化されます。

    コンストラクタ(std::chrono::duration) +#

    template<typename Rep, typename Period>
    +explicit local_time(const std::chrono::duration<Rep, Period>& t);
    +

    durationをその日の0時からの時間として構築します。

    operator std::chrono::nanoseconds +#

    operator std::chrono::nanoseconds() const;
    +

    std::chrono::nanosecondsへ変換します。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const local_time& lhs, const local_time& rhs);
    +bool operator!=(const local_time& lhs, const local_time& rhs);
    +bool operator< (const local_time& lhs, const local_time& rhs);
    +bool operator<=(const local_time& lhs, const local_time& rhs);
    +bool operator> (const local_time& lhs, const local_time& rhs);
    +bool operator>=(const local_time& lhs, const local_time& rhs);
    +

    時刻の値によって比較を行います。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, const local_time& time);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const local_time& time);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    time_offset +#

    namespace toml
    +{
    +struct time_offset
    +{
    +    std::int8_t hour{0};   // [-12, 12]
    +    std::int8_t minute{0}; // [-59, 59]
    +
    +    time_offset(int h, int m);
    +
    +    operator std::chrono::minutes() const;
    +
    +    time_offset() = default;
    +    ~time_offset() = default;
    +    time_offset(time_offset const&) = default;
    +    time_offset(time_offset&&)      = default;
    +    time_offset& operator=(time_offset const&) = default;
    +    time_offset& operator=(time_offset&&)      = default;
    +};
    +
    +bool operator==(const time_offset&, const time_offset&);
    +bool operator!=(const time_offset&, const time_offset&);
    +bool operator< (const time_offset&, const time_offset&);
    +bool operator<=(const time_offset&, const time_offset&);
    +bool operator> (const time_offset&, const time_offset&);
    +bool operator>=(const time_offset&, const time_offset&);
    +
    +std::ostream& operator<<(std::ostream& os, const time_offset& offset);
    +std::string to_string(const time_offset& offset);
    +}
    +

    メンバ変数 +#

    hour +#

    std::int8_t hour{0};   // [-12, 12]
    +

    時間のオフセットです。-12から+12の範囲の値を取ります。

    minute +#

    std::int8_t minute{0}; // [-59, 59]
    +

    分のオフセットです。-59から+59の範囲の値を取ります。

    メンバ関数 +#

    コンストラクタ +#

    time_offset(int h, int m);
    +

    時間と分を取って構築します。

    境界チェックは行いません。

    operator std::chrono::minutes +#

    operator std::chrono::minutes() const;
    +

    std::chrono::minutesへの変換を行います。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const time_offset&, const time_offset&);
    +bool operator!=(const time_offset&, const time_offset&);
    +bool operator< (const time_offset&, const time_offset&);
    +bool operator<=(const time_offset&, const time_offset&);
    +bool operator> (const time_offset&, const time_offset&);
    +bool operator>=(const time_offset&, const time_offset&);
    +

    時刻の長さで比較します。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const time_offset&);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const time_offset&);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    local_datetime +#

    namespace toml
    +{
    +struct local_datetime
    +{
    +    local_date date;
    +    local_time time;
    +
    +    local_datetime(local_date d, local_time t);
    +
    +    explicit local_datetime(const std::tm& t);
    +    explicit local_datetime(const std::chrono::system_clock::time_point& tp);
    +    explicit local_datetime(const std::time_t t);
    +
    +    operator std::chrono::system_clock::time_point() const;
    +    operator std::time_t() const;
    +
    +    local_datetime() = default;
    +    ~local_datetime() = default;
    +    local_datetime(local_datetime const&) = default;
    +    local_datetime(local_datetime&&)      = default;
    +    local_datetime& operator=(local_datetime const&) = default;
    +    local_datetime& operator=(local_datetime&&)      = default;
    +};
    +
    +bool operator==(const local_datetime&, const local_datetime&);
    +bool operator!=(const local_datetime&, const local_datetime&);
    +bool operator< (const local_datetime&, const local_datetime&);
    +bool operator<=(const local_datetime&, const local_datetime&);
    +bool operator> (const local_datetime&, const local_datetime&);
    +bool operator>=(const local_datetime&, const local_datetime&);
    +
    +std::ostream& operator<<(std::ostream& os, const local_datetime& dt);
    +std::string to_string(const local_datetime& dt);
    +}
    +

    メンバ変数 +#

    local_date date +#

    local_date date;
    +

    日付部分のデータを保持します。

    local_time time +#

    local_time time;
    +

    時刻部分のデータを保持します。

    メンバ関数 +#

    デフォルトコンストラクタ +#

    date, timeの双方をデフォルト構築します。

    コンストラクタ(local_date, local_time) +#

    指定されたdatetimeで構築します。

    コンストラクタ(std::tm) +#

    std::tmから構築します。

    タイムゾーンは実行環境でのものが選択されます。

    コンストラクタ(std::chrono::system_clock::time_point) +#

    std::chrono::system_clock::time_pointから構築します。

    タイムゾーンは実行環境でのものが選択されます。

    コンストラクタ(std::time_t) +#

    std::time_tから構築します。

    タイムゾーンは実行環境でのものが選択されます。

    operator std::chrono::system_clock::time_point +#

    std::chrono::system_clock::time_pointへ変換します。

    operator std::time_t +#

    std::time_tへ変換します。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const local_datetime&, const local_datetime&);
    +bool operator!=(const local_datetime&, const local_datetime&);
    +bool operator< (const local_datetime&, const local_datetime&);
    +bool operator<=(const local_datetime&, const local_datetime&);
    +bool operator> (const local_datetime&, const local_datetime&);
    +bool operator>=(const local_datetime&, const local_datetime&);
    +

    日付順で比較します。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const local_datetime&);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const local_datetime&);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    offset_datetime +#

    namespace toml
    +{
    +struct offset_datetime
    +{
    +    local_date  date;
    +    local_time  time;
    +    time_offset offset;
    +
    +    offset_datetime(local_date d, local_time t, time_offset o);
    +    offset_datetime(const local_datetime& dt, time_offset o);
    +    explicit offset_datetime(const local_datetime& ld);
    +    explicit offset_datetime(const std::chrono::system_clock::time_point& tp);
    +    explicit offset_datetime(const std::time_t& t);
    +    explicit offset_datetime(const std::tm& t);
    +
    +    operator std::chrono::system_clock::time_point() const;
    +    operator std::time_t() const;
    +
    +    offset_datetime() = default;
    +    ~offset_datetime() = default;
    +    offset_datetime(offset_datetime const&) = default;
    +    offset_datetime(offset_datetime&&)      = default;
    +    offset_datetime& operator=(offset_datetime const&) = default;
    +    offset_datetime& operator=(offset_datetime&&)      = default;
    +};
    +
    +bool operator==(const offset_datetime&, const offset_datetime&);
    +bool operator!=(const offset_datetime&, const offset_datetime&);
    +bool operator< (const offset_datetime&, const offset_datetime&);
    +bool operator<=(const offset_datetime&, const offset_datetime&);
    +bool operator> (const offset_datetime&, const offset_datetime&);
    +bool operator>=(const offset_datetime&, const offset_datetime&);
    +
    +std::ostream& operator<<(std::ostream& os, const offset_datetime& dt);
    +std::string to_string(const offset_datetime& dt);
    +}
    +

    メンバ変数 +#

    date +#

    local_date date;
    +

    日付部分のデータを保持します。

    time +#

    local_time time;
    +

    時刻部分のデータを保持します。

    offset +#

    time_offset offset;
    +

    オフセット部分のデータを保持します。

    メンバ関数 +#

    デフォルトコンストラクタ +#

    date, time, offsetを全てデフォルト構築します。

    コンストラクタ(local_date, local_time, time_offset) +#

    指定されたdate, time, offsetで構築します。

    コンストラクタ(local_datetime, time_offset) +#

    local_datetimeoffsetから構築します。

    コンストラクタ(std::tm) +#

    std::tmから構築します。

    タイムゾーンはUTC(00:00)になります。

    コンストラクタ(std::chrono::system_clock::time_point) +#

    std::chrono::system_clock::time_pointから構築します。

    タイムゾーンはUTC(00:00)になります。

    コンストラクタ(std::time_t) +#

    std::time_tから構築します。

    タイムゾーンはUTC(00:00)になります。

    operator std::chrono::system_clock::time_point +#

    std::chrono::system_clock::time_pointへ変換します。

    タイムゾーンはUTC(00:00)になります。

    operator std::time_t +#

    std::time_tへ変換します。

    タイムゾーンはUTC(00:00)になります。

    非メンバ関数 +#

    比較演算子 +#

    bool operator==(const offset_datetime&, const offset_datetime&);
    +bool operator!=(const offset_datetime&, const offset_datetime&);
    +bool operator< (const offset_datetime&, const offset_datetime&);
    +bool operator<=(const offset_datetime&, const offset_datetime&);
    +bool operator> (const offset_datetime&, const offset_datetime&);
    +bool operator>=(const offset_datetime&, const offset_datetime&);
    +

    日付順で比較します。

    同じ日付の場合、タイムゾーン順で比較されます。

    ストリーム出力演算子 +#

    std::ostream& operator<<(std::ostream& os, const offset_datetime&);
    +

    TOMLのデフォルトのフォーマットで出力を行います。

    to_string +#

    std::string to_string(const offset_datetime&);
    +

    TOMLのデフォルトのフォーマットで文字列化します。

    \ No newline at end of file diff --git a/ja/docs/reference/error_info/index.html b/ja/docs/reference/error_info/index.html new file mode 100644 index 00000000..d5d7a663 --- /dev/null +++ b/ja/docs/reference/error_info/index.html @@ -0,0 +1,78 @@ +error_info.hpp | toml11 + +
    error_info.hpp +

    error_info.hpp +#

    error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。

    toml::error_info +#

    namespace toml
    +{
    +struct error_info
    +{
    +    error_info(std::string t, source_location l, std::string m, std::string s = "");
    +    error_info(std::string t, std::vector<std::pair<source_location, std::string>> l, std::string s = "");
    +
    +    std::string const& title() const noexcept;
    +    std::string &      title()       noexcept;
    +
    +    std::vector<std::pair<source_location, std::string>> const& locations() const noexcept;
    +    void add_locations(source_location loc, std::string msg) noexcept;
    +
    +    std::string const& suffix() const noexcept;
    +    std::string &      suffix()       noexcept;
    +};
    +
    +template<typename ... Ts>
    +error_info make_error_info(
    +    std::string title, source_location loc, std::string msg, Ts&& ... tail);
    +
    +std::string format_error(const std::string& errkind, const error_info& err);
    +std::string format_error(const error_info& err);
    +
    +template<typename ... Ts>
    +std::string format_error(std::string title,
    +                         source_location loc, std::string msg, Ts&& ... tail);
    +
    +std::ostream& operator<<(std::ostream& os, const error_info& e);
    +}
    +

    メンバ関数 +#

    コンストラクタ(title, loc, msg, suffix) +#

    指定されたタイトル、位置情報、メッセージ、suffixからerror_infoを構築します。

    suffixはデフォルトで空です。

    コンストラクタ(title, [{loc, msg}, ...], suffix) +#

    指定されたタイトル、位置情報とメッセージの配列、そしてsuffixからerror_infoを構築します。

    suffixはデフォルトで空です。

    メンバ関数 +#

    std::string title() +#

    エラーメッセージのタイトルです。

    std::vector<std::pair<source_location, std::string>> locations() +#

    エラーの発生した位置とそれに関するメッセージです。

    複数指定可能です。

    std::string suffix() +#

    最後に表示するメッセージです。ヒントや補足を表示します。

    非メンバ関数 +#

    make_error_info +#

    template<typename ... Ts>
    +error_info make_error_info(
    +    std::string title, source_location loc, std::string msg, Ts&& ... tail);
    +

    新しくerror_infoを構築します。

    source_locationまたはbasic_valueの後には、それに関するmsgが続かなければなりません。

    value.hpp +では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。

    末尾にはsuffixを渡すことが可能です。

    format_error +#

    error_info を以下のようにフォーマットします。

    {title}
    + --> {locations().at(0).first.file_name()}
    +   |
    + 1 | {locations().at(0).first.line()}
    +   |         ^-- {locations().at(0).second}
    +   |
    + 2 | {locations().at(1).first.line()}
    +   |         ^-- {locations().at(1).second}
    +{suffix}
    +

    二つの source_location のファイル名が異なる場合は、ファイル名が再度表示されます。

    std::string format_error(const std::string& errkind, const error_info& err);
    +std::string format_error(const error_info& err);
    +

    error_infoをフォーマットします。

    errkindが与えられなかった場合、赤色太字の[error]titleの前につけ足されます。

    errkindが与えられた場合(空文字列の場合も含みます)、それが[error]の代わりに表示されます。

    namespace toml
    +{
    +template<typename ... Ts>
    +std::string format_error(std::string title,
    +                         source_location loc, std::string msg, Ts&& ... tail);
    +} // toml
    +

    make_error_info を使って作成した error_infoformat_error でフォーマットした文字列を返します。

    value.hpp +では、 source_location の代わりに toml::basic_value を渡した際のオーバーロードが追加されます。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, const error_info& e);
    +

    format_error(e)を呼び出し、それを出力します。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/exception/index.html b/ja/docs/reference/exception/index.html new file mode 100644 index 00000000..2ba35377 --- /dev/null +++ b/ja/docs/reference/exception/index.html @@ -0,0 +1,29 @@ +exception.hpp | toml11 + +
    exception.hpp +

    exception.hpp +#

    toml::exception +#

    toml11で定義される例外型の基底クラスです。

    namespace toml
    +{
    +struct exception : public std::exception
    +{
    +  public:
    +    virtual ~exception() noexcept override = default;
    +    virtual const char* what() const noexcept override {return "";}
    +};
    +} // toml
    +

    メンバ関数 +#

    デストラクタ +#

    virtual ~exception() noexcept override = default;
    +

    派生する際に上書きします。

    what +#

    virtual const char* what() const noexcept override {return "";}
    +

    エラーメッセージを返します。派生する際に上書きします。

    \ No newline at end of file diff --git a/ja/docs/reference/find/index.html b/ja/docs/reference/find/index.html new file mode 100644 index 00000000..39c9a795 --- /dev/null +++ b/ja/docs/reference/find/index.html @@ -0,0 +1,129 @@ +find.hpp | toml11 + +
    find.hpp +

    find.hpp +#

    toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。

    toml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 +厳密には全て toml::basic_value<TC> が使われています。ただしこれでは冗長なので、 +関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 +説明文では、テンプレートパラメータTCを変更して型が変更されていれば +toml::value::integer_type などの型は追従して変更されると解釈してください。

    toml::find +#

    概要 +#

    toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。

    template<typename T, typename TC, typename ... Keys>
    +T find(const basic_value<TC>& v, Keys ... keys);
    +

    サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。

    T が指定されなかった場合、 toml::value が返されます。

    キーは、 toml::value::key_type または std::size_t です。 +複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 +toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。

    再帰的な検索に関しての注意 +#

    TOMLには通常の bare key の他に、 "' で囲まれた quoted key というものがあります。 +quoted key を使うと、 "foo.bar" = "baz" というようなキーを書くことができ、この場合はサブテーブルは構築されず、キーは foo.barとなります。 +このようなパターンに対応するため、toml11ではキーの中に.が含まれていても分割は行わず、そのままの文字列で検索を行います。

    以下のTOMLファイルを考えます。

    [foo]
    +[foo.bar]
    +baz = "hoge"
    +
    +["foo.bar"]
    +baz = "fuga"
    +

    これに対応するtoml::findの書き方は以下の通りです。

    const auto input = toml::parse("input.toml");
    +const auto baz1 = toml::find<std::string>(input, "foo", "bar", "baz"); // hoge
    +const auto baz2 = toml::find<std::string>(input, "foo.bar",    "baz"); // fuga
    +

    参考:toml.io/ja/v1.0.0#キー

    toml::find(value, key) +#

    valuetoml::table として key を検索したあと、 toml::get で変換を行います。

    template<typename T, typename TC>
    +/* toml::get<T>(const value&) と同等 */ find(
    +    const basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&) と同等 */ find(
    +    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&&) と同等 */ find(
    +    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
    +

    Tが指定されない場合は、変換を行わずtoml::valueを返します。

    template<typename TC>
    +basic_value<TC> const& find(
    +    basic_value<TC> const& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename TC>
    +basic_value<TC>& find(
    +    basic_value<TC>& v, const typename basic_value<TC>::key_type& ky);
    +
    +template<typename TC>
    +basic_value<TC> find(
    +    basic_value<TC>&& v, const typename basic_value<TC>::key_type& ky);
    +

    例外 +#

    toml::valuetable を保持していなかった場合、 toml::type_error が送出されます。

    格納している table が指定された要素を持っていなかった場合、 std::out_of_range が送出されます。

    指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 +toml::type_error が送出されます。

    toml::find(value, index) +#

    valuetoml::array として index 番目にアクセスし、 toml::get で変換を行います。

    template<typename T, typename TC>
    +/* toml::get<T>(const value&) と同等 */ find(
    +    const basic_value<TC>& v, const std::size_t index);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&) と同等 */ find(
    +    basic_value<TC>& v, const std::size_t index);
    +
    +template<typename T, typename TC>
    +/* toml::get<T>(value&&) と同等 */ find(
    +    basic_value<TC>&& v, const std::size_t index);
    +

    Tが指定されない場合は、変換を行わずtoml::valueを返します。

    template<typename TC>
    +basic_value<TC> const& find(basic_value<TC> const& v, const std::size_t ky);
    +
    +template<typename TC>
    +basic_value<TC>& find(basic_value<TC>& v, const std::size_t ky);
    +
    +template<typename TC>
    +basic_value<TC> find(basic_value<TC>&& v, const std::size_t ky);
    +

    例外 +#

    toml::valuearray を保持していなかった場合、 toml::type_error が送出されます。

    格納している array が指定された数の要素を持っていなかった場合、std::out_of_rangeが送出されます。

    指定された要素が T に変換できない場合 ( toml::get が変換に失敗する場合) 、 +toml::type_error が送出されます。

    toml::find(value, keys...) +#

    template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
    +/* toml::get<T>(const value&) と同等 */ find(
    +    const basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
    +
    +template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
    +/* toml::get<T>(value&) と同等 */ find(
    +    basic_value<TC>& v, const K1& k1, const K2& k2, const Ks& ... ks);
    +
    +template<typename T, typename TC, typename K1, typename K2, typename ... Ks>
    +/* toml::get<T>(value&&) と同等 */ find(
    +    basic_value<TC>&& v, const K1& k1, const K2& k2, const Ks& ... ks);
    +

    再帰的にtoml::findが呼び出されます。

    失敗する条件とその際に送出される例外は toml::find と同じです。

    toml::find_or(value, key, fallback) +#

    template<typename T, typename TC, typename Key>
    +T find_or(const basic_value<TC>& v, const Key& key, T&& opt);
    +

    find_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。

    このデフォルト値は受け取る型Tと同じ型でなければなりません。 +よって、 toml::find<T> とは違って、 find_or では T を指定せずとも推論されます。

    find_or<T>のように T を指定することもできますが、その場合は常に新規な値が返されます。 +参照を取得したい場合は、 T を指定しないでください。

    Tbasic_valueである場合 +#

    template<typename TC, typename K>
    +basic_value<TC>& find_or(basic_value<TC>& v, const K& key, basic_value<TC>& opt) noexcept
    +
    +template<typename TC, typename K>
    +basic_value<TC> const& find_or(const basic_value<TC>& v, const K& key, const basic_value<TC>& opt) noexcept
    +

    対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。

    値が見つからなかった場合、デフォルト値を返します。

    Ttoml::value::{some_type}である場合 +#

    template<typename T, typename TC, typename K>
    +T& find_or(basic_value<TC>& v, const K& key, T& opt) noexcept
    +
    +template<typename T, typename TC, typename K>
    +T const& find_or(const basic_value<TC>& v, const K& key, const T& opt) noexcept
    +

    対応する値を検索し、変換せずに返します。変換が必要ないため、参照を返すことができます。

    値が見つからなかった場合、あるいは異なる型が格納されていた場合、デフォルト値を返します。

    Tconst char*である場合 +#

    template<typename TC, typename K>
    +std::string find_or(const basic_value<TC>& v, const K& k, const char* opt)
    +

    対応する値を検索し、 std::string として返します。

    失敗時に const char* から std::string を構築するため、参照を返すことはできません。

    Tがその他の型である場合 +#

    template<typename T, typename TC, typename K>
    +T find_or(const basic_value<TC>& v, const K& key, T opt)
    +

    対応する値を検索し、 T に変換して返します。

    変換を行うため、参照を返すことはできません。

    複数のキーが与えられた場合 +#

    template<typename Value, typename K1, typename K2, typename K3, typename ... Ks>
    +auto find_or(Value&& v, const K1& k1, const K2& k2, K3&& k3, Ks&& ... keys) noexcept
    + -> decltype(find_or(v, k2, std::forward<K3>(k3), std::forward<Ks>(keys)...))
    +

    キーの列の最後の要素がデフォルト値であると解釈して、再帰的にfind_orを適用します。

    T の推論結果が toml::value または toml::value::some_type になる場合、参照を返すことができます。

    T を明示的に指定した場合、常に変換を行います。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/format/index.html b/ja/docs/reference/format/index.html new file mode 100644 index 00000000..ed60e039 --- /dev/null +++ b/ja/docs/reference/format/index.html @@ -0,0 +1,234 @@ +format.hpp | toml11 + +
    format.hpp +

    format.hpp +#

    toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。

    indent_char +#

    インデント情報を表す列挙体です。

    enum class indent_char : std::uint8_t
    +{
    +    space, // use space
    +    tab,   // use tab
    +    none   // no indent
    +};
    +std::ostream& operator<<(std::ostream& os, const indent_char& c);
    +std::string to_string(const indent_char);
    +

    noneを選んだ場合、super tableでの値によらず、インデントは使用されません。

    シリアライズ対象の値のなかにspacetabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。

    boolean_format_info +#

    booleanのフォーマット情報です。

    struct boolean_format_info {};
    +
    +bool operator==(const boolean_format_info&, const boolean_format_info&) noexcept;
    +bool operator!=(const boolean_format_info&, const boolean_format_info&) noexcept;
    +

    booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。

    integer_format +#

    enum class integer_format : std::uint8_t
    +{
    +    dec = 0,
    +    bin = 1,
    +    oct = 2,
    +    hex = 3,
    +};
    +std::ostream& operator<<(std::ostream& os, const integer_format f);
    +std::string to_string(const integer_format);
    +

    integerの基数を指定します。

    integer_format_info +#

    struct integer_format_info
    +{
    +    integer_format fmt    = integer_format::dec;
    +    bool        uppercase = true; // use uppercase letters
    +    std::size_t width     = 0;       // minimal width (may exceed)
    +    std::size_t spacer    = 0;       // position of `_` (if 0, no spacer)
    +    std::string suffix    = "";      // _suffix (library extension)
    +};
    +
    +bool operator==(const integer_format_info&, const integer_format_info&) noexcept;
    +bool operator!=(const integer_format_info&, const integer_format_info&) noexcept;
    +

    メンバ変数 +#

    integer_format fmt +#

    基数を指定します。

    bool uppercase +#

    16進数表記で大文字を使用します。

    std::size_t width +#

    最小の幅を指定します。値によってはこの幅を超えることがあります。

    フォーマットした値がこの幅よりも小さい場合、integer_format::decの場合は効果はありませんが、それ以外の場合は先頭にリーディング0が追加されます。

    std::size_t spacer +#

    アンダースコア_を追加する幅を指定します。

    3の場合1_234_567のように、4の場合0xdead_beefのようにフォーマットされます。

    0の場合、アンダースコアは挿入されません。

    不規則な幅を指定することはできません。

    std::string suffix +#

    toml11拡張のspec::ext_num_suffixtrueにしている場合、そのsuffixがここに保存されます。

    参考:spec.hpp

    floating_format +#

    enum class floating_format : std::uint8_t
    +{
    +    defaultfloat = 0,
    +    fixed        = 1, // does not include exponential part
    +    scientific   = 2, // always include exponential part
    +    hex          = 3  // hexfloat extension
    +};
    +std::ostream& operator<<(std::ostream& os, const floating_format f);
    +std::string to_string(const floating_format);
    +

    floatingのフォーマット形式を指定します。 +それぞれ、std::defaultfloat, std::fixed, std::scientific, std::hexfloatに対応します。

    hexfloatは、toml::spec::ext_hex_floattrueの場合のみ使用可能です。

    参考:spec.hpp

    floating_format_info +#

    struct floating_format_info
    +{
    +    floating_format fmt = floating_format::defaultfloat;
    +    std::size_t prec  = 0;        // precision (if 0, use the default)
    +    std::string suffix = "";      // 1.0e+2_suffix (library extension)
    +};
    +
    +bool operator==(const floating_format_info&, const floating_format_info&) noexcept;
    +bool operator!=(const floating_format_info&, const floating_format_info&) noexcept;
    +

    メンバ変数 +#

    floating_format fmt +#

    フォーマット形式を指定します。

    std::size_t prec +#

    小数点以下の精度を指定します。

    std::string suffix +#

    toml11拡張のspec::ext_num_suffixtrueにしている場合、そのsuffixがここに保存されます。

    参考:spec.hpp

    string_format +#

    enum class string_format : std::uint8_t
    +{
    +    basic             = 0,
    +    literal           = 1,
    +    multiline_basic   = 2,
    +    multiline_literal = 3
    +};
    +std::ostream& operator<<(std::ostream& os, const string_format f);
    +std::string to_string(const string_format);
    +

    文字列のフォーマット形式を指定します。

    string_format_info +#

    struct string_format_info
    +{
    +    string_format fmt = string_format::basic;
    +    bool start_with_newline    = false;
    +};
    +
    +bool operator==(const string_format_info&, const string_format_info&) noexcept;
    +bool operator!=(const string_format_info&, const string_format_info&) noexcept;
    +

    メンバ変数 +#

    string_format fmt +#

    文字列のフォーマット情報を指定します。

    bool start_with_newline +#

    multiline_basicまたはmultiline_literalの場合、最初の"""'''の後に改行を入れるかどうかを指定します。

    datetime_delimiter_kind +#

    enum class datetime_delimiter_kind : std::uint8_t
    +{
    +    upper_T = 0,
    +    lower_t = 1,
    +    space   = 2,
    +};
    +std::ostream& operator<<(std::ostream& os, const datetime_delimiter_kind d);
    +std::string to_string(const datetime_delimiter_kind);
    +

    datetimeで日付と時刻の間のデリミタにどの文字を使うかを指定します。

    T, t, が使用可能です。

    offset_datetime_format_info +#

    struct offset_datetime_format_info
    +{
    +    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
    +    bool has_seconds = true;
    +    std::size_t subsecond_precision = 6; // [us]
    +};
    +
    +bool operator==(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
    +bool operator!=(const offset_datetime_format_info&, const offset_datetime_format_info&) noexcept;
    +

    メンバ変数 +#

    datetime_delimiter_kind delimiter +#

    使用するデリミタを指定します。

    bool has_seconds +#

    秒数を省略するかどうかを指定します。

    std::size_t subsecond_precision +#

    秒以下の精度を何桁出力するかを指定します。

    local_datetime_format_info +#

    struct local_datetime_format_info
    +{
    +    datetime_delimiter_kind delimiter = datetime_delimiter_kind::upper_T;
    +    bool has_seconds = true;
    +    std::size_t subsecond_precision = 6; // [us]
    +};
    +
    +bool operator==(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
    +bool operator!=(const local_datetime_format_info&, const local_datetime_format_info&) noexcept;
    +

    メンバ変数 +#

    datetime_delimiter_kind delimiter +#

    使用するデリミタを指定します。

    bool has_seconds +#

    秒数を省略するかどうかを指定します。

    std::size_t subsecond_precision +#

    秒以下の精度を何桁出力するかを指定します。

    local_date_format_info +#

    struct local_date_format_info
    +{
    +    // nothing, for now
    +};
    +
    +bool operator==(const local_date_format_info&, const local_date_format_info&) noexcept;
    +bool operator!=(const local_date_format_info&, const local_date_format_info&) noexcept;
    +

    local_datetimeにはフォーマット指定するパラメータはありません。

    local_time_format_info +#

    struct local_time_format_info
    +{
    +    bool has_seconds = true;
    +    std::size_t subsecond_precision = 6; // [us]
    +};
    +
    +bool operator==(const local_time_format_info&, const local_time_format_info&) noexcept;
    +bool operator!=(const local_time_format_info&, const local_time_format_info&) noexcept;
    +

    メンバ変数 +#

    bool has_seconds +#

    秒数を省略するかどうかを指定します。

    std::size_t subsecond_precision +#

    秒以下の精度を何桁出力するかを指定します。

    array_format +#

    enum class array_format : std::uint8_t
    +{
    +    default_format  = 0,
    +    oneline         = 1,
    +    multiline       = 2,
    +    array_of_tables = 3 // [[format.in.this.way]]
    +};
    +
    +std::ostream& operator<<(std::ostream& os, const array_format f);
    +std::string to_string(const array_format);
    +
    • default_format
      • 適したフォーマットを自動的に選択します。ある程度長い配列は複数行になります。
    • oneline
      • 全ての要素を一行でフォーマットします。
    • multiline
      • 一行ごとに一つの要素を出力します。
    • array_of_tables
      • [[array.of.tables]]の形式でフォーマットします。table以外の要素を含むことはできません。

    array_format_info +#

    struct array_format_info
    +{
    +    array_format fmt            = array_format::default_format;
    +    indent_char  indent_type    = indent_char::space;
    +    std::int32_t body_indent    = 4; // indent in case of multiline
    +    std::int32_t closing_indent = 0; // indent of `]`
    +};
    +
    +bool operator==(const array_format_info&, const array_format_info&) noexcept;
    +bool operator!=(const array_format_info&, const array_format_info&) noexcept;
    +

    メンバ変数 +#

    array_format fmt +#

    フォーマット形式を指定します。

    indent_char indent_type +#

    インデントに使用する文字の種類を選択します。

    std::int32_t body_indent +#

    array_format::multilineの場合、要素の前に出力するインデントの文字数を指定します。

    std::int32_t closing_indent +#

    array_format::multilineの場合、閉じ括弧]の前に出力するインデントの文字数を指定します。

    table_format +#

    enum class table_format : std::uint8_t
    +{
    +    multiline         = 0, // [foo] \n bar = "baz"
    +    oneline           = 1, // foo = {bar = "baz"}
    +    dotted            = 2, // foo.bar = "baz"
    +    multiline_oneline = 3, // foo = { \n bar = "baz" \n }
    +    implicit          = 4  // [x] defined by [x.y.z]. skip in serializer.
    +};
    +
    +std::ostream& operator<<(std::ostream& os, const table_format f);
    +std::string to_string(const table_format);
    +
    • multiline
      • 複数行の通常のテーブルとしてフォーマットします。
    • oneline
      • インラインテーブルとしてフォーマットします。
    • dotted
      • a.b.c = "d"の形式でフォーマットします。
    • multiline_oneline
      • 改行を含むインラインテーブルとしてフォーマットします。TOML v1.1.0以降で使用可能です。
      • 参考:spec.hpp
    • implicit
      • [x.y.z.w]だけが定義されている際の[x], [x.y], [x.y.z]のように、暗黙定義としてスキップします。

    TOMLの文法上、dottedはサブテーブルを持つことができます。

    [fruit]
    +apple.color = "red"
    +apple.taste.sweet = true
    +
    +# [fruit.apple]        # INVALID
    +# [fruit.apple.taste]  # INVALID
    +[fruit.apple.texture]  # you can add sub-tables
    +smooth = true
    +

    toml11は現時点ではこのフォーマットに対応していません。 +dottedテーブルの下にあるテーブルは全てdottedになり、テーブルは強制的にインラインテーブルになります。

    table_format_info +#

    struct table_format_info
    +{
    +    table_format fmt = table_format::multiline;
    +    indent_char  indent_type    = indent_char::space;
    +    std::int32_t body_indent    = 0; // indent of values
    +    std::int32_t name_indent    = 0; // indent of [table]
    +    std::int32_t closing_indent = 0; // in case of {inline-table}
    +};
    +
    +bool operator==(const table_format_info&, const table_format_info&) noexcept;
    +bool operator!=(const table_format_info&, const table_format_info&) noexcept;
    +

    メンバ変数 +#

    table_format fmt +#

    フォーマット方法を指定します。

    indent_char indent_type +#

    インデントに使用する文字を指定します。

    std::int32_t body_indent +#

    キーの前に出力するインデントの幅を指定します。

    スーパーテーブルのインデント幅は加算されません。

    std::int32_t name_indent +#

    [table]形式のキーのインデントを指定します。

    スーパーテーブルのインデント幅は加算されません。

    std::int32_t closing_indent +#

    multiline_onelineの場合に、閉じ括弧}の前のインデント幅を指定します。

    \ No newline at end of file diff --git a/ja/docs/reference/from/index.html b/ja/docs/reference/from/index.html new file mode 100644 index 00000000..a4981e72 --- /dev/null +++ b/ja/docs/reference/from/index.html @@ -0,0 +1,48 @@ +from.hpp | toml11 + +
    from.hpp +

    from.hpp +#

    toml::gettoml::findで使用する、toml::valueからの変換を定義する構造体です。

    メンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom<T>を使用してください。

    このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。

    namespace toml
    +{
    +
    +template<typename T>
    +struct from;
    +
    +} // toml
    +

    例 +#

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +#include <toml11/from.hpp>
    +
    +namespace toml
    +{
    +template<>
    +struct from<extlib::foo>
    +{
    +    template<typename TC>
    +    static extlib::foo from_toml(const toml::basic_value<TC>& v)
    +    {
    +        return extlib::foo{toml::find<int>(v, "a"), toml::find<std::string>(v, "b")};
    +    }
    +};
    +} // toml
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/get/index.html b/ja/docs/reference/get/index.html new file mode 100644 index 00000000..98ba6cdb --- /dev/null +++ b/ja/docs/reference/get/index.html @@ -0,0 +1,151 @@ +get.hpp | toml11 + +
    get.hpp +

    get.hpp +#

    toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。

    toml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 +厳密には全て toml::basic_value<TC> が使われています。ただしこれでは冗長なので、 +関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 +説明文では、テンプレートパラメータTCを変更して型が変更されていれば +toml::value::integer_type などの型は追従して変更されると解釈してください。

    toml::get<T> +#

    概要 +#

    基本的に、toml::getは以下のような関数として振る舞います。 +Ttoml::get<int>(v)のようにして与えます。

    template<typename T, typename TC>
    +T get(const basic_value<TC>& v);
    +

    ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。

    Tの型の種類は、

    1. 変換が必要ない型
    2. 変換する必要がある型

    に分けられます。

    細かい条件と、特別にサポートしている具体的な型については後述します。

    変換が必要ない型 +#

    変換が必要ないのは、渡された toml::value が格納している型です。 +例えば、 toml::value::integer_typestd::int64_t のエイリアスなので、 +toml::get<std::int64_t>(v) は変換を必要としません。 +この場合、 toml:getinteger の値を toml::value から取り出し、その参照を返します。

    渡されたtoml::valueが可変参照(&)である場合、返す値も可変参照(&)です。 +不変参照(const&)の場合、返す値も不変参照(const&)となります。 +可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。

    変換が必要な型 +#

    上記の型以外については変換が必要です。 +例えば、toml::value::integer_typestd::int64_tのエイリアスなので、toml::get<std::size_t>(toml::value&)は変換が必要です。 +この場合、toml:getintegerの値をtoml::valueから取り出し、それをキャストして返します。

    toml11は簡単なキャストだけでなく、 +toml::arrayからやstd::tuple<int, double, std::string>std::array<double, 4>、 +toml::tableからstd::map<std::string, int>などの複雑な型変換をサポートします。 +具体的には、続くセクションを参照してください。

    失敗した場合 +#

    期待した型変換を行えない場合があります。例えば、tableを持っているtoml::valuetoml::get<int>(v)を適用した場合などです。

    このような場合は、取り出そうとした型に最も似ている型への変換(今回はintなので、as_integer)が失敗したとして、toml::type_errorが送出されます。

    ファイルからパースした場合、以下のようなエラーメッセージが出力されます。

    terminate called after throwing an instance of 'toml::type_error'
    +  what():  toml::value::as_integer(): bad_cast to integer
    + --> input.toml
    +   |
    + 6 | [fruit]
    +   | ^^^^^^^-- the actual type is table
    +

    Ttoml::valueと同一のとき +#

    template< T, typename TC>
    +T& get(basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T const& get(const basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T get(basic_value<TC>&& v);
    +

    条件:

    • std::is_same<T, basic_value<TC>> を満たす

    toml::valueからtoml::valueなので、変換は行われず、そのままの値が返されます。 +他の関数の実装を一般化するためだけに存在しています。

    失敗しません。

    Ttoml::value::{some_type}のいずれかのとき +#

    template<typename T, typename TC>
    +T& get(basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T const& get(const basic_value<TC>& v);
    +
    +template<typename T, typename TC>
    +T get(basic_value<TC>&& v);
    +

    条件:

    • Ttoml::valueが格納できる型(toml::value::boolean_typeなど)のどれかと同一であること

    toml::value が格納している型と同じ型、例えば toml::value::integer_type が +toml::get<T>T として指定されたとき、型変換の必要がないため参照を返すことが可能です。

    異なる型が格納されていた場合、toml::type_error が送出されます。

    Tが異なるTypeConfigを持つbasic_value<OtherTC>のとき +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Ttoml::basic_value<TC>ではない
    • Ttoml::basic_value<OtherTC>である

    異なる型を格納し得るbasic_valueが指定された場合、変換が行われます。

    型変換が発生するので、返す値は新規な値であり、参照ではありません。

    失敗しません(メモリ枯渇などの場合を除く)。

    Tが整数型の場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_integral<T> を満たす
    • std::is_same<T, bool> ではない
    • toml::value::integer_type ではない

    toml::valueinteger_type を保持しているとしてその値を取得し、それを T に変換して返します。

    toml::value::integer_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tが浮動小数点数型の場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_floating_point<T> を満たす
    • toml::value::floating_type ではない

    toml::valuefloating_typeを保持しているとしてその値を取得し、それをTに変換して返します。

    toml::value::floating_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::string_viewの場合 +#

    C++17以降でのみ使用可能です。

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_same<std::string_view, T> を満たす

    toml::valuestring_typeを保持しているとしてその値を取得し、それからstd::string_viewを構築して返します。

    toml::value::string_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::chrono::durationの場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::chrono::duration<Rep, Period>である

    toml::valuelocal_timeを保持しているとしてその値を取得し、それをstd::chrono::durationに変換して返します。

    toml::value::local_time 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::chrono::system_clock::time_pointの場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • std::is_same<T, std::chrono::system_clock::time_point>を満たす

    toml::valuelocal_date, local_datetime, offset_datetimeのどれかを保持しているとしてその値を取得し、それをstd::chrono::system_clock::time_pointに変換して返します。

    local_date, local_datetime, offset_datetime 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tarray-likeである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • TT::iteratorを持つ
    • TT::value_typeを持つ
    • TT::push_back(x)を持つ
    • Ttoml::value::array_typeではない
    • Tstd::stringではない
    • Tstd::string_viewではない
    • Tmap-likeではない
    • Tfrom_toml()メンバ関数を持たない
    • toml::from<T>が定義されていない
    • toml::basic_value<TC>からのコンストラクタが定義されていない

    std::vector<int>std::deque<std::string>などが該当します。

    toml::valuearrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Tstd::arrayである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::array<U, N>である

    toml::valuearrayを保持しているとしてその値を取得し、それを指定されたコンテナに変換して返します。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    toml::value が持つ array が十分な数の要素を持っていなかった場合、std::out_of_rangeが送出されます。

    Tstd::forward_listである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::forward_list<U>である

    toml::valuearrayを保持しているとしてその値を取得し、それをstd::forward_listに変換して返します。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    forward_listpush_backを持たないので、別に実装されています。

    Tstd::pairである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::pair<T1, T2>である

    toml::valuearrayを保持しているとしてその値を取得し、それをstd::pair<T1, T2>に変換して返します。

    firstsecond はそれぞれ再帰的に変換されます。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    toml::value が持つ array の要素数がちょうど2個でなかった場合、std::out_of_rangeが送出されます。

    Tstd::tupleである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • Tstd::tuple<T1, T2, ... TN>である

    toml::valuearrayを保持しているとしてその値を取得し、それをstd::tuple<T1, T2, ...TN>に変換して返します。

    各要素はそれぞれ再帰的に変換されます。

    toml::value::array_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    toml::value が持つ array の要素数がちょうど std::tuple_size<T>::value 個でなかった場合、std::out_of_rangeが送出されます。

    Tmap-likeである場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • TT::iteratorを持つ
    • TT::key_typeを持つ
    • TT::value_typeを持つ
    • TT::mapped_typeを持つ
    • Ttoml::value::table_typeではない
    • Tfrom_toml()メンバ関数を持たない
    • toml::from<T>が定義されていない
    • toml::basic_value<TC>からのコンストラクタが定義されていない

    std::map<std::string, int>std::unordered_map<std::string, float>などが該当します。

    toml::valuetableを保持しているとしてその値を取得し、それを T に変換して返します。

    各要素はそれぞれ再帰的に変換されます。

    basic_value::table_type 以外の型が格納されていた場合、 toml::type_error が送出されます。

    Ttoml::from<T>の特殊化を持つユーザー定義型である場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • toml::from<T>が定義されている

    toml::fromT に対する特殊化が定義されていた場合、それを使用した型変換が行われます。

    個別にサポートされる型( std::array, std::pair, std::tuple )と衝突しないようにしてください。

    TT::from_tomlメンバ関数を持つユーザー定義型である場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • toml::from<T>が定義されていない
    • Tfrom_toml()メンバ関数を持つ

    Tfrom_toml(toml::basic_value<TC>) メンバ関数が定義されていた場合、それを使用した型変換が行われます。

    toml::from<T> が定義されていると、そちらが優先されます。

    Ttoml::basic_value<TC>を取るコンストラクタを持つユーザー定義型である場合 +#

    template<typename T, typename TC>
    +T get(basic_value<TC>& v);
    +

    条件:

    • toml::from<T>が定義されていない
    • Tfrom_toml()メンバ関数を持たない
    • Ttoml::basic_value<TC>を取るコンストラクタを持つ

    Ttoml::basic_value<TC> を取るコンストラクタが定義されていた場合、それを使用した型変換が行われます。

    toml::from<T> または T::from_toml が定義されていると、そちらが優先されます。

    toml::get_or<T> +#

    get_or は失敗した際のためのデフォルト値を受け取ることで、失敗時に例外を投げないようにします。

    このデフォルト値は受け取る型Tと同じ型でなければなりません。 +よって、 toml::get<T> とは違って、 get_or では T を指定せずとも推論されます。

    Tbasic_value<TC>である場合 +#

    template<typename TC>
    +basic_value<TC> const& get_or(const basic_value<TC>& v, const basic_value<TC>& opt)
    +
    +template<typename TC>
    +basic_value<TC> & get_or(basic_value<TC>& v, basic_value<TC>& opt)
    +
    +template<typename TC>
    +basic_value<TC> get_or(basic_value<TC>&& v, basic_value<TC>&& opt)
    +

    変換先は同一のtoml::valueなので、失敗しません。

    他の関数の実装を一般化するためだけに存在しています。

    Tbasic_value<TC>::{some_type}である場合 +#

    template<typename T, typename TC>
    +T const& get_or(const basic_value<TC>& v, const T& opt) noexcept
    +
    +template<typename T, typename TC>
    +T & get_or(basic_value<TC>& v, T& opt) noexcept
    +
    +template<typename T, typename TC>     
    +T get_or(basic_value<TC>&& v, T&& opt) noexcept
    +

    toml::get<T>と同様の変換を行います。失敗した場合は第二引数が返されます。

    Tconst char*である場合 +#

    template<typename TC>
    +typename basic_value<TC>::string_type
    +get_or(const basic_value<TC>& v,
    +       const typename basic_value<TC>::string_type::value_type* opt);
    +

    const char* が渡された場合、変換先は std::string として解釈されます。

    Tがその他の場合 +#

    template<typename TC>
    +typename std::remove_cv<typename std::remove_reference<T>::type>::type
    +get_or(const basic_value<TC>& v, T&& opt);
    +

    toml::get<T>と同様の変換を行います。失敗した場合は第二引数が返されます。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/index.html b/ja/docs/reference/index.html new file mode 100644 index 00000000..dbb6bd2c --- /dev/null +++ b/ja/docs/reference/index.html @@ -0,0 +1,75 @@ +reference | toml11 + +
    reference +

    Reference +#

    以下では、toml11が公開するクラスと関数の効果を説明します。

    ディレクトリ構造 +#

    toml.hpptoml_fwd.hpp${TOML11_INCLUDE_DIR} にあります。 +他のファイルは、${TOML11_INCLUDE_DIR}/toml11 にあります。

    もし各機能のファイルを個別に #include したい場合は、 #include <toml11/color.hpp> としてください。 +全てを一度に #include する場合は、 #include <toml.hpp> としてください。

    color.hpp +#

    エラーメッセージの色付けに関する関数を定義します。

    comments.hpp +#

    コメントを持つpreserve_comment型とdiscard_comment型を定義します。

    conversion.hpp +#

    toml::valueとユーザー定義クラスを自動的に変換するマクロを定義します。

    datetime.hpp +#

    日時情報を持つクラスを定義します。

    error_info.hpp +#

    エラー情報を持つクラスを定義します。

    exception.hpp +#

    toml11で使用される例外の基底クラス、toml::exceptionを定義します。

    find.hpp +#

    値を探し変換するtoml::find関数を定義します。

    format.hpp +#

    値のフォーマット情報を持つクラスを定義します。

    from.hpp +#

    ユーザー定義型を変換するためのfrom<T>型の前方宣言です。

    get.hpp +#

    toml::valueの値を取り出し変換するtoml::get<T>関数を定義します。

    into.hpp +#

    ユーザー定義型を変換するためのinto<T>型の前方宣言です。

    literal.hpp +#

    operator"" _tomlリテラルを定義します。

    ordered_map.hpp +#

    toml::ordered_mapを定義します。

    parser.hpp +#

    ファイルまたは文字列をパースする関数を定義します。

    result.hpp +#

    他の関数の返り値として使われる、成功値または失敗値を持つresult<T, E>型を定義します。

    serializer.hpp +#

    シリアライズに用いるtoml::format関数とtoml::serializerを定義します。

    source_location.hpp +#

    エラー情報に用いられる、ファイル内のある領域を指すsource_location型を定義します。

    spec.hpp +#

    TOML言語のバージョン情報と機能フラグを制御する、toml::semantic_version型とtoml::spec型を定義します。

    toml.hpp +#

    toml.hppは、他の全てのヘッダを include します。 +toml11の全機能が使用可能になります。

    toml_fwd.hpp +#

    toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。

    types.hpp +#

    toml::valueの持つ型を制御するためのtoml::type_config型を定義します。

    value.hpp +#

    toml::value型を定義します。

    value_t.hpp +#

    列挙型toml::value_tを定義します。

    version.hpp +#

    toml11のバージョン情報を定義します。

    visit.hpp +#

    toml::valueの持つ値に関数を適用するtoml::visit関数を定義します。

    備考 +#

    ここで明記されない関数(主にnamespace toml::detailnamespace toml::cxx以下に定義されるもの)は、 +ソースコードを見ることで利用可能ではあるものの、そのインターフェースは今後のいかなるバージョンアップでも(パッチバージョンアップを含む)維持される保証はありません。

    \ No newline at end of file diff --git a/ja/docs/reference/index.xml b/ja/docs/reference/index.xml new file mode 100644 index 00000000..4a3bbd31 --- /dev/null +++ b/ja/docs/reference/index.xml @@ -0,0 +1,104 @@ +reference on toml11https://toruniina.github.io/toml11/ja/docs/reference/Recent content in reference on toml11Hugojacolor.hpphttps://toruniina.github.io/toml11/ja/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/color/color.hpp # color.hppでは、エラーメッセージの色付けに関する関数が定義されます。 +色はANSIエスケープシーケンスによって指定されます。 ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。 +マクロ # TOML11_COLORIZE_ERROR_MESSAGE # コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 デフォルトでエラーメッセージに色が付きます。 +定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を 使用して指定する必要があります。 +TOML11_USE_THREAD_LOCAL_COLORIZATION # コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 toml::color::enableの設定がthread_localになります。 この場合、toml::color::enable()やtoml::color::disable()は、それを呼び出したスレッドでの設定しか変更しません。 つまり、新しいスレッドを起動した際にデフォルトと異なる設定にしたい場合は、再度設定が必要になります。 その代わり、toml::color::enable()やtoml::color::disable()はスレッドセーフになります。 +デフォルトでは設定はグローバルです。 グローバルの場合、一つのスレッドがtoml::color::enable()を実行した場合、すべてのスレッドで色が付きます。 ただし、あるスレッドがenable()またはdisable()を実行している間に別のスレッドがenable()、disable()、should_color()を実行した場合、その結果は未定義です。 +関数 # enable() # namespace toml { namespace color { void enable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行うよう設定します。 +例 # #include &lt;toml.hpp&gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(&#34;input.toml&#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行わないよう設定します。comments.hpphttps://toruniina.github.io/toml11/ja/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/comments/comments.hpp # color.hppでは、コメントを保持するクラスが提供されます。 +toml::preserve_comments # preserve_commentsは、コメントを保持するコンテナです。 +std::vector&lt;std::string&gt;が持つメンバ関数を全て持っています。 +コメントはstd::stringとして保持されます。 先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。 +namespace toml { class preserve_comments; bool operator==(const preserve_comments&amp;, const preserve_comments&amp;); bool operator!=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt;=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt;=(const preserve_comments&amp;, const preserve_comments&amp;); void swap(preserve_comments&amp;, preserve_comments&amp;); void swap(preserve_comments&amp;, std::vector&lt;std::string&gt;&amp;); void swap(std::vector&lt;std::string&gt;&amp;, preserve_comments&amp;); std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const preserve_comments&amp;); } //toml メンバ型 # using container_type = std::vector&lt;std::string&gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; メンバ関数 # デフォルトコンストラクタ # preserve_comments() = default; 空のpreserve_commentsを構築します。conversion.hpphttps://toruniina.github.io/toml11/ja/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/conversion/ conversion.hpp # toml::getやtoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。 +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) 例 # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) 関連項目 # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/ja/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/datetime/datetime.hpp # TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。 +enum class month_t # 月を指定するenum classです。 +std::tmとの関係で、local_dateは1月を0としています。 混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。 +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # 日付を保持する構造体です。 +yearは西暦を、monthはstd::tmとの対応のため1月を0として、dayは日付を保持します。 +namespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const&amp;) = default; local_date(local_date&amp;&amp;) = default; local_date&amp; operator=(local_date const&amp;) = default; local_date&amp; operator=(local_date&amp;&amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm&amp; t); explicit local_date(const std::chrono::system_clock::time_point&amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date&amp;, const local_date&amp;); bool operator!error_info.hpphttps://toruniina.github.io/toml11/ja/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/error_info/error_info.hpp # error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。 +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename ... Ts&gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts&amp;&amp; .exception.hpphttps://toruniina.github.io/toml11/ja/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/exception/exception.hpp # toml::exception # toml11で定義される例外型の基底クラスです。 +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml メンバ関数 # デストラクタ # virtual ~exception() noexcept override = default; 派生する際に上書きします。 +what # virtual const char* what() const noexcept override {return &#34;&#34;;} エラーメッセージを返します。派生する際に上書きします。find.hpphttps://toruniina.github.io/toml11/ja/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/find/find.hpp # toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::find # 概要 # toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。 +template&lt;typename T, typename TC, typename ... Keys&gt; T find(const basic_value&lt;TC&gt;&amp; v, Keys ... keys); サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。 +T が指定されなかった場合、 toml::value が返されます。 +キーは、 toml::value::key_type または std::size_t です。 複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。 +再帰的な検索に関しての注意 # TOMLには通常の bare key の他に、 &quot; や ' で囲まれた quoted key というものがあります。 quoted key を使うと、 &quot;foo.format.hpphttps://toruniina.github.io/toml11/ja/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/format/format.hpp # toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。 +indent_char # インデント情報を表す列挙体です。 +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); noneを選んだ場合、super tableでの値によらず、インデントは使用されません。 +シリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。 +boolean_format_info # booleanのフォーマット情報です。 +struct boolean_format_info {}; bool operator==(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; bool operator!=(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。 +integer_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const integer_format f); std::string to_string(const integer_format); integerの基数を指定します。from.hpphttps://toruniina.github.io/toml11/ja/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/from/ from.hpp # toml::getやtoml::findで使用する、toml::valueからの変換を定義する構造体です。 +メンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct from; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.hpp&gt; namespace toml { template&lt;&gt; struct from&lt;extlib::foo&gt; { template&lt;typename TC&gt; static extlib::foo from_toml(const toml::basic_value&lt;TC&gt;&amp; v) { return extlib::foo{toml::find&lt;int&gt;(v, &#34;a&#34;), toml::find&lt;std::string&gt;(v, &#34;b&#34;)}; } }; } // toml 関連項目 # conversion.hpp into.hppget.hpphttps://toruniina.github.io/toml11/ja/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/get/get.hpp # toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::get&lt;T&gt; # 概要 # 基本的に、toml::getは以下のような関数として振る舞います。 Tはtoml::get&lt;int&gt;(v)のようにして与えます。 +template&lt;typename T, typename TC&gt; T get(const basic_value&lt;TC&gt;&amp; v); ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。 +Tの型の種類は、 +変換が必要ない型 変換する必要がある型 に分けられます。 +細かい条件と、特別にサポートしている具体的な型については後述します。 +変換が必要ない型 # 変換が必要ないのは、渡された toml::value が格納している型です。 例えば、 toml::value::integer_type は std::int64_t のエイリアスなので、 toml::get&lt;std::int64_t&gt;(v) は変換を必要としません。 この場合、 toml:get は integer の値を toml::value から取り出し、その参照を返します。 +渡されたtoml::valueが可変参照(&amp;)である場合、返す値も可変参照(&amp;)です。 不変参照(const&amp;)の場合、返す値も不変参照(const&amp;)となります。 可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。 +変換が必要な型 # 上記の型以外については変換が必要です。 例えば、toml::value::integer_typeはstd::int64_tのエイリアスなので、toml::get&lt;std::size_t&gt;(toml::value&amp;)は変換が必要です。 この場合、toml:getはintegerの値をtoml::valueから取り出し、それをキャストして返します。 +toml11は簡単なキャストだけでなく、 toml::arrayからやstd::tuple&lt;int, double, std::string&gt;やstd::array&lt;double, 4&gt;、 toml::tableからstd::map&lt;std::string, int&gt;などの複雑な型変換をサポートします。 具体的には、続くセクションを参照してください。into.hpphttps://toruniina.github.io/toml11/ja/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/into/into.hpp # toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。 +メンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct into; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.hpp&gt; namespace toml { template&lt;&gt; struct into&lt;extlib::foo&gt; { template&lt;typename TC&gt; static toml::basic_value&lt;TC&gt; into_toml(const extlib::foo&amp; f) { using value_type = toml::basic_value&lt;TC&gt;; using table_type = typename value_type::table_type; return value_type(table_type{{&#34;a&#34;, f.a}, {&#34;b&#34;, f.b}}); } }; } // toml 関連項目 # conversion.literal.hpphttps://toruniina.github.io/toml11/ja/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/literal/literal.hpp # literal.hppでは、_tomlリテラルが定義されます。 +_tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。 +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // C++20以降 } // toml_literals } // literals } // toml 自由関数 # operator&quot;&quot; _toml(char) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); 文字列リテラルをパースしてtoml::valueに変換します。 +通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。 +const auto v1 = &#34;a = &#39;foo&#39;&#34;_toml; // v1: {a = &#39;foo&#39;} 改行を含む場合、生文字列リテラルが便利です。 +const auto v1 = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; 値が単体で書かれていた場合、その値になります。ordered_map.hpphttps://toruniina.github.io/toml11/ja/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/ordered_map/ordered_map.hpp # ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。 +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。 +線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。 +非メンバ型 # namespace toml { struct ordered_type_config; using ordered_value = basic_value&lt;ordered_type_config&gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } toml::type_config と toml::value の代わりに使用します。 +toml::parse はデフォルトで type_config を使用するので、パースする際に +const auto input = toml::parse&lt;toml::ordered_type_config&gt;(&#34;input.toml&#34;); としてください。 +メンバ型 # using key_type = Key; using mapped_type = Val; using value_type = std::pair&lt;Key, Val&gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector&lt;value_type, Allocator&gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; メンバ関数 # コンストラクタ # ordered_map() = default; 空の ordered_map を構築します。parser.hpphttps://toruniina.github.io/toml11/ja/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/parser/parser.hpp # ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。 +parseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。 +parse # 与えられたファイルの内容をパースし、toml::basic_valueを返します。 +失敗した場合はtoml::syntax_errorが送出されます。 +basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。 +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(const char (&amp;)[N] filename, toml::spec) # namespace toml { template&lt;typename TC = type_config, std::size_t N&gt; basic_value&lt;TC&gt; parse(const char (&amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルを受け取って、そのファイルの内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(std::filesystem::path, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(const std::filesystem::path&amp; fpath, spec s = spec::default_version()); } &lt;filesystem&gt;が利用可能な場合のみ定義されます。result.hpphttps://toruniina.github.io/toml11/ja/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/result/result.hpp # result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。 +これは、例外を投げないtoml::try_parseの返り値として使用されます。 +success # 成功値を持つ型です。 +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } メンバ型 # using value_type = T; 成功値の型です。serializer.hpphttps://toruniina.github.io/toml11/ja/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/serializer/serializer.hpp # format # シリアライズを行います。 +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } フォーマット情報とspecが矛盾する場合、例えばv1.0.0でtable_format::multiline_onelineが指定されているときなどは、specが優先されます。 +format(v, spec) # toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。 +table_typeだった場合、それがルートであるとしてフォーマットします。 それ以外の値だった場合、値のみをフォーマットします。 +format(k, v, spec) # toml::valueを、与えられたキーと同時にフォーマットします。 +vはそのキー以下に定義されていると解釈されます。 +format([k,...], v, spec) # vはそのキー以下に定義されていると解釈されます。 キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。source_location.hpphttps://toruniina.github.io/toml11/ja/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/source_location/source_location.hpp # source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。 +このクラスは、エラーメッセージで問題の箇所を指摘するために使われます。 +toml::source_location # source_locationは、TOMLファイル内のある領域を指すクラスです。 +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/ja/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/spec/spec.hpp # spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。 +toml::semantic_version # semantic_versionは、バージョン情報を格納するクラスです。 +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml メンバ関数 # コンストラクタ # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; major, minor, patchバージョンを指定して構築します。toml_fwd.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。 +toml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。 +このファイルには前方宣言しか含まれていないため、 toml::basic_value&lt;toml::type_config&gt;::table_type として定義される toml::table と、同様に定義される toml::array は使用できません。 それらには basic_value の実装が必要だからです。 このヘッダファイルと toml.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。toml.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml/toml.hpp # toml.hppは、他の全てのヘッダを include します。 +これによって、toml11の全機能が使用可能になります。 +このヘッダファイルと toml_fwd.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。types.hpphttps://toruniina.github.io/toml11/ja/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/types/types.hpp # 型情報を与えるクラスが定義されます。 +type_config # type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。 +toml::basic_value&lt;T&gt;内で異なる型を使用する場合、これを別に定義して渡します。 記載のある要素は全て必須の要素です。 +通常のストリーム演算子を使用できない数値型を使用する場合、read_int、read_floatに相当するものを定義し、置き換えてください。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static メンバ関数 # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); 通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。value_t.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value_t/value_t.hpp # 型情報を表す列挙型です。 +value_t # value_tは、toml::valueが持つ型情報を扱う際に使用します。 +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml 非メンバ関数 # ストリーム演算子 # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); value_tの値を文字列化してストリームへ出力します。value.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value/value.hpp # value.hppでは、basic_valueが定義されます。 +toml::basic_value # basic_valueは、TOMLの値を格納するクラスです。 +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // 以下はtypes.hppで定義される // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml メンバ型 # 以下のメンバ型が定義されます。version.hpphttps://toruniina.github.io/toml11/ja/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/version/version.hpp # version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。 +マクロ # TOML11_VERSION_MAJOR # toml11のメジャーバージョンです。 +TOML11_VERSION_MINOR # toml11のマイナーバージョンです。 +TOML11_VERSION_PATCH # toml11のパッチバージョンです。 +関数 # license_notice # namespace toml { const char* license_notice() noexcept; } ライセンス条項を返します。 +ソースコードを公開せずに頒布する際の利便性のために用意されています。visit.hpphttps://toruniina.github.io/toml11/ja/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/visit/visit.hpp # visit.hppでは、toml::visitが定義されます。 +toml::visit # 関数 # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v) template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v) } basic_value&lt;TC&gt;が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。 +条件 # Visitorは、basic_value&lt;TC&gt;が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。 +また、それぞれのオーバーロードで返り値は同じであることが要求されます。 +例 # #include &lt;toml.hpp&gt; #include &lt;iostream&gt; struct type_name_of { std::string operator()(const toml::value::boolean_type &amp;) const {return &#34;boolean&#34;;} std::string operator()(const toml::value::integer_type &amp;) const {return &#34;integer&#34;;} std::string operator()(const toml::value::floating_type &amp;) const {return &#34;floating&#34;;} std::string operator()(const toml::value::string_type &amp;) const {return &#34;string&#34;;} std::string operator()(const toml::value::local_time_type &amp;) const {return &#34;local_time&#34;;} std::string operator()(const toml::value::local_date_type &amp;) const {return &#34;local_date&#34;;} std::string operator()(const toml::value::local_datetime_type &amp;) const {return &#34;local_datetime&#34;;} std::string operator()(const toml::value::offset_datetime_type&amp;) const {return &#34;offset_datetime&#34;;} std::string operator()(const toml::value::array_type &amp;) const {return &#34;array&#34;;} std::string operator()(const toml::value::table_type &amp;) const {return &#34;table&#34;;} }; int main() { toml::value v(3. \ No newline at end of file diff --git a/ja/docs/reference/into/index.html b/ja/docs/reference/into/index.html new file mode 100644 index 00000000..7cbc9ebb --- /dev/null +++ b/ja/docs/reference/into/index.html @@ -0,0 +1,50 @@ +into.hpp | toml11 + +
    into.hpp +

    into.hpp +#

    toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。

    メンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto<T>を使用してください。

    このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。

    namespace toml
    +{
    +
    +template<typename T>
    +struct into;
    +
    +} // toml
    +

    例 +#

    namespace extlib
    +{
    +struct foo
    +{
    +    int a;
    +    std::string b;
    +};
    +} // extlib
    +
    +#include <toml11/into.hpp>
    +
    +namespace toml
    +{
    +template<>
    +struct into<extlib::foo>
    +{
    +    template<typename TC>
    +    static toml::basic_value<TC> into_toml(const extlib::foo& f)
    +    {
    +        using value_type = toml::basic_value<TC>;
    +        using table_type = typename value_type::table_type;
    +        return value_type(table_type{{"a", f.a}, {"b", f.b}});
    +    }
    +};
    +} // toml
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/literal/index.html b/ja/docs/reference/literal/index.html new file mode 100644 index 00000000..b3e22fb8 --- /dev/null +++ b/ja/docs/reference/literal/index.html @@ -0,0 +1,53 @@ +literal.hpp | toml11 + +
    literal.hpp +

    literal.hpp +#

    literal.hppでは、_tomlリテラルが定義されます。

    _tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。

    namespace toml
    +{
    +inline namespace literals
    +{
    +inline namespace toml_literals
    +{
    +toml::value operator"" _toml(const char* str, std::size_t len);
    +toml::value operator"" _toml(const char8_t* str, std::size_t len); // C++20以降
    +} // toml_literals
    +} // literals
    +} // toml
    +

    自由関数 +#

    operator"" _toml(char) +#

    toml::value operator"" _toml(const char* str, std::size_t len);
    +

    文字列リテラルをパースしてtoml::valueに変換します。

    通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。

    const auto v1 = "a = 'foo'"_toml; // v1: {a = 'foo'}
    +

    改行を含む場合、生文字列リテラルが便利です。

    const auto v1 = R"(
    +    a = 42
    +    b = "foo"
    +)"_toml;
    +

    値が単体で書かれていた場合、その値になります。

    const auto v2 = "'foo'"_toml;     // v2: 'foo'
    +

    TOMLは数値のみからなるキーを許可しています。 +[1]のように、テーブル定義と配列の区別がつかない場合、テーブル定義が優先されます。

    配列として解釈させるには、trailing commaを使用してください。

    const auto v3 = "[1]"_toml;  // v3: {1 = {}}
    +const auto v4 = "[1,]"_toml; // v4: [1,]
    +

    operator"" _toml(char8_t) +#

    char8_tが利用可能な場合に定義されます。引数の型のほかに違いはありません。

    例 +#

    #include <toml.hpp>
    +int main()
    +{
    +    using namespace toml::literals::toml_literals;
    +    const auto v = "a = \"foo\""_toml;
    +    assert(v.at("a").as_string() == "foo");
    +    return 0;
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/reference/ordered_map/index.html b/ja/docs/reference/ordered_map/index.html new file mode 100644 index 00000000..b901dd23 --- /dev/null +++ b/ja/docs/reference/ordered_map/index.html @@ -0,0 +1,145 @@ +ordered_map.hpp | toml11 + +
    ordered_map.hpp +

    ordered_map.hpp +#

    ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。

    class ordered_map +#

    namespace toml
    +{
    +template<typename Key, typename Val, typename Cmp = std::equal_to<Key>,
    +         typename Allocator = std::allocator<std::pair<Key, Val>>>
    +class ordered_map;
    +}
    +

    ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。

    線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 +検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。

    非メンバ型 +#

    namespace toml
    +{
    +struct ordered_type_config;
    +
    +using ordered_value = basic_value<ordered_type_config>;
    +using ordered_table = typename ordered_value::table_type;
    +using ordered_array = typename ordered_value::array_type;
    +}
    +

    toml::type_configtoml::value の代わりに使用します。

    toml::parse はデフォルトで type_config を使用するので、パースする際に

    const auto input = toml::parse<toml::ordered_type_config>("input.toml");
    +

    としてください。

    メンバ型 +#

    using key_type       = Key;
    +using mapped_type    = Val;
    +using value_type     = std::pair<Key, Val>;
    +using key_compare    = Cmp;
    +using allocator_type = Allocator;
    +
    +using container_type  = std::vector<value_type, Allocator>;
    +using reference       = typename container_type::reference;
    +using pointer         = typename container_type::pointer;
    +using const_reference = typename container_type::const_reference;
    +using const_pointer   = typename container_type::const_pointer;
    +using iterator        = typename container_type::iterator;
    +using const_iterator  = typename container_type::const_iterator;
    +using size_type       = typename container_type::size_type;
    +using difference_type = typename container_type::difference_type;
    +

    メンバ関数 +#

    コンストラクタ +#

    ordered_map() = default;
    +

    空の ordered_map を構築します。

    コンストラクタ(コンパレータ、アロケータ) +#

    explicit ordered_map(const Cmp& cmp, const Allocator& alloc = Allocator());
    +explicit ordered_map(const Allocator& alloc);
    +

    キーの比較に使用するコンパレータや、コンテナのメモリ確保に使用するアロケータを指定して構築します。

    コピー・ムーブコンストラクタ +#

    ordered_map(const ordered_map&) = default;
    +ordered_map(ordered_map&&)      = default;
    +
    +ordered_map(const ordered_map& other, const Allocator& alloc);
    +ordered_map(ordered_map&& other, const Allocator& alloc);
    +

    別の ordered_map の内容をコピー・ムーブして構築します。

    コンテナのメモリ確保に使用するアロケータを指定することも可能です。

    コンストラクタ(Iterator) +#

    template<typename InputIterator>
    +ordered_map(InputIterator first, InputIterator last, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
    +template<typename InputIterator>
    +ordered_map(InputIterator first, InputIterator last, const Allocator& alloc = Allocator());
    +

    イテレータ範囲を受け取って構築します。

    順序は、イテレータの順序に従います。

    コンストラクタ(std::initializer_list) +#

    ordered_map(std::initializer_list<value_type> v, const Cmp& cmp = Cmp(), const Allocator& alloc = Allocator());
    +ordered_map(std::initializer_list<value_type> v, const Allocator& alloc);
    +

    ordered_map{...}の形式で初期化します。

    コピー・ムーブ代入演算子 +#

    ordered_map& operator=(const ordered_map&) = default;
    +ordered_map& operator=(ordered_map&&)      = default;
    +

    別の ordered_map の内容をコピー・ムーブ代入します。

    代入演算子(std::initializer_list) +#

    ordered_map& operator=(std::initializer_list<value_type> v);
    +

    std::initializer_list の内容を代入します。

    デストラクタ +#

    ~ordered_map() = default;
    +

    ordered_map を破棄します。

    begin(), end() +#

    iterator       begin()        noexcept;
    +iterator       end()          noexcept;
    +const_iterator begin()  const noexcept;
    +const_iterator end()    const noexcept;
    +const_iterator cbegin() const noexcept;
    +const_iterator cend()   const noexcept;
    +

    コンテナの内容を順序通りにイテレートします。

    empty() +#

    bool empty() const noexcept;
    +

    ordered_map が空の場合 true を、そうでない場合 false を返します。

    size() +#

    std::size_t size() const noexcept;
    +

    ordered_map の要素数を返します。

    max_size() +#

    std::size_t max_size() const noexcept;
    +

    ordered_map が持つことのできる最大の要素数を返します。

    clear() +#

    void clear();
    +

    内容を消去します。

    push_back(kv) +#

    void push_back(const value_type&);
    +void push_back(value_type&&);
    +

    キーと値のペアを末尾に追加します。

    emplace_back(k, v) +#

    void emplace_back(key_type, mapped_type);
    +

    キーと値のペアを末尾に追加します。

    pop_back() +#

    void pop_back();
    +

    末尾の値を削除します。

    insert(kv) +#

    void insert(value_type);
    +

    キーと値のペアを末尾に追加します。

    emplace(k, v) +#

    void emplace(key_type, mapped_type);
    +

    キーと値のペアを末尾に追加します。

    count(k) +#

    std::size_t count(const key_type&) const noexcept;
    +

    キーに対応する値の数を返します。

    同じキーに複数の値を代入することはできないので、値が存在する場合は 1, そうでない場合は 0 を返します。

    contains(k) +#

    bool contains(const key_type&) const noexcept;
    +

    キーに対応する値が存在するなら true を、そうでないなら false を返します。

    find(k) +#

    iterator       find(const key_type& key)       noexcept;
    +const_iterator find(const key_type& key) const noexcept;
    +

    キーに対応する値を検索し、それを指すイテレータを返します。

    存在しなかった場合、end()を返します。

    at(k) +#

    mapped_type&       at(const key_type& k);
    +mapped_type const& at(const key_type& k) const;
    +

    キーに対応する値を検索して返します。

    存在しなかった場合、std::out_of_rangeを送出します。

    operator[](k) +#

    mapped_type&       operator[](const key_type& k);
    +mapped_type const& operator[](const key_type& k) const;
    +

    キーに対応する値を検索して返します。

    存在しなかった場合、新規な値を構築して返します。

    ordered_mapconst の場合は新規な値を構築できないので、 std::out_of_range を送出します。

    key_comp() +#

    key_compare key_comp() const;
    +

    比較に使用するコンパレータを返します。

    使用上の注意 +#

    キーの書き換え +#

    ordered_mapvalue_typestd::pair<Key, Val> を使用しているので、イテレータを介してキーを書き換えることが可能になってしまっています。

    この方法でキーを書き換えることは推奨されません。

    キーを書き換えて既存のキーと衝突した場合、衝突したうちの片方が検索できなくなります。

    operator[]push_back, insert による書き込みの場合は、既存のキーとの衝突が検出されます。

    保たれる順序の詳細 +#

    ordered_map はキーの順序を保ちますが、ここで保たれる順序は同じテーブルで定義されたキーの順序のみです。 +よって、テーブルをまたいだ順序は保たれないことに注意してください。

    例えば、以下のファイルの順序は保たれます。

    apple.type = "fruit"
    +apple.skin = "thin"
    +apple.color = "red"
    +orange.type = "fruit"
    +orange.skin = "thick"
    +orange.color = "orange"
    +

    対して以下のファイルの順序は保たれません。

    apple.type = "fruit"
    +orange.type = "fruit"
    +
    +apple.skin = "thin"
    +orange.skin = "thick"
    +
    +apple.color = "red"
    +orange.color = "orange"
    +

    ordered_map が保つ順序は、rootテーブルに定義された appleorange の順序と、 +apple 内で定義された type, skin, color の順序、 +また orange 内で定義された type, skin, color の順序のみです。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/parser/index.html b/ja/docs/reference/parser/index.html new file mode 100644 index 00000000..2a9f0a4a --- /dev/null +++ b/ja/docs/reference/parser/index.html @@ -0,0 +1,198 @@ +parser.hpp | toml11 + +
    parser.hpp +

    parser.hpp +#

    ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。

    parseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。

    parse +#

    与えられたファイルの内容をパースし、toml::basic_valueを返します。

    失敗した場合はtoml::syntax_errorが送出されます。

    basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。

    parse(std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(std::string fname,
    +      spec s = spec::default_version());
    +}
    +

    ファイル名を受け取って、その内容をパースします。

    ファイルの読み込みに失敗した場合、file_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(const char (&)[N] filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config, std::size_t N>
    +basic_value<TC>
    +parse(const char (&fname)[N],
    +      spec s = spec::default_version());
    +}
    +

    文字列リテラルを受け取って、そのファイルの内容をパースします。

    ファイルの読み込みに失敗した場合、file_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(std::filesystem::path, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(const std::filesystem::path& fpath,
    +      spec s = spec::default_version());
    +}
    +

    <filesystem>が利用可能な場合のみ定義されます。

    ファイルパスを受け取って、そのファイルの内容をパースします。

    ファイルの読み込みに失敗した場合、file_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(std::istream&, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(std::istream& is,
    +      std::string fname = "unknown file",
    +      spec s = spec::default_version());
    +}
    +

    std::istream&を受け取ってその内容をパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +std::ios::binaryを使ってバイナリモードで開いてください。

    ファイル名の情報は第三引数で受け取ります。ファイル名が渡されなかった場合、"unknown file"になります。

    parse(FILE*, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +parse(FILE* fp,
    +      std::string filename,
    +      spec s = spec::default_version());
    +}
    +

    FILE*が指すファイルを読み込んでパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +fopenには"rb"などを渡してバイナリモードで開いてください。

    ファイルの読み込みに失敗した場合、errnoが含まれたfile_io_errorが送出されます。

    パースに失敗した場合、syntax_errorが送出されます。

    parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse(std::vector<unsigned char> content,
    +      std::string filename,
    +      spec s = spec::default_version());
    +}
    +

    バイト列をTOMLファイルとしてパースします。

    パースに失敗した場合、syntax_errorが送出されます。

    parse_str +#

    parse_str(std::string, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +basic_value<TC>
    +parse_str(std::string content,
    +          spec s = spec::default_version(),
    +          cxx::source_location loc = cxx::source_location::current());
    +}
    +

    文字列をTOMLファイルとしてパースします。

    失敗した場合はtoml::syntax_errorが送出されます。

    basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。

    第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 +std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 +parse_strが呼ばれた地点の情報が位置情報として保存されます。

    try_parse +#

    与えられたファイルの内容をパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector<toml::error_info>を返します。

    basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。

    try_parseparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 +標準ライブラリから送出される例外はそのまま送出されることに注意してください。

    例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。

    try_parse(std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(std::string fname,
    +          spec s = spec::default_version());
    +}
    +

    ファイル名を受け取って、その内容をパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(const char (&)[N] filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config, std::size_t N>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(const char (&fname)[N],
    +          spec s = spec::default_version());
    +}
    +

    文字列リテラルをファイル名として受け取って、その内容をパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(std::filesystem::path, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(const std::filesystem::path& fpath,
    +          spec s = spec::default_version());
    +}
    +

    ファイルパスを受け取って、その内容をパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(std::istream&, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(std::istream& is,
    +          std::string fname = "unknown file",
    +          spec s = spec::default_version());
    +}
    +

    std::istream&を受け取ってその内容をパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +std::ios::binaryを使ってバイナリモードで開いてください。

    ファイル名の情報は第二引数で受け取ります。ファイル名が渡されなかった場合、"unknown file"になります。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(FILE*, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(FILE* fp,
    +          std::string filename,
    +          spec s = spec::default_version());
    +}
    +

    FILE*を受け取って、そのファイルの内容をパースします。

    標準ライブラリが改行文字を自動変換することによるファイルサイズと文字数との不整合を避けるため、 +fopenには"rb"などを渡してバイナリモードで開いてください。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse(std::vector<unsigned char>, std::string filename, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse(std::vector<unsigned char> content,
    +          std::string filename,
    +          spec s = spec::default_version());
    +}
    +

    バイト列を受け取って、その内容をTOMLファイルとしてパースします。

    パースに失敗した場合、エラー型であるstd::vector<error_info>を持つresultが返されます。

    成功した場合、basic_valueを持つresultが返されます。

    try_parse_str +#

    try_parse_str(std::string, toml::spec) +#

    namespace toml
    +{
    +template<typename TC = type_config>
    +result<basic_value<TC>, std::vector<error_info>>
    +try_parse_str(std::string content,
    +              spec s = spec::default_version(),
    +              cxx::source_location loc = cxx::source_location::current());
    +}
    +

    文字列をTOMLファイルとしてパースし、成功した場合はtoml::basic_valueを、失敗した場合はstd::vector<toml::error_info>を返します。

    parse_strと異なり、syntax_errorを送出せず、エラー情報をresultの失敗型として返します。

    std::source_location, std::experimental::source_location, __builtin_FILEのどれかが利用可能な場合、それを位置情報に記録します。

    第三引数のcxx::source_locationを手動で設定する必要は通常ありません。 +std::source_location, std::experimental::source_location, __builtin_FILEのいずれかが利用可能な場合、 +parse_strが呼ばれた地点の情報が位置情報として保存されます。

    try_parseparseと異なりsyntax_errorなどのtoml11で定義された例外は投げませんが、 +標準ライブラリから送出される例外はそのまま送出されることに注意してください。

    例えば、std::ifstreamの内部で起きたエラーや、std::vectorでのメモリ枯渇などは例外を送出します。

    syntax_error +#

    namespace toml
    +{
    +struct syntax_error final : public ::toml::exception
    +{
    +  public:
    +    syntax_error(std::string what_arg, std::vector<error_info> err);
    +    ~syntax_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +    std::vector<error_info> const& errors() const noexcept
    +};
    +}
    +

    TOML言語の文法エラーが発見された場合に送出される例外です。

    parseからは送出されますが、try_parseからは送出されません。

    file_io_error +#

    namespace toml
    +{
    +struct file_io_error final : public ::toml::exception
    +{
    +  public:
    +    file_io_error(const std::string& msg, const std::string& fname);
    +    file_io_error(int errnum, const std::string& msg, const std::string& fname);
    +    ~file_io_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +
    +    bool has_errno() const noexcept;
    +    int  get_errno() const noexcept;
    +};
    +}
    +

    ファイルの内容を読むのに失敗した場合に送出される例外です。

    FILE*を使ってファイルを読み込んだ場合はerrnoが設定されます。

    has_errno +#

    std::ifstreamが失敗した場合はerrnoは設定されません。

    このとき、has_errnofalseになります。

    get_errno +#

    特にFILE*を渡していた場合に、errnoの値を取得します。

    has_errnofalseの場合は0となります。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/result/index.html b/ja/docs/reference/result/index.html new file mode 100644 index 00000000..e1867648 --- /dev/null +++ b/ja/docs/reference/result/index.html @@ -0,0 +1,277 @@ +result.hpp | toml11 + +
    result.hpp +

    result.hpp +#

    result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。

    これは、例外を投げないtoml::try_parseの返り値として使用されます。

    success +#

    成功値を持つ型です。

    namespace toml
    +{
    +template<typename T>
    +struct success
    +{
    +    using value_type = T;
    +
    +    explicit success(value_type v);
    +
    +    ~success() = default;
    +    success(const success&) = default;
    +    success(success&&)      = default;
    +    success& operator=(const success&) = default;
    +    success& operator=(success&&)      = default;
    +
    +    template<typename U>
    +    explicit success(U&& v);
    +    template<typename U>
    +    explicit success(success<U> v);
    +
    +    value_type&       get()       noexcept;
    +    value_type const& get() const noexcept;
    +};
    +
    +template<typename T>
    +success<typename std::decay<T>::type> ok(T&& v);
    +template<std::size_t N>
    +success<std::string> ok(const char (&literal)[N])
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    成功値の型です。

    メンバ関数 +#

    コンストラクタ +#

    explicit success(value_type v);
    +

    value_typeを受け取って構築します。

    template<typename U>
    +explicit success(U&& v);
    +

    value_typeに変換可能な他の型を受け取って構築します。

    template<typename U>
    +explicit success(success<U> v);
    +

    value_typeに変換可能な他の型を持つsuccess型を受け取って構築します。

    get() +#

    value_type&       get()       noexcept;
    +value_type const& get() const noexcept;
    +

    値にアクセスします。

    非メンバ関数 +#

    ok(T) +#

    template<typename T>
    +success<typename std::decay<T>::type> ok(T&& v);
    +template<std::size_t N>
    +success<std::string> ok(const char (&literal)[N])
    +

    成功値からsuccess型を構築して返します。

    文字列リテラルを与えた場合は、std::stringにして返します。

    success<reference_wrapper<T>> +#

    successの特殊化。成功値が参照であるときに使用されます。

    namespace toml
    +{
    +template<typename T>
    +struct success<std::reference_wrapper<T>>
    +{
    +    using value_type = T;
    +
    +    explicit success(std::reference_wrapper<value_type> v) noexcept;
    +
    +    value_type&       get()       noexcept;
    +    value_type const& get() const noexcept;
    +};
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    成功値の型です。参照ではなく、std::reference_wrapper<T>Tです。

    get() +#

    value_type&       get()       noexcept;
    +value_type const& get() const noexcept;
    +

    値にアクセスします。

    failure +#

    失敗値を持つ型です。

    namespace toml
    +{
    +template<typename T>
    +struct failure
    +{
    +    using value_type = T;
    +
    +    explicit failure(value_type v);
    +
    +    ~failure() = default;
    +    failure(const failure&) = default;
    +    failure(failure&&)      = default;
    +    failure& operator=(const failure&) = default;
    +    failure& operator=(failure&&)      = default;
    +
    +    template<typename U>
    +    explicit failure(U&& v);
    +    template<typename U>
    +    explicit failure(failure<U> v);
    +
    +    value_type&       get()       noexcept;
    +    value_type const& get() const noexcept;
    +};
    +
    +template<typename T>
    +failure<typename std::decay<T>::type> err(T&& v);
    +template<std::size_t N>
    +failure<std::string> err(const char (&literal)[N]);
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    失敗値の型です。

    メンバ関数 +#

    コンストラクタ +#

    explicit failure(value_type v);
    +

    value_typeを受け取って構築します。

    template<typename U>
    +explicit failure(U&& v);
    +

    value_typeに変換可能な他の型を受け取って構築します。

    template<typename U>
    +explicit failure(failure<U> v);
    +

    value_typeに変換可能な他の型を持つfailure型を受け取って構築します。

    get() +#

    value_type&       get()       noexcept;
    +value_type const& get() const noexcept;
    +

    値にアクセスします。

    非メンバ関数 +#

    err(T) +#

    template<typename T>
    +failure<typename std::decay<T>::type> err(T&& v);
    +template<std::size_t N>
    +failure<std::string> err(const char (&literal)[N]);
    +

    失敗値からfailure型を構築して返します。

    文字列リテラルを与えた場合は、std::stringにして返します。

    failure<reference_wrapper<T>> +#

    failureの特殊化。失敗値が参照であるときに使用されます。

    namespace toml
    +{
    +template<typename T>
    +struct failure<std::reference_wrapper<T>>
    +{
    +    using value_type = T;
    +
    +    explicit failure(std::reference_wrapper<value_type> v) noexcept;
    +
    +    value_type&       get()       noexcept {return value.get();}
    +    value_type const& get() const noexcept {return value.get();}
    +};
    +}
    +

    メンバ型 +#

    using value_type = T;
    +

    失敗値の型です。参照ではなく、std::reference_wrapper<T>Tです。

    get() +#

    value_type&       get()       noexcept
    +value_type const& get() const noexcept
    +

    値にアクセスします。

    result +#

    成功値か失敗値かのどちらかを持つ型です。

    namespace toml
    +{
    +template<typename T, typename E>
    +struct result
    +{
    +    using success_type = success<T>;
    +    using failure_type = failure<E>;
    +    using value_type = typename success_type::value_type;
    +    using error_type = typename failure_type::value_type;
    +
    +    result(success_type s);
    +    result(failure_type f);
    +
    +    template<typename U>
    +    result(success<U> s);
    +    template<typename U>
    +    result(failure<U> f);
    +
    +    result& operator=(success_type s);
    +    result& operator=(failure_type f);
    +
    +    template<typename U>
    +    result& operator=(success<U> s);
    +    template<typename U>
    +    result& operator=(failure<U> f);
    +
    +    ~result() noexcept;
    +
    +    result(const result& other);
    +    result(result&& other);
    +    result& operator=(const result& other);
    +    result& operator=(result&& other);
    +
    +    template<typename U, typename F>
    +    result(result<U, F> other);
    +    template<typename U, typename F>
    +    result& operator=(result<U, F> other);
    +
    +    bool is_ok()  const noexcept;
    +    bool is_err() const noexcept;
    +
    +    explicit operator bool() const noexcept;
    +
    +    value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
    +    value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
    +
    +    value_type&       unwrap_or(value_type& opt)             noexcept;
    +    value_type const& unwrap_or(value_type const& opt) const noexcept;
    +
    +    error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
    +    error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
    +
    +    value_type&       as_ok()       noexcept;
    +    value_type const& as_ok() const noexcept;
    +
    +    error_type&       as_err()       noexcept;
    +    error_type const& as_err() const noexcept;
    +};
    +}
    +

    メンバ型 +#

    success_type +#

    success<T>です。

    failure_type +#

    failure<E>です。

    value_type +#

    成功型Tです。success_type::value_typeのエイリアスです。

    成功型Tとしてstd::reference_wrapper<U>が渡された場合、その引数型のUになります。

    error_type +#

    失敗型Eです。failure_type::value_typeのエイリアスです。

    失敗型Eとしてstd::reference_wrapper<F>が渡された場合、その引数型のFになります。

    メンバ関数 +#

    コンストラクタ +#

    result() = delete;
    +

    result型はデフォルトでは構築できません。 +成功型か失敗型を与える必要があります。

    result(success_type s);
    +result(failure_type f);
    +

    成功型、失敗型を受け取って構築します。

    template<typename U>
    +result(success<U> s);
    +template<typename U>
    +result(failure<U> f);
    +

    value_typeerror_typeに変換可能な成功型、失敗型を受け取って構築します。

    template<typename U, typename F>
    +result(result<U, F> other);
    +template<typename U, typename F>
    +result& operator=(result<U, F> other);
    +

    変換可能な成功型、失敗型を持つresultから構築します。

    コピー・ムーブコンストラクタ +#

    result(const result& other);
    +result(result&& other);
    +

    コピー・ムーブ構築可能です。

    operator= +#

    result& operator=(const result& other);
    +result& operator=(result&& other);
    +

    コピー・ムーブ代入可能です。

    template<typename U>
    +result& operator=(success<U> s);
    +template<typename U>
    +result& operator=(failure<U> f);
    +

    変換可能な型を持つ成功型、失敗型は代入可能です。

    is_ok() +#

    bool is_ok()  const noexcept;
    +

    成功値を持っている場合trueを、そうでない場合falseを返します。

    is_err() +#

    bool is_err() const noexcept;
    +

    失敗値を持っている場合trueを、そうでない場合falseを返します。

    operator bool() +#

    explicit operator bool() const noexcept;
    +

    成功値を持っている場合trueを、そうでない場合falseを返します。

    unwrap() +#

    value_type&       unwrap(cxx::source_location loc = cxx::source_location::current());
    +value_type const& unwrap(cxx::source_location loc = cxx::source_location::current()) const;
    +

    成功値を取り出します。

    成功値を持っていない場合、toml::bad_result_accessが送出されます。

    std::source_locationまたはstd::experimental::source_locationが利用可能か、 +あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に +unwrap()が発生したソースコードのファイル名と行数が表示されます。

    利用可能でない場合、位置情報は表示されません。

    unwrap_or() +#

    value_type&       unwrap_or(value_type& opt)             noexcept;
    +value_type const& unwrap_or(value_type const& opt) const noexcept;
    +

    成功値を持っていた場合それを、持っていなかった場合は引数で与えられた値を返します。

    unwrap_err() +#

    error_type&       unwrap_err(cxx::source_location loc = cxx::source_location::current());
    +error_type const& unwrap_err(cxx::source_location loc = cxx::source_location::current()) const;
    +

    失敗値を取り出します。

    失敗値を持っていない場合、toml::bad_result_accessが送出されます。

    std::source_locationまたはstd::experimental::source_locationが利用可能か、 +あるいはコンパイラ拡張によって同等の情報が利用可能な場合、what()文字列に +unwrap()が発生したソースコードのファイル名と行数が表示されます。

    利用可能でない場合、位置情報は表示されません。

    as_ok() +#

    value_type&       as_ok()       noexcept;
    +value_type const& as_ok() const noexcept;
    +

    チェックなしで成功値を返します。

    成功値を持っていなかった場合、その動作は未定義となります。

    as_err() +#

    error_type&       as_err()       noexcept;
    +error_type const& as_err() const noexcept;
    +

    チェックなしで失敗値を返します。

    失敗値を持っていなかった場合、その動作は未定義となります。

    bad_result_access +#

    resultunwrapまたはunwrap_errで失敗した際に送出される例外です。

    namespace toml
    +{
    +struct bad_result_access : public ::toml::exception
    +{
    +  public:
    +    explicit bad_result_access(const std::string& what_arg);
    +    virtual ~bad_result_access() noexcept override = default;
    +    virtual const char* what() const noexcept override;
    +  protected:
    +    std::string what_;
    +};
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/reference/serializer/index.html b/ja/docs/reference/serializer/index.html new file mode 100644 index 00000000..34319c24 --- /dev/null +++ b/ja/docs/reference/serializer/index.html @@ -0,0 +1,55 @@ +serializer.hpp | toml11 + +
    serializer.hpp +

    serializer.hpp +#

    format +#

    シリアライズを行います。

    namespace toml
    +{
    +template<typename TC>
    +std::string format(const basic_value<TC>& v,
    +                   const spec s = spec::default_version());
    +template<typename TC>
    +std::string format(const typename basic_value<TC>::key_type& k,
    +                   const basic_value<TC>& v,
    +                   const spec s = spec::default_version());
    +template<typename TC>
    +std::string format(const std::vector<typename basic_value<TC>::key_type>& ks,
    +                   const basic_value<TC>& v,
    +                   const spec s = spec::default_version());
    +}
    +

    フォーマット情報とspecが矛盾する場合、例えばv1.0.0table_format::multiline_onelineが指定されているときなどは、specが優先されます。

    format(v, spec) +#

    toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。

    table_typeだった場合、それがルートであるとしてフォーマットします。 +それ以外の値だった場合、値のみをフォーマットします。

    format(k, v, spec) +#

    toml::valueを、与えられたキーと同時にフォーマットします。

    vはそのキー以下に定義されていると解釈されます。

    format([k,...], v, spec) +#

    vはそのキー以下に定義されていると解釈されます。 +キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。

    serialization_error +#

    シリアライズ中に発生したエラーを報告します。

    namespace toml
    +{
    +struct serialization_error final : public ::toml::exception
    +{
    +  public:
    +    explicit serialization_error(std::string what_arg, source_location loc);
    +    ~serialization_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +    source_location const& location() const noexcept;
    +};
    +}
    +
    \ No newline at end of file diff --git a/ja/docs/reference/source_location/index.html b/ja/docs/reference/source_location/index.html new file mode 100644 index 00000000..320124ae --- /dev/null +++ b/ja/docs/reference/source_location/index.html @@ -0,0 +1,111 @@ +source_location.hpp | toml11 + +
    source_location.hpp +

    source_location.hpp +#

    source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。

    このクラスは、エラーメッセージで問題の箇所を指摘するために使われます。

    toml::source_location +#

    source_locationは、TOMLファイル内のある領域を指すクラスです。

    namespace toml
    +{
    +struct source_location
    +{
    +  public:
    +
    +    explicit source_location(/* implementation-defined */);
    +    ~source_location() = default;
    +    source_location(source_location const&) = default;
    +    source_location(source_location &&)     = default;
    +    source_location& operator=(source_location const&) = default;
    +    source_location& operator=(source_location &&)     = default;
    +
    +    bool        is_ok()  const noexcept;
    +    std::size_t length() const noexcept;
    +
    +    std::size_t first_line_number()   const noexcept;
    +    std::size_t first_column_number() const noexcept;
    +    std::size_t last_line_number()    const noexcept;
    +    std::size_t last_column_number()  const noexcept;
    +
    +    std::string const& file_name()    const noexcept;
    +
    +    std::size_t num_lines()           const noexcept;
    +
    +    std::string const& first_line() const;
    +    std::string const& last_line()  const;
    +
    +    std::vector<std::string> const& lines() const noexcept;
    +};
    +
    +template<typename ... Ts>
    +std::string format_location(const source_location& loc, const std::string& msg, const Ts& ... locs_and_msgs);
    +} //toml
    +

    メンバ関数 +#

    コンストラクタ +#

    explicit source_location(/* implementation-defined */);
    +

    toml::source_locationtoml::parseまたは_tomlリテラル以外で構築することはできません。

    is_ok() +#

    bool is_ok() const noexcept;
    +

    source_locationが有効な値を保持している場合、trueを、そうでない場合falseを返します。

    toml::parse_tomlリテラル以外から構築したtoml::valuelocation()の結果は、指す対象がないため、is_okfalseを返します。

    length() +#

    std::size_t length() const noexcept;
    +

    source_locationが指す領域の長さを返します。

    有効な値を保持していない場合、0を返します。

    first_line_number() +#

    std::size_t first_line_number() const noexcept;
    +

    source_locationが指す領域の最初の行の行番号を返します。

    有効な値を保持していない場合、1を返します。

    first_column_number() +#

    std::size_t first_column_number() const noexcept;
    +

    source_locationが指す領域の最初の列の列番号を返します。

    有効な値を保持していない場合、1を返します。

    last_line_number() +#

    std::size_t last_line_number() const noexcept;
    +

    source_locationが指す領域の最後の行の行番号を返します。

    有効な値を保持していない場合、1を返します。

    last_column_number() +#

    std::size_t last_column_number() const noexcept;
    +

    source_locationが指す領域の最後の列の列番号を返します。

    有効な値を保持していない場合、1を返します。

    file_name() +#

    std::string const& file_name() const noexcept;
    +

    source_locationが指す領域を含むファイルのファイル名を返します。

    有効な値を保持していない場合、"unknown file"を返します。

    num_lines() +#

    std::size_t num_lines() const noexcept;
    +

    source_locationが指す領域の行数を返します。

    有効な値を保持していない場合、0を返します。

    first_line() +#

    std::string const& first_line() const;
    +

    source_locationが指す領域の最初の行を返します。

    有効な値を保持していない場合、std::out_of_range例外が送出されます。

    last_line() +#

    std::string const& last_line() const;
    +

    source_locationが指す領域の最後の行を返します。

    有効な値を保持していない場合、std::out_of_range例外が送出されます。

    lines() +#

    std::vector<std::string> const& lines() const noexcept;
    +

    source_locationが指す領域の全ての行を返します。

    有効な値を保持していない場合、空のstd::vectorへの参照を返します。

    非メンバ関数 +#

    format_location +#

    template<typename ... Ts>
    +std::string format_location(const source_location& loc, const std::string& msg, const Ts& ... locs_and_msgs);
    +

    source_locationが指す箇所と、それについてのメッセージを以下のようにフォーマットします。

     -> {filename.toml}
    +   |
    + 1 | a = 42
    +   |     ^-- {message}
    +

    この時、色付けがONになっている場合、ANSIエスケープシーケンスによって色情報が追加されます。

    locs_and_msgsが複数個ある場合、それらはconst source_location&const std::string&の順である必要があります。

    例:複数のsource_locationstd::string +#

    複数のsource_locationstd::stringを渡した場合、以下のようにフォーマットされます。

    source_location& loc0;
    +source_location& loc1;
    +source_location& loc2;
    +
    +std::string msg0;
    +std::string msg1;
    +std::string msg2;
    +
    +format_location(loc0, msg0,
    +                loc1, msg1,
    +                loc2, msg2);
    +
     -> {filename0.toml}
    +   |
    + 1 | a = 42
    +   |     ^-- {message0}
    +   |
    + -> {filename1.toml}
    +   |
    + 2 | b = 3.14
    +   |     ^-- {message1}
    +   |
    + -> {filename2.toml}
    +   |
    + 3 | c = "foo"
    +   |     ^-- {message2}
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/spec/index.html b/ja/docs/reference/spec/index.html new file mode 100644 index 00000000..ca4a82c1 --- /dev/null +++ b/ja/docs/reference/spec/index.html @@ -0,0 +1,130 @@ +spec.hpp | toml11 + +
    spec.hpp +

    spec.hpp +#

    spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。

    toml::semantic_version +#

    semantic_versionは、バージョン情報を格納するクラスです。

    namespace toml
    +{
    +struct semantic_version
    +{
    +    constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +
    +    std::uint32_t major;
    +    std::uint32_t minor;
    +    std::uint32_t patch;
    +};
    +
    +constexpr semantic_version
    +make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept;
    +
    +constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
    +
    +std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
    +} //toml
    +

    メンバ関数 +#

    コンストラクタ +#

    constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +

    major, minor, patchバージョンを指定して構築します。

    非メンバ関数 +#

    比較演算子 +#

    constexpr bool operator==(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator!=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator< (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator<=(const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator> (const semantic_version&, const semantic_version&) noexcept;
    +constexpr bool operator>=(const semantic_version&, const semantic_version&) noexcept;
    +

    semantic versioningに従って比較します。

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, const semantic_version& ver);
    +

    {major}.{minor}.{patch}の形式で出力します。

    to_string +#

    std::string to_string(const semantic_version& ver);
    +

    {major}.{minor}.{patch}の形式で文字列化します。

    toml::spec +#

    specは、TOMLのバージョン情報を格納するクラスです。

    struct spec
    +{
    +    constexpr static spec default_version() noexcept;
    +
    +    constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +
    +    constexpr explicit spec(const semantic_version& semver) noexcept;
    +
    +    semantic_version version; // toml version
    +
    +    // diff from v1.0.0 -> v1.1.0
    +    bool v1_1_0_allow_control_characters_in_comments;
    +    bool v1_1_0_allow_newlines_in_inline_tables;
    +    bool v1_1_0_allow_trailing_comma_in_inline_tables;
    +    bool v1_1_0_allow_non_english_in_bare_keys;
    +    bool v1_1_0_add_escape_sequence_e;
    +    bool v1_1_0_add_escape_sequence_x;
    +    bool v1_1_0_make_seconds_optional;
    +
    +    // library extensions
    +    bool ext_hex_float;  // allow hex float
    +    bool ext_num_suffix; // allow number suffix
    +    bool ext_null_value; // allow null value
    +};
    +

    メンバ関数 +#

    コンストラクタ +#

    constexpr explicit spec(const semantic_version& semver) noexcept;
    +

    指定されたTOMLバージョンでspecを構築します。

    TOML v1.0.0と、TOML v1.1.0に対応しています。

    default_version() +#

    constexpr static spec default_version() noexcept;
    +

    デフォルトのバージョンでspecを構築します。

    toml::parsetoml::formatでのデフォルト値として使われます。

    toml11 v4.0.0での値は、v1.0.0です。

    v(major, minor, patch) +#

    constexpr static spec v(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept;
    +

    指定されたバージョンでspecを構築します。

    メンバ変数 +#

    各フラグは機能追加がされたバージョンを指定されたとき、自動的にtrueになります。

    変更して渡すことで、toml::parsetoml::formatの挙動を変更できます。

    TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。

    実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。

    そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。

    例 +#

    auto spec = toml::spec::v(1, 0, 0);
    +// v1.0.0の機能に追加して、inline table内の改行を許可する。
    +// それ以外のv1.1.0の機能は有効化されない。
    +spec.v1_1_0_allow_newlines_in_inline_tables = true;
    +
    +auto input = toml::parse("input_file.toml", spec);
    +

    v1_1_0_allow_control_characters_in_comments +#

    bool v1_1_0_allow_control_characters_in_comments;
    +

    ほとんどの制御文字をコメントに含むことを許可します。

    toml v1.1.0で追加。

    v1_1_0_allow_newlines_in_inline_tables +#

    bool v1_1_0_allow_newlines_in_inline_tables;
    +

    inline table内で改行することを許可します。

    toml v1.1.0で追加。

    v1_1_0_allow_trailing_comma_in_inline_tables +#

    bool v1_1_0_allow_trailing_comma_in_inline_tables;
    +

    inline table内での末尾コンマを許可します。

    toml v1.1.0で追加。

    v1_1_0_add_escape_sequence_e +#

    bool v1_1_0_add_escape_sequence_e;
    +

    \eでESC文字を指定できるようになります。

    toml v1.1.0で追加。

    v1_1_0_add_escape_sequence_x +#

    bool v1_1_0_add_escape_sequence_x;
    +

    \xHHで1バイトの文字を指定できるようになります。

    toml v1.1.0で追加。

    v1_1_0_make_seconds_optional +#

    bool v1_1_0_make_seconds_optional;
    +

    時刻での秒数指定を省略可能にします。

    指定されなかった秒数は0で初期化されます。

    toml v1.1.0で追加。

    ext_hex_float +#

    bool ext_hex_float;
    +

    toml11限定の言語拡張です。

    どのバージョンを指定しても、falseで初期化されます。 +使用する際は個別にtrueにしてください。

    浮動小数点数の16進数表記を許可します。

    16進数表記はprintf%a/%Aを指定した場合に準拠します。

    hexf = 0xC0FFEEp-10
    +

    toml::format は、渡された toml::specext_hex_formattrue の場合のみ +16進表記でフォーマットします。 +フォーマット情報で hex が指定されているにも関わらず toml::format に渡された +toml::specext_hex_floatfalse だった場合、16進数指定は無視され、 +10進表記で最大の精度で出力されます。

    ext_num_suffix +#

    bool ext_num_suffix;
    +

    toml11限定の言語拡張です。

    どのバージョンを指定しても、falseで初期化されます。 +使用する際は個別にtrueにしてください。

    10進数の整数と浮動小数点数に接尾辞を追加します。型を問わず、16進や8進、2進表記には適用されません。

    数値と接尾辞の間は_で区切られている必要があります。

    数値部分との区別のため、接尾辞は数値で始まることはできません。

    distance = 10_m   # valid
    +distance = 10_2m  # invalid
    +distance = 10_2_m # valid
    +

    接尾辞は std::string suffix としてフォーマット情報に保持されます。 +数値部分とを分ける _suffix に含まれません。

    toml::value distance = toml::find(input, "distance");
    +assert(distance.as_integer_fmt().suffix == std::string("m"));
    +

    toml::format は、渡された toml::specext_num_suffixtrue の場合のみ +これをフォーマットします。

    suffixは以下のような文法を持ちます。

    non-digit-graph = ALPHA / non-ascii
    +graph           = ALPHA / DIGIT / non-ascii
    +suffix          = _ non-digit-graph *( graph / ( _ graph ) )
    +

    ext_null_value +#

    bool ext_null_value;
    +

    toml11限定の言語拡張です。

    値として null を許可します。

    null を指定された toml::value は値を持たず、 is_empty()true になります。

    toml::format は、渡された toml::specext_null_valuetrue の場合のみ +null としてフォーマットします。 +そうでない場合、 toml::format がエラーで終了します。

    \ No newline at end of file diff --git a/ja/docs/reference/toml/index.html b/ja/docs/reference/toml/index.html new file mode 100644 index 00000000..ba0d8fc7 --- /dev/null +++ b/ja/docs/reference/toml/index.html @@ -0,0 +1,15 @@ +toml.hpp | toml11 + +
    toml.hpp +

    toml.hpp +#

    toml.hppは、他の全てのヘッダを include します。

    これによって、toml11の全機能が使用可能になります。

    このヘッダファイルと toml_fwd.hpp${TOML11_INCLUDE_DIR}/ 以下に、 +他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。

    \ No newline at end of file diff --git a/ja/docs/reference/toml_fwd/index.html b/ja/docs/reference/toml_fwd/index.html new file mode 100644 index 00000000..50c1a4a3 --- /dev/null +++ b/ja/docs/reference/toml_fwd/index.html @@ -0,0 +1,19 @@ +toml_fwd.hpp | toml11 + +
    toml_fwd.hpp +

    toml_fwd.hpp +#

    toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。

    toml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 +toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。

    このファイルには前方宣言しか含まれていないため、 +toml::basic_value<toml::type_config>::table_type として定義される +toml::table と、同様に定義される toml::array は使用できません。 +それらには basic_value の実装が必要だからです。

    このヘッダファイルと toml.hpp${TOML11_INCLUDE_DIR}/ 以下に、 +他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。

    \ No newline at end of file diff --git a/ja/docs/reference/types/index.html b/ja/docs/reference/types/index.html new file mode 100644 index 00000000..7a4263be --- /dev/null +++ b/ja/docs/reference/types/index.html @@ -0,0 +1,99 @@ +types.hpp | toml11 + +
    types.hpp +

    types.hpp +#

    型情報を与えるクラスが定義されます。

    type_config +#

    type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。

    toml::basic_value<T>内で異なる型を使用する場合、これを別に定義して渡します。 +記載のある要素は全て必須の要素です。

    通常のストリーム演算子を使用できない数値型を使用する場合、read_intread_floatに相当するものを定義し、置き換えてください。

    namespace toml
    +{
    +struct type_config
    +{
    +    using comment_type  = preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = std::unordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base);
    +
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex);
    +};
    +
    +using value = basic_value<type_config>;
    +using table = typename value::table_type;
    +using array = typename value::array_type;
    +
    +} // toml
    +

    static メンバ関数 +#

    parse_int(str, src, base) +#

    static result<integer_type, error_info>
    +parse_int(const std::string& str, const source_location src, const std::uint8_t base);
    +

    通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。

    strには、prefix、(0xなどの場合)leading zero、underscoreが取り除かれた文字列が渡されます。

    srcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。

    baseには、10, 2, 8, 16のいずれかが渡されます。

    parse_float(str, src, is_hex) +#

    static result<floating_type, error_info>
    +parse_float(const std::string& str, const source_location src, const bool is_hex);
    +

    通常のストリーム演算子などを使用できない型をfloating_typeとして使用する場合、この関数を実装してください。

    strには、prefix、leading zero、underscoreが取り除かれた文字列が渡されます。

    srcには、その文字列が定義されていた箇所を指すsource_locationが渡されます。

    is_hexには、フォーマットがhexfloatであるかどうかが渡されます。hexfloat拡張を使用しない場合は使われないので、実装する必要はありません。

    hexfloat拡張に関しては、spec.hppを参照してください。

    非メンバ関数 +#

    read_int +#

    template<typename T>
    +result<T, error_info>
    +read_int(const std::string& str, const source_location src, const std::uint8_t base);
    +

    デフォルトで使用される関数です。std::istringstreamを使用してパースします。

    operator>>std::hex等のマニピュレータ、std::numeric_limits<T>が定義されている場合(boost::multiprecisionなど)、特に変更なしにこれを使用できます。

    read_float +#

    template<typename T>
    +result<T, error_info>
    +read_float(const std::string& str, const source_location src, const bool is_hex);
    +

    デフォルトで使用される関数です。decimalの場合はstd::istringstreamを、hexfloatの場合はsscanf()を使用してパースします。

    doublefloatに対応しています。

    それ以外の型の場合、operator>>が定義されていて、かつhexを使用しないなら、これを使用できます。

    ordered_type_config +#

    ordered_type_configは、toml::type_configのテーブル型をtoml::ordered_mapに変更したものです。 +また、toml::ordered_valueエイリアスを定義します。

    そのほかにtype_configとの違いはありません。

    namespace toml
    +{
    +struct ordered_type_config
    +{
    +    using comment_type  = preserve_comments;
    +
    +    using boolean_type  = bool;
    +    using integer_type  = std::int64_t;
    +    using floating_type = double;
    +    using string_type   = std::string;
    +
    +    template<typename T>
    +    using array_type = std::vector<T>;
    +    template<typename K, typename T>
    +    using table_type = ordered_map<K, T>;
    +
    +    static result<integer_type, error_info>
    +    parse_int(const std::string& str, const source_location src, const std::uint8_t base)
    +    {
    +        return read_int<integer_type>(str, src, base);
    +    }
    +    static result<floating_type, error_info>
    +    parse_float(const std::string& str, const source_location src, const bool is_hex)
    +    {
    +        return read_float<floating_type>(str, src, is_hex);
    +    }
    +};
    +
    +using ordered_value = basic_value<ordered_type_config>;
    +using ordered_table = typename ordered_value::table_type;
    +using ordered_array = typename ordered_value::array_type;
    +
    +} // toml
    +
    \ No newline at end of file diff --git a/ja/docs/reference/value/index.html b/ja/docs/reference/value/index.html new file mode 100644 index 00000000..d9875aba --- /dev/null +++ b/ja/docs/reference/value/index.html @@ -0,0 +1,398 @@ +value.hpp | toml11 + +
    value.hpp +

    value.hpp +#

    value.hppでは、basic_valueが定義されます。

    toml::basic_value +#

    basic_valueは、TOMLの値を格納するクラスです。

    namespace toml
    +{
    +template <class TypeConfig>
    +class basic_value;
    +
    +// 以下はtypes.hppで定義される
    +// using value = basic_value<type_config>;
    +// using table = typename basic_value<type_config>::table_type;
    +// using array = typename basic_value<type_config>::array_type;
    +
    +template<typename TC>
    +bool operator==(const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator!=(const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator< (const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator<=(const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator> (const basic_value<TC>&, const basic_value<TC>&);
    +template<typename TC>
    +bool operator>=(const basic_value<TC>&, const basic_value<TC>&);
    +} //toml
    +

    メンバ型 +#

    以下のメンバ型が定義されます。

    TypeConfigを使って、メンバ型を変更することができます。

    参考: types.hpp

    名前定義
    char_typetypename TypeConfig::char_type
    key_typetypename TypeConfig::string_type
    value_typebasic_value<TypeConfig>
    boolean_typetypename TypeConfig::boolean_type
    integer_typetypename TypeConfig::integer_type
    floating_typetypename TypeConfig::floating_type
    string_typetypename TypeConfig::string_type
    local_time_typetoml::local_time
    local_date_typetoml::local_date
    local_datetime_typetoml::local_datetime
    offset_datetime_typetoml::offset_datetime
    array_typetypename TypeConfig::template array_type<value_type>
    table_typetypename TypeConfig::template table_type<key_type, value_type>
    comment_typetypename TypeConfig::comment_type

    メンバ関数 +#

    デフォルトコンストラクタ +#

    basic_value() noexcept
    +

    空のtoml::valueを構築します。

    構築されたtoml::valueは空になります。

    コピー・ムーブコンストラクタ +#

    basic_value(const basic_value& v)
    +basic_value(basic_value&& v)
    +

    値、フォーマット情報、コメント、ファイル領域の全ての情報をコピー・ムーブします。

    コピー・ムーブコンストラクタ(コメント指定) +#

    basic_value(basic_value v, std::vector<std::string> com)
    +

    コメントを上書きしながらコピー・ムーブします。

    変換コンストラクタ +#

    template<typename TI>
    +basic_value(basic_value<TI> other)
    +template<typename TI>
    +basic_value(basic_value<TI> other, std::vector<std::string> com)
    +

    異なるtype_configを持つbasic_valueからコピー・ムーブします。

    コンストラクタ (boolean) +#

    basic_value(boolean_type x)
    +basic_value(boolean_type x, boolean_format_info fmt)
    +basic_value(boolean_type x, std::vector<std::string> com)
    +basic_value(boolean_type x, boolean_format_info fmt, std::vector<std::string> com)
    +

    boolと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ (integer) +#

    basic_value(integer_type x)
    +basic_value(integer_type x, integer_format_info fmt)
    +basic_value(integer_type x, std::vector<std::string> com)
    +basic_value(integer_type x, integer_format_info fmt, std::vector<std::string> com)
    +

    integerと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(floating) +#

    template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x)
    +template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x, floating_format_info fmt)
    +template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x, std::vector<std::string> com)
    +template<typename T, /* T は std::is_floating_point<T> を満たす */>
    +basic_value(T x, floating_format_info fmt, std::vector<std::string> com)
    +

    floatingと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(string) +#

    basic_value(string_type x)
    +basic_value(string_type x, string_format_info fmt)
    +basic_value(string_type x, std::vector<std::string> com)
    +basic_value(string_type x, string_format_info fmt, std::vector<std::string> com)
    +
    +basic_value(const string_type::value_type* x)
    +basic_value(const string_type::value_type* x, string_format_info fmt)
    +basic_value(const string_type::value_type* x, std::vector<std::string> com)
    +basic_value(const string_type::value_type* x, string_format_info fmt, std::vector<std::string> com)
    +
    +// C++17以降
    +basic_value(string_view_type x)
    +basic_value(string_view_type x, string_format_info fmt)
    +basic_value(string_view_type x, std::vector<std::string> com)
    +basic_value(string_view_type x, string_format_info fmt, std::vector<std::string> com)
    +

    stringと、そのフォーマット情報、コメントを受け取って構築します。

    string_view_typeは、string_typeと同じvalue_typetraits_typeを持ちます。

    コンストラクタ(local_date) +#

    basic_value(local_date_type x)
    +basic_value(local_date_type x, local_date_format_info fmt)
    +basic_value(local_date_type x, std::vector<std::string> com)
    +basic_value(local_date_type x, local_date_format_info fmt, std::vector<std::string> com)
    +

    local_date_typeと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(local_time) +#

    basic_value(local_time_type x)
    +basic_value(local_time_type x, local_time_format_info fmt)
    +basic_value(local_time_type x, std::vector<std::string> com)
    +basic_value(local_time_type x, local_time_format_info fmt, std::vector<std::string> com)
    +
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x)
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt)
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x, std::vector<std::string> com)
    +template<typename Rep, typename Period>
    +basic_value(const std::chrono::duration<Rep, Period>& x, local_time_format_info fmt, std::vector<std::string> com)
    +

    local_time_typeと、そのフォーマット情報、コメントを受け取って構築します。

    std::chrono::durationは、00:00:00からの時間幅として構築します。

    コンストラクタ(local_datetime) +#

    basic_value(local_datetime_type x)
    +basic_value(local_datetime_type x, local_date_format_info fmt)
    +basic_value(local_datetime_type x, std::vector<std::string> com)
    +basic_value(local_datetime_type x, local_date_format_info fmt, std::vector<std::string> com)
    +

    local_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。

    コンストラクタ(offset_datetime) +#

    basic_value(offset_datetime_type x)
    +basic_value(offset_datetime_type x, offset_date_format_info fmt)
    +basic_value(offset_datetime_type x, std::vector<std::string> com)
    +basic_value(offset_datetime_type x, offset_date_format_info fmt, std::vector<std::string> com)
    +
    +basic_value(std::chrono::system_clock::time_point x)
    +basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt)
    +basic_value(std::chrono::system_clock::time_point x, std::vector<std::string> com)
    +basic_value(std::chrono::system_clock::time_point x, offset_date_format_info fmt, std::vector<std::string> com)
    +

    offset_datetime_typeと、そのフォーマット情報、コメントを受け取って構築します。

    std::chrono::system_clock::time_pointの場合、それが指す時点として構築します。

    コンストラクタ(array) +#

    basic_value(array_type x)
    +basic_value(array_type x, integer_format_info fmt)
    +basic_value(array_type x, std::vector<std::string> com)
    +basic_value(array_type x, integer_format_info fmt, std::vector<std::string> com)
    +
    +template<typename T, /* T is array-like */>
    +basic_value(T x)
    +template<typename T, /* T is array-like */>
    +basic_value(T x, array_format_info fmt)
    +template<typename T, /* T is array-like */>
    +basic_value(T x, std::vector<std::string> com)
    +template<typename T, /* T is array-like */>
    +basic_value(T x, array_format_info fmt, std::vector<std::string> com)
    +

    arrayと、そのフォーマット情報、コメントを受け取って構築します。

    array-likeは、以下の条件を満たす型です。

    • T::iterator を持つ。
    • T::value_type を持つ。
    • T::key_type を持たない
    • T::mapped_type を持たない
    • std::string ではない
    • std::string_view ではない。(C++17以降)

    コンストラクタ(table) +#

    basic_value(table_type x)
    +basic_value(table_type x, integer_format_info fmt)
    +basic_value(table_type x, std::vector<std::string> com)
    +basic_value(table_type x, integer_format_info fmt, std::vector<std::string> com)
    +
    +template<typename T, /* T is table-like */>
    +basic_value(T x)
    +template<typename T, /* T is table-like */>
    +basic_value(T x, table_format_info fmt)
    +template<typename T, /* T is table-like */>
    +basic_value(T x, std::vector<std::string> com)
    +template<typename T, /* T is table-like */>
    +basic_value(T x, table_format_info fmt, std::vector<std::string> com)
    +

    tableと、そのフォーマット情報、コメントを受け取って構築します。

    table-likeは、以下の条件を満たす型です。

    • T::iterator を持つ。
    • T::value_type を持つ。
    • T::key_type を持つ。
    • T::mapped_type を持つ。

    コンストラクタ(user-defined) +#

    template<typename T /* toml::into<T>が定義されていること */>
    +basic_value(const T& ud);
    +
    +template<typename T /* toml::into<T>が定義されていること */>
    +basic_value(const T& ud, std::vector<std::string> com);
    +
    +template<typename T /* into<T>は定義されておらず、T{}.into_toml()が存在すること */>
    +basic_value(const T& ud);
    +
    +template<typename T /* into<T>は定義されておらず、T{}.into_toml()が存在すること */>
    +basic_value(const T& ud, std::vector<std::string> com);
    +

    toml::into<T> が定義されていた場合、 toml::into<T>(ud) の結果から構築します。

    toml::into<T> が定義されておらず、 Tinto_toml() メンバ関数が定義されていた場合、 +ud.into_toml()の結果から構築します。


    operator=(basic_value) +#

    basic_value& operator=(const basic_value& v)
    +basic_value& operator=(basic_value&& v)
    +template<typename TI>
    +basic_value& operator=(basic_value<TI> other)
    +

    右辺のbasic_valueを代入します。

    operator=(T) +#

    template<typename T>
    +basic_value& operator=(T x)
    +

    Tに対応する値を代入します。

    source_locationの指す内容は破棄されます。

    もし同じ型の値を持っていたなら、元のフォーマット情報が保持されます。


    is<T>() +#

    bool is<T>() const noexcept
    +

    条件 +#

    Tは厳密にTOML型であること。つまり、値に対応するtoml::value::xxx_typeのいずれかであること。

    戻り値 +#

    格納している型がTと一致した場合trueを、そうでない場合はfalseを返します。


    is(toml::value_t) +#

    bool is(toml::value_t t) const noexcept
    +

    戻り値 +#

    格納している型のタグがtと一致した場合trueを、そうでない場合はfalseを返します。


    is_xxx() +#

    bool is_boolean()         const noexcept;
    +bool is_integer()         const noexcept;
    +bool is_floating()        const noexcept;
    +bool is_string()          const noexcept;
    +bool is_offset_datetime() const noexcept;
    +bool is_local_datetime()  const noexcept;
    +bool is_local_date()      const noexcept;
    +bool is_local_time()      const noexcept;
    +bool is_array()           const noexcept;
    +bool is_table()           const noexcept;
    +

    戻り値 +#

    格納している型がその型である場合trueを、そうでない場合はfalseを返します。


    is_empty() +#

    bool is_empty()   const noexcept;
    +

    戻り値 +#

    デフォルト構築され値が代入されていない場合trueを、そうでない場合はfalseを返します。

    is_array_of_tables() +#

    bool is_array_of_tables() const noexcept;
    +

    戻り値 +#

    格納している型が配列であり、空ではなく、全要素がテーブルの場合はtrueを、そうでない場合はfalseを返します。


    type() +#

    toml::value_t type() const noexcept
    +

    戻り値 +#

    格納している型に対応するタグを返します。


    as_xxx() +#

    boolean_type         const& as_boolean        () const;
    +integer_type         const& as_integer        () const;
    +floating_type        const& as_floating       () const;
    +string_type          const& as_string         () const;
    +offset_datetime_type const& as_offset_datetime() const;
    +local_datetime_type  const& as_local_datetime () const;
    +local_date_type      const& as_local_date     () const;
    +local_time_type      const& as_local_time     () const;
    +array_type           const& as_array          () const;
    +table_type           const& as_table          () const;
    +
    +boolean_type        & as_boolean        ();
    +integer_type        & as_integer        ();
    +floating_type       & as_floating       ();
    +string_type         & as_string         ();
    +offset_datetime_type& as_offset_datetime();
    +local_datetime_type & as_local_datetime ();
    +local_date_type     & as_local_date     ();
    +local_time_type     & as_local_time     ();
    +array_type          & as_array          ();
    +table_type          & as_table          ();
    +

    戻り値 +#

    指定された型への参照を返します。

    例外 +#

    格納されている値の型が指定と異なる場合、toml::type_errorを送出します。


    as_xxx(std::nothrow) +#

    std::nothrowオブジェクトを渡して呼び出します。

    boolean_type         const& as_boolean        (const std::nothrow_t&) const noexcept;
    +integer_type         const& as_integer        (const std::nothrow_t&) const noexcept;
    +floating_type        const& as_floating       (const std::nothrow_t&) const noexcept;
    +string_type          const& as_string         (const std::nothrow_t&) const noexcept;
    +offset_datetime_type const& as_offset_datetime(const std::nothrow_t&) const noexcept;
    +local_datetime_type  const& as_local_datetime (const std::nothrow_t&) const noexcept;
    +local_date_type      const& as_local_date     (const std::nothrow_t&) const noexcept;
    +local_time_type      const& as_local_time     (const std::nothrow_t&) const noexcept;
    +array_type           const& as_array          (const std::nothrow_t&) const noexcept;
    +table_type           const& as_table          (const std::nothrow_t&) const noexcept;
    +
    +boolean_type        & as_boolean        (const std::nothrow_t&) noexcept;
    +integer_type        & as_integer        (const std::nothrow_t&) noexcept;
    +floating_type       & as_floating       (const std::nothrow_t&) noexcept;
    +string_type         & as_string         (const std::nothrow_t&) noexcept;
    +offset_datetime_type& as_offset_datetime(const std::nothrow_t&) noexcept;
    +local_datetime_type & as_local_datetime (const std::nothrow_t&) noexcept;
    +local_date_type     & as_local_date     (const std::nothrow_t&) noexcept;
    +local_time_type     & as_local_time     (const std::nothrow_t&) noexcept;
    +array_type          & as_array          (const std::nothrow_t&) noexcept;
    +table_type          & as_table          (const std::nothrow_t&) noexcept;
    +

    戻り値 +#

    指定された型への参照を返します。

    備考 +#

    格納されている値の型が指定と異なる場合、未定義動作となります。


    as_xxx_fmt() +#

    フォーマット情報にアクセスします。

    boolean_format_info        & as_boolean_fmt        ();
    +integer_format_info        & as_integer_fmt        ();
    +floating_format_info       & as_floating_fmt       ();
    +string_format_info         & as_string_fmt         ();
    +offset_datetime_format_info& as_offset_datetime_fmt();
    +local_datetime_format_info & as_local_datetime_fmt ();
    +local_date_format_info     & as_local_date_fmt     ();
    +local_time_format_info     & as_local_time_fmt     ();
    +array_format_info          & as_array_fmt          ();
    +table_format_info          & as_table_fmt          ();
    +
    +boolean_format_info         const& as_boolean_fmt        () const;
    +integer_format_info         const& as_integer_fmt        () const;
    +floating_format_info        const& as_floating_fmt       () const;
    +string_format_info          const& as_string_fmt         () const;
    +offset_datetime_format_info const& as_offset_datetime_fmt() const;
    +local_datetime_format_info  const& as_local_datetime_fmt () const;
    +local_date_format_info      const& as_local_date_fmt     () const;
    +local_time_format_info      const& as_local_time_fmt     () const;
    +array_format_info           const& as_array_fmt          () const;
    +table_format_info           const& as_table_fmt          () const;
    +

    戻り値 +#

    指定された型のフォーマット情報を持つ構造体への参照を返します。

    例外 +#

    格納されている値の型が指定と異なる場合、toml::type_errorを送出します。


    as_xxx_fmt(std::nothrow) +#

    std::nothrowオブジェクトを渡して呼び出します。

    boolean_format_info        & as_boolean_fmt        (const std::nothrow_t&) noexcept;
    +integer_format_info        & as_integer_fmt        (const std::nothrow_t&) noexcept;
    +floating_format_info       & as_floating_fmt       (const std::nothrow_t&) noexcept;
    +string_format_info         & as_string_fmt         (const std::nothrow_t&) noexcept;
    +offset_datetime_format_info& as_offset_datetime_fmt(const std::nothrow_t&) noexcept;
    +local_datetime_format_info & as_local_datetime_fmt (const std::nothrow_t&) noexcept;
    +local_date_format_info     & as_local_date_fmt     (const std::nothrow_t&) noexcept;
    +local_time_format_info     & as_local_time_fmt     (const std::nothrow_t&) noexcept;
    +array_format_info          & as_array_fmt          (const std::nothrow_t&) noexcept;
    +table_format_info          & as_table_fmt          (const std::nothrow_t&) noexcept;
    +
    +boolean_format_info         const& as_boolean_fmt        (const std::nothrow_t&) const noexcept;
    +integer_format_info         const& as_integer_fmt        (const std::nothrow_t&) const noexcept;
    +floating_format_info        const& as_floating_fmt       (const std::nothrow_t&) const noexcept;
    +string_format_info          const& as_string_fmt         (const std::nothrow_t&) const noexcept;
    +offset_datetime_format_info const& as_offset_datetime_fmt(const std::nothrow_t&) const noexcept;
    +local_datetime_format_info  const& as_local_datetime_fmt (const std::nothrow_t&) const noexcept;
    +local_date_format_info      const& as_local_date_fmt     (const std::nothrow_t&) const noexcept;
    +local_time_format_info      const& as_local_time_fmt     (const std::nothrow_t&) const noexcept;
    +array_format_info           const& as_array_fmt          (const std::nothrow_t&) const noexcept;
    +table_format_info           const& as_table_fmt          (const std::nothrow_t&) const noexcept;
    +

    戻り値 +#

    指定された型のフォーマット情報を持つ構造体への参照を返します。

    備考 +#

    格納されている値の型が指定と異なる場合、未定義動作となります。


    at(key) +#

    value_type&       at(const key_type& key);
    +value_type const& at(const key_type& key) const;
    +

    戻り値 +#

    今のvaluetableにキャストしたあと、keyによって指定される要素を返します。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。

    もし格納しているtableが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。


    operator[](key) +#

    value_type& operator[](const key_type& k);
    +
    戻り値 +#

    今のvaluetableにキャストしたあと、keyによって指定される要素への参照です。

    もしkeyによって指定される要素が存在しない場合、デフォルト構築されます。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。


    count(key) +#

    std::size_t count(const key_type& key) const;
    +

    戻り値 +#

    今のvaluetableにキャストしたあと、keyに対応する要素が含まれていれば1、そうでなければ0を返します。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。


    contains(key) +#

    bool contains(const key_type& key) const;
    +

    戻り値 +#

    今のvaluetableにキャストしたあと、keyに対応する要素が含まれていればtrue、そうでなければfalseを返します。

    例外 +#

    もし格納している値がtableではなかった場合、toml::type_errorを送出します。


    at(idx) +#

    value_type&       at(const std::size_t idx);
    +value_type const& at(const std::size_t idx) const;
    +

    戻り値 +#

    今のvaluearrayにキャストしたあと、idxによって指定される要素を返します。

    例外 +#

    もし格納している値がarrayではなかった場合、toml::type_errorを送出します。

    もし格納しているarrayが指定された要素を持っていなかった場合、std::out_of_rangeを送出します。


    operator[](idx) +#

    value_type&       operator[](const std::size_t idx)       noexcept;
    +value_type const& operator[](const std::size_t idx) const noexcept;
    +

    戻り値 +#

    今のvaluearrayにキャストしたあと、idxによって指定される要素への参照を返します。

    備考 +#

    一切のチェックを行いません。

    もし格納している値がarrayではなかった場合、あるいはidxによって指定される要素が存在しない場合、未定義動作となります。


    push_back(value) +#

    void push_back(const value_type& x);
    +void push_back(value_type&& x);
    +

    valuearrayにキャストしたのち、そのarrayに対してpush_backを実行します。

    戻り値 +#

    なし。

    例外 +#

    格納している値がarrayではなかった場合、toml::type_errorを送出します。


    emplace_back(args...) +#

    template<typename ... Ts>
    +value_type& emplace_back(Ts&& ... args)
    +

    valuearrayにキャストしたのち、そのarrayに対してemplace_backを実行します。

    戻り値 +#

    構築した値への参照。

    例外 +#

    格納している値がarrayではなかった場合、toml::type_errorを送出します。


    size() +#

    std::size_t size() const;
    +

    戻り値 +#

    今のvaluearraystringtableのどれかにキャストしたあと、その要素数を返します。 +stringの場合、文字数を返します。

    例外 +#

    格納している値がarray, string, tableのどれでもなかった場合、toml::type_errorを送出します。


    location() +#

    source_location location() const;
    +

    戻り値 +#

    そのvalueが定義されたTOML文書内の位置を表すsource_locationオブジェクトを返します。

    もしTOML文書のパースによって構築されたものでない場合、どこも指示さないsource_locationを返します。


    comments() +#

    comment_type const& comments() const noexcept;
    +comment_type&       comments()       noexcept;
    +

    戻り値 +#

    コメント用コンテナへの参照を返します。

    非メンバ関数 +#

    operator== +#

    template<typename TC>
    +bool operator==(const basic_value<TC>&, const basic_value<TC>&);
    +

    以下を満たすとき、2つのbasic_value<T>は同値となります。

    • TOML型が同一
    • 含む値が同一
    • コメントがバイト単位で同一

    operator!= +#

    template<typename TC>
    +bool operator!=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return !(lhs == rhs);
    +}
    +

    operator< +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator<(const basic_value<TC>&, const basic_value<TC>&);
    +

    以下の順番で比較されます。

    1. TOML型
    2. TOML型が同一の場合、その値
    3. TOML型とその値が同一の場合、コメント

    TOML型は、以下の順に小さい値を持ちます。

    1. toml::value_t::empty
    2. toml::value_t::boolean
    3. toml::value_t::integer
    4. toml::value_t::floating
    5. toml::value_t::string
    6. toml::value_t::offset_datetime
    7. toml::value_t::local_datetime
    8. toml::value_t::local_date
    9. toml::value_t::local_time
    10. toml::value_t::array
    11. toml::value_t::table

    operator<= +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator<=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return (lhs < rhs) || (lhs == rhs);
    +}
    +

    operator> +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator>(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return !(lhs <= rhs);
    +}
    +

    operator>= +#

    array_typetable_typeoperator<を持っている場合のみ定義されます。

    template<typename TC>
    +bool operator>=(const basic_value<TC>& lhs, const basic_value<TC>& rhs)
    +{
    +    return !(lhs < rhs);
    +}
    +

    toml::type_error +#

    型エラーの際に送出される例外です。

    型エラーが生じた値の位置情報が格納されています。

    struct type_error final : public ::toml::exception
    +{
    +  public:
    +    type_error(std::string what_arg, source_location loc);
    +    ~type_error() noexcept override = default;
    +
    +    const char* what() const noexcept override;
    +
    +    source_location const& location() const noexcept;
    +};
    +

    toml::make_error_info +#

    template<typename TC, typename ... Ts>
    +error_info make_error_info(
    +    std::string title, const basic_value<TC>& v, std::string msg, Ts&& ... tail);
    +

    basic_valuelocation() を呼び出して、その source_location を +make_error_info +に渡して error_info を作成します。

    詳しくは error_info を参照してください。

    toml::format_error +#

    template<typename TC, typename ... Ts>
    +std::string format_error(std::string title,
    +                         const basic_value<TC>& v, std::string msg, Ts&& ... tail);
    +

    basic_valuelocation() を呼び出して、その source_location を +format_error +に渡して error_info を作成し、それを文字列化して返します。

    詳しくは error_info を参照してください。

    関連項目 +#

    \ No newline at end of file diff --git a/ja/docs/reference/value_t/index.html b/ja/docs/reference/value_t/index.html new file mode 100644 index 00000000..89fdc09b --- /dev/null +++ b/ja/docs/reference/value_t/index.html @@ -0,0 +1,40 @@ +value_t.hpp | toml11 + +
    value_t.hpp +

    value_t.hpp +#

    型情報を表す列挙型です。

    value_t +#

    value_tは、toml::valueが持つ型情報を扱う際に使用します。

    namespace toml
    +{
    +enum class value_t : std::uint8_t
    +{
    +    empty           =  0,
    +    boolean         =  1,
    +    integer         =  2,
    +    floating        =  3,
    +    string          =  4,
    +    offset_datetime =  5,
    +    local_datetime  =  6,
    +    local_date      =  7,
    +    local_time      =  8,
    +    array           =  9,
    +    table           = 10
    +};
    +
    +std::ostream& operator<<(std::ostream& os, value_t t);
    +std::string to_string(value_t t);
    +} // toml
    +

    非メンバ関数 +#

    ストリーム演算子 +#

    std::ostream& operator<<(std::ostream& os, value_t t);
    +

    value_tの値を文字列化してストリームへ出力します。

    to_string +#

    std::string to_string(value_t t);
    +

    value_tの値を文字列化して返します。

    \ No newline at end of file diff --git a/ja/docs/reference/version/index.html b/ja/docs/reference/version/index.html new file mode 100644 index 00000000..6f04e3d8 --- /dev/null +++ b/ja/docs/reference/version/index.html @@ -0,0 +1,30 @@ +version.hpp | toml11 + +
    version.hpp +

    version.hpp +#

    version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。

    マクロ +#

    TOML11_VERSION_MAJOR +#

    toml11のメジャーバージョンです。

    TOML11_VERSION_MINOR +#

    toml11のマイナーバージョンです。

    TOML11_VERSION_PATCH +#

    toml11のパッチバージョンです。

    関数 +#

    license_notice +#

    namespace toml
    +{
    +const char* license_notice() noexcept;
    +}
    +

    ライセンス条項を返します。

    ソースコードを公開せずに頒布する際の利便性のために用意されています。

    \ No newline at end of file diff --git a/ja/docs/reference/visit/index.html b/ja/docs/reference/visit/index.html new file mode 100644 index 00000000..4ace46c7 --- /dev/null +++ b/ja/docs/reference/visit/index.html @@ -0,0 +1,60 @@ +visit.hpp | toml11 + +
    visit.hpp +

    visit.hpp +#

    visit.hppでは、toml::visitが定義されます。

    toml::visit +#

    関数 +#

    namespace toml
    +{
    +template<typename Visitor, typename TC>
    +/* Visitor を basic_value<TC>の値で呼び出した際の返り値 */
    +visit(Visitor&& visitor, const basic_value<TC>& v);
    +
    +template<typename Visitor, typename TC>
    +/* Visitor を basic_value<TC>の値で呼び出した際の返り値 */
    +visit(Visitor&& visitor, basic_value<TC>& v)
    +
    +template<typename Visitor, typename TC>
    +/* Visitor を basic_value<TC>の値で呼び出した際の返り値 */
    +visit(Visitor&& visitor, basic_value<TC>&& v)
    +}
    +

    basic_value<TC>が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。

    条件 +#

    Visitorは、basic_value<TC>が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。

    また、それぞれのオーバーロードで返り値は同じであることが要求されます。

    例 +#

    #include <toml.hpp>
    +#include <iostream>
    +
    +struct type_name_of
    +{
    +    std::string operator()(const toml::value::boolean_type        &) const {return "boolean";}
    +    std::string operator()(const toml::value::integer_type        &) const {return "integer";}
    +    std::string operator()(const toml::value::floating_type       &) const {return "floating";}
    +    std::string operator()(const toml::value::string_type         &) const {return "string";}
    +    std::string operator()(const toml::value::local_time_type     &) const {return "local_time";}
    +    std::string operator()(const toml::value::local_date_type     &) const {return "local_date";}
    +    std::string operator()(const toml::value::local_datetime_type &) const {return "local_datetime";}
    +    std::string operator()(const toml::value::offset_datetime_type&) const {return "offset_datetime";}
    +    std::string operator()(const toml::value::array_type          &) const {return "array";}
    +    std::string operator()(const toml::value::table_type          &) const {return "table";}
    +};
    +
    +int main()
    +{
    +    toml::value v(3.14);
    +    std::cout << toml::visit(type_name_of{}, v) << std::endl; // floating
    +    return 0;
    +}
    +

    関連項目 +#

    \ No newline at end of file diff --git a/ja/index.html b/ja/index.html new file mode 100644 index 00000000..8e1e998e --- /dev/null +++ b/ja/index.html @@ -0,0 +1,22 @@ +Introduction | toml11 + +
    Introduction +

    Introduction +#

    English version is here

    Installation +#

    toml11のインストール方法について説明します。

    Features +#

    toml11の機能と使い方を例に沿って説明します。

    Reference +#

    toml11が持つ関数・クラスの詳細を説明します。

    ChangeLog +#

    v3系から、そしてリリースごとの変化を説明します。

    \ No newline at end of file diff --git a/ja/index.xml b/ja/index.xml new file mode 100644 index 00000000..0b9d29d0 --- /dev/null +++ b/ja/index.xml @@ -0,0 +1,156 @@ +Introduction on toml11https://toruniina.github.io/toml11/ja/Recent content in Introduction on toml11Hugojaparsing fileshttps://toruniina.github.io/toml11/ja/docs/features/parsing_files/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/parsing_files/ファイル・文字列をパースする # toml11では、toml::parse や toml::try_parse を使って、ファイルや文字列、バイト列をパースすることができます。 +これらは成功時に toml::value を返します。 ファイルは常にテーブルになりますが、返り値が toml::table でないことに気を付けてください。 toml::value はファイルに関するメタデータを持っており、 toml::table は std::unordered_map&lt;std::stirng, toml::value&gt; のエイリアスでしかありません。 メタデータを返すために、 toml::table ではなく toml::value を返しています。 ファイルのルートに対応する toml::value は常に table_type を持ちます。 +ファイルをパースする # ファイルをパースする際は、 toml::parse または toml::try_parse を使います。 +toml::parse # std::stringでファイル名を指定する # toml::parse は、文字列でファイル名を受け取り、そのファイルを開いてパースします。 +以下のサンプルは、input.tomlというファイルをパースし、titleという変数を文字列として取り出し、出力するコードです。 +#include &lt;toml.hpp&gt; #include &lt;iostream&gt; int main() { const toml::value input = toml::parse(&#34;input.toml&#34;); std::cout &lt;&lt; input.at(&#34;title&#34;).as_string() &lt;&lt; std::endl; return 0; } std::filesystem::pathでファイルを指定する # toml::parse には、std::filesystem::pathを渡すことも可能です。 +当然ですが、&lt;filesystem&gt;がサポートされるC++17以降でなければ使用できません。 +std::istreamで入力ストリームを指定する # toml::parse には、std::istreamを渡すことも可能です。getting valueshttps://toruniina.github.io/toml11/ja/docs/features/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/value/値を取り出す # ここでは、 toml::value が格納している値にアクセスする方法を説明します。 +メンバ関数を使って値にアクセスする # is_something と as_something # toml::value は is_boolean() や is_integer() などのメンバ関数を持っており、 これらを使うと持っている型を調べることができます。 +また、 as_boolean(), as_integer() などのメンバ関数も持っており、 これらを使ってその型にアクセスすることができます。 +完全なリストは toml::value のリファレンス を参照してください。 +toml::value v = /* ... */; if(v.is_integer()) { std::cout &lt;&lt; v.as_integer() &lt;&lt; std::endl; } 指定された値と異なる型が格納されていた場合、 toml::type_error が送出されます。 +その what() は以下のようなメッセージを含みます。 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml::value_t # 型情報は enum class toml::value_t で識別できます。error messagehttps://toruniina.github.io/toml11/ja/docs/features/error_message/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/error_message/エラーメッセージを出力する # toml11は toml::parse や toml::get&lt;T&gt;/find&lt;T&gt;, as_integer() などから ファイル内の位置情報を含んだエラーメッセージを出力します。 +例えば、パース時に整数の文法エラーを発見した場合、 +[error] bad integer: `_` must be surrounded by digits --&gt; internal string at line 64 in file main.cpp | 1 | a = 123__456 | ^-- invalid underscore Hint: valid : -42, 1_000, 1_2_3_4_5, 0xC0FFEE, 0b0010, 0o755 Hint: invalid: _42, 1__000, 0123 あるいは実際に格納されている型と異なる型を要求した場合 +[error] toml::value::as_string(): bad_cast to string --&gt; input.toml | 1 | a = 123_456 | ^^^^^^^-- the actual type is integer toml11は toml::value からこのようなエラーメッセージを作成する方法を提供します。serializing valueshttps://toruniina.github.io/toml11/ja/docs/features/serialize/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/serialize/TOMLファイルを出力する # toml::format を使うと、 toml::value を文字列にすることができます。 +#include &lt;toml.hpp&gt; #include &lt;cassert&gt; int main() { const toml::value v(toml::table{ {&#34;a&#34;, 42}, {&#34;b&#34;, &#34;foo&#34;}, }); const std::string s = toml::format(v); const toml::value u = toml::parse_str(s); assert(u.at(&#34;a&#34;).as_integer() == 42); assert(u.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } table_type を格納している toml::value が渡されると、それがファイルのルートテーブルとして解釈されます。 +もし table_type 以外を格納している toml::value が渡されると、その値だけがフォーマットされます。 +一部のフォーマット指定では、キーが渡されていないとフォーマットできないことがあります。 例えば、 toml::array_format::array_of_tables は [[array.of.tables]] の形でフォーマットするので、 キーへのアクセスを要求します。 +キーを要求するフォーマット指定の値がキーなしで渡された場合、 toml::serialization_error が送出されます。 +他にも、フォーマット指定と矛盾する値が含まれる場合には、 toml::serialization_error が送出されます。 例えば、 integer_format::hex が指定された整数が負の値を持っている場合や、 string_format::literal が指定された文字列が改行を含んでいる場合などです。 +フォーマットの指定方法は後述します。 +キーを渡して出力する # toml::format には std::string としてキーを渡すことが可能です。configuring typeshttps://toruniina.github.io/toml11/ja/docs/features/configure_types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/configure_types/型をカスタマイズする # toml::value は integer_type として std::int64_t を、 table_type として std::unordered_map&lt;key_type, value_type&gt; を使用します。 +しかし、場合によっては boost::multiprecision::int128_t や、 std::map を使用したい場合もあります。 +そのため、 toml::value は template 引数を取って格納する型を変えられるように実装されています。 +std::string が実際には std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt;&gt; の エイリアスであるように、 toml::value は実際には toml::basic_value&lt;toml::type_config&gt; のエイリアスです。 +ここでは、 toml::type_config が持つ型と、異なる config 型を定義する方法を説明します。 +type_config # type_config は、以下のメンバ型とstaticメンバ関数を持つクラスです。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; } toml::basic_value&lt;TypeConfig&gt; は、格納する boolean_type を TypeConfig::boolean_type、 格納する integer_type を TypeConfig::integer_type 、のようにして定義しています。toml literalhttps://toruniina.github.io/toml11/ja/docs/features/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/literal/_tomlリテラル # &quot;&quot;_tomlリテラルによって、TOMLファイルをその場でフォーマットできます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = &#34;a = 42&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); return 0; } 改行を含む場合、生文字列リテラルが便利です。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto v = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; assert(v.at(&#34;a&#34;).as_integer() == 42); assert(v.at(&#34;b&#34;).as_string() == &#34;foo&#34;); return 0; } 値が単体で書かれていた場合、その値が返されます。 +#include &lt;toml.hpp&gt; int main() { using namespace toml::literals::toml_literals; const auto a = &#34;42&#34;_toml; const auto b = &#34;12:34:56&#34;_toml; assert(v.toml spechttps://toruniina.github.io/toml11/ja/docs/features/toml_spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/toml_spec/TOML言語バージョン # toml::spec によって、 toml::parse や toml::format で使用するTOML言語のバージョンや、個別の機能フラグを指定することができます。 +TOMLのバージョンを指定する # toml::spec は toml::semantic_version から構築できます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec(toml::semantic_version(1, 1, 0)); return 0; } ですがこれは長いので、toml::spec::v()関数が用意されています。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec = toml::spec::v(1, 1, 0); return 0; } 特に指定しない場合、デフォルトの値で構築する toml::spec::default_version() が使用されます。 +デフォルトの値はtoml11のバージョンによって変わりますが、その時点でリリースされているTOML言語の最新バージョンに追従します。 +v4.0.0現在、TOML v1.1.0はまだリリースされていないため、デフォルトのTOMLバージョンはv1.0.0です。 +TOML v1.1.0の一部の機能にはかなり長い議論が続いており、まだ差し戻される可能性があります。 +実際に差し戻された場合、toml11はマイナーバージョンアップでそれらの機能を削除、もしくは対応するそれ以降のバージョンに移動します。 +そのような意味で、将来のバージョンに関する機能は全て不安定なものと考えてください。 +バージョン指定でパースする # toml::parse のオーバーロードは、ファイル名に続いてtoml::specを受け取ります。 +これによって、使用するTOMLバージョンを変更できます。 +#include &lt;toml.hpp&gt; int main() { toml::value input = toml::parse(&#34;input.toml&#34;, toml::spec::v(1, 1, 0)); return 0; } バージョン指定でシリアライズする # toml::format のオーバーロードは、 toml::value に続いて toml::spec を受け取ります。extensionhttps://toruniina.github.io/toml11/ja/docs/features/extension/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/features/extension/TOML言語拡張 # TOML言語は現在 v1.0.0 が最新版ですが、その後もいくつかの新機能が議論の末マージされ、 v1.1.0に向けて議論が続いています。 +そこで議論された機能の中には、有用なケースが少ないと考えられたものや、 提案された際の方向性では導入が難しいもの、導入がされなかったものも多くあります。 +toml11では、そのような機能のなかからいくつかを選んで、実験的に実装を行っています。 これらはtoml11ではサポートされていますが、他のパーサではサポートされておらず、また サポートされる予定もないことに注意してください。 +また、これらの機能はデフォルトで使用されない設定になっており、 使用するためには機能フラグをそれぞれ true にしなければなりません。 非標準の機能なので、あえて明示的に書かなければ使えないように設計しています。 +いくつかの機能は今後TOML言語自体に新機能としてマージされる可能性があります。 もし以下の拡張機能を完全に置き換えられる機能が導入された場合、拡張機能は 本来の機能の実装後にマイナーバージョンアップで削除される可能性があります。 +null # TOMLファイル内で値としてnullを使えるようになります。 +a = null b = [ 1, 2, 3, null, 5] これを使用するには、 toml::spec の ext_null_value を true にします。 +パースすると、デフォルト構築した場合と同様の toml::value_t::empty となります。 ただし、ファイル内の位置情報は設定されます。 +null は値の文脈でのみパースされるので、キーに null を使用した際はこれまで通り &quot;null&quot; という文字列のキーとして解釈されます。 +#include &lt;toml.hpp&gt; int main() { toml::spec spec; spec.ext_null_value = true; const auto v = toml::parse_str(&#34;a = null&#34;, spec); assert(v.at(&#34;a&#34;).is_empty()); assert(v.color.hpphttps://toruniina.github.io/toml11/ja/docs/reference/color/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/color/color.hpp # color.hppでは、エラーメッセージの色付けに関する関数が定義されます。 +色はANSIエスケープシーケンスによって指定されます。 ANSIエスケープシーケンスをサポートしていないターミナルやその他の出力先では、読みにくくなる可能性があります。 +マクロ # TOML11_COLORIZE_ERROR_MESSAGE # コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 デフォルトでエラーメッセージに色が付きます。 +定義されていなかった場合、デフォルトでは色は付きません。以下の toml::color::enable() を 使用して指定する必要があります。 +TOML11_USE_THREAD_LOCAL_COLORIZATION # コンパイル時にこのマクロが定義されていた場合(-DTOML11_COLORIZE_ERROR_MESASGE)、 toml::color::enableの設定がthread_localになります。 この場合、toml::color::enable()やtoml::color::disable()は、それを呼び出したスレッドでの設定しか変更しません。 つまり、新しいスレッドを起動した際にデフォルトと異なる設定にしたい場合は、再度設定が必要になります。 その代わり、toml::color::enable()やtoml::color::disable()はスレッドセーフになります。 +デフォルトでは設定はグローバルです。 グローバルの場合、一つのスレッドがtoml::color::enable()を実行した場合、すべてのスレッドで色が付きます。 ただし、あるスレッドがenable()またはdisable()を実行している間に別のスレッドがenable()、disable()、should_color()を実行した場合、その結果は未定義です。 +関数 # enable() # namespace toml { namespace color { void enable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行うよう設定します。 +例 # #include &lt;toml.hpp&gt; int main() { toml::color::enable(); // この後の全てのエラーがカラーになります。 const auto input = toml::parse(&#34;input.toml&#34;); return 0; } disable() # namespace toml { namespace color { void disable(); } // color } // toml ANSIエスケープシーケンスによる色付けを行わないよう設定します。comments.hpphttps://toruniina.github.io/toml11/ja/docs/reference/comments/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/comments/comments.hpp # color.hppでは、コメントを保持するクラスが提供されます。 +toml::preserve_comments # preserve_commentsは、コメントを保持するコンテナです。 +std::vector&lt;std::string&gt;が持つメンバ関数を全て持っています。 +コメントはstd::stringとして保持されます。 先頭が#でない場合、出力時に#が補われます。コンテナに要素として追加する段階では補われません。 スペースは補われないため、#の直後にスペースを入れたい場合、コメントをスペースから始めるか、#を含めたコメントを渡す必要があります。 +namespace toml { class preserve_comments; bool operator==(const preserve_comments&amp;, const preserve_comments&amp;); bool operator!=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&lt;=(const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt; (const preserve_comments&amp;, const preserve_comments&amp;); bool operator&gt;=(const preserve_comments&amp;, const preserve_comments&amp;); void swap(preserve_comments&amp;, preserve_comments&amp;); void swap(preserve_comments&amp;, std::vector&lt;std::string&gt;&amp;); void swap(std::vector&lt;std::string&gt;&amp;, preserve_comments&amp;); std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const preserve_comments&amp;); } //toml メンバ型 # using container_type = std::vector&lt;std::string&gt;; using size_type = container_type::size_type; using difference_type = container_type::difference_type; using value_type = container_type::value_type; using reference = container_type::reference; using const_reference = container_type::const_reference; using pointer = container_type::pointer; using const_pointer = container_type::const_pointer; using iterator = container_type::iterator; using const_iterator = container_type::const_iterator; using reverse_iterator = container_type::reverse_iterator; using const_reverse_iterator = container_type::const_reverse_iterator; メンバ関数 # デフォルトコンストラクタ # preserve_comments() = default; 空のpreserve_commentsを構築します。conversion.hpphttps://toruniina.github.io/toml11/ja/docs/reference/conversion/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/conversion/ conversion.hpp # toml::getやtoml::findでユーザー定義型をサポートするための変換関数を自動定義するマクロを提供します。 +TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(NAME, ...) 例 # namespace foo { struct Foo { std::string s; double d; int i; }; } // foo TOML11_DEFINE_CONVERSION_NON_INTRUSIVE(foo::Foo, s, d, i) 関連項目 # from.hpp into.hppdatetime.hpphttps://toruniina.github.io/toml11/ja/docs/reference/datetime/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/datetime/datetime.hpp # TOMLのdatetimeで使用される、日時情報を保存するクラスを定義します。 +enum class month_t # 月を指定するenum classです。 +std::tmとの関係で、local_dateは1月を0としています。 混乱を避けるため、月の名前で指定できるようmonth_tが用意されています。 +namespace toml { enum class month_t : std::uint8_t { Jan = 0, Feb = 1, Mar = 2, Apr = 3, May = 4, Jun = 5, Jul = 6, Aug = 7, Sep = 8, Oct = 9, Nov = 10, Dec = 11 }; } local_date # 日付を保持する構造体です。 +yearは西暦を、monthはstd::tmとの対応のため1月を0として、dayは日付を保持します。 +namespace toml { struct local_date { std::int16_t year; std::uint8_t month; std::uint8_t day; local_date() = default; ~local_date() = default; local_date(local_date const&amp;) = default; local_date(local_date&amp;&amp;) = default; local_date&amp; operator=(local_date const&amp;) = default; local_date&amp; operator=(local_date&amp;&amp;) = default; local_date(int y, month_t m, int d); explicit local_date(const std::tm&amp; t); explicit local_date(const std::chrono::system_clock::time_point&amp; tp); explicit local_date(const std::time_t t); operator std::chrono::system_clock::time_point() const; operator std::time_t() const; }; bool operator==(const local_date&amp;, const local_date&amp;); bool operator!error_info.hpphttps://toruniina.github.io/toml11/ja/docs/reference/error_info/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/error_info/error_info.hpp # error_info.hppでは、error_infoと、それをフォーマットする関数が定義されます。 +toml::error_info # namespace toml { struct error_info { error_info(std::string t, source_location l, std::string m, std::string s = &#34;&#34;); error_info(std::string t, std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; l, std::string s = &#34;&#34;); std::string const&amp; title() const noexcept; std::string &amp; title() noexcept; std::vector&lt;std::pair&lt;source_location, std::string&gt;&gt; const&amp; locations() const noexcept; void add_locations(source_location loc, std::string msg) noexcept; std::string const&amp; suffix() const noexcept; std::string &amp; suffix() noexcept; }; template&lt;typename ... Ts&gt; error_info make_error_info( std::string title, source_location loc, std::string msg, Ts&amp;&amp; .exception.hpphttps://toruniina.github.io/toml11/ja/docs/reference/exception/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/exception/exception.hpp # toml::exception # toml11で定義される例外型の基底クラスです。 +namespace toml { struct exception : public std::exception { public: virtual ~exception() noexcept override = default; virtual const char* what() const noexcept override {return &#34;&#34;;} }; } // toml メンバ関数 # デストラクタ # virtual ~exception() noexcept override = default; 派生する際に上書きします。 +what # virtual const char* what() const noexcept override {return &#34;&#34;;} エラーメッセージを返します。派生する際に上書きします。find.hpphttps://toruniina.github.io/toml11/ja/docs/reference/find/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/find/find.hpp # toml::valueから値を検索し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::findはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::find # 概要 # toml::findには、取り出したい型をテンプレート引数で、検索したい値のキーを引数で与えます。 +template&lt;typename T, typename TC, typename ... Keys&gt; T find(const basic_value&lt;TC&gt;&amp; v, Keys ... keys); サポートされている T の種類と変換の挙動に関しては、 toml::get と同様です。 +T が指定されなかった場合、 toml::value が返されます。 +キーは、 toml::value::key_type または std::size_t です。 複数個のキーが与えられた場合は、サブテーブルや配列に対して再帰的に検索が行われます。 toml::value::key_type が与えられた場合は toml::table として、 std::size_t が与えられた場合は toml::array として解釈されます。 +再帰的な検索に関しての注意 # TOMLには通常の bare key の他に、 &quot; や ' で囲まれた quoted key というものがあります。 quoted key を使うと、 &quot;foo.format.hpphttps://toruniina.github.io/toml11/ja/docs/reference/format/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/format/format.hpp # toml::valueのフォーマット情報を持つ構造体と列挙型を定義します。 +indent_char # インデント情報を表す列挙体です。 +enum class indent_char : std::uint8_t { space, // use space tab, // use tab none // no indent }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const indent_char&amp; c); std::string to_string(const indent_char); noneを選んだ場合、super tableでの値によらず、インデントは使用されません。 +シリアライズ対象の値のなかにspaceとtabを指定する値が同時に存在していた場合、その動作は未規定で、指定していない方の文字が出現する可能性があります。 +boolean_format_info # booleanのフォーマット情報です。 +struct boolean_format_info {}; bool operator==(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; bool operator!=(const boolean_format_info&amp;, const boolean_format_info&amp;) noexcept; booleanのフォーマット方法は一通りしかないため、設定できる値を持ちません。 +integer_format # enum class integer_format : std::uint8_t { dec = 0, bin = 1, oct = 2, hex = 3, }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const integer_format f); std::string to_string(const integer_format); integerの基数を指定します。from.hpphttps://toruniina.github.io/toml11/ja/docs/reference/from/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/from/ from.hpp # toml::getやtoml::findで使用する、toml::valueからの変換を定義する構造体です。 +メンバ関数にfrom_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはfrom&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct from; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/from.hpp&gt; namespace toml { template&lt;&gt; struct from&lt;extlib::foo&gt; { template&lt;typename TC&gt; static extlib::foo from_toml(const toml::basic_value&lt;TC&gt;&amp; v) { return extlib::foo{toml::find&lt;int&gt;(v, &#34;a&#34;), toml::find&lt;std::string&gt;(v, &#34;b&#34;)}; } }; } // toml 関連項目 # conversion.hpp into.hppget.hpphttps://toruniina.github.io/toml11/ja/docs/reference/get/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/get/get.hpp # toml::valueから値を取り出し、同時に(必要な場合)型変換を行う関数です。 +toml::value は格納する型を変更でき、toml::getはそれらに対応しているので、 厳密には全て toml::basic_value&lt;TC&gt; が使われています。ただしこれでは冗長なので、 関数の宣言と特に区別しなければならない場合を除いて、簡単のため説明文では toml::value と書きます。 説明文では、テンプレートパラメータTCを変更して型が変更されていれば toml::value::integer_type などの型は追従して変更されると解釈してください。 toml::get&lt;T&gt; # 概要 # 基本的に、toml::getは以下のような関数として振る舞います。 Tはtoml::get&lt;int&gt;(v)のようにして与えます。 +template&lt;typename T, typename TC&gt; T get(const basic_value&lt;TC&gt;&amp; v); ただし、Tがどのような型であるかによって、toml::getは異なる挙動をします。 +Tの型の種類は、 +変換が必要ない型 変換する必要がある型 に分けられます。 +細かい条件と、特別にサポートしている具体的な型については後述します。 +変換が必要ない型 # 変換が必要ないのは、渡された toml::value が格納している型です。 例えば、 toml::value::integer_type は std::int64_t のエイリアスなので、 toml::get&lt;std::int64_t&gt;(v) は変換を必要としません。 この場合、 toml:get は integer の値を toml::value から取り出し、その参照を返します。 +渡されたtoml::valueが可変参照(&amp;)である場合、返す値も可変参照(&amp;)です。 不変参照(const&amp;)の場合、返す値も不変参照(const&amp;)となります。 可変参照を返した場合、その参照を通してtoml::valueに格納されている値に上書きできます。 +変換が必要な型 # 上記の型以外については変換が必要です。 例えば、toml::value::integer_typeはstd::int64_tのエイリアスなので、toml::get&lt;std::size_t&gt;(toml::value&amp;)は変換が必要です。 この場合、toml:getはintegerの値をtoml::valueから取り出し、それをキャストして返します。 +toml11は簡単なキャストだけでなく、 toml::arrayからやstd::tuple&lt;int, double, std::string&gt;やstd::array&lt;double, 4&gt;、 toml::tableからstd::map&lt;std::string, int&gt;などの複雑な型変換をサポートします。 具体的には、続くセクションを参照してください。into.hpphttps://toruniina.github.io/toml11/ja/docs/reference/into/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/into/into.hpp # toml::valueのコンストラクタで使用する、ユーザー定義型からの変換を定義する構造体です。 +メンバ関数にinto_tomlを追加することによっても同じ機能を追加できますが、メンバ関数を追加できないクラスに対してはinto&lt;T&gt;を使用してください。 +このファイルでは特定の実装は提供しません。使用する際に、この構造体を特殊化してください。 +namespace toml { template&lt;typename T&gt; struct into; } // toml 例 # namespace extlib { struct foo { int a; std::string b; }; } // extlib #include &lt;toml11/into.hpp&gt; namespace toml { template&lt;&gt; struct into&lt;extlib::foo&gt; { template&lt;typename TC&gt; static toml::basic_value&lt;TC&gt; into_toml(const extlib::foo&amp; f) { using value_type = toml::basic_value&lt;TC&gt;; using table_type = typename value_type::table_type; return value_type(table_type{{&#34;a&#34;, f.a}, {&#34;b&#34;, f.b}}); } }; } // toml 関連項目 # conversion.literal.hpphttps://toruniina.github.io/toml11/ja/docs/reference/literal/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/literal/literal.hpp # literal.hppでは、_tomlリテラルが定義されます。 +_tomlリテラルは、文字列リテラルをパースしてtoml::valueに変換します。 +namespace toml { inline namespace literals { inline namespace toml_literals { toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); toml::value operator&#34;&#34; _toml(const char8_t* str, std::size_t len); // C++20以降 } // toml_literals } // literals } // toml 自由関数 # operator&quot;&quot; _toml(char) # toml::value operator&#34;&#34; _toml(const char* str, std::size_t len); 文字列リテラルをパースしてtoml::valueに変換します。 +通常のTOMLファイルの場合、toml::parseと同等の処理が行われます。 +const auto v1 = &#34;a = &#39;foo&#39;&#34;_toml; // v1: {a = &#39;foo&#39;} 改行を含む場合、生文字列リテラルが便利です。 +const auto v1 = R&#34;( a = 42 b = &#34;foo&#34; )&#34;_toml; 値が単体で書かれていた場合、その値になります。ordered_map.hpphttps://toruniina.github.io/toml11/ja/docs/reference/ordered_map/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/ordered_map/ordered_map.hpp # ファイル中の値の順番を維持するために使用するtoml::ordered_mapを定義します。 +class ordered_map # namespace toml { template&lt;typename Key, typename Val, typename Cmp = std::equal_to&lt;Key&gt;, typename Allocator = std::allocator&lt;std::pair&lt;Key, Val&gt;&gt;&gt; class ordered_map; } ordered_mapは、値を追加した順序を保ったまま値を保持し、その順でイテレートできる map 型です。 +線形コンテナなので、検索には要素数に対して O(n) の時間がかかります。 検索を行う機会が少なく、値の順序を守る必要がある場合に使用してください。 +非メンバ型 # namespace toml { struct ordered_type_config; using ordered_value = basic_value&lt;ordered_type_config&gt;; using ordered_table = typename ordered_value::table_type; using ordered_array = typename ordered_value::array_type; } toml::type_config と toml::value の代わりに使用します。 +toml::parse はデフォルトで type_config を使用するので、パースする際に +const auto input = toml::parse&lt;toml::ordered_type_config&gt;(&#34;input.toml&#34;); としてください。 +メンバ型 # using key_type = Key; using mapped_type = Val; using value_type = std::pair&lt;Key, Val&gt;; using key_compare = Cmp; using allocator_type = Allocator; using container_type = std::vector&lt;value_type, Allocator&gt;; using reference = typename container_type::reference; using pointer = typename container_type::pointer; using const_reference = typename container_type::const_reference; using const_pointer = typename container_type::const_pointer; using iterator = typename container_type::iterator; using const_iterator = typename container_type::const_iterator; using size_type = typename container_type::size_type; using difference_type = typename container_type::difference_type; メンバ関数 # コンストラクタ # ordered_map() = default; 空の ordered_map を構築します。parser.hpphttps://toruniina.github.io/toml11/ja/docs/reference/parser/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/parser/parser.hpp # ファイルまたは文字列をパースする関数と、それが用いる例外を定義します。 +parseは失敗した場合に例外を送出しますが、try_parseはエラー情報を返します。 +parse # 与えられたファイルの内容をパースし、toml::basic_valueを返します。 +失敗した場合はtoml::syntax_errorが送出されます。 +basic_valueの持つ型情報はtemplateで、TOML言語のバージョンはtoml::specで指定します。 +parse(std::string filename, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(std::string fname, spec s = spec::default_version()); } ファイル名を受け取って、その内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(const char (&amp;)[N] filename, toml::spec) # namespace toml { template&lt;typename TC = type_config, std::size_t N&gt; basic_value&lt;TC&gt; parse(const char (&amp;fname)[N], spec s = spec::default_version()); } 文字列リテラルを受け取って、そのファイルの内容をパースします。 +ファイルの読み込みに失敗した場合、file_io_errorが送出されます。 +パースに失敗した場合、syntax_errorが送出されます。 +parse(std::filesystem::path, toml::spec) # namespace toml { template&lt;typename TC = type_config&gt; basic_value&lt;TC&gt; parse(const std::filesystem::path&amp; fpath, spec s = spec::default_version()); } &lt;filesystem&gt;が利用可能な場合のみ定義されます。result.hpphttps://toruniina.github.io/toml11/ja/docs/reference/result/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/result/result.hpp # result.hppは、成功値か失敗値かのどちらかを持つresult型を定義します。 +これは、例外を投げないtoml::try_parseの返り値として使用されます。 +success # 成功値を持つ型です。 +namespace toml { template&lt;typename T&gt; struct success { using value_type = T; explicit success(value_type v); ~success() = default; success(const success&amp;) = default; success(success&amp;&amp;) = default; success&amp; operator=(const success&amp;) = default; success&amp; operator=(success&amp;&amp;) = default; template&lt;typename U&gt; explicit success(U&amp;&amp; v); template&lt;typename U&gt; explicit success(success&lt;U&gt; v); value_type&amp; get() noexcept; value_type const&amp; get() const noexcept; }; template&lt;typename T&gt; success&lt;typename std::decay&lt;T&gt;::type&gt; ok(T&amp;&amp; v); template&lt;std::size_t N&gt; success&lt;std::string&gt; ok(const char (&amp;literal)[N]) } メンバ型 # using value_type = T; 成功値の型です。serializer.hpphttps://toruniina.github.io/toml11/ja/docs/reference/serializer/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/serializer/serializer.hpp # format # シリアライズを行います。 +namespace toml { template&lt;typename TC&gt; std::string format(const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const typename basic_value&lt;TC&gt;::key_type&amp; k, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); template&lt;typename TC&gt; std::string format(const std::vector&lt;typename basic_value&lt;TC&gt;::key_type&gt;&amp; ks, const basic_value&lt;TC&gt;&amp; v, const spec s = spec::default_version()); } フォーマット情報とspecが矛盾する場合、例えばv1.0.0でtable_format::multiline_onelineが指定されているときなどは、specが優先されます。 +format(v, spec) # toml::valueを、それが持つフォーマット情報とspecに従ってフォーマットします。 +table_typeだった場合、それがルートであるとしてフォーマットします。 それ以外の値だった場合、値のみをフォーマットします。 +format(k, v, spec) # toml::valueを、与えられたキーと同時にフォーマットします。 +vはそのキー以下に定義されていると解釈されます。 +format([k,...], v, spec) # vはそのキー以下に定義されていると解釈されます。 キーが複数与えられた場合、再帰的に定義されたテーブルとして解釈されます。source_location.hpphttps://toruniina.github.io/toml11/ja/docs/reference/source_location/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/source_location/source_location.hpp # source_location.hppでは、TOMLファイル内のある領域を指すクラスが定義されます。 +このクラスは、エラーメッセージで問題の箇所を指摘するために使われます。 +toml::source_location # source_locationは、TOMLファイル内のある領域を指すクラスです。 +namespace toml { struct source_location { public: explicit source_location(/* implementation-defined */); ~source_location() = default; source_location(source_location const&amp;) = default; source_location(source_location &amp;&amp;) = default; source_location&amp; operator=(source_location const&amp;) = default; source_location&amp; operator=(source_location &amp;&amp;) = default; bool is_ok() const noexcept; std::size_t length() const noexcept; std::size_t first_line_number() const noexcept; std::size_t first_column_number() const noexcept; std::size_t last_line_number() const noexcept; std::size_t last_column_number() const noexcept; std::string const&amp; file_name() const noexcept; std::size_t num_lines() const noexcept; std::string const&amp; first_line() const; std::string const&amp; last_line() const; std::vector&lt;std::string&gt; const&amp; lines() const noexcept; }; template&lt;typename .spec.hpphttps://toruniina.github.io/toml11/ja/docs/reference/spec/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/spec/spec.hpp # spec.hppでは、TOMLのバージョンを指定するためのクラスが定義されます。 +toml::semantic_version # semantic_versionは、バージョン情報を格納するクラスです。 +namespace toml { struct semantic_version { constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; std::uint32_t major; std::uint32_t minor; std::uint32_t patch; }; constexpr semantic_version make_semver(std::uint32_t major, std::uint32_t minor, std::uint32_t patch) noexcept; constexpr bool operator==(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator!=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&lt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt; (const semantic_version&amp;, const semantic_version&amp;) noexcept; constexpr bool operator&gt;=(const semantic_version&amp;, const semantic_version&amp;) noexcept; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, const semantic_version&amp; ver); } //toml メンバ関数 # コンストラクタ # constexpr semantic_version(std::uint32_t mjr, std::uint32_t mnr, std::uint32_t p) noexcept; major, minor, patchバージョンを指定して構築します。toml_fwd.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/toml_fwd.hpp # toml_fwd.hppは、toml11で定義される構造体の前方宣言と、マクロ定義を持ちます。 +toml11の構造体についての前方宣言しか必要なく実装が必要ない場合、 toml.hpp のかわりにこちらを include することでコンパイル時間を短縮できます。 +このファイルには前方宣言しか含まれていないため、 toml::basic_value&lt;toml::type_config&gt;::table_type として定義される toml::table と、同様に定義される toml::array は使用できません。 それらには basic_value の実装が必要だからです。 このヘッダファイルと toml.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${TOML11_INCLUDE_DIR}/toml11/ 以下にあります。toml.hpphttps://toruniina.github.io/toml11/ja/docs/reference/toml/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/toml/toml.hpp # toml.hppは、他の全てのヘッダを include します。 +これによって、toml11の全機能が使用可能になります。 +このヘッダファイルと toml_fwd.hpp は ${TOML11_INCLUDE_DIR}/ 以下に、 他のヘッダファイルは ${toml11_include_dir}/toml11/ 以下にあります。types.hpphttps://toruniina.github.io/toml11/ja/docs/reference/types/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/types/types.hpp # 型情報を与えるクラスが定義されます。 +type_config # type_configは、toml::basic_valueに与えられるパラメータをまとめた型です。 +toml::basic_value&lt;T&gt;内で異なる型を使用する場合、これを別に定義して渡します。 記載のある要素は全て必須の要素です。 +通常のストリーム演算子を使用できない数値型を使用する場合、read_int、read_floatに相当するものを定義し、置き換えてください。 +namespace toml { struct type_config { using comment_type = preserve_comments; using boolean_type = bool; using integer_type = std::int64_t; using floating_type = double; using string_type = std::string; template&lt;typename T&gt; using array_type = std::vector&lt;T&gt;; template&lt;typename K, typename T&gt; using table_type = std::unordered_map&lt;K, T&gt;; static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); static result&lt;floating_type, error_info&gt; parse_float(const std::string&amp; str, const source_location src, const bool is_hex); }; using value = basic_value&lt;type_config&gt;; using table = typename value::table_type; using array = typename value::array_type; } // toml static メンバ関数 # parse_int(str, src, base) # static result&lt;integer_type, error_info&gt; parse_int(const std::string&amp; str, const source_location src, const std::uint8_t base); 通常のストリーム演算子などを使用できない型をinteger_typeとして使用する場合、この関数を実装してください。value_t.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value_t/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value_t/value_t.hpp # 型情報を表す列挙型です。 +value_t # value_tは、toml::valueが持つ型情報を扱う際に使用します。 +namespace toml { enum class value_t : std::uint8_t { empty = 0, boolean = 1, integer = 2, floating = 3, string = 4, offset_datetime = 5, local_datetime = 6, local_date = 7, local_time = 8, array = 9, table = 10 }; std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); std::string to_string(value_t t); } // toml 非メンバ関数 # ストリーム演算子 # std::ostream&amp; operator&lt;&lt;(std::ostream&amp; os, value_t t); value_tの値を文字列化してストリームへ出力します。value.hpphttps://toruniina.github.io/toml11/ja/docs/reference/value/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/value/value.hpp # value.hppでは、basic_valueが定義されます。 +toml::basic_value # basic_valueは、TOMLの値を格納するクラスです。 +namespace toml { template &lt;class TypeConfig&gt; class basic_value; // 以下はtypes.hppで定義される // using value = basic_value&lt;type_config&gt;; // using table = typename basic_value&lt;type_config&gt;::table_type; // using array = typename basic_value&lt;type_config&gt;::array_type; template&lt;typename TC&gt; bool operator==(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator!=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&lt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt; (const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); template&lt;typename TC&gt; bool operator&gt;=(const basic_value&lt;TC&gt;&amp;, const basic_value&lt;TC&gt;&amp;); } //toml メンバ型 # 以下のメンバ型が定義されます。version.hpphttps://toruniina.github.io/toml11/ja/docs/reference/version/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/version/version.hpp # version.hppでは、toml11とC++のバージョン情報に関係するマクロが定義されます。 +マクロ # TOML11_VERSION_MAJOR # toml11のメジャーバージョンです。 +TOML11_VERSION_MINOR # toml11のマイナーバージョンです。 +TOML11_VERSION_PATCH # toml11のパッチバージョンです。 +関数 # license_notice # namespace toml { const char* license_notice() noexcept; } ライセンス条項を返します。 +ソースコードを公開せずに頒布する際の利便性のために用意されています。visit.hpphttps://toruniina.github.io/toml11/ja/docs/reference/visit/Mon, 01 Jan 0001 00:00:00 +0000https://toruniina.github.io/toml11/ja/docs/reference/visit/visit.hpp # visit.hppでは、toml::visitが定義されます。 +toml::visit # 関数 # namespace toml { template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, const basic_value&lt;TC&gt;&amp; v); template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp; v) template&lt;typename Visitor, typename TC&gt; /* Visitor を basic_value&lt;TC&gt;の値で呼び出した際の返り値 */ visit(Visitor&amp;&amp; visitor, basic_value&lt;TC&gt;&amp;&amp; v) } basic_value&lt;TC&gt;が保持している型に対応するVisitorのオーバーロードを呼び出し、その結果を返します。 +条件 # Visitorは、basic_value&lt;TC&gt;が保持している型のどれに対しても呼び出し可能な関数または関数オブジェクトでなければなりません。 +また、それぞれのオーバーロードで返り値は同じであることが要求されます。 +例 # #include &lt;toml.hpp&gt; #include &lt;iostream&gt; struct type_name_of { std::string operator()(const toml::value::boolean_type &amp;) const {return &#34;boolean&#34;;} std::string operator()(const toml::value::integer_type &amp;) const {return &#34;integer&#34;;} std::string operator()(const toml::value::floating_type &amp;) const {return &#34;floating&#34;;} std::string operator()(const toml::value::string_type &amp;) const {return &#34;string&#34;;} std::string operator()(const toml::value::local_time_type &amp;) const {return &#34;local_time&#34;;} std::string operator()(const toml::value::local_date_type &amp;) const {return &#34;local_date&#34;;} std::string operator()(const toml::value::local_datetime_type &amp;) const {return &#34;local_datetime&#34;;} std::string operator()(const toml::value::offset_datetime_type&amp;) const {return &#34;offset_datetime&#34;;} std::string operator()(const toml::value::array_type &amp;) const {return &#34;array&#34;;} std::string operator()(const toml::value::table_type &amp;) const {return &#34;table&#34;;} }; int main() { toml::value v(3. \ No newline at end of file diff --git a/ja/sitemap.xml b/ja/sitemap.xml new file mode 100644 index 00000000..9bd50943 --- /dev/null +++ b/ja/sitemap.xml @@ -0,0 +1 @@ +https://toruniina.github.io/toml11/ja/docs/installation/https://toruniina.github.io/toml11/ja/docs/features/https://toruniina.github.io/toml11/ja/docs/reference/https://toruniina.github.io/toml11/ja/docs/changelog/https://toruniina.github.io/toml11/ja/docs/features/parsing_files/https://toruniina.github.io/toml11/ja/docs/features/value/https://toruniina.github.io/toml11/ja/docs/features/error_message/https://toruniina.github.io/toml11/ja/docs/features/serialize/https://toruniina.github.io/toml11/ja/docs/features/configure_types/https://toruniina.github.io/toml11/ja/docs/features/literal/https://toruniina.github.io/toml11/ja/docs/features/toml_spec/https://toruniina.github.io/toml11/ja/docs/features/extension/https://toruniina.github.io/toml11/ja/categories/https://toruniina.github.io/toml11/ja/docs/reference/color/https://toruniina.github.io/toml11/ja/docs/reference/comments/https://toruniina.github.io/toml11/ja/docs/reference/conversion/https://toruniina.github.io/toml11/ja/docs/reference/datetime/https://toruniina.github.io/toml11/ja/docs/https://toruniina.github.io/toml11/ja/docs/reference/error_info/https://toruniina.github.io/toml11/ja/docs/reference/exception/https://toruniina.github.io/toml11/ja/docs/reference/find/https://toruniina.github.io/toml11/ja/docs/reference/format/https://toruniina.github.io/toml11/ja/docs/reference/from/https://toruniina.github.io/toml11/ja/docs/reference/get/https://toruniina.github.io/toml11/ja/docs/reference/into/https://toruniina.github.io/toml11/ja/https://toruniina.github.io/toml11/ja/docs/reference/literal/https://toruniina.github.io/toml11/ja/docs/reference/ordered_map/https://toruniina.github.io/toml11/ja/docs/reference/parser/https://toruniina.github.io/toml11/ja/docs/reference/result/https://toruniina.github.io/toml11/ja/docs/reference/serializer/https://toruniina.github.io/toml11/ja/docs/reference/source_location/https://toruniina.github.io/toml11/ja/docs/reference/spec/https://toruniina.github.io/toml11/ja/tags/https://toruniina.github.io/toml11/ja/docs/reference/toml_fwd/https://toruniina.github.io/toml11/ja/docs/reference/toml/https://toruniina.github.io/toml11/ja/docs/reference/types/https://toruniina.github.io/toml11/ja/docs/reference/value_t/https://toruniina.github.io/toml11/ja/docs/reference/value/https://toruniina.github.io/toml11/ja/docs/reference/version/https://toruniina.github.io/toml11/ja/docs/reference/visit/ \ No newline at end of file diff --git a/ja/tags/index.html b/ja/tags/index.html new file mode 100644 index 00000000..d63b2261 --- /dev/null +++ b/ja/tags/index.html @@ -0,0 +1,9 @@ +Tags | toml11 + +
    Tags +
    \ No newline at end of file diff --git a/ja/tags/index.xml b/ja/tags/index.xml new file mode 100644 index 00000000..81788e34 --- /dev/null +++ b/ja/tags/index.xml @@ -0,0 +1 @@ +Tags on toml11https://toruniina.github.io/toml11/ja/tags/Recent content in Tags on toml11Hugoja \ No newline at end of file diff --git a/ja/tags/page/1/index.html b/ja/tags/page/1/index.html new file mode 100644 index 00000000..57435f4d --- /dev/null +++ b/ja/tags/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/ja/tags/ + \ No newline at end of file diff --git a/katex/auto-render.min.js b/katex/auto-render.min.js new file mode 100644 index 00000000..3a6d6639 --- /dev/null +++ b/katex/auto-render.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,function(e){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=1)}([function(t,r){t.exports=e},function(e,t,r){"use strict";r.r(t);var n=r(0),o=r.n(n),a=function(e,t,r){for(var n=r,o=0,a=e.length;n.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left} diff --git a/katex/katex.min.js b/katex/katex.min.js new file mode 100644 index 00000000..906ce128 --- /dev/null +++ b/katex/katex.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.katex=e():t.katex=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function r(a){if(e[a])return e[a].exports;var n=e[a]={i:a,l:!1,exports:{}};return t[a].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=t,r.c=e,r.d=function(t,e,a){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:a})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var n in t)r.d(a,n,function(e){return t[e]}.bind(null,n));return a},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=1)}([function(t,e,r){},function(t,e,r){"use strict";r.r(e);r(0);var a=function(){function t(t,e,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=t,this.start=e,this.end=r}return t.range=function(e,r){return r?e&&e.loc&&r.loc&&e.loc.lexer===r.loc.lexer?new t(e.loc.lexer,e.loc.start,r.loc.end):null:e&&e.loc},t}(),n=function(){function t(t,e){this.text=void 0,this.loc=void 0,this.text=t,this.loc=e}return t.prototype.range=function(e,r){return new t(r,a.range(this,e))},t}(),i=function t(e,r){this.position=void 0;var a,n="KaTeX parse error: "+e,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;a=i.start;var s=i.end;a===o.length?n+=" at end of input: ":n+=" at position "+(a+1)+": ";var h=o.slice(a,s).replace(/[^]/g,"$&\u0332");n+=(a>15?"\u2026"+o.slice(a-15,a):o.slice(0,a))+h+(s+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var m=function t(e){return"ordgroup"===e.type?1===e.body.length?t(e.body[0]):e:"color"===e.type?1===e.body.length?t(e.body[0]):e:"font"===e.type?t(e.body):e},c={contains:function(t,e){return-1!==t.indexOf(e)},deflt:function(t,e){return void 0===t?e:t},escape:function(t){return String(t).replace(l,function(t){return h[t]})},hyphenate:function(t){return t.replace(s,"-$1").toLowerCase()},getBaseElem:m,isCharacterBox:function(t){var e=m(t);return"mathord"===e.type||"textord"===e.type||"atom"===e.type},protocolFromUrl:function(t){var e=/^\s*([^\\\/#]*?)(?::|�*58|�*3a)/i.exec(t);return null!=e?e[1]:"_relative"}},u=function(){function t(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,t=t||{},this.displayMode=c.deflt(t.displayMode,!1),this.output=c.deflt(t.output,"htmlAndMathml"),this.leqno=c.deflt(t.leqno,!1),this.fleqn=c.deflt(t.fleqn,!1),this.throwOnError=c.deflt(t.throwOnError,!0),this.errorColor=c.deflt(t.errorColor,"#cc0000"),this.macros=t.macros||{},this.minRuleThickness=Math.max(0,c.deflt(t.minRuleThickness,0)),this.colorIsTextColor=c.deflt(t.colorIsTextColor,!1),this.strict=c.deflt(t.strict,"warn"),this.trust=c.deflt(t.trust,!1),this.maxSize=Math.max(0,c.deflt(t.maxSize,1/0)),this.maxExpand=Math.max(0,c.deflt(t.maxExpand,1e3))}var e=t.prototype;return e.reportNonstrict=function(t,e,r){var a=this.strict;if("function"==typeof a&&(a=a(t,e,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new o("LaTeX-incompatible input and strict mode is set to 'error': "+e+" ["+t+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]")}},e.useStrictBehavior=function(t,e,r){var a=this.strict;if("function"==typeof a)try{a=a(t,e,r)}catch(t){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+e+" ["+t+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+e+" ["+t+"]"),!1)))},e.isTrusted=function(t){t.url&&!t.protocol&&(t.protocol=c.protocolFromUrl(t.url));var e="function"==typeof this.trust?this.trust(t):this.trust;return Boolean(e)},t}(),p=function(){function t(t,e,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=e,this.cramped=r}var e=t.prototype;return e.sup=function(){return d[f[this.id]]},e.sub=function(){return d[g[this.id]]},e.fracNum=function(){return d[x[this.id]]},e.fracDen=function(){return d[v[this.id]]},e.cramp=function(){return d[b[this.id]]},e.text=function(){return d[y[this.id]]},e.isTight=function(){return this.size>=2},t}(),d=[new p(0,0,!1),new p(1,0,!0),new p(2,1,!1),new p(3,1,!0),new p(4,2,!1),new p(5,2,!0),new p(6,3,!1),new p(7,3,!0)],f=[4,5,4,5,6,7,6,7],g=[5,5,5,5,7,7,7,7],x=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],w={DISPLAY:d[0],TEXT:d[2],SCRIPT:d[4],SCRIPTSCRIPT:d[6]},k=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var S=[];function M(t){for(var e=0;e=S[e]&&t<=S[e+1])return!0;return!1}k.forEach(function(t){return t.blocks.forEach(function(t){return S.push.apply(S,t)})});var z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function t(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){for(var t=document.createDocumentFragment(),e=0;e"},N=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,t,r,a),this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"span")},e.toMarkup=function(){return q.call(this,"span")},t}(),I=function(){function t(t,e,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,B.call(this,e,a),this.children=r||[],this.setAttribute("href",t)}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){return C.call(this,"a")},e.toMarkup=function(){return q.call(this,"a")},t}(),R=function(){function t(t,e,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=e,this.src=t,this.classes=["mord"],this.style=r}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createElement("img");for(var e in t.src=this.src,t.alt=this.alt,t.className="mord",this.style)this.style.hasOwnProperty(e)&&(t.style[e]=this.style[e]);return t},e.toMarkup=function(){var t=""+this.alt+"=n[0]&&t<=n[1])return r.name}return null}(this.text.charCodeAt(0));h&&this.classes.push(h+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=O[this.text])}var e=t.prototype;return e.hasClass=function(t){return c.contains(this.classes,t)},e.toNode=function(){var t=document.createTextNode(this.text),e=null;for(var r in this.italic>0&&((e=document.createElement("span")).style.marginRight=this.italic+"em"),this.classes.length>0&&((e=e||document.createElement("span")).className=T(this.classes)),this.style)this.style.hasOwnProperty(r)&&((e=e||document.createElement("span")).style[r]=this.style[r]);return e?(e.appendChild(t),e):t},e.toMarkup=function(){var t=!1,e="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=c.hyphenate(a)+":"+this.style[a]+";");r&&(t=!0,e+=' style="'+c.escape(r)+'"');var n=c.escape(this.text);return t?(e+=">",e+=n,e+=""):n},t}(),L=function(){function t(t,e){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=e||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r":""},t}(),P=function(){function t(t){this.attributes=void 0,this.attributes=t||{}}var e=t.prototype;return e.toNode=function(){var t=document.createElementNS("http://www.w3.org/2000/svg","line");for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);return t},e.toMarkup=function(){var t="",">"),$("math",Z,et,":",":"),$("math",Z,et,"\u2248","\\approx",!0),$("math",Z,et,"\u2245","\\cong",!0),$("math",Z,et,"\u2265","\\ge"),$("math",Z,et,"\u2265","\\geq",!0),$("math",Z,et,"\u2190","\\gets"),$("math",Z,et,">","\\gt"),$("math",Z,et,"\u2208","\\in",!0),$("math",Z,et,"\ue020","\\@not"),$("math",Z,et,"\u2282","\\subset",!0),$("math",Z,et,"\u2283","\\supset",!0),$("math",Z,et,"\u2286","\\subseteq",!0),$("math",Z,et,"\u2287","\\supseteq",!0),$("math",K,et,"\u2288","\\nsubseteq",!0),$("math",K,et,"\u2289","\\nsupseteq",!0),$("math",Z,et,"\u22a8","\\models"),$("math",Z,et,"\u2190","\\leftarrow",!0),$("math",Z,et,"\u2264","\\le"),$("math",Z,et,"\u2264","\\leq",!0),$("math",Z,et,"<","\\lt"),$("math",Z,et,"\u2192","\\rightarrow",!0),$("math",Z,et,"\u2192","\\to"),$("math",K,et,"\u2271","\\ngeq",!0),$("math",K,et,"\u2270","\\nleq",!0),$("math",Z,"spacing","\xa0","\\ "),$("math",Z,"spacing","\xa0","~"),$("math",Z,"spacing","\xa0","\\space"),$("math",Z,"spacing","\xa0","\\nobreakspace"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0","~"),$("text",Z,"spacing","\xa0","\\space"),$("text",Z,"spacing","\xa0","\\nobreakspace"),$("math",Z,"spacing",null,"\\nobreak"),$("math",Z,"spacing",null,"\\allowbreak"),$("math",Z,"punct",",",","),$("math",Z,"punct",";",";"),$("math",K,J,"\u22bc","\\barwedge",!0),$("math",K,J,"\u22bb","\\veebar",!0),$("math",Z,J,"\u2299","\\odot",!0),$("math",Z,J,"\u2295","\\oplus",!0),$("math",Z,J,"\u2297","\\otimes",!0),$("math",Z,"textord","\u2202","\\partial",!0),$("math",Z,J,"\u2298","\\oslash",!0),$("math",K,J,"\u229a","\\circledcirc",!0),$("math",K,J,"\u22a1","\\boxdot",!0),$("math",Z,J,"\u25b3","\\bigtriangleup"),$("math",Z,J,"\u25bd","\\bigtriangledown"),$("math",Z,J,"\u2020","\\dagger"),$("math",Z,J,"\u22c4","\\diamond"),$("math",Z,J,"\u22c6","\\star"),$("math",Z,J,"\u25c3","\\triangleleft"),$("math",Z,J,"\u25b9","\\triangleright"),$("math",Z,"open","{","\\{"),$("text",Z,"textord","{","\\{"),$("text",Z,"textord","{","\\textbraceleft"),$("math",Z,"close","}","\\}"),$("text",Z,"textord","}","\\}"),$("text",Z,"textord","}","\\textbraceright"),$("math",Z,"open","{","\\lbrace"),$("math",Z,"close","}","\\rbrace"),$("math",Z,"open","[","\\lbrack"),$("text",Z,"textord","[","\\lbrack"),$("math",Z,"close","]","\\rbrack"),$("text",Z,"textord","]","\\rbrack"),$("math",Z,"open","(","\\lparen"),$("math",Z,"close",")","\\rparen"),$("text",Z,"textord","<","\\textless"),$("text",Z,"textord",">","\\textgreater"),$("math",Z,"open","\u230a","\\lfloor",!0),$("math",Z,"close","\u230b","\\rfloor",!0),$("math",Z,"open","\u2308","\\lceil",!0),$("math",Z,"close","\u2309","\\rceil",!0),$("math",Z,"textord","\\","\\backslash"),$("math",Z,"textord","\u2223","|"),$("math",Z,"textord","\u2223","\\vert"),$("text",Z,"textord","|","\\textbar"),$("math",Z,"textord","\u2225","\\|"),$("math",Z,"textord","\u2225","\\Vert"),$("text",Z,"textord","\u2225","\\textbardbl"),$("text",Z,"textord","~","\\textasciitilde"),$("text",Z,"textord","\\","\\textbackslash"),$("text",Z,"textord","^","\\textasciicircum"),$("math",Z,et,"\u2191","\\uparrow",!0),$("math",Z,et,"\u21d1","\\Uparrow",!0),$("math",Z,et,"\u2193","\\downarrow",!0),$("math",Z,et,"\u21d3","\\Downarrow",!0),$("math",Z,et,"\u2195","\\updownarrow",!0),$("math",Z,et,"\u21d5","\\Updownarrow",!0),$("math",Z,tt,"\u2210","\\coprod"),$("math",Z,tt,"\u22c1","\\bigvee"),$("math",Z,tt,"\u22c0","\\bigwedge"),$("math",Z,tt,"\u2a04","\\biguplus"),$("math",Z,tt,"\u22c2","\\bigcap"),$("math",Z,tt,"\u22c3","\\bigcup"),$("math",Z,tt,"\u222b","\\int"),$("math",Z,tt,"\u222b","\\intop"),$("math",Z,tt,"\u222c","\\iint"),$("math",Z,tt,"\u222d","\\iiint"),$("math",Z,tt,"\u220f","\\prod"),$("math",Z,tt,"\u2211","\\sum"),$("math",Z,tt,"\u2a02","\\bigotimes"),$("math",Z,tt,"\u2a01","\\bigoplus"),$("math",Z,tt,"\u2a00","\\bigodot"),$("math",Z,tt,"\u222e","\\oint"),$("math",Z,tt,"\u222f","\\oiint"),$("math",Z,tt,"\u2230","\\oiiint"),$("math",Z,tt,"\u2a06","\\bigsqcup"),$("math",Z,tt,"\u222b","\\smallint"),$("text",Z,"inner","\u2026","\\textellipsis"),$("math",Z,"inner","\u2026","\\mathellipsis"),$("text",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u2026","\\ldots",!0),$("math",Z,"inner","\u22ef","\\@cdots",!0),$("math",Z,"inner","\u22f1","\\ddots",!0),$("math",Z,"textord","\u22ee","\\varvdots"),$("math",Z,"accent-token","\u02ca","\\acute"),$("math",Z,"accent-token","\u02cb","\\grave"),$("math",Z,"accent-token","\xa8","\\ddot"),$("math",Z,"accent-token","~","\\tilde"),$("math",Z,"accent-token","\u02c9","\\bar"),$("math",Z,"accent-token","\u02d8","\\breve"),$("math",Z,"accent-token","\u02c7","\\check"),$("math",Z,"accent-token","^","\\hat"),$("math",Z,"accent-token","\u20d7","\\vec"),$("math",Z,"accent-token","\u02d9","\\dot"),$("math",Z,"accent-token","\u02da","\\mathring"),$("math",Z,Q,"\u0131","\\imath",!0),$("math",Z,Q,"\u0237","\\jmath",!0),$("text",Z,"textord","\u0131","\\i",!0),$("text",Z,"textord","\u0237","\\j",!0),$("text",Z,"textord","\xdf","\\ss",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\xe6","\\ae",!0),$("text",Z,"textord","\u0153","\\oe",!0),$("text",Z,"textord","\xf8","\\o",!0),$("text",Z,"textord","\xc6","\\AE",!0),$("text",Z,"textord","\u0152","\\OE",!0),$("text",Z,"textord","\xd8","\\O",!0),$("text",Z,"accent-token","\u02ca","\\'"),$("text",Z,"accent-token","\u02cb","\\`"),$("text",Z,"accent-token","\u02c6","\\^"),$("text",Z,"accent-token","\u02dc","\\~"),$("text",Z,"accent-token","\u02c9","\\="),$("text",Z,"accent-token","\u02d8","\\u"),$("text",Z,"accent-token","\u02d9","\\."),$("text",Z,"accent-token","\u02da","\\r"),$("text",Z,"accent-token","\u02c7","\\v"),$("text",Z,"accent-token","\xa8",'\\"'),$("text",Z,"accent-token","\u02dd","\\H"),$("text",Z,"accent-token","\u25ef","\\textcircled");var rt={"--":!0,"---":!0,"``":!0,"''":!0};$("text",Z,"textord","\u2013","--"),$("text",Z,"textord","\u2013","\\textendash"),$("text",Z,"textord","\u2014","---"),$("text",Z,"textord","\u2014","\\textemdash"),$("text",Z,"textord","\u2018","`"),$("text",Z,"textord","\u2018","\\textquoteleft"),$("text",Z,"textord","\u2019","'"),$("text",Z,"textord","\u2019","\\textquoteright"),$("text",Z,"textord","\u201c","``"),$("text",Z,"textord","\u201c","\\textquotedblleft"),$("text",Z,"textord","\u201d","''"),$("text",Z,"textord","\u201d","\\textquotedblright"),$("math",Z,"textord","\xb0","\\degree",!0),$("text",Z,"textord","\xb0","\\degree"),$("text",Z,"textord","\xb0","\\textdegree",!0),$("math",Z,Q,"\xa3","\\pounds"),$("math",Z,Q,"\xa3","\\mathsterling",!0),$("text",Z,Q,"\xa3","\\pounds"),$("text",Z,Q,"\xa3","\\textsterling",!0),$("math",K,"textord","\u2720","\\maltese"),$("text",K,"textord","\u2720","\\maltese"),$("text",Z,"spacing","\xa0","\\ "),$("text",Z,"spacing","\xa0"," "),$("text",Z,"spacing","\xa0","~");for(var at=0;at<'0123456789/@."'.length;at++){var nt='0123456789/@."'.charAt(at);$("math",Z,"textord",nt,nt)}for(var it=0;it<'0123456789!@*()-=+[]<>|";:?/.,'.length;it++){var ot='0123456789!@*()-=+[]<>|";:?/.,'.charAt(it);$("text",Z,"textord",ot,ot)}for(var st="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",ht=0;ht=5?0:t>=3?1:2]){var r=Y[e]={cssEmPerMu:V.quad[e]/18};for(var a in V)V.hasOwnProperty(a)&&(r[a]=V[a][e])}return Y[e]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?"transparent":this.color},t}();kt.BASESIZE=6;var St=kt,Mt={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},zt={ex:!0,em:!0,mu:!0},At=function(t){return"string"!=typeof t&&(t=t.unit),t in Mt||t in zt||"ex"===t},Tt=function(t,e){var r;if(t.unit in Mt)r=Mt[t.unit]/e.fontMetrics().ptPerEm/e.sizeMultiplier;else if("mu"===t.unit)r=e.fontMetrics().cssEmPerMu;else{var a;if(a=e.style.isTight()?e.havingStyle(e.style.text()):e,"ex"===t.unit)r=a.fontMetrics().xHeight;else{if("em"!==t.unit)throw new o("Invalid unit: '"+t.unit+"'");r=a.fontMetrics().quad}a!==e&&(r*=a.sizeMultiplier/e.sizeMultiplier)}return Math.min(t.number*r,e.maxSize)},Bt=["\\imath","\u0131","\\jmath","\u0237","\\pounds","\\mathsterling","\\textsterling","\xa3"],Ct=function(t,e,r){return j[r][t]&&j[r][t].replace&&(t=j[r][t].replace),{value:t,metrics:G(t,e,r)}},qt=function(t,e,r,a,n){var i,o=Ct(t,e,r),s=o.metrics;if(t=o.value,s){var h=s.italic;("text"===r||a&&"mathit"===a.font)&&(h=0),i=new E(t,s.height,s.depth,h,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+t+"' in style '"+e+"' and mode '"+r+"'"),i=new E(t,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var l=a.getColor();l&&(i.style.color=l)}return i},Nt=function(t,e){if(T(t.classes)!==T(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var a in e.style)if(e.style.hasOwnProperty(a)&&t.style[a]!==e.style[a])return!1;return!0},It=function(t){for(var e=0,r=0,a=0,n=0;ne&&(e=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}t.height=e,t.depth=r,t.maxFontSize=a},Rt=function(t,e,r,a){var n=new N(t,e,r,a);return It(n),n},Ot=function(t,e,r,a){return new N(t,e,r,a)},Et=function(t){var e=new A(t);return It(e),e},Lt=function(t,e,r){var a="";switch(t){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=t}return a+"-"+("textbf"===e&&"textit"===r?"BoldItalic":"textbf"===e?"Bold":"textit"===e?"Italic":"Regular")},Ht={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Pt={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Dt={fontMap:Ht,makeSymbol:qt,mathsym:function(t,e,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ct(t,"Main-Bold",e).metrics?qt(t,"Main-Bold",e,r,a.concat(["mathbf"])):"\\"===t||"main"===j[e][t].font?qt(t,"Main-Regular",e,r,a):qt(t,"AMS-Regular",e,r,a.concat(["amsrm"]))},makeSpan:Rt,makeSvgSpan:Ot,makeLineSpan:function(t,e,r){var a=Rt([t],[],e);return a.height=Math.max(r||e.fontMetrics().defaultRuleThickness,e.minRuleThickness),a.style.borderBottomWidth=a.height+"em",a.maxFontSize=1,a},makeAnchor:function(t,e,r,a){var n=new I(t,e,r,a);return It(n),n},makeFragment:Et,wrapFragment:function(t,e){return t instanceof A?Rt([],[t],e):t},makeVList:function(t,e){for(var r=function(t){if("individualShift"===t.positionType){for(var e=t.children,r=[e[0]],a=-e[0].shift-e[0].elem.depth,n=a,i=1;i0&&(i.push(pe(o,e)),o=[]),i.push(n[s]));o.length>0&&i.push(pe(o,e)),r&&((a=pe(se(r,e,!0))).classes=["tag"],i.push(a));var l=re(["katex-html"],i);if(l.setAttribute("aria-hidden","true"),a){var m=a.children[0];m.style.height=l.height+l.depth+"em",m.style.verticalAlign=-l.depth+"em"}return l}function fe(t){return new A(t)}var ge=function(){function t(t,e){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=t,this.attributes={},this.children=e||[]}var e=t.prototype;return e.setAttribute=function(t,e){this.attributes[t]=e},e.getAttribute=function(t){return this.attributes[t]},e.toNode=function(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(var r=0;r"},e.toText=function(){return this.children.map(function(t){return t.toText()}).join("")},t}(),xe=function(){function t(t){this.text=void 0,this.text=t}var e=t.prototype;return e.toNode=function(){return document.createTextNode(this.text)},e.toMarkup=function(){return c.escape(this.toText())},e.toText=function(){return this.text},t}(),ve={MathNode:ge,TextNode:xe,SpaceNode:function(){function t(t){this.width=void 0,this.character=void 0,this.width=t,this.character=t>=.05555&&t<=.05556?"\u200a":t>=.1666&&t<=.1667?"\u2009":t>=.2222&&t<=.2223?"\u2005":t>=.2777&&t<=.2778?"\u2005\u200a":t>=-.05556&&t<=-.05555?"\u200a\u2063":t>=-.1667&&t<=-.1666?"\u2009\u2063":t>=-.2223&&t<=-.2222?"\u205f\u2063":t>=-.2778&&t<=-.2777?"\u2005\u2063":null}var e=t.prototype;return e.toNode=function(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",this.width+"em"),t},e.toMarkup=function(){return this.character?""+this.character+"":''},e.toText=function(){return this.character?this.character:" "},t}(),newDocumentFragment:fe},be=function(t,e,r){return!j[e][t]||!j[e][t].replace||55349===t.charCodeAt(0)||rt.hasOwnProperty(t)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(t=j[e][t].replace),new ve.TextNode(t)},ye=function(t){return 1===t.length?t[0]:new ve.MathNode("mrow",t)},we=function(t,e){if("texttt"===e.fontFamily)return"monospace";if("textsf"===e.fontFamily)return"textit"===e.fontShape&&"textbf"===e.fontWeight?"sans-serif-bold-italic":"textit"===e.fontShape?"sans-serif-italic":"textbf"===e.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===e.fontShape&&"textbf"===e.fontWeight)return"bold-italic";if("textit"===e.fontShape)return"italic";if("textbf"===e.fontWeight)return"bold";var r=e.font;if(!r||"mathnormal"===r)return null;var a=t.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=t.text;return c.contains(["\\imath","\\jmath"],n)?null:(j[a][n]&&j[a][n].replace&&(n=j[a][n].replace),G(n,Dt.fontMap[r].fontName,a)?Dt.fontMap[r].variant:null)},ke=function(t,e,r){if(1===t.length){var a=Me(t[0],e);return r&&a instanceof ge&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Se=function(t,e,r){return ye(ke(t,e,r))},Me=function(t,e){if(!t)return new ve.MathNode("mrow");if(Jt[t.type])return Jt[t.type](t,e);throw new o("Got group of unknown type: '"+t.type+"'")};function ze(t,e,r,a){var n,i=ke(t,r);n=1===i.length&&i[0]instanceof ge&&c.contains(["mrow","mtable"],i[0].type)?i[0]:new ve.MathNode("mrow",i);var o=new ve.MathNode("annotation",[new ve.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var s=new ve.MathNode("semantics",[n,o]),h=new ve.MathNode("math",[s]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML");var l=a?"katex":"katex-mathml";return Dt.makeSpan([l],[h])}var Ae=function(t){return new St({style:t.displayMode?w.DISPLAY:w.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},Te=function(t,e){if(e.displayMode){var r=["katex-display"];e.leqno&&r.push("leqno"),e.fleqn&&r.push("fleqn"),t=Dt.makeSpan(r,[t])}return t},Be=function(t,e,r){var a,n=Ae(r);if("mathml"===r.output)return ze(t,e,n,!0);if("html"===r.output){var i=de(t,n);a=Dt.makeSpan(["katex"],[i])}else{var o=ze(t,e,n,!1),s=de(t,n);a=Dt.makeSpan(["katex"],[o,s])}return Te(a,r)},Ce={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb"},qe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ne=function(t){return"ordgroup"===t.type?t.body.length:1},Ie=function(t,e,r,a){var n,i=t.height+t.depth+2*r;if(/fbox|color/.test(e)){if(n=Dt.makeSpan(["stretchy",e],[],a),"fbox"===e){var o=a.color&&a.getColor();o&&(n.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(e)&&s.push(new P({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(e)&&s.push(new P({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new L(s,{width:"100%",height:i+"em"});n=Dt.makeSvgSpan([],[h],a)}return n.height=i,n.style.height=i+"em",n},Re=function(t){var e=new ve.MathNode("mo",[new ve.TextNode(Ce[t.substr(1)])]);return e.setAttribute("stretchy","true"),e},Oe=function(t,e){var r=function(){var r=4e5,a=t.label.substr(1);if(c.contains(["widehat","widecheck","widetilde","utilde"],a)){var n,i,o,s=Ne(t.base);if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][h],n=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=a+h):(r=[0,600,1033,2339,2340][h],n=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var l=new H(i),m=new L([l],{width:"100%",height:o+"em",viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Dt.makeSvgSpan([],[m],e),minWidth:0,height:o}}var u,p,d=[],f=qe[a],g=f[0],x=f[1],v=f[2],b=v/1e3,y=g.length;if(1===y)u=["hide-tail"],p=[f[3]];else if(2===y)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==y)throw new Error("Correct katexImagesData or update code here to support\n "+y+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(a.style.minWidth=n+"em"),a},Ee=function(t,e){var r,a,n,i=Vt(t,"supsub");i?(r=(a=Ft(i.base,"accent")).base,i.base=r,n=function(t){if(t instanceof N)return t;throw new Error("Expected span but got "+String(t)+".")}(ue(i,e)),i.base=a):r=(a=Ft(t,"accent")).base;var o=ue(r,e.havingCrampedStyle()),s=0;if(a.isShifty&&c.isCharacterBox(r)){var h=c.getBaseElem(r);s=D(ue(h,e.havingCrampedStyle())).skew}var l,m=Math.min(o.height,e.fontMetrics().xHeight);if(a.isStretchy)l=Oe(a,e),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+2*s+"em)",marginLeft:2*s+"em"}:void 0}]},e);else{var u,p;"\\vec"===a.label?(u=Dt.staticSvg("vec",e),p=Dt.svgData.vec[1]):((u=D(u=Dt.makeOrd({mode:a.mode,text:a.label},e,"textord"))).italic=0,p=u.width),l=Dt.makeSpan(["accent-body"],[u]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),m=o.height);var f=s;d||(f-=p/2),l.style.left=f+"em","\\textcircled"===a.label&&(l.style.top=".2em"),l=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:-m},{type:"elem",elem:l}]},e)}var g=Dt.makeSpan(["mord","accent"],[l],e);return n?(n.children[0]=g,n.height=Math.max(g.height,n.height),n.classes[0]="mord",n):g},Le=function(t,e){var r=t.isStretchy?Re(t.label):new ve.MathNode("mo",[be(t.label,t.mode)]),a=new ve.MathNode("mover",[Me(t.base,e),r]);return a.setAttribute("accent","true"),a},He=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(function(t){return"\\"+t}).join("|"));Qt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(t,e){var r=e[0],a=!He.test(t.funcName),n=!a||"\\widehat"===t.funcName||"\\widetilde"===t.funcName||"\\widecheck"===t.funcName;return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=e[0];return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Ee,mathmlBuilder:Le}),Qt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:function(t,e){var r=ue(t.base,e),a=Oe(t,e),n="\\utilde"===t.label?.12:0,i=Dt.makeVList({positionType:"bottom",positionData:a.height+n,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:function(t,e){var r=Re(t.label),a=new ve.MathNode("munder",[Me(t.base,e),r]);return a.setAttribute("accentunder","true"),a}});var Pe=function(t){var e=new ve.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};Qt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium"],props:{numArgs:1,numOptionalArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName;return{type:"xArrow",mode:a.mode,label:n,body:e[0],below:r[0]}},htmlBuilder:function(t,e){var r,a=e.style,n=e.havingStyle(a.sup()),i=Dt.wrapFragment(ue(t.body,n,e),e);i.classes.push("x-arrow-pad"),t.below&&(n=e.havingStyle(a.sub()),(r=Dt.wrapFragment(ue(t.below,n,e),e)).classes.push("x-arrow-pad"));var o,s=Oe(t,e),h=-e.fontMetrics().axisHeight+.5*s.height,l=-e.fontMetrics().axisHeight-.5*s.height-.111;if((i.depth>.25||"\\xleftequilibrium"===t.label)&&(l-=i.depth),r){var m=-e.fontMetrics().axisHeight+r.height+.5*s.height+.111;o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h},{type:"elem",elem:r,shift:m}]},e)}else o=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:l},{type:"elem",elem:s,shift:h}]},e);return o.children[0].children[0].children[1].classes.push("svg-align"),Dt.makeSpan(["mrel","x-arrow"],[o],e)},mathmlBuilder:function(t,e){var r,a=Re(t.label);if(t.body){var n=Pe(Me(t.body,e));if(t.below){var i=Pe(Me(t.below,e));r=new ve.MathNode("munderover",[a,i,n])}else r=new ve.MathNode("mover",[a,n])}else if(t.below){var o=Pe(Me(t.below,e));r=new ve.MathNode("munder",[a,o])}else r=Pe(),r=new ve.MathNode("mover",[a,r]);return r}}),Qt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){for(var r=t.parser,a=Ft(e[0],"ordgroup").body,n="",i=0;i","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Je=[0,1.2,1.8,2.4,3],Qe=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],tr=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"stack"}],er=[{type:"small",style:w.SCRIPTSCRIPT},{type:"small",style:w.SCRIPT},{type:"small",style:w.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],rr=function(t){if("small"===t.type)return"Main-Regular";if("large"===t.type)return"Size"+t.size+"-Regular";if("stack"===t.type)return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},ar=function(t,e,r,a){for(var n=Math.min(2,3-a.style.size);ne)return r[n]}return r[r.length-1]},nr=function(t,e,r,a,n,i){var o;"<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),o=c.contains(Ke,t)?Qe:c.contains($e,t)?er:tr;var s=ar(t,e,o,a);return"small"===s.type?function(t,e,r,a,n,i){var o=Dt.makeSymbol(t,"Main-Regular",n,a),s=Ue(o,e,a,i);return r&&Ge(s,a,e),s}(t,s.style,r,a,n,i):"large"===s.type?Ye(t,s.size,r,a,n,i):_e(t,e,r,a,n,i)},ir=function(t,e){var r,a,n=e.havingBaseSizing(),i=ar("\\surd",t*n.sizeMultiplier,er,n),o=n.sizeMultiplier,s=Math.max(0,e.minRuleThickness-e.fontMetrics().sqrtRuleThickness),h=0,l=0,m=0;return"small"===i.type?(t<1?o=1:t<1.4&&(o=.7),l=(1+s)/o,(r=je("sqrtMain",h=(1+s+.08)/o,m=1e3+1e3*s+80,s,e)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Je[i.size],l=(Je[i.size]+s)/o,h=(Je[i.size]+s+.08)/o,(r=je("sqrtSize"+i.size,h,m,s,e)).style.minWidth="1.02em",a=1/o):(h=t+s+.08,l=t+s,m=Math.floor(1e3*t+s)+80,(r=je("sqrtTall",h,m,s,e)).style.minWidth="0.742em",a=1.056),r.height=l,r.style.height=h+"em",{span:r,advanceWidth:a,ruleWidth:(e.fontMetrics().sqrtRuleThickness+s)*o}},or=function(t,e,r,a,n){if("<"===t||"\\lt"===t||"\u27e8"===t?t="\\langle":">"!==t&&"\\gt"!==t&&"\u27e9"!==t||(t="\\rangle"),c.contains($e,t)||c.contains(Ke,t))return Ye(t,e,!1,r,a,n);if(c.contains(Ze,t))return _e(t,Je[e],!1,r,a,n);throw new o("Illegal delimiter: '"+t+"'")},sr=nr,hr=function(t,e,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,h=Math.max(e-o,r+o),l=Math.max(h/500*901,2*h-s);return nr(t,l,!0,a,n,i)},lr={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},mr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function cr(t,e){var r=Yt(t);if(r&&c.contains(mr,r.text))return r;throw new o("Invalid delimiter: '"+(r?r.text:JSON.stringify(t))+"' after '"+e.funcName+"'",t)}function ur(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}Qt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:lr[t.funcName].size,mclass:lr[t.funcName].mclass,delim:r.text}},htmlBuilder:function(t,e){return"."===t.delim?Dt.makeSpan([t.mclass]):or(t.delim,t.size,e,t.mode,[t.mclass])},mathmlBuilder:function(t){var e=[];"."!==t.delim&&e.push(be(t.delim,t.mode));var r=new ve.MathNode("mo",e);return"mopen"===t.mclass||"mclose"===t.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r}}),Qt({type:"leftright-right",names:["\\right"],props:{numArgs:1},handler:function(t,e){var r=t.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new o("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:cr(e[0],t).text,color:r}}}),Qt({type:"leftright",names:["\\left"],props:{numArgs:1},handler:function(t,e){var r=cr(e[0],t),a=t.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Ft(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(t,e){ur(t);for(var r,a,n=se(t.body,e,!0,["mopen","mclose"]),i=0,o=0,s=!1,h=0;h-1?"mpadded":"menclose",[Me(t.body,e)]);switch(t.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\fcolorbox":case"\\colorbox":if(r=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===t.label){var n=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(t.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return t.backgroundColor&&a.setAttribute("mathbackground",t.backgroundColor),a};Qt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:["color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=e[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:["color","color","text"]},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=Ft(e[0],"color-token").color,o=Ft(e[1],"color-token").color,s=e[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:pr,mathmlBuilder:dr}),Qt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(t,e){return{type:"enclose",mode:t.parser.mode,label:"\\fbox",body:e[0]}}}),Qt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout"],props:{numArgs:1},handler:function(t,e,r){var a=t.parser,n=t.funcName,i=e[0];return{type:"enclose",mode:a.mode,label:n,body:i}},htmlBuilder:pr,mathmlBuilder:dr});var fr={};function gr(t){for(var e=t.type,r=t.names,a=t.props,n=t.handler,i=t.htmlBuilder,o=t.mathmlBuilder,s={type:e,numArgs:a.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:n},h=0;h0&&(b+=.25),l.push({pos:b,isDashed:t[e]})}for(y(i[0]),r=0;r0&&(M<(B+=v)&&(M=B),B=0),t.addJot&&(M+=f),z.height=S,z.depth=M,b+=S,z.pos=b,b+=M+B,h[r]=z,y(i[r+1])}var C,q,N=b/2+e.fontMetrics().axisHeight,I=t.cols||[],R=[];for(a=0,q=0;a=s)){var P=void 0;(a>0||t.hskipBeforeAndAfter)&&0!==(P=c.deflt(O.pregap,p))&&((C=Dt.makeSpan(["arraycolsep"],[])).style.width=P+"em",R.push(C));var D=[];for(r=0;r0){for(var G=Dt.makeLineSpan("hline",e,m),Y=Dt.makeLineSpan("hdashline",e,m),W=[{type:"elem",elem:h,shift:0}];l.length>0;){var X=l.pop(),_=X.pos-N;X.isDashed?W.push({type:"elem",elem:Y,shift:_}):W.push({type:"elem",elem:G,shift:_})}h=Dt.makeVList({positionType:"individualShift",children:W},e)}return Dt.makeSpan(["mord"],[h],e)},wr={c:"center ",l:"left ",r:"right "},kr=function(t,e){var r=new ve.MathNode("mtable",t.body.map(function(t){return new ve.MathNode("mtr",t.map(function(t){return new ve.MathNode("mtd",[Me(t,e)])}))})),a=.5===t.arraystretch?.1:.16+t.arraystretch-1+(t.addJot?.09:0);r.setAttribute("rowspacing",a+"em");var n="",i="";if(t.cols){var o=t.cols,s="",h=!1,l=0,m=o.length;"separator"===o[0].type&&(n+="top ",l=1),"separator"===o[o.length-1].type&&(n+="bottom ",m-=1);for(var c=l;c0?"left ":"",n+=g[g.length-1].length>0?"right ":"";for(var x=1;x0&&c&&(d=1),a[u]={type:"align",align:p,pregap:d,postgap:0}}return n.colSeparationType=c?"align":"alignat",n};gr({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(t,e){var r={cols:(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lcr".indexOf(e))return{type:"align",align:e};if("|"===e)return{type:"separator",separator:"|"};if(":"===e)return{type:"separator",separator:":"};throw new o("Unknown column alignment: "+e,t)}),hskipBeforeAndAfter:!0};return vr(t.parser,r,br(t.envName))},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],props:{numArgs:0},handler:function(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName],r=vr(t.parser,{hskipBeforeAndAfter:!1},br(t.envName));return e?{type:"leftright",mode:t.mode,body:[r],left:e[0],right:e[1],rightColor:void 0}:r},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:.5},"script");return e.colSeparationType="small",e},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["subarray"],props:{numArgs:1},handler:function(t,e){var r=(Yt(e[0])?[e[0]]:Ft(e[0],"ordgroup").body).map(function(t){var e=Gt(t).text;if(-1!=="lc".indexOf(e))return{type:"align",align:e};throw new o("Unknown column alignment: "+e,t)});if(r.length>1)throw new o("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=vr(t.parser,a,"script")).body[0].length>1)throw new o("{subarray} can contain only one column");return a},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["cases","dcases"],props:{numArgs:0},handler:function(t){var e=vr(t.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},br(t.envName));return{type:"leftright",mode:t.mode,body:[e],left:"\\{",right:".",rightColor:void 0}},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["aligned"],props:{numArgs:0},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["gathered"],props:{numArgs:0},handler:function(t){return vr(t.parser,{cols:[{type:"align",align:"c"}],addJot:!0},"display")},htmlBuilder:yr,mathmlBuilder:kr}),gr({type:"array",names:["alignedat"],props:{numArgs:1},handler:Sr,htmlBuilder:yr,mathmlBuilder:kr}),Qt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(t,e){throw new o(t.funcName+" valid only within array environment")}});var Mr=fr;Qt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];if("ordgroup"!==n.type)throw new o("Invalid environment name",n);for(var i="",s=0;s=w.SCRIPT.id?r.text():w.DISPLAY:"text"===t&&r.size===w.DISPLAY.size?r=w.TEXT:"script"===t?r=w.SCRIPT:"scriptscript"===t&&(r=w.SCRIPTSCRIPT),r},Rr=function(t,e){var r,a=Ir(t.size,e.style),n=a.fracNum(),i=a.fracDen();r=e.havingStyle(n);var o=ue(t.numer,r,e);if(t.continued){var s=8.5/e.fontMetrics().ptPerEm,h=3.5/e.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=e.fontMetrics().denom1):(m>0?(u=e.fontMetrics().num2,p=c):(u=e.fontMetrics().num3,p=3*c),d=e.fontMetrics().denom2),l){var y=e.fontMetrics().axisHeight;u-o.depth-(y+.5*m)0&&(e="."===(e=t)?null:e),e};Qt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,greediness:6,argTypes:["math","math","size","text","math","math"]},handler:function(t,e){var r=t.parser,a=e[4],n=e[5],i=Vt(e[0],"atom");i&&(i=Ut(e[0],"open"));var o=i?Lr(i.text):null,s=Vt(e[1],"atom");s&&(s=Ut(e[1],"close"));var h,l=s?Lr(s.text):null,m=Ft(e[2],"size"),c=null;h=!!m.isBlank||(c=m.value).number>0;var u="auto",p=Vt(e[3],"ordgroup");if(p){if(p.body.length>0){var d=Ft(p.body[0],"textord");u=Er[Number(d.text)]}}else p=Ft(e[3],"textord"),u=Er[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:a,denom:n,continued:!1,hasBarLine:h,barSize:c,leftDelim:o,rightDelim:l,size:u}},htmlBuilder:Rr,mathmlBuilder:Or}),Qt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(t,e){var r=t.parser,a=(t.funcName,t.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ft(e[0],"size").value,token:a}}}),Qt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(t,e){var r=t.parser,a=(t.funcName,e[0]),n=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t}(Ft(e[1],"infix").size),i=e[2],o=n.number>0;return{type:"genfrac",mode:r.mode,numer:a,denom:i,continued:!1,hasBarLine:o,barSize:n,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:Rr,mathmlBuilder:Or});var Hr=function(t,e){var r,a,n=e.style,i=Vt(t,"supsub");i?(r=i.sup?ue(i.sup,e.havingStyle(n.sup()),e):ue(i.sub,e.havingStyle(n.sub()),e),a=Ft(i.base,"horizBrace")):a=Ft(t,"horizBrace");var o,s=ue(a.base,e.havingBaseStyle(w.DISPLAY)),h=Oe(a,e);if(a.isOver?(o=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:h}]},e)).children[0].children[0].children[1].classes.push("svg-align"):(o=Dt.makeVList({positionType:"bottom",positionData:s.depth+.1+h.height,children:[{type:"elem",elem:h},{type:"kern",size:.1},{type:"elem",elem:s}]},e)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e);o=a.isOver?Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},e):Dt.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},e)}return Dt.makeSpan(["mord",a.isOver?"mover":"munder"],[o],e)};Qt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(t,e){var r=t.parser,a=t.funcName;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:e[0]}},htmlBuilder:Hr,mathmlBuilder:function(t,e){var r=Re(t.label);return new ve.MathNode(t.isOver?"mover":"munder",[Me(t.base,e),r])}}),Qt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=e[1],n=Ft(e[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:ee(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(t,e){var r=se(t.body,e,!1);return Dt.makeAnchor(t.href,[],r,e)},mathmlBuilder:function(t,e){var r=Se(t.body,e);return r instanceof ge||(r=new ge("mrow",[r])),r.setAttribute("href",t.href),r}}),Qt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=Ft(e[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;i0&&(a=Tt(t.totalheight,e)-r,a=Number(a.toFixed(2)));var n=0;t.width.number>0&&(n=Tt(t.width,e));var i={height:r+a+"em"};n>0&&(i.width=n+"em"),a>0&&(i.verticalAlign=-a+"em");var o=new R(t.src,t.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:function(t,e){var r=new ve.MathNode("mglyph",[]);r.setAttribute("alt",t.alt);var a=Tt(t.height,e),n=0;if(t.totalheight.number>0&&(n=(n=Tt(t.totalheight,e)-a).toFixed(2),r.setAttribute("valign","-"+n+"em")),r.setAttribute("height",a+n+"em"),t.width.number>0){var i=Tt(t.width,e);r.setAttribute("width",i+"em")}return r.setAttribute("src",t.src),r}}),Qt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=Ft(e[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:function(t,e){return Dt.makeGlue(t.dimension,e)},mathmlBuilder:function(t,e){var r=Tt(t.dimension,e);return new ve.SpaceNode(r)}}),Qt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:function(t,e){var r;"clap"===t.alignment?(r=Dt.makeSpan([],[ue(t.body,e)]),r=Dt.makeSpan(["inner"],[r],e)):r=Dt.makeSpan(["inner"],[ue(t.body,e)]);var a=Dt.makeSpan(["fix"],[]),n=Dt.makeSpan([t.alignment],[r,a],e),i=Dt.makeSpan(["strut"]);return i.style.height=n.height+n.depth+"em",i.style.verticalAlign=-n.depth+"em",n.children.unshift(i),n=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n}]},e),Dt.makeSpan(["mord"],[n],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mpadded",[Me(t.body,e)]);if("rlap"!==t.alignment){var a="llap"===t.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),Qt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){var r=t.funcName,a=t.parser,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),Qt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(t,e){throw new o("Mismatched "+t.funcName)}});var Dr=function(t,e){switch(e.style.size){case w.DISPLAY.size:return t.display;case w.TEXT.size:return t.text;case w.SCRIPT.size:return t.script;case w.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};Qt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4},handler:function(t,e){return{type:"mathchoice",mode:t.parser.mode,display:ee(e[0]),text:ee(e[1]),script:ee(e[2]),scriptscript:ee(e[3])}},htmlBuilder:function(t,e){var r=Dr(t,e),a=se(r,e,!1);return Dt.makeFragment(a)},mathmlBuilder:function(t,e){var r=Dr(t,e);return Se(r,e)}});var Fr=function(t,e,r,a,n,i,o){var s,h,l;if(t=Dt.makeSpan([],[t]),e){var m=ue(e,a.havingStyle(n.sup()),a);h={elem:m,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-m.depth)}}if(r){var c=ue(r,a.havingStyle(n.sub()),a);s={elem:c,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-c.height)}}if(h&&s){var u=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:u,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var p=t.height-o;l=Dt.makeVList({positionType:"top",positionData:p,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:-i+"em"},{type:"kern",size:s.kern},{type:"elem",elem:t}]},a)}else{if(!h)return t;var d=t.depth+o;l=Dt.makeVList({positionType:"bottom",positionData:d,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:i+"em"},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}return Dt.makeSpan(["mop","op-limits"],[l],a)},Vr=["\\smallint"],Ur=function(t,e){var r,a,n,i=!1,o=Vt(t,"supsub");o?(r=o.sup,a=o.sub,n=Ft(o.base,"op"),i=!0):n=Ft(t,"op");var s,h=e.style,l=!1;if(h.size===w.DISPLAY.size&&n.symbol&&!c.contains(Vr,n.name)&&(l=!0),n.symbol){var m=l?"Size2-Regular":"Size1-Regular",u="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(u=n.name.substr(1),n.name="oiint"===u?"\\iint":"\\iiint"),s=Dt.makeSymbol(n.name,m,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),u.length>0){var p=s.italic,d=Dt.staticSvg(u+"Size"+(l?"2":"1"),e);s=Dt.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:0},{type:"elem",elem:d,shift:l?.08:0}]},e),n.name="\\"+u,s.classes.unshift("mop"),s.italic=p}}else if(n.body){var f=se(n.body,e,!0);1===f.length&&f[0]instanceof E?(s=f[0]).classes[0]="mop":s=Dt.makeSpan(["mop"],Dt.tryCombineChars(f),e)}else{for(var g=[],x=1;x0){for(var h=n.body.map(function(t){var e=t.text;return"string"==typeof e?{type:"textord",mode:t.mode,text:e}:t}),l=se(h,e.withFont("mathrm"),!0),m=0;m=0?s.setAttribute("height","+"+n+"em"):(s.setAttribute("height",n+"em"),s.setAttribute("depth","+"+-n+"em")),s.setAttribute("voffset",n+"em"),s}});var jr=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];Qt({type:"sizing",names:jr,props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:jr.indexOf(a)+1,body:i}},htmlBuilder:function(t,e){var r=e.havingSize(t.size);return _r(t.body,r,e)},mathmlBuilder:function(t,e){var r=e.havingSize(t.size),a=ke(t.body,r),n=new ve.MathNode("mstyle",a);return n.setAttribute("mathsize",r.sizeMultiplier+"em"),n}}),Qt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(t,e,r){var a=t.parser,n=!1,i=!1,o=r[0]&&Ft(r[0],"ordgroup");if(o)for(var s="",h=0;hr.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=h.height-r.height-i-l;r.style.paddingLeft=m+"em";var p=Dt.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:h},{type:"kern",size:l}]},e);if(t.index){var d=e.havingStyle(w.SCRIPTSCRIPT),f=ue(t.index,d,e),g=.6*(p.height-p.depth),x=Dt.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},e),v=Dt.makeSpan(["root"],[x]);return Dt.makeSpan(["mord","sqrt"],[v,p],e)}return Dt.makeSpan(["mord","sqrt"],[p],e)},mathmlBuilder:function(t,e){var r=t.body,a=t.index;return a?new ve.MathNode("mroot",[Me(r,e),Me(a,e)]):new ve.MathNode("msqrt",[Me(r,e)])}});var $r={display:w.DISPLAY,text:w.TEXT,script:w.SCRIPT,scriptscript:w.SCRIPTSCRIPT};Qt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0},handler:function(t,e){var r=t.breakOnTokenText,a=t.funcName,n=t.parser,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r).withFont("");return _r(t.body,a,e)},mathmlBuilder:function(t,e){var r=$r[t.style],a=e.havingStyle(r),n=ke(t.body,a),i=new ve.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});te({type:"supsub",htmlBuilder:function(t,e){var r=function(t,e){var r=t.base;return r?"op"===r.type?r.limits&&(e.style.size===w.DISPLAY.size||r.alwaysHandleSupSub)?Ur:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(e.style.size===w.DISPLAY.size||r.limits)?Xr:null:"accent"===r.type?c.isCharacterBox(r.base)?Ee:null:"horizBrace"===r.type&&!t.sub===r.isOver?Hr:null:null}(t,e);if(r)return r(t,e);var a,n,i,o=t.base,s=t.sup,h=t.sub,l=ue(o,e),m=e.fontMetrics(),u=0,p=0,d=o&&c.isCharacterBox(o);if(s){var f=e.havingStyle(e.style.sup());a=ue(s,f,e),d||(u=l.height-f.fontMetrics().supDrop*f.sizeMultiplier/e.sizeMultiplier)}if(h){var g=e.havingStyle(e.style.sub());n=ue(h,g,e),d||(p=l.depth+g.fontMetrics().subDrop*g.sizeMultiplier/e.sizeMultiplier)}i=e.style===w.DISPLAY?m.sup1:e.style.cramped?m.sup3:m.sup2;var x,v=e.sizeMultiplier,b=.5/m.ptPerEm/v+"em",y=null;if(n){var k=t.base&&"op"===t.base.type&&t.base.name&&("\\oiint"===t.base.name||"\\oiiint"===t.base.name);(l instanceof E||k)&&(y=-l.italic+"em")}if(a&&n){u=Math.max(u,i,a.depth+.25*m.xHeight),p=Math.max(p,m.sub2);var S=4*m.defaultRuleThickness;if(u-a.depth-(n.height-p)0&&(u+=M,p-=M)}var z=[{type:"elem",elem:n,shift:p,marginRight:b,marginLeft:y},{type:"elem",elem:a,shift:-u,marginRight:b}];x=Dt.makeVList({positionType:"individualShift",children:z},e)}else if(n){p=Math.max(p,m.sub1,n.height-.8*m.xHeight);var A=[{type:"elem",elem:n,marginLeft:y,marginRight:b}];x=Dt.makeVList({positionType:"shift",positionData:p,children:A},e)}else{if(!a)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,a.depth+.25*m.xHeight),x=Dt.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:a,marginRight:b}]},e)}var T=me(l,"right")||"mord";return Dt.makeSpan([T],[l,Dt.makeSpan(["msupsub"],[x])],e)},mathmlBuilder:function(t,e){var r,a=!1,n=Vt(t.base,"horizBrace");n&&!!t.sup===n.isOver&&(a=!0,r=n.isOver),!t.base||"op"!==t.base.type&&"operatorname"!==t.base.type||(t.base.parentIsSupSub=!0);var i,o=[Me(t.base,e)];if(t.sub&&o.push(Me(t.sub,e)),t.sup&&o.push(Me(t.sup,e)),a)i=r?"mover":"munder";else if(t.sub)if(t.sup){var s=t.base;i=s&&"op"===s.type&&s.limits&&e.style===w.DISPLAY?"munderover":s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(e.style===w.DISPLAY||s.limits)?"munderover":"msubsup"}else{var h=t.base;i=h&&"op"===h.type&&h.limits&&(e.style===w.DISPLAY||h.alwaysHandleSupSub)?"munder":h&&"operatorname"===h.type&&h.alwaysHandleSupSub&&(h.limits||e.style===w.DISPLAY)?"munder":"msub"}else{var l=t.base;i=l&&"op"===l.type&&l.limits&&(e.style===w.DISPLAY||l.alwaysHandleSupSub)?"mover":l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||e.style===w.DISPLAY)?"mover":"msup"}return new ve.MathNode(i,o)}}),te({type:"atom",htmlBuilder:function(t,e){return Dt.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[be(t.text,t.mode)]);if("bin"===t.family){var a=we(t,e);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===t.family?r.setAttribute("separator","true"):"open"!==t.family&&"close"!==t.family||r.setAttribute("stretchy","false");return r}});var Zr={mi:"italic",mn:"normal",mtext:"normal"};te({type:"mathord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"mathord")},mathmlBuilder:function(t,e){var r=new ve.MathNode("mi",[be(t.text,t.mode,e)]),a=we(t,e)||"italic";return a!==Zr[r.type]&&r.setAttribute("mathvariant",a),r}}),te({type:"textord",htmlBuilder:function(t,e){return Dt.makeOrd(t,e,"textord")},mathmlBuilder:function(t,e){var r,a=be(t.text,t.mode,e),n=we(t,e)||"normal";return r="text"===t.mode?new ve.MathNode("mtext",[a]):/[0-9]/.test(t.text)?new ve.MathNode("mn",[a]):"\\prime"===t.text?new ve.MathNode("mo",[a]):new ve.MathNode("mi",[a]),n!==Zr[r.type]&&r.setAttribute("mathvariant",n),r}});var Kr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Jr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};te({type:"spacing",htmlBuilder:function(t,e){if(Jr.hasOwnProperty(t.text)){var r=Jr[t.text].className||"";if("text"===t.mode){var a=Dt.makeOrd(t,e,"textord");return a.classes.push(r),a}return Dt.makeSpan(["mspace",r],[Dt.mathsym(t.text,t.mode,e)],e)}if(Kr.hasOwnProperty(t.text))return Dt.makeSpan(["mspace",Kr[t.text]],[],e);throw new o('Unknown type of space "'+t.text+'"')},mathmlBuilder:function(t,e){if(!Jr.hasOwnProperty(t.text)){if(Kr.hasOwnProperty(t.text))return new ve.MathNode("mspace");throw new o('Unknown type of space "'+t.text+'"')}return new ve.MathNode("mtext",[new ve.TextNode("\xa0")])}});var Qr=function(){var t=new ve.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};te({type:"tag",mathmlBuilder:function(t,e){var r=new ve.MathNode("mtable",[new ve.MathNode("mtr",[Qr(),new ve.MathNode("mtd",[Se(t.body,e)]),Qr(),new ve.MathNode("mtd",[Se(t.tag,e)])])]);return r.setAttribute("width","100%"),r}});var ta={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},ea={"\\textbf":"textbf","\\textmd":"textmd"},ra={"\\textit":"textit","\\textup":"textup"},aa=function(t,e){var r=t.font;return r?ta[r]?e.withTextFontFamily(ta[r]):ea[r]?e.withTextFontWeight(ea[r]):e.withTextFontShape(ra[r]):e};Qt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],greediness:2,allowedInText:!0},handler:function(t,e){var r=t.parser,a=t.funcName,n=e[0];return{type:"text",mode:r.mode,body:ee(n),font:a}},htmlBuilder:function(t,e){var r=aa(t,e),a=se(t.body,r,!0);return Dt.makeSpan(["mord","text"],Dt.tryCombineChars(a),r)},mathmlBuilder:function(t,e){var r=aa(t,e);return Se(t.body,r)}}),Qt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(t,e){return{type:"underline",mode:t.parser.mode,body:e[0]}},htmlBuilder:function(t,e){var r=ue(t.body,e),a=Dt.makeLineSpan("underline-line",e),n=e.fontMetrics().defaultRuleThickness,i=Dt.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},e);return Dt.makeSpan(["mord","underline"],[i],e)},mathmlBuilder:function(t,e){var r=new ve.MathNode("mo",[new ve.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new ve.MathNode("munder",[Me(t.body,e),r]);return a.setAttribute("accentunder","true"),a}}),Qt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(t,e,r){throw new o("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(t,e){for(var r=na(t),a=[],n=e.havingStyle(e.style.text()),i=0;i0&&(this.undefStack[this.undefStack.length-1][t]=e)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(t)&&(n[t]=this.current[t])}this.current[t]=e},t}(),ca={},ua=ca;function pa(t,e){ca[t]=e}pa("\\@firstoftwo",function(t){return{tokens:t.consumeArgs(2)[0],numArgs:0}}),pa("\\@secondoftwo",function(t){return{tokens:t.consumeArgs(2)[1],numArgs:0}}),pa("\\@ifnextchar",function(t){var e=t.consumeArgs(3),r=t.future();return 1===e[0].length&&e[0][0].text===r.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}}),pa("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),pa("\\TextOrMath",function(t){var e=t.consumeArgs(2);return"text"===t.mode?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var da={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};pa("\\char",function(t){var e,r=t.popToken(),a="";if("'"===r.text)e=8,r=t.popToken();else if('"'===r.text)e=16,r=t.popToken();else if("`"===r.text)if("\\"===(r=t.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new o("\\char` missing argument");a=r.text.charCodeAt(0)}else e=10;if(e){if(null==(a=da[r.text])||a>=e)throw new o("Invalid base-"+e+" digit "+r.text);for(var n;null!=(n=da[t.future().text])&&n":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};pa("\\dots",function(t){var e="\\dotso",r=t.expandAfterFuture().text;return r in xa?e=xa[r]:"\\not"===r.substr(0,4)?e="\\dotsb":r in j.math&&c.contains(["bin","rel"],j.math[r].group)&&(e="\\dotsb"),e});var va={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};pa("\\dotso",function(t){return t.future().text in va?"\\ldots\\,":"\\ldots"}),pa("\\dotsc",function(t){var e=t.future().text;return e in va&&","!==e?"\\ldots\\,":"\\ldots"}),pa("\\cdots",function(t){return t.future().text in va?"\\@cdots\\,":"\\@cdots"}),pa("\\dotsb","\\cdots"),pa("\\dotsm","\\cdots"),pa("\\dotsi","\\!\\cdots"),pa("\\dotsx","\\ldots\\,"),pa("\\DOTSI","\\relax"),pa("\\DOTSB","\\relax"),pa("\\DOTSX","\\relax"),pa("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),pa("\\,","\\tmspace+{3mu}{.1667em}"),pa("\\thinspace","\\,"),pa("\\>","\\mskip{4mu}"),pa("\\:","\\tmspace+{4mu}{.2222em}"),pa("\\medspace","\\:"),pa("\\;","\\tmspace+{5mu}{.2777em}"),pa("\\thickspace","\\;"),pa("\\!","\\tmspace-{3mu}{.1667em}"),pa("\\negthinspace","\\!"),pa("\\negmedspace","\\tmspace-{4mu}{.2222em}"),pa("\\negthickspace","\\tmspace-{5mu}{.277em}"),pa("\\enspace","\\kern.5em "),pa("\\enskip","\\hskip.5em\\relax"),pa("\\quad","\\hskip1em\\relax"),pa("\\qquad","\\hskip2em\\relax"),pa("\\tag","\\@ifstar\\tag@literal\\tag@paren"),pa("\\tag@paren","\\tag@literal{({#1})}"),pa("\\tag@literal",function(t){if(t.macros.get("\\df@tag"))throw new o("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"}),pa("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),pa("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),pa("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),pa("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),pa("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),pa("\\\\","\\newline"),pa("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var ba=F["Main-Regular"]["T".charCodeAt(0)][1]-.7*F["Main-Regular"]["A".charCodeAt(0)][1]+"em";pa("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),pa("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+ba+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),pa("\\hspace","\\@ifstar\\@hspacer\\@hspace"),pa("\\@hspace","\\hskip #1\\relax"),pa("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),pa("\\ordinarycolon",":"),pa("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),pa("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),pa("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),pa("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),pa("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),pa("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),pa("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),pa("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),pa("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),pa("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),pa("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),pa("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),pa("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),pa("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),pa("\u2237","\\dblcolon"),pa("\u2239","\\eqcolon"),pa("\u2254","\\coloneqq"),pa("\u2255","\\eqqcolon"),pa("\u2a74","\\Coloneqq"),pa("\\ratio","\\vcentcolon"),pa("\\coloncolon","\\dblcolon"),pa("\\colonequals","\\coloneqq"),pa("\\coloncolonequals","\\Coloneqq"),pa("\\equalscolon","\\eqqcolon"),pa("\\equalscoloncolon","\\Eqqcolon"),pa("\\colonminus","\\coloneq"),pa("\\coloncolonminus","\\Coloneq"),pa("\\minuscolon","\\eqcolon"),pa("\\minuscoloncolon","\\Eqcolon"),pa("\\coloncolonapprox","\\Colonapprox"),pa("\\coloncolonsim","\\Colonsim"),pa("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),pa("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),pa("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),pa("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),pa("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),pa("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),pa("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),pa("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),pa("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),pa("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),pa("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),pa("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),pa("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),pa("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),pa("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),pa("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),pa("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),pa("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),pa("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),pa("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),pa("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),pa("\u27e6","\\llbracket"),pa("\u27e7","\\rrbracket"),pa("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),pa("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),pa("\u2983","\\lBrace"),pa("\u2984","\\rBrace"),pa("\\darr","\\downarrow"),pa("\\dArr","\\Downarrow"),pa("\\Darr","\\Downarrow"),pa("\\lang","\\langle"),pa("\\rang","\\rangle"),pa("\\uarr","\\uparrow"),pa("\\uArr","\\Uparrow"),pa("\\Uarr","\\Uparrow"),pa("\\N","\\mathbb{N}"),pa("\\R","\\mathbb{R}"),pa("\\Z","\\mathbb{Z}"),pa("\\alef","\\aleph"),pa("\\alefsym","\\aleph"),pa("\\Alpha","\\mathrm{A}"),pa("\\Beta","\\mathrm{B}"),pa("\\bull","\\bullet"),pa("\\Chi","\\mathrm{X}"),pa("\\clubs","\\clubsuit"),pa("\\cnums","\\mathbb{C}"),pa("\\Complex","\\mathbb{C}"),pa("\\Dagger","\\ddagger"),pa("\\diamonds","\\diamondsuit"),pa("\\empty","\\emptyset"),pa("\\Epsilon","\\mathrm{E}"),pa("\\Eta","\\mathrm{H}"),pa("\\exist","\\exists"),pa("\\harr","\\leftrightarrow"),pa("\\hArr","\\Leftrightarrow"),pa("\\Harr","\\Leftrightarrow"),pa("\\hearts","\\heartsuit"),pa("\\image","\\Im"),pa("\\infin","\\infty"),pa("\\Iota","\\mathrm{I}"),pa("\\isin","\\in"),pa("\\Kappa","\\mathrm{K}"),pa("\\larr","\\leftarrow"),pa("\\lArr","\\Leftarrow"),pa("\\Larr","\\Leftarrow"),pa("\\lrarr","\\leftrightarrow"),pa("\\lrArr","\\Leftrightarrow"),pa("\\Lrarr","\\Leftrightarrow"),pa("\\Mu","\\mathrm{M}"),pa("\\natnums","\\mathbb{N}"),pa("\\Nu","\\mathrm{N}"),pa("\\Omicron","\\mathrm{O}"),pa("\\plusmn","\\pm"),pa("\\rarr","\\rightarrow"),pa("\\rArr","\\Rightarrow"),pa("\\Rarr","\\Rightarrow"),pa("\\real","\\Re"),pa("\\reals","\\mathbb{R}"),pa("\\Reals","\\mathbb{R}"),pa("\\Rho","\\mathrm{P}"),pa("\\sdot","\\cdot"),pa("\\sect","\\S"),pa("\\spades","\\spadesuit"),pa("\\sub","\\subset"),pa("\\sube","\\subseteq"),pa("\\supe","\\supseteq"),pa("\\Tau","\\mathrm{T}"),pa("\\thetasym","\\vartheta"),pa("\\weierp","\\wp"),pa("\\Zeta","\\mathrm{Z}"),pa("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),pa("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),pa("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),pa("\\blue","\\textcolor{##6495ed}{#1}"),pa("\\orange","\\textcolor{##ffa500}{#1}"),pa("\\pink","\\textcolor{##ff00af}{#1}"),pa("\\red","\\textcolor{##df0030}{#1}"),pa("\\green","\\textcolor{##28ae7b}{#1}"),pa("\\gray","\\textcolor{gray}{#1}"),pa("\\purple","\\textcolor{##9d38bd}{#1}"),pa("\\blueA","\\textcolor{##ccfaff}{#1}"),pa("\\blueB","\\textcolor{##80f6ff}{#1}"),pa("\\blueC","\\textcolor{##63d9ea}{#1}"),pa("\\blueD","\\textcolor{##11accd}{#1}"),pa("\\blueE","\\textcolor{##0c7f99}{#1}"),pa("\\tealA","\\textcolor{##94fff5}{#1}"),pa("\\tealB","\\textcolor{##26edd5}{#1}"),pa("\\tealC","\\textcolor{##01d1c1}{#1}"),pa("\\tealD","\\textcolor{##01a995}{#1}"),pa("\\tealE","\\textcolor{##208170}{#1}"),pa("\\greenA","\\textcolor{##b6ffb0}{#1}"),pa("\\greenB","\\textcolor{##8af281}{#1}"),pa("\\greenC","\\textcolor{##74cf70}{#1}"),pa("\\greenD","\\textcolor{##1fab54}{#1}"),pa("\\greenE","\\textcolor{##0d923f}{#1}"),pa("\\goldA","\\textcolor{##ffd0a9}{#1}"),pa("\\goldB","\\textcolor{##ffbb71}{#1}"),pa("\\goldC","\\textcolor{##ff9c39}{#1}"),pa("\\goldD","\\textcolor{##e07d10}{#1}"),pa("\\goldE","\\textcolor{##a75a05}{#1}"),pa("\\redA","\\textcolor{##fca9a9}{#1}"),pa("\\redB","\\textcolor{##ff8482}{#1}"),pa("\\redC","\\textcolor{##f9685d}{#1}"),pa("\\redD","\\textcolor{##e84d39}{#1}"),pa("\\redE","\\textcolor{##bc2612}{#1}"),pa("\\maroonA","\\textcolor{##ffbde0}{#1}"),pa("\\maroonB","\\textcolor{##ff92c6}{#1}"),pa("\\maroonC","\\textcolor{##ed5fa6}{#1}"),pa("\\maroonD","\\textcolor{##ca337c}{#1}"),pa("\\maroonE","\\textcolor{##9e034e}{#1}"),pa("\\purpleA","\\textcolor{##ddd7ff}{#1}"),pa("\\purpleB","\\textcolor{##c6b9fc}{#1}"),pa("\\purpleC","\\textcolor{##aa87ff}{#1}"),pa("\\purpleD","\\textcolor{##7854ab}{#1}"),pa("\\purpleE","\\textcolor{##543b78}{#1}"),pa("\\mintA","\\textcolor{##f5f9e8}{#1}"),pa("\\mintB","\\textcolor{##edf2df}{#1}"),pa("\\mintC","\\textcolor{##e0e5cc}{#1}"),pa("\\grayA","\\textcolor{##f6f7f7}{#1}"),pa("\\grayB","\\textcolor{##f0f1f2}{#1}"),pa("\\grayC","\\textcolor{##e3e5e6}{#1}"),pa("\\grayD","\\textcolor{##d6d8da}{#1}"),pa("\\grayE","\\textcolor{##babec2}{#1}"),pa("\\grayF","\\textcolor{##888d93}{#1}"),pa("\\grayG","\\textcolor{##626569}{#1}"),pa("\\grayH","\\textcolor{##3b3e40}{#1}"),pa("\\grayI","\\textcolor{##21242c}{#1}"),pa("\\kaBlue","\\textcolor{##314453}{#1}"),pa("\\kaGreen","\\textcolor{##71B307}{#1}");var ya={"\\relax":!0,"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},wa=function(){function t(t,e,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=e,this.expansionCount=0,this.feed(t),this.macros=new ma(ua,e.macros),this.mode=r,this.stack=[]}var e=t.prototype;return e.feed=function(t){this.lexer=new la(t,this.settings)},e.switchMode=function(t){this.mode=t},e.beginGroup=function(){this.macros.beginGroup()},e.endGroup=function(){this.macros.endGroup()},e.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},e.popToken=function(){return this.future(),this.stack.pop()},e.pushToken=function(t){this.stack.push(t)},e.pushTokens=function(t){var e;(e=this.stack).push.apply(e,t)},e.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},e.consumeArgs=function(t){for(var e=[],r=0;rthis.settings.maxExpand)throw new o("Too many expansions: infinite loop or need to increase maxExpand setting");var a=r.tokens;if(r.numArgs)for(var n=this.consumeArgs(r.numArgs),i=(a=a.slice()).length-1;i>=0;--i){var s=a[i];if("#"===s.text){if(0===i)throw new o("Incomplete placeholder at end of macro body",s);if("#"===(s=a[--i]).text)a.splice(i+1,1);else{if(!/^[1-9]$/.test(s.text))throw new o("Not a valid argument number",s);var h;(h=a).splice.apply(h,[i,2].concat(n[+s.text-1]))}}}return this.pushTokens(a),a},e.expandAfterFuture=function(){return this.expandOnce(),this.future()},e.expandNextToken=function(){for(;;){var t=this.expandOnce();if(t instanceof n){if("\\relax"!==t.text)return this.stack.pop();this.stack.pop()}}throw new Error},e.expandMacro=function(t){if(this.macros.get(t)){var e=[],r=this.stack.length;for(this.pushToken(new n(t));this.stack.length>r;){this.expandOnce()instanceof n&&e.push(this.stack.pop())}return e}},e.expandMacroAsText=function(t){var e=this.expandMacro(t);return e?e.map(function(t){return t.text}).join(""):e},e._getExpansion=function(t){var e=this.macros.get(t);if(null==e)return e;var r="function"==typeof e?e(this):e;if("string"==typeof r){var a=0;if(-1!==r.indexOf("#"))for(var n=r.replace(/##/g,"");-1!==n.indexOf("#"+(a+1));)++a;for(var i=new la(r,this.settings),o=[],s=i.lex();"EOF"!==s.text;)o.push(s),s=i.lex();return o.reverse(),{tokens:o,numArgs:a}}return r},e.isDefined=function(t){return this.macros.has(t)||ia.hasOwnProperty(t)||j.math.hasOwnProperty(t)||j.text.hasOwnProperty(t)||ya.hasOwnProperty(t)},t}(),ka={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"}},Sa={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\u010f":"d\u030c","\u1e0b":"d\u0307","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u013a":"l\u0301","\u013e":"l\u030c","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\u010e":"D\u030c","\u1e0a":"D\u0307","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0139":"L\u0301","\u013d":"L\u030c","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u0164":"T\u030c","\u1e6a":"T\u0307","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Ma=function(){function t(t,e){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new wa(t,e,this.mode),this.settings=e,this.leftrightDepth=0}var e=t.prototype;return e.expect=function(t,e){if(void 0===e&&(e=!0),this.fetch().text!==t)throw new o("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());e&&this.consume()},e.consume=function(){this.nextToken=null},e.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},e.switchMode=function(t){this.mode=t,this.gullet.switchMode(t)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");var t=this.parseExpression(!1);return this.expect("EOF"),this.gullet.endGroup(),t},e.parseExpression=function(e,r){for(var a=[];;){"math"===this.mode&&this.consumeSpaces();var n=this.fetch();if(-1!==t.endOfExpression.indexOf(n.text))break;if(r&&n.text===r)break;if(e&&ia[n.text]&&ia[n.text].infix)break;var i=this.parseAtom(r);if(!i)break;a.push(i)}return"text"===this.mode&&this.formLigatures(a),this.handleInfixNodes(a)},e.handleInfixNodes=function(t){for(var e,r=-1,a=0;a0&&!l||0===s&&!l&&"math"===this.mode,c=this.parseGroupOfType("argument to '"+t+"'",h,l,a,m);if(!c){if(l){i.push(null);continue}throw new o("Expected group after '"+t+"'",this.fetch())}(l?i:n).push(c)}return{args:n,optArgs:i}},e.parseGroupOfType=function(t,e,r,a,n){switch(e){case"color":return n&&this.consumeSpaces(),this.parseColorGroup(r);case"size":return n&&this.consumeSpaces(),this.parseSizeGroup(r);case"url":return this.parseUrlGroup(r,n);case"math":case"text":return this.parseGroup(t,r,a,void 0,e,n);case"hbox":var i=this.parseGroup(t,r,a,void 0,"text",n);return i?{type:"styling",mode:i.mode,body:[i],style:"text"}:i;case"raw":if(n&&this.consumeSpaces(),r&&"{"===this.fetch().text)return null;var s=this.parseStringGroup("raw",r,!0);if(s)return{type:"raw",mode:"text",string:s.text};throw new o("Expected raw group",this.fetch());case"original":case null:case void 0:return this.parseGroup(t,r,a,void 0,void 0,n);default:throw new o("Unknown group type as "+t,this.fetch())}},e.consumeSpaces=function(){for(;" "===this.fetch().text;)this.consume()},e.parseStringGroup=function(t,e,r){var a=e?"[":"{",n=e?"]":"}",i=this.fetch();if(i.text!==a){if(e)return null;if(r&&"EOF"!==i.text&&/[^{}[\]]/.test(i.text))return this.consume(),i}var s=this.mode;this.mode="text",this.expect(a);for(var h,l="",m=this.fetch(),c=0,u=m;(h=this.fetch()).text!==n||r&&c>0;){switch(h.text){case"EOF":throw new o("Unexpected end of input in "+t,m.range(u,l));case a:c++;break;case n:c--}l+=(u=h).text,this.consume()}return this.expect(n),this.mode=s,m.range(u,l)},e.parseRegexGroup=function(t,e){var r=this.mode;this.mode="text";for(var a,n=this.fetch(),i=n,s="";"EOF"!==(a=this.fetch()).text&&t.test(s+a.text);)s+=(i=a).text,this.consume();if(""===s)throw new o("Invalid "+e+": '"+n.text+"'",n);return this.mode=r,n.range(i,s)},e.parseColorGroup=function(t){var e=this.parseStringGroup("color",t);if(!e)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(e.text);if(!r)throw new o("Invalid color: '"+e.text+"'",e);var a=r[0];return/^[0-9a-f]{6}$/i.test(a)&&(a="#"+a),{type:"color-token",mode:this.mode,color:a}},e.parseSizeGroup=function(t){var e,r=!1;if(!(e=t||"{"===this.fetch().text?this.parseStringGroup("size",t):this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/,"size")))return null;t||0!==e.text.length||(e.text="0pt",r=!0);var a=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e.text);if(!a)throw new o("Invalid size: '"+e.text+"'",e);var n={number:+(a[1]+a[2]),unit:a[3]};if(!At(n))throw new o("Invalid unit: '"+n.unit+"'",e);return{type:"size",mode:this.mode,value:n,isBlank:r}},e.parseUrlGroup=function(t,e){this.gullet.lexer.setCatcode("%",13);var r=this.parseStringGroup("url",t,!0);if(this.gullet.lexer.setCatcode("%",14),!r)return null;var a=r.text.replace(/\\([#$%&~_^{}])/g,"$1");return{type:"url",mode:this.mode,url:a}},e.parseGroup=function(e,r,n,i,s,h){var l=this.mode;s&&this.switchMode(s),h&&this.consumeSpaces();var m,c=this.fetch(),u=c.text;if(r?"["===u:"{"===u||"\\begingroup"===u){this.consume();var p=t.endOfGroup[u];this.gullet.beginGroup();var d=this.parseExpression(!1,p),f=this.fetch();this.expect(p),this.gullet.endGroup(),m={type:"ordgroup",mode:this.mode,loc:a.range(c,f),body:d,semisimple:"\\begingroup"===u||void 0}}else if(r)m=null;else if(null==(m=this.parseFunction(i,e,n)||this.parseSymbol())&&"\\"===u[0]&&!ya.hasOwnProperty(u)){if(this.settings.throwOnError)throw new o("Undefined control sequence: "+u,c);m=this.formatUnsupportedCmd(u),this.consume()}return s&&this.switchMode(l),m},e.formLigatures=function(t){for(var e=t.length-1,r=0;r=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+e[0]+'" used in math mode',t);var h,l=j[this.mode][e].group,m=a.range(t);if(W.hasOwnProperty(l)){var c=l;h={type:"atom",mode:this.mode,family:c,loc:m,text:e}}else h={type:l,mode:this.mode,loc:m,text:e};i=h}else{if(!(e.charCodeAt(0)>=128))return null;this.settings.strict&&(M(e.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+e[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+e[0]+'" ('+e.charCodeAt(0)+")",t)),i={type:"textord",mode:"text",loc:a.range(t),text:e}}if(this.consume(),s)for(var u=0;u=Ot?V:""+Array(Ot+1-jt.length).join(It)+V},mt={s:wt,z:function(V){var Ot=-V.utcOffset(),It=Math.abs(Ot),jt=Math.floor(It/60),xt=It%60;return(Ot<=0?"+":"-")+wt(jt,2,"0")+":"+wt(xt,2,"0")},m:function V(Ot,It){if(Ot.date()1)return V(Ct[0])}else{var kt=Ot.name;rt[kt]=Ot,xt=kt}return!jt&&xt&&(ct=xt),xt||!jt&&ct},Q=function(V,Ot){if(it(V))return V.clone();var It=typeof Ot=="object"?Ot:{};return It.date=V,It.args=arguments,new K(It)},dt=mt;dt.l=gt,dt.i=it,dt.w=function(V,Ot){return Q(V,{locale:Ot.$L,utc:Ot.$u,x:Ot.$x,$offset:Ot.$offset})};var K=function(){function V(It){this.$L=gt(It.locale,null,!0),this.parse(It)}var Ot=V.prototype;return Ot.parse=function(It){this.$d=function(jt){var xt=jt.date,Ft=jt.utc;if(xt===null)return new Date(NaN);if(dt.u(xt))return new Date;if(xt instanceof Date)return new Date(xt);if(typeof xt=="string"&&!/Z$/i.test(xt)){var Ct=xt.match(nt);if(Ct){var kt=Ct[2]-1||0,Gt=(Ct[7]||"0").substring(0,3);return Ft?new Date(Date.UTC(Ct[1],kt,Ct[3]||1,Ct[4]||0,Ct[5]||0,Ct[6]||0,Gt)):new Date(Ct[1],kt,Ct[3]||1,Ct[4]||0,Ct[5]||0,Ct[6]||0,Gt)}}return new Date(xt)}(It),this.$x=It.x||{},this.init()},Ot.init=function(){var It=this.$d;this.$y=It.getFullYear(),this.$M=It.getMonth(),this.$D=It.getDate(),this.$W=It.getDay(),this.$H=It.getHours(),this.$m=It.getMinutes(),this.$s=It.getSeconds(),this.$ms=It.getMilliseconds()},Ot.$utils=function(){return dt},Ot.isValid=function(){return this.$d.toString()!==Y},Ot.isSame=function(It,jt){var xt=Q(It);return this.startOf(jt)<=xt&&xt<=this.endOf(jt)},Ot.isAfter=function(It,jt){return Q(It){},debug:(...i)=>{},info:(...i)=>{},warn:(...i)=>{},error:(...i)=>{},fatal:(...i)=>{}},d0t=function(i="fatal"){let a=yx.fatal;typeof i=="string"?(i=i.toLowerCase(),i in yx&&(a=yx[i])):typeof i=="number"&&(a=i),Kt.trace=()=>{},Kt.debug=()=>{},Kt.info=()=>{},Kt.warn=()=>{},Kt.error=()=>{},Kt.fatal=()=>{},a<=yx.fatal&&(Kt.fatal=console.error?console.error.bind(console,Gw("FATAL"),"color: orange"):console.log.bind(console,"\x1B[35m",Gw("FATAL"))),a<=yx.error&&(Kt.error=console.error?console.error.bind(console,Gw("ERROR"),"color: orange"):console.log.bind(console,"\x1B[31m",Gw("ERROR"))),a<=yx.warn&&(Kt.warn=console.warn?console.warn.bind(console,Gw("WARN"),"color: orange"):console.log.bind(console,"\x1B[33m",Gw("WARN"))),a<=yx.info&&(Kt.info=console.info?console.info.bind(console,Gw("INFO"),"color: lightblue"):console.log.bind(console,"\x1B[34m",Gw("INFO"))),a<=yx.debug&&(Kt.debug=console.debug?console.debug.bind(console,Gw("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gw("DEBUG"))),a<=yx.trace&&(Kt.trace=console.debug?console.debug.bind(console,Gw("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1B[32m",Gw("TRACE")))},Gw=i=>`%c${tg().format("ss.SSS")} : ${i} : `;var g0t={};Object.defineProperty(g0t,"__esModule",{value:!0});var h8=g0t.sanitizeUrl=void 0,p9e=/^([^\w]*)(javascript|data|vbscript)/im,b9e=/&#(\w+)(^\w|;)?/g,w9e=/&(newline|tab);/gi,m9e=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,v9e=/^.+(:|:)/gim,y9e=[".","/"];function x9e(i){return y9e.indexOf(i[0])>-1}function k9e(i){return i.replace(b9e,function(a,f){return String.fromCharCode(f)})}function E9e(i){var a=k9e(i||"").replace(w9e,"").replace(m9e,"").trim();if(!a)return"about:blank";if(x9e(a))return a;var f=a.match(v9e);if(!f)return a;var g=f[0];return p9e.test(g)?"about:blank":a}h8=g0t.sanitizeUrl=E9e;function nW(i,a){return i==null||a==null?NaN:ia?1:i>=a?0:NaN}function T9e(i,a){return i==null||a==null?NaN:ai?1:a>=i?0:NaN}function p0t(i){let a,f,g;i.length!==2?(a=nW,f=(E,S)=>nW(i(E),S),g=(E,S)=>i(E)-S):(a=i===nW||i===T9e?i:C9e,f=i,g=i);function w(E,S,_=0,M=E.length){if(_>>1;f(E[F],S)<0?_=F+1:M=F}while(_>>1;f(E[F],S)<=0?_=F+1:M=F}while(__&&g(E[F-1],S)>-g(E[F],S)?F-1:F}return{left:w,center:b,right:v}}function C9e(){return 0}function S9e(i){return i===null?NaN:+i}const _9e=p0t(nW).right;p0t(S9e).center;const A9e=_9e;class xOt extends Map{constructor(a,f=M9e){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:f}}),a!=null)for(const[g,w]of a)this.set(g,w)}get(a){return super.get(kOt(this,a))}has(a){return super.has(kOt(this,a))}set(a,f){return super.set(L9e(this,a),f)}delete(a){return super.delete(D9e(this,a))}}function kOt({_intern:i,_key:a},f){const g=a(f);return i.has(g)?i.get(g):f}function L9e({_intern:i,_key:a},f){const g=a(f);return i.has(g)?i.get(g):(i.set(g,f),f)}function D9e({_intern:i,_key:a},f){const g=a(f);return i.has(g)&&(f=i.get(g),i.delete(g)),f}function M9e(i){return i!==null&&typeof i=="object"?i.valueOf():i}const I9e=Math.sqrt(50),O9e=Math.sqrt(10),N9e=Math.sqrt(2);function rW(i,a,f){const g=(a-i)/Math.max(0,f),w=Math.floor(Math.log10(g)),v=g/Math.pow(10,w),b=v>=I9e?10:v>=O9e?5:v>=N9e?2:1;let E,S,_;return w<0?(_=Math.pow(10,-w)/b,E=Math.round(i*_),S=Math.round(a*_),E/_a&&--S,_=-_):(_=Math.pow(10,w)*b,E=Math.round(i/_),S=Math.round(a/_),E*_a&&--S),S0))return[];if(i===a)return[i];const g=a=w))return[];const E=v-w+1,S=new Array(E);if(g)if(b<0)for(let _=0;_=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f=w)&&(f=w)}return f}function B9e(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f>g||f===void 0&&g>=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function R9e(i,a,f){i=+i,a=+a,f=(w=arguments.length)<2?(a=i,i=0,1):w<3?1:+f;for(var g=-1,w=Math.max(0,Math.ceil((a-i)/f))|0,v=new Array(w);++g+i(a)}function H9e(i,a){return a=Math.max(0,i.bandwidth()-a*2)/2,i.round()&&(a=Math.round(a)),f=>+i(f)+a}function V9e(){return!this.__axis}function TOt(i,a){var f=[],g=null,w=null,v=6,b=6,E=3,S=typeof window<"u"&&window.devicePixelRatio>1?0:.5,_=i===iW||i===sW?-1:1,M=i===sW||i===m0t?"x":"y",F=i===iW||i===v0t?$9e:z9e;function R(B){var z=g??(a.ticks?a.ticks.apply(a,f):a.domain()),Y=w??(a.tickFormat?a.tickFormat.apply(a,f):j9e),nt=Math.max(v,0)+E,ot=a.range(),ft=+ot[0]+S,wt=+ot[ot.length-1]+S,mt=(a.bandwidth?H9e:q9e)(a.copy(),S),ct=B.selection?B.selection():B,rt=ct.selectAll(".domain").data([null]),it=ct.selectAll(".tick").data(z,a).order(),gt=it.exit(),Q=it.enter().append("g").attr("class","tick"),dt=it.select("line"),K=it.select("text");rt=rt.merge(rt.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),it=it.merge(Q),dt=dt.merge(Q.append("line").attr("stroke","currentColor").attr(M+"2",_*v)),K=K.merge(Q.append("text").attr("fill","currentColor").attr(M,_*nt).attr("dy",i===iW?"0em":i===v0t?"0.71em":"0.32em")),B!==ct&&(rt=rt.transition(B),it=it.transition(B),dt=dt.transition(B),K=K.transition(B),gt=gt.transition(B).attr("opacity",EOt).attr("transform",function(yt){return isFinite(yt=mt(yt))?F(yt+S):this.getAttribute("transform")}),Q.attr("opacity",EOt).attr("transform",function(yt){var V=this.parentNode.__axis;return F((V&&isFinite(V=V(yt))?V:mt(yt))+S)})),gt.remove(),rt.attr("d",i===sW||i===m0t?b?"M"+_*b+","+ft+"H"+S+"V"+wt+"H"+_*b:"M"+S+","+ft+"V"+wt:b?"M"+ft+","+_*b+"V"+S+"H"+wt+"V"+_*b:"M"+ft+","+S+"H"+wt),it.attr("opacity",1).attr("transform",function(yt){return F(mt(yt)+S)}),dt.attr(M+"2",_*v),K.attr(M,_*nt).text(Y),ct.filter(V9e).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",i===m0t?"start":i===sW?"end":"middle"),ct.each(function(){this.__axis=mt})}return R.scale=function(B){return arguments.length?(a=B,R):a},R.ticks=function(){return f=Array.from(arguments),R},R.tickArguments=function(B){return arguments.length?(f=B==null?[]:Array.from(B),R):f.slice()},R.tickValues=function(B){return arguments.length?(g=B==null?null:Array.from(B),R):g&&g.slice()},R.tickFormat=function(B){return arguments.length?(w=B,R):w},R.tickSize=function(B){return arguments.length?(v=b=+B,R):v},R.tickSizeInner=function(B){return arguments.length?(v=+B,R):v},R.tickSizeOuter=function(B){return arguments.length?(b=+B,R):b},R.tickPadding=function(B){return arguments.length?(E=+B,R):E},R.offset=function(B){return arguments.length?(S=+B,R):S},R}function U9e(i){return TOt(iW,i)}function G9e(i){return TOt(v0t,i)}var K9e={value:()=>{}};function COt(){for(var i=0,a=arguments.length,f={},g;i=0&&(g=f.slice(w+1),f=f.slice(0,w)),f&&!a.hasOwnProperty(f))throw new Error("unknown type: "+f);return{type:f,name:g}})}aW.prototype=COt.prototype={constructor:aW,on:function(i,a){var f=this._,g=W9e(i+"",f),w,v=-1,b=g.length;if(arguments.length<2){for(;++v0)for(var f=new Array(w),g=0,w,v;g=0&&(a=i.slice(0,f))!=="xmlns"&&(i=i.slice(f+1)),_Ot.hasOwnProperty(a)?{space:_Ot[a],local:i}:i}function X9e(i){return function(){var a=this.ownerDocument,f=this.namespaceURI;return f===y0t&&a.documentElement.namespaceURI===y0t?a.createElement(i):a.createElementNS(f,i)}}function Q9e(i){return function(){return this.ownerDocument.createElementNS(i.space,i.local)}}function AOt(i){var a=oW(i);return(a.local?Q9e:X9e)(a)}function J9e(){}function x0t(i){return i==null?J9e:function(){return this.querySelector(i)}}function Z9e(i){typeof i!="function"&&(i=x0t(i));for(var a=this._groups,f=a.length,g=new Array(f),w=0;w=wt&&(wt=ft+1);!(ct=nt[wt])&&++wt=0;)(b=g[w])&&(v&&b.compareDocumentPosition(v)^4&&v.parentNode.insertBefore(b,v),v=b);return this}function ECe(i){i||(i=TCe);function a(F,R){return F&&R?i(F.__data__,R.__data__):!F-!R}for(var f=this._groups,g=f.length,w=new Array(g),v=0;va?1:i>=a?0:NaN}function CCe(){var i=arguments[0];return arguments[0]=this,i.apply(null,arguments),this}function SCe(){return Array.from(this)}function _Ce(){for(var i=this._groups,a=0,f=i.length;a1?this.each((a==null?RCe:typeof a=="function"?$Ce:jCe)(i,a,f??"")):RL(this.node(),i)}function RL(i,a){return i.style.getPropertyValue(a)||NOt(i).getComputedStyle(i,null).getPropertyValue(a)}function qCe(i){return function(){delete this[i]}}function HCe(i,a){return function(){this[i]=a}}function VCe(i,a){return function(){var f=a.apply(this,arguments);f==null?delete this[i]:this[i]=f}}function UCe(i,a){return arguments.length>1?this.each((a==null?qCe:typeof a=="function"?VCe:HCe)(i,a)):this.node()[i]}function POt(i){return i.trim().split(/^|\s+/)}function k0t(i){return i.classList||new FOt(i)}function FOt(i){this._node=i,this._names=POt(i.getAttribute("class")||"")}FOt.prototype={add:function(i){var a=this._names.indexOf(i);a<0&&(this._names.push(i),this._node.setAttribute("class",this._names.join(" ")))},remove:function(i){var a=this._names.indexOf(i);a>=0&&(this._names.splice(a,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(i){return this._names.indexOf(i)>=0}};function BOt(i,a){for(var f=k0t(i),g=-1,w=a.length;++g=0&&(f=a.slice(g+1),a=a.slice(0,g)),{type:a,name:f}})}function vSe(i){return function(){var a=this.__on;if(a){for(var f=0,g=-1,w=a.length,v;f>8&15|a>>4&240,a>>4&15|a&240,(a&15)<<4|a&15,1):f===8?hW(a>>24&255,a>>16&255,a>>8&255,(a&255)/255):f===4?hW(a>>12&15|a>>8&240,a>>8&15|a>>4&240,a>>4&15|a&240,((a&15)<<4|a&15)/255):null):(a=ASe.exec(i))?new eg(a[1],a[2],a[3],1):(a=LSe.exec(i))?new eg(a[1]*255/100,a[2]*255/100,a[3]*255/100,1):(a=DSe.exec(i))?hW(a[1],a[2],a[3],a[4]):(a=MSe.exec(i))?hW(a[1]*255/100,a[2]*255/100,a[3]*255/100,a[4]):(a=ISe.exec(i))?WOt(a[1],a[2]/100,a[3]/100,1):(a=OSe.exec(i))?WOt(a[1],a[2]/100,a[3]/100,a[4]):zOt.hasOwnProperty(i)?VOt(zOt[i]):i==="transparent"?new eg(NaN,NaN,NaN,0):null}function VOt(i){return new eg(i>>16&255,i>>8&255,i&255,1)}function hW(i,a,f,g){return g<=0&&(i=a=f=NaN),new eg(i,a,f,g)}function UOt(i){return i instanceof n9||(i=r9(i)),i?(i=i.rgb(),new eg(i.r,i.g,i.b,i.opacity)):new eg}function T0t(i,a,f,g){return arguments.length===1?UOt(i):new eg(i,a,f,g??1)}function eg(i,a,f,g){this.r=+i,this.g=+a,this.b=+f,this.opacity=+g}ZP(eg,T0t,uW(n9,{brighter(i){return i=i==null?lW:Math.pow(lW,i),new eg(this.r*i,this.g*i,this.b*i,this.opacity)},darker(i){return i=i==null?tF:Math.pow(tF,i),new eg(this.r*i,this.g*i,this.b*i,this.opacity)},rgb(){return this},clamp(){return new eg(i9(this.r),i9(this.g),i9(this.b),fW(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:GOt,formatHex:GOt,formatHex8:FSe,formatRgb:KOt,toString:KOt}));function GOt(){return`#${s9(this.r)}${s9(this.g)}${s9(this.b)}`}function FSe(){return`#${s9(this.r)}${s9(this.g)}${s9(this.b)}${s9((isNaN(this.opacity)?1:this.opacity)*255)}`}function KOt(){const i=fW(this.opacity);return`${i===1?"rgb(":"rgba("}${i9(this.r)}, ${i9(this.g)}, ${i9(this.b)}${i===1?")":`, ${i})`}`}function fW(i){return isNaN(i)?1:Math.max(0,Math.min(1,i))}function i9(i){return Math.max(0,Math.min(255,Math.round(i)||0))}function s9(i){return i=i9(i),(i<16?"0":"")+i.toString(16)}function WOt(i,a,f,g){return g<=0?i=a=f=NaN:f<=0||f>=1?i=a=NaN:a<=0&&(i=NaN),new jv(i,a,f,g)}function YOt(i){if(i instanceof jv)return new jv(i.h,i.s,i.l,i.opacity);if(i instanceof n9||(i=r9(i)),!i)return new jv;if(i instanceof jv)return i;i=i.rgb();var a=i.r/255,f=i.g/255,g=i.b/255,w=Math.min(a,f,g),v=Math.max(a,f,g),b=NaN,E=v-w,S=(v+w)/2;return E?(a===v?b=(f-g)/E+(f0&&S<1?0:b,new jv(b,E,S,i.opacity)}function BSe(i,a,f,g){return arguments.length===1?YOt(i):new jv(i,a,f,g??1)}function jv(i,a,f,g){this.h=+i,this.s=+a,this.l=+f,this.opacity=+g}ZP(jv,BSe,uW(n9,{brighter(i){return i=i==null?lW:Math.pow(lW,i),new jv(this.h,this.s,this.l*i,this.opacity)},darker(i){return i=i==null?tF:Math.pow(tF,i),new jv(this.h,this.s,this.l*i,this.opacity)},rgb(){var i=this.h%360+(this.h<0)*360,a=isNaN(i)||isNaN(this.s)?0:this.s,f=this.l,g=f+(f<.5?f:1-f)*a,w=2*f-g;return new eg(C0t(i>=240?i-240:i+120,w,g),C0t(i,w,g),C0t(i<120?i+240:i-120,w,g),this.opacity)},clamp(){return new jv(XOt(this.h),dW(this.s),dW(this.l),fW(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const i=fW(this.opacity);return`${i===1?"hsl(":"hsla("}${XOt(this.h)}, ${dW(this.s)*100}%, ${dW(this.l)*100}%${i===1?")":`, ${i})`}`}}));function XOt(i){return i=(i||0)%360,i<0?i+360:i}function dW(i){return Math.max(0,Math.min(1,i||0))}function C0t(i,a,f){return(i<60?a+(f-a)*i/60:i<180?f:i<240?a+(f-a)*(240-i)/60:a)*255}const RSe=Math.PI/180,jSe=180/Math.PI,gW=18,QOt=.96422,JOt=1,ZOt=.82521,tNt=4/29,$L=6/29,eNt=3*$L*$L,$Se=$L*$L*$L;function nNt(i){if(i instanceof J3)return new J3(i.l,i.a,i.b,i.opacity);if(i instanceof xx)return rNt(i);i instanceof eg||(i=UOt(i));var a=L0t(i.r),f=L0t(i.g),g=L0t(i.b),w=S0t((.2225045*a+.7168786*f+.0606169*g)/JOt),v,b;return a===f&&f===g?v=b=w:(v=S0t((.4360747*a+.3850649*f+.1430804*g)/QOt),b=S0t((.0139322*a+.0971045*f+.7141733*g)/ZOt)),new J3(116*w-16,500*(v-w),200*(w-b),i.opacity)}function zSe(i,a,f,g){return arguments.length===1?nNt(i):new J3(i,a,f,g??1)}function J3(i,a,f,g){this.l=+i,this.a=+a,this.b=+f,this.opacity=+g}ZP(J3,zSe,uW(n9,{brighter(i){return new J3(this.l+gW*(i??1),this.a,this.b,this.opacity)},darker(i){return new J3(this.l-gW*(i??1),this.a,this.b,this.opacity)},rgb(){var i=(this.l+16)/116,a=isNaN(this.a)?i:i+this.a/500,f=isNaN(this.b)?i:i-this.b/200;return a=QOt*_0t(a),i=JOt*_0t(i),f=ZOt*_0t(f),new eg(A0t(3.1338561*a-1.6168667*i-.4906146*f),A0t(-.9787684*a+1.9161415*i+.033454*f),A0t(.0719453*a-.2289914*i+1.4052427*f),this.opacity)}}));function S0t(i){return i>$Se?Math.pow(i,1/3):i/eNt+tNt}function _0t(i){return i>$L?i*i*i:eNt*(i-tNt)}function A0t(i){return 255*(i<=.0031308?12.92*i:1.055*Math.pow(i,1/2.4)-.055)}function L0t(i){return(i/=255)<=.04045?i/12.92:Math.pow((i+.055)/1.055,2.4)}function qSe(i){if(i instanceof xx)return new xx(i.h,i.c,i.l,i.opacity);if(i instanceof J3||(i=nNt(i)),i.a===0&&i.b===0)return new xx(NaN,0()=>i;function iNt(i,a){return function(f){return i+f*a}}function HSe(i,a,f){return i=Math.pow(i,f),a=Math.pow(a,f)-i,f=1/f,function(g){return Math.pow(i+g*a,f)}}function VSe(i,a){var f=a-i;return f?iNt(i,f>180||f<-180?f-360*Math.round(f/360):f):pW(isNaN(i)?a:i)}function USe(i){return(i=+i)==1?nF:function(a,f){return f-a?HSe(a,f,i):pW(isNaN(a)?f:a)}}function nF(i,a){var f=a-i;return f?iNt(i,f):pW(isNaN(i)?a:i)}const bW=function i(a){var f=USe(a);function g(w,v){var b=f((w=T0t(w)).r,(v=T0t(v)).r),E=f(w.g,v.g),S=f(w.b,v.b),_=nF(w.opacity,v.opacity);return function(M){return w.r=b(M),w.g=E(M),w.b=S(M),w.opacity=_(M),w+""}}return g.gamma=i,g}(1);function GSe(i,a){a||(a=[]);var f=i?Math.min(a.length,i.length):0,g=a.slice(),w;return function(v){for(w=0;wf&&(v=a.slice(f,v),E[b]?E[b]+=v:E[++b]=v),(g=g[0])===(w=w[0])?E[b]?E[b]+=w:E[++b]=w:(E[++b]=null,S.push({i:b,x:$v(g,w)})),f=I0t.lastIndex;return f180?M+=360:M-_>180&&(_+=360),R.push({i:F.push(w(F)+"rotate(",null,g)-2,x:$v(_,M)})):M&&F.push(w(F)+"rotate("+M+g)}function E(_,M,F,R){_!==M?R.push({i:F.push(w(F)+"skewX(",null,g)-2,x:$v(_,M)}):M&&F.push(w(F)+"skewX("+M+g)}function S(_,M,F,R,B,z){if(_!==F||M!==R){var Y=B.push(w(B)+"scale(",null,",",null,")");z.push({i:Y-4,x:$v(_,F)},{i:Y-2,x:$v(M,R)})}else(F!==1||R!==1)&&B.push(w(B)+"scale("+F+","+R+")")}return function(_,M){var F=[],R=[];return _=i(_),M=i(M),v(_.translateX,_.translateY,M.translateX,M.translateY,F,R),b(_.rotate,M.rotate,F,R),E(_.skewX,M.skewX,F,R),S(_.scaleX,_.scaleY,M.scaleX,M.scaleY,F,R),_=M=null,function(B){for(var z=-1,Y=R.length,nt;++z=0&&i._call.call(void 0,a),i=i._next;--zL}function fNt(){a9=(vW=aF.now())+yW,zL=rF=0;try{o_e()}finally{zL=0,u_e(),a9=0}}function c_e(){var i=aF.now(),a=i-vW;a>uNt&&(yW-=a,vW=i)}function u_e(){for(var i,a=mW,f,g=1/0;a;)a._call?(g>a._time&&(g=a._time),i=a,a=a._next):(f=a._next,a._next=null,a=i?i._next=f:mW=f);sF=i,F0t(g)}function F0t(i){if(!zL){rF&&(rF=clearTimeout(rF));var a=i-a9;a>24?(i<1/0&&(rF=setTimeout(fNt,i-aF.now()-yW)),iF&&(iF=clearInterval(iF))):(iF||(vW=aF.now(),iF=setInterval(c_e,uNt)),zL=1,lNt(fNt))}}function dNt(i,a,f){var g=new xW;return a=a==null?0:+a,g.restart(w=>{g.stop(),i(w+a)},a,f),g}var l_e=COt("start","end","cancel","interrupt"),h_e=[],gNt=0,pNt=1,B0t=2,kW=3,bNt=4,R0t=5,EW=6;function TW(i,a,f,g,w,v){var b=i.__transition;if(!b)i.__transition={};else if(f in b)return;f_e(i,f,{name:a,index:g,group:w,on:l_e,tween:h_e,time:v.time,delay:v.delay,duration:v.duration,ease:v.ease,timer:null,state:gNt})}function j0t(i,a){var f=zv(i,a);if(f.state>gNt)throw new Error("too late; already scheduled");return f}function Z3(i,a){var f=zv(i,a);if(f.state>kW)throw new Error("too late; already running");return f}function zv(i,a){var f=i.__transition;if(!f||!(f=f[a]))throw new Error("transition not found");return f}function f_e(i,a,f){var g=i.__transition,w;g[a]=f,f.timer=hNt(v,0,f.time);function v(_){f.state=pNt,f.timer.restart(b,f.delay,f.time),f.delay<=_&&b(_-f.delay)}function b(_){var M,F,R,B;if(f.state!==pNt)return S();for(M in g)if(B=g[M],B.name===f.name){if(B.state===kW)return dNt(b);B.state===bNt?(B.state=EW,B.timer.stop(),B.on.call("interrupt",i,i.__data__,B.index,B.group),delete g[M]):+MB0t&&g.state=0&&(a=a.slice(0,f)),!a||a==="start"})}function H_e(i,a,f){var g,w,v=q_e(a)?j0t:Z3;return function(){var b=v(this,i),E=b.on;E!==g&&(w=(g=E).copy()).on(a,f),b.on=w}}function V_e(i,a){var f=this._id;return arguments.length<2?zv(this.node(),f).on.on(i):this.each(H_e(f,i,a))}function U_e(i){return function(){var a=this.parentNode;for(var f in this.__transition)if(+f!==i)return;a&&a.removeChild(this)}}function G_e(){return this.on("end.remove",U_e(this._id))}function K_e(i){var a=this._name,f=this._id;typeof i!="function"&&(i=x0t(i));for(var g=this._groups,w=g.length,v=new Array(w),b=0;b=0))throw new Error(`invalid digits: ${i}`);if(a>15)return yNt;const f=10**a;return function(g){this._+=g[0];for(let w=1,v=g.length;wo9)if(!(Math.abs(F*S-_*M)>o9)||!v)this._append`L${this._x1=a},${this._y1=f}`;else{let B=g-b,z=w-E,Y=S*S+_*_,nt=B*B+z*z,ot=Math.sqrt(Y),ft=Math.sqrt(R),wt=v*Math.tan((z0t-Math.acos((Y+R-nt)/(2*ot*ft)))/2),mt=wt/ft,ct=wt/ot;Math.abs(mt-1)>o9&&this._append`L${a+mt*M},${f+mt*F}`,this._append`A${v},${v},0,0,${+(F*B>M*z)},${this._x1=a+ct*S},${this._y1=f+ct*_}`}}arc(a,f,g,w,v,b){if(a=+a,f=+f,g=+g,b=!!b,g<0)throw new Error(`negative radius: ${g}`);let E=g*Math.cos(w),S=g*Math.sin(w),_=a+E,M=f+S,F=1^b,R=b?w-v:v-w;this._x1===null?this._append`M${_},${M}`:(Math.abs(this._x1-_)>o9||Math.abs(this._y1-M)>o9)&&this._append`L${_},${M}`,g&&(R<0&&(R=R%q0t+q0t),R>mAe?this._append`A${g},${g},0,1,${F},${a-E},${f-S}A${g},${g},0,1,${F},${this._x1=_},${this._y1=M}`:R>o9&&this._append`A${g},${g},0,${+(R>=z0t)},${F},${this._x1=a+g*Math.cos(v)},${this._y1=f+g*Math.sin(v)}`)}rect(a,f,g,w){this._append`M${this._x0=this._x1=+a},${this._y0=this._y1=+f}h${g=+g}v${+w}h${-g}Z`}toString(){return this._}};function xAe(i){if(!i.ok)throw new Error(i.status+" "+i.statusText);return i.text()}function kAe(i,a){return fetch(i,a).then(xAe)}function EAe(i){return(a,f)=>kAe(a,f).then(g=>new DOMParser().parseFromString(g,i))}var TAe=EAe("image/svg+xml");function CAe(i){return Math.abs(i=Math.round(i))>=1e21?i.toLocaleString("en").replace(/,/g,""):i.toString(10)}function CW(i,a){if((f=(i=a?i.toExponential(a-1):i.toExponential()).indexOf("e"))<0)return null;var f,g=i.slice(0,f);return[g.length>1?g[0]+g.slice(2):g,+i.slice(f+1)]}function qL(i){return i=CW(Math.abs(i)),i?i[1]:NaN}function SAe(i,a){return function(f,g){for(var w=f.length,v=[],b=0,E=i[0],S=0;w>0&&E>0&&(S+E+1>g&&(E=Math.max(1,g-S)),v.push(f.substring(w-=E,w+E)),!((S+=E+1)>g));)E=i[b=(b+1)%i.length];return v.reverse().join(a)}}function _Ae(i){return function(a){return a.replace(/[0-9]/g,function(f){return i[+f]})}}var AAe=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function SW(i){if(!(a=AAe.exec(i)))throw new Error("invalid format: "+i);var a;return new H0t({fill:a[1],align:a[2],sign:a[3],symbol:a[4],zero:a[5],width:a[6],comma:a[7],precision:a[8]&&a[8].slice(1),trim:a[9],type:a[10]})}SW.prototype=H0t.prototype;function H0t(i){this.fill=i.fill===void 0?" ":i.fill+"",this.align=i.align===void 0?">":i.align+"",this.sign=i.sign===void 0?"-":i.sign+"",this.symbol=i.symbol===void 0?"":i.symbol+"",this.zero=!!i.zero,this.width=i.width===void 0?void 0:+i.width,this.comma=!!i.comma,this.precision=i.precision===void 0?void 0:+i.precision,this.trim=!!i.trim,this.type=i.type===void 0?"":i.type+""}H0t.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function LAe(i){t:for(var a=i.length,f=1,g=-1,w;f0&&(g=0);break}return g>0?i.slice(0,g)+i.slice(w+1):i}var xNt;function DAe(i,a){var f=CW(i,a);if(!f)return i+"";var g=f[0],w=f[1],v=w-(xNt=Math.max(-8,Math.min(8,Math.floor(w/3)))*3)+1,b=g.length;return v===b?g:v>b?g+new Array(v-b+1).join("0"):v>0?g.slice(0,v)+"."+g.slice(v):"0."+new Array(1-v).join("0")+CW(i,Math.max(0,a+v-1))[0]}function kNt(i,a){var f=CW(i,a);if(!f)return i+"";var g=f[0],w=f[1];return w<0?"0."+new Array(-w).join("0")+g:g.length>w+1?g.slice(0,w+1)+"."+g.slice(w+1):g+new Array(w-g.length+2).join("0")}const ENt={"%":(i,a)=>(i*100).toFixed(a),b:i=>Math.round(i).toString(2),c:i=>i+"",d:CAe,e:(i,a)=>i.toExponential(a),f:(i,a)=>i.toFixed(a),g:(i,a)=>i.toPrecision(a),o:i=>Math.round(i).toString(8),p:(i,a)=>kNt(i*100,a),r:kNt,s:DAe,X:i=>Math.round(i).toString(16).toUpperCase(),x:i=>Math.round(i).toString(16)};function TNt(i){return i}var CNt=Array.prototype.map,SNt=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function MAe(i){var a=i.grouping===void 0||i.thousands===void 0?TNt:SAe(CNt.call(i.grouping,Number),i.thousands+""),f=i.currency===void 0?"":i.currency[0]+"",g=i.currency===void 0?"":i.currency[1]+"",w=i.decimal===void 0?".":i.decimal+"",v=i.numerals===void 0?TNt:_Ae(CNt.call(i.numerals,String)),b=i.percent===void 0?"%":i.percent+"",E=i.minus===void 0?"−":i.minus+"",S=i.nan===void 0?"NaN":i.nan+"";function _(F){F=SW(F);var R=F.fill,B=F.align,z=F.sign,Y=F.symbol,nt=F.zero,ot=F.width,ft=F.comma,wt=F.precision,mt=F.trim,ct=F.type;ct==="n"?(ft=!0,ct="g"):ENt[ct]||(wt===void 0&&(wt=12),mt=!0,ct="g"),(nt||R==="0"&&B==="=")&&(nt=!0,R="0",B="=");var rt=Y==="$"?f:Y==="#"&&/[boxX]/.test(ct)?"0"+ct.toLowerCase():"",it=Y==="$"?g:/[%p]/.test(ct)?b:"",gt=ENt[ct],Q=/[defgprs%]/.test(ct);wt=wt===void 0?6:/[gprs]/.test(ct)?Math.max(1,Math.min(21,wt)):Math.max(0,Math.min(20,wt));function dt(K){var yt=rt,V=it,Ot,It,jt;if(ct==="c")V=gt(K)+V,K="";else{K=+K;var xt=K<0||1/K<0;if(K=isNaN(K)?S:gt(Math.abs(K),wt),mt&&(K=LAe(K)),xt&&+K==0&&z!=="+"&&(xt=!1),yt=(xt?z==="("?z:E:z==="-"||z==="("?"":z)+yt,V=(ct==="s"?SNt[8+xNt/3]:"")+V+(xt&&z==="("?")":""),Q){for(Ot=-1,It=K.length;++Otjt||jt>57){V=(jt===46?w+K.slice(Ot+1):K.slice(Ot))+V,K=K.slice(0,Ot);break}}}ft&&!nt&&(K=a(K,1/0));var Ft=yt.length+K.length+V.length,Ct=Ft>1)+yt+K+V+Ct.slice(Ft);break;default:K=Ct+yt+K+V;break}return v(K)}return dt.toString=function(){return F+""},dt}function M(F,R){var B=_((F=SW(F),F.type="f",F)),z=Math.max(-8,Math.min(8,Math.floor(qL(R)/3)))*3,Y=Math.pow(10,-z),nt=SNt[8+z/3];return function(ot){return B(Y*ot)+nt}}return{format:_,formatPrefix:M}}var _W,_Nt,ANt;IAe({thousands:",",grouping:[3],currency:["$",""]});function IAe(i){return _W=MAe(i),_Nt=_W.format,ANt=_W.formatPrefix,_W}function OAe(i){return Math.max(0,-qL(Math.abs(i)))}function NAe(i,a){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(qL(a)/3)))*3-qL(Math.abs(i)))}function PAe(i,a){return i=Math.abs(i),a=Math.abs(a)-i,Math.max(0,qL(a)-qL(i))+1}function AW(i,a){switch(arguments.length){case 0:break;case 1:this.range(i);break;default:this.range(a).domain(i);break}return this}const LNt=Symbol("implicit");function oF(){var i=new xOt,a=[],f=[],g=LNt;function w(v){let b=i.get(v);if(b===void 0){if(g!==LNt)return g;i.set(v,b=a.push(v)-1)}return f[b%f.length]}return w.domain=function(v){if(!arguments.length)return a.slice();a=[],i=new xOt;for(const b of v)i.has(b)||i.set(b,a.push(b)-1);return w},w.range=function(v){return arguments.length?(f=Array.from(v),w):f.slice()},w.unknown=function(v){return arguments.length?(g=v,w):g},w.copy=function(){return oF(a,f).unknown(g)},AW.apply(w,arguments),w}function V0t(){var i=oF().unknown(void 0),a=i.domain,f=i.range,g=0,w=1,v,b,E=!1,S=0,_=0,M=.5;delete i.unknown;function F(){var R=a().length,B=wa&&(f=i,i=a,a=f),function(g){return Math.max(i,Math.min(a,g))}}function jAe(i,a,f){var g=i[0],w=i[1],v=a[0],b=a[1];return w2?$Ae:jAe,S=_=null,F}function F(R){return R==null||isNaN(R=+R)?v:(S||(S=E(i.map(g),a,f)))(g(b(R)))}return F.invert=function(R){return b(w((_||(_=E(a,i.map(g),$v)))(R)))},F.domain=function(R){return arguments.length?(i=Array.from(R,BAe),M()):i.slice()},F.range=function(R){return arguments.length?(a=Array.from(R),M()):a.slice()},F.rangeRound=function(R){return a=Array.from(R),f=ZSe,M()},F.clamp=function(R){return arguments.length?(b=R?!0:HL,M()):b!==HL},F.interpolate=function(R){return arguments.length?(f=R,M()):f},F.unknown=function(R){return arguments.length?(v=R,F):v},function(R,B){return g=R,w=B,M()}}function INt(){return zAe()(HL,HL)}function qAe(i,a,f,g){var w=w0t(i,a,f),v;switch(g=SW(g??",f"),g.type){case"s":{var b=Math.max(Math.abs(i),Math.abs(a));return g.precision==null&&!isNaN(v=NAe(w,b))&&(g.precision=v),ANt(g,b)}case"":case"e":case"g":case"p":case"r":{g.precision==null&&!isNaN(v=PAe(w,Math.max(Math.abs(i),Math.abs(a))))&&(g.precision=v-(g.type==="e"));break}case"f":case"%":{g.precision==null&&!isNaN(v=OAe(w))&&(g.precision=v-(g.type==="%")*2);break}}return _Nt(g)}function HAe(i){var a=i.domain;return i.ticks=function(f){var g=a();return P9e(g[0],g[g.length-1],f??10)},i.tickFormat=function(f,g){var w=a();return qAe(w[0],w[w.length-1],f??10,g)},i.nice=function(f){f==null&&(f=10);var g=a(),w=0,v=g.length-1,b=g[w],E=g[v],S,_,M=10;for(E0;){if(_=b0t(b,E,f),_===S)return g[w]=b,g[v]=E,a(g);if(_>0)b=Math.floor(b/_)*_,E=Math.ceil(E/_)*_;else if(_<0)b=Math.ceil(b*_)/_,E=Math.floor(E*_)/_;else break;S=_}return i},i}function VL(){var i=INt();return i.copy=function(){return MNt(i,VL())},AW.apply(i,arguments),HAe(i)}function VAe(i,a){i=i.slice();var f=0,g=i.length-1,w=i[f],v=i[g],b;return v(i(v=new Date(+v)),v),w.ceil=v=>(i(v=new Date(v-1)),a(v,1),i(v),v),w.round=v=>{const b=w(v),E=w.ceil(v);return v-b(a(v=new Date(+v),b==null?1:Math.floor(b)),v),w.range=(v,b,E)=>{const S=[];if(v=w.ceil(v),E=E==null?1:Math.floor(E),!(v0))return S;let _;do S.push(_=new Date(+v)),a(v,E),i(v);while(_R1(b=>{if(b>=b)for(;i(b),!v(b);)b.setTime(b-1)},(b,E)=>{if(b>=b)if(E<0)for(;++E<=0;)for(;a(b,-1),!v(b););else for(;--E>=0;)for(;a(b,1),!v(b););}),f&&(w.count=(v,b)=>(G0t.setTime(+v),K0t.setTime(+b),i(G0t),i(K0t),Math.floor(f(G0t,K0t))),w.every=v=>(v=Math.floor(v),!isFinite(v)||!(v>0)?null:v>1?w.filter(g?b=>g(b)%v===0:b=>w.count(0,b)%v===0):w)),w}const UL=R1(()=>{},(i,a)=>{i.setTime(+i+a)},(i,a)=>a-i);UL.every=i=>(i=Math.floor(i),!isFinite(i)||!(i>0)?null:i>1?R1(a=>{a.setTime(Math.floor(a/i)*i)},(a,f)=>{a.setTime(+a+f*i)},(a,f)=>(f-a)/i):UL),UL.range;const Tx=1e3,Kw=Tx*60,Cx=Kw*60,Sx=Cx*24,W0t=Sx*7,ONt=Sx*30,Y0t=Sx*365,f8=R1(i=>{i.setTime(i-i.getMilliseconds())},(i,a)=>{i.setTime(+i+a*Tx)},(i,a)=>(a-i)/Tx,i=>i.getUTCSeconds());f8.range;const cF=R1(i=>{i.setTime(i-i.getMilliseconds()-i.getSeconds()*Tx)},(i,a)=>{i.setTime(+i+a*Kw)},(i,a)=>(a-i)/Kw,i=>i.getMinutes());cF.range,R1(i=>{i.setUTCSeconds(0,0)},(i,a)=>{i.setTime(+i+a*Kw)},(i,a)=>(a-i)/Kw,i=>i.getUTCMinutes()).range;const uF=R1(i=>{i.setTime(i-i.getMilliseconds()-i.getSeconds()*Tx-i.getMinutes()*Kw)},(i,a)=>{i.setTime(+i+a*Cx)},(i,a)=>(a-i)/Cx,i=>i.getHours());uF.range,R1(i=>{i.setUTCMinutes(0,0,0)},(i,a)=>{i.setTime(+i+a*Cx)},(i,a)=>(a-i)/Cx,i=>i.getUTCHours()).range;const c9=R1(i=>i.setHours(0,0,0,0),(i,a)=>i.setDate(i.getDate()+a),(i,a)=>(a-i-(a.getTimezoneOffset()-i.getTimezoneOffset())*Kw)/Sx,i=>i.getDate()-1);c9.range;const X0t=R1(i=>{i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCDate(i.getUTCDate()+a)},(i,a)=>(a-i)/Sx,i=>i.getUTCDate()-1);X0t.range,R1(i=>{i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCDate(i.getUTCDate()+a)},(i,a)=>(a-i)/Sx,i=>Math.floor(i/Sx)).range;function u9(i){return R1(a=>{a.setDate(a.getDate()-(a.getDay()+7-i)%7),a.setHours(0,0,0,0)},(a,f)=>{a.setDate(a.getDate()+f*7)},(a,f)=>(f-a-(f.getTimezoneOffset()-a.getTimezoneOffset())*Kw)/W0t)}const lF=u9(0),hF=u9(1),NNt=u9(2),PNt=u9(3),l9=u9(4),FNt=u9(5),BNt=u9(6);lF.range,hF.range,NNt.range,PNt.range,l9.range,FNt.range,BNt.range;function h9(i){return R1(a=>{a.setUTCDate(a.getUTCDate()-(a.getUTCDay()+7-i)%7),a.setUTCHours(0,0,0,0)},(a,f)=>{a.setUTCDate(a.getUTCDate()+f*7)},(a,f)=>(f-a)/W0t)}const RNt=h9(0),LW=h9(1),UAe=h9(2),GAe=h9(3),GL=h9(4),KAe=h9(5),WAe=h9(6);RNt.range,LW.range,UAe.range,GAe.range,GL.range,KAe.range,WAe.range;const fF=R1(i=>{i.setDate(1),i.setHours(0,0,0,0)},(i,a)=>{i.setMonth(i.getMonth()+a)},(i,a)=>a.getMonth()-i.getMonth()+(a.getFullYear()-i.getFullYear())*12,i=>i.getMonth());fF.range,R1(i=>{i.setUTCDate(1),i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCMonth(i.getUTCMonth()+a)},(i,a)=>a.getUTCMonth()-i.getUTCMonth()+(a.getUTCFullYear()-i.getUTCFullYear())*12,i=>i.getUTCMonth()).range;const _x=R1(i=>{i.setMonth(0,1),i.setHours(0,0,0,0)},(i,a)=>{i.setFullYear(i.getFullYear()+a)},(i,a)=>a.getFullYear()-i.getFullYear(),i=>i.getFullYear());_x.every=i=>!isFinite(i=Math.floor(i))||!(i>0)?null:R1(a=>{a.setFullYear(Math.floor(a.getFullYear()/i)*i),a.setMonth(0,1),a.setHours(0,0,0,0)},(a,f)=>{a.setFullYear(a.getFullYear()+f*i)}),_x.range;const f9=R1(i=>{i.setUTCMonth(0,1),i.setUTCHours(0,0,0,0)},(i,a)=>{i.setUTCFullYear(i.getUTCFullYear()+a)},(i,a)=>a.getUTCFullYear()-i.getUTCFullYear(),i=>i.getUTCFullYear());f9.every=i=>!isFinite(i=Math.floor(i))||!(i>0)?null:R1(a=>{a.setUTCFullYear(Math.floor(a.getUTCFullYear()/i)*i),a.setUTCMonth(0,1),a.setUTCHours(0,0,0,0)},(a,f)=>{a.setUTCFullYear(a.getUTCFullYear()+f*i)}),f9.range;function YAe(i,a,f,g,w,v){const b=[[f8,1,Tx],[f8,5,5*Tx],[f8,15,15*Tx],[f8,30,30*Tx],[v,1,Kw],[v,5,5*Kw],[v,15,15*Kw],[v,30,30*Kw],[w,1,Cx],[w,3,3*Cx],[w,6,6*Cx],[w,12,12*Cx],[g,1,Sx],[g,2,2*Sx],[f,1,W0t],[a,1,ONt],[a,3,3*ONt],[i,1,Y0t]];function E(_,M,F){const R=M<_;R&&([_,M]=[M,_]);const B=F&&typeof F.range=="function"?F:S(_,M,F),z=B?B.range(_,+M+1):[];return R?z.reverse():z}function S(_,M,F){const R=Math.abs(M-_)/F,B=p0t(([,,nt])=>nt).right(b,R);if(B===b.length)return i.every(w0t(_/Y0t,M/Y0t,F));if(B===0)return UL.every(Math.max(w0t(_,M,F),1));const[z,Y]=b[R/b[B-1][2]53)return null;"w"in _e||(_e.w=1),"Z"in _e?(Mn=J0t(dF(_e.y,0,1)),ce=Mn.getUTCDay(),Mn=ce>4||ce===0?LW.ceil(Mn):LW(Mn),Mn=X0t.offset(Mn,(_e.V-1)*7),_e.y=Mn.getUTCFullYear(),_e.m=Mn.getUTCMonth(),_e.d=Mn.getUTCDate()+(_e.w+6)%7):(Mn=Q0t(dF(_e.y,0,1)),ce=Mn.getDay(),Mn=ce>4||ce===0?hF.ceil(Mn):hF(Mn),Mn=c9.offset(Mn,(_e.V-1)*7),_e.y=Mn.getFullYear(),_e.m=Mn.getMonth(),_e.d=Mn.getDate()+(_e.w+6)%7)}else("W"in _e||"U"in _e)&&("w"in _e||(_e.w="u"in _e?_e.u%7:"W"in _e?1:0),ce="Z"in _e?J0t(dF(_e.y,0,1)).getUTCDay():Q0t(dF(_e.y,0,1)).getDay(),_e.m=0,_e.d="W"in _e?(_e.w+6)%7+_e.W*7-(ce+5)%7:_e.w+_e.U*7-(ce+6)%7);return"Z"in _e?(_e.H+=_e.Z/100|0,_e.M+=_e.Z%100,J0t(_e)):Q0t(_e)}}function gt(be,Ne,Xt,_e){for(var xe=0,Mn=Ne.length,ce=Xt.length,Br,we;xe=ce)return-1;if(Br=Ne.charCodeAt(xe++),Br===37){if(Br=Ne.charAt(xe++),we=ct[Br in jNt?Ne.charAt(xe++):Br],!we||(_e=we(be,Xt,_e))<0)return-1}else if(Br!=Xt.charCodeAt(_e++))return-1}return _e}function Q(be,Ne,Xt){var _e=_.exec(Ne.slice(Xt));return _e?(be.p=M.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function dt(be,Ne,Xt){var _e=B.exec(Ne.slice(Xt));return _e?(be.w=z.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function K(be,Ne,Xt){var _e=F.exec(Ne.slice(Xt));return _e?(be.w=R.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function yt(be,Ne,Xt){var _e=ot.exec(Ne.slice(Xt));return _e?(be.m=ft.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function V(be,Ne,Xt){var _e=Y.exec(Ne.slice(Xt));return _e?(be.m=nt.get(_e[0].toLowerCase()),Xt+_e[0].length):-1}function Ot(be,Ne,Xt){return gt(be,a,Ne,Xt)}function It(be,Ne,Xt){return gt(be,f,Ne,Xt)}function jt(be,Ne,Xt){return gt(be,g,Ne,Xt)}function xt(be){return b[be.getDay()]}function Ft(be){return v[be.getDay()]}function Ct(be){return S[be.getMonth()]}function kt(be){return E[be.getMonth()]}function Gt(be){return w[+(be.getHours()>=12)]}function Fe(be){return 1+~~(be.getMonth()/3)}function Mt(be){return b[be.getUTCDay()]}function pn(be){return v[be.getUTCDay()]}function Ae(be){return S[be.getUTCMonth()]}function ye(be){return E[be.getUTCMonth()]}function tn(be){return w[+(be.getUTCHours()>=12)]}function sn(be){return 1+~~(be.getUTCMonth()/3)}return{format:function(be){var Ne=rt(be+="",wt);return Ne.toString=function(){return be},Ne},parse:function(be){var Ne=it(be+="",!1);return Ne.toString=function(){return be},Ne},utcFormat:function(be){var Ne=rt(be+="",mt);return Ne.toString=function(){return be},Ne},utcParse:function(be){var Ne=it(be+="",!0);return Ne.toString=function(){return be},Ne}}}var jNt={"-":"",_:" ",0:"0"},Ad=/^\s*\d+/,ZAe=/^%/,tLe=/[\\^$*+?|[\]().{}]/g;function Jc(i,a,f){var g=i<0?"-":"",w=(g?-i:i)+"",v=w.length;return g+(v[a.toLowerCase(),f]))}function nLe(i,a,f){var g=Ad.exec(a.slice(f,f+1));return g?(i.w=+g[0],f+g[0].length):-1}function rLe(i,a,f){var g=Ad.exec(a.slice(f,f+1));return g?(i.u=+g[0],f+g[0].length):-1}function iLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.U=+g[0],f+g[0].length):-1}function sLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.V=+g[0],f+g[0].length):-1}function aLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.W=+g[0],f+g[0].length):-1}function $Nt(i,a,f){var g=Ad.exec(a.slice(f,f+4));return g?(i.y=+g[0],f+g[0].length):-1}function zNt(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.y=+g[0]+(+g[0]>68?1900:2e3),f+g[0].length):-1}function oLe(i,a,f){var g=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(a.slice(f,f+6));return g?(i.Z=g[1]?0:-(g[2]+(g[3]||"00")),f+g[0].length):-1}function cLe(i,a,f){var g=Ad.exec(a.slice(f,f+1));return g?(i.q=g[0]*3-3,f+g[0].length):-1}function uLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.m=g[0]-1,f+g[0].length):-1}function qNt(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.d=+g[0],f+g[0].length):-1}function lLe(i,a,f){var g=Ad.exec(a.slice(f,f+3));return g?(i.m=0,i.d=+g[0],f+g[0].length):-1}function HNt(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.H=+g[0],f+g[0].length):-1}function hLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.M=+g[0],f+g[0].length):-1}function fLe(i,a,f){var g=Ad.exec(a.slice(f,f+2));return g?(i.S=+g[0],f+g[0].length):-1}function dLe(i,a,f){var g=Ad.exec(a.slice(f,f+3));return g?(i.L=+g[0],f+g[0].length):-1}function gLe(i,a,f){var g=Ad.exec(a.slice(f,f+6));return g?(i.L=Math.floor(g[0]/1e3),f+g[0].length):-1}function pLe(i,a,f){var g=ZAe.exec(a.slice(f,f+1));return g?f+g[0].length:-1}function bLe(i,a,f){var g=Ad.exec(a.slice(f));return g?(i.Q=+g[0],f+g[0].length):-1}function wLe(i,a,f){var g=Ad.exec(a.slice(f));return g?(i.s=+g[0],f+g[0].length):-1}function VNt(i,a){return Jc(i.getDate(),a,2)}function mLe(i,a){return Jc(i.getHours(),a,2)}function vLe(i,a){return Jc(i.getHours()%12||12,a,2)}function yLe(i,a){return Jc(1+c9.count(_x(i),i),a,3)}function UNt(i,a){return Jc(i.getMilliseconds(),a,3)}function xLe(i,a){return UNt(i,a)+"000"}function kLe(i,a){return Jc(i.getMonth()+1,a,2)}function ELe(i,a){return Jc(i.getMinutes(),a,2)}function TLe(i,a){return Jc(i.getSeconds(),a,2)}function CLe(i){var a=i.getDay();return a===0?7:a}function SLe(i,a){return Jc(lF.count(_x(i)-1,i),a,2)}function GNt(i){var a=i.getDay();return a>=4||a===0?l9(i):l9.ceil(i)}function _Le(i,a){return i=GNt(i),Jc(l9.count(_x(i),i)+(_x(i).getDay()===4),a,2)}function ALe(i){return i.getDay()}function LLe(i,a){return Jc(hF.count(_x(i)-1,i),a,2)}function DLe(i,a){return Jc(i.getFullYear()%100,a,2)}function MLe(i,a){return i=GNt(i),Jc(i.getFullYear()%100,a,2)}function ILe(i,a){return Jc(i.getFullYear()%1e4,a,4)}function OLe(i,a){var f=i.getDay();return i=f>=4||f===0?l9(i):l9.ceil(i),Jc(i.getFullYear()%1e4,a,4)}function NLe(i){var a=i.getTimezoneOffset();return(a>0?"-":(a*=-1,"+"))+Jc(a/60|0,"0",2)+Jc(a%60,"0",2)}function KNt(i,a){return Jc(i.getUTCDate(),a,2)}function PLe(i,a){return Jc(i.getUTCHours(),a,2)}function FLe(i,a){return Jc(i.getUTCHours()%12||12,a,2)}function BLe(i,a){return Jc(1+X0t.count(f9(i),i),a,3)}function WNt(i,a){return Jc(i.getUTCMilliseconds(),a,3)}function RLe(i,a){return WNt(i,a)+"000"}function jLe(i,a){return Jc(i.getUTCMonth()+1,a,2)}function $Le(i,a){return Jc(i.getUTCMinutes(),a,2)}function zLe(i,a){return Jc(i.getUTCSeconds(),a,2)}function qLe(i){var a=i.getUTCDay();return a===0?7:a}function HLe(i,a){return Jc(RNt.count(f9(i)-1,i),a,2)}function YNt(i){var a=i.getUTCDay();return a>=4||a===0?GL(i):GL.ceil(i)}function VLe(i,a){return i=YNt(i),Jc(GL.count(f9(i),i)+(f9(i).getUTCDay()===4),a,2)}function ULe(i){return i.getUTCDay()}function GLe(i,a){return Jc(LW.count(f9(i)-1,i),a,2)}function KLe(i,a){return Jc(i.getUTCFullYear()%100,a,2)}function WLe(i,a){return i=YNt(i),Jc(i.getUTCFullYear()%100,a,2)}function YLe(i,a){return Jc(i.getUTCFullYear()%1e4,a,4)}function XLe(i,a){var f=i.getUTCDay();return i=f>=4||f===0?GL(i):GL.ceil(i),Jc(i.getUTCFullYear()%1e4,a,4)}function QLe(){return"+0000"}function XNt(){return"%"}function QNt(i){return+i}function JNt(i){return Math.floor(+i/1e3)}var KL,DW;JLe({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function JLe(i){return KL=JAe(i),DW=KL.format,KL.parse,KL.utcFormat,KL.utcParse,KL}function ZLe(i){return new Date(i)}function tDe(i){return i instanceof Date?+i:+new Date(+i)}function ZNt(i,a,f,g,w,v,b,E,S,_){var M=INt(),F=M.invert,R=M.domain,B=_(".%L"),z=_(":%S"),Y=_("%I:%M"),nt=_("%I %p"),ot=_("%a %d"),ft=_("%b %d"),wt=_("%B"),mt=_("%Y");function ct(rt){return(S(rt)1?0:i<-1?bF:Math.acos(i)}function nPt(i){return i>=1?MW:i<=-1?-MW:Math.asin(i)}function rPt(i){let a=3;return i.digits=function(f){if(!arguments.length)return a;if(f==null)a=null;else{const g=Math.floor(f);if(!(g>=0))throw new RangeError(`invalid digits: ${f}`);a=g}return i},()=>new yAe(a)}function sDe(i){return i.innerRadius}function aDe(i){return i.outerRadius}function oDe(i){return i.startAngle}function cDe(i){return i.endAngle}function uDe(i){return i&&i.padAngle}function lDe(i,a,f,g,w,v,b,E){var S=f-i,_=g-a,M=b-w,F=E-v,R=F*S-M*_;if(!(R*ROt*Ot+It*It&&(gt=dt,Q=K),{cx:gt,cy:Q,x01:-M,y01:-F,x11:gt*(w/ct-1),y11:Q*(w/ct-1)}}function YL(){var i=sDe,a=aDe,f=kf(0),g=null,w=oDe,v=cDe,b=uDe,E=null,S=rPt(_);function _(){var M,F,R=+i.apply(this,arguments),B=+a.apply(this,arguments),z=w.apply(this,arguments)-MW,Y=v.apply(this,arguments)-MW,nt=ePt(Y-z),ot=Y>z;if(E||(E=M=S()),Brg))E.moveTo(0,0);else if(nt>IW-rg)E.moveTo(B*d9(z),B*t4(z)),E.arc(0,0,B,z,Y,!ot),R>rg&&(E.moveTo(R*d9(Y),R*t4(Y)),E.arc(0,0,R,Y,z,ot));else{var ft=z,wt=Y,mt=z,ct=Y,rt=nt,it=nt,gt=b.apply(this,arguments)/2,Q=gt>rg&&(g?+g.apply(this,arguments):WL(R*R+B*B)),dt=Z0t(ePt(B-R)/2,+f.apply(this,arguments)),K=dt,yt=dt,V,Ot;if(Q>rg){var It=nPt(Q/R*t4(gt)),jt=nPt(Q/B*t4(gt));(rt-=It*2)>rg?(It*=ot?1:-1,mt+=It,ct-=It):(rt=0,mt=ct=(z+Y)/2),(it-=jt*2)>rg?(jt*=ot?1:-1,ft+=jt,wt-=jt):(it=0,ft=wt=(z+Y)/2)}var xt=B*d9(ft),Ft=B*t4(ft),Ct=R*d9(ct),kt=R*t4(ct);if(dt>rg){var Gt=B*d9(wt),Fe=B*t4(wt),Mt=R*d9(mt),pn=R*t4(mt),Ae;if(ntrg?yt>rg?(V=OW(Mt,pn,xt,Ft,B,yt,ot),Ot=OW(Gt,Fe,Ct,kt,B,yt,ot),E.moveTo(V.cx+V.x01,V.cy+V.y01),ytrg)||!(rt>rg)?E.lineTo(Ct,kt):K>rg?(V=OW(Ct,kt,Gt,Fe,R,-K,ot),Ot=OW(xt,Ft,Mt,pn,R,-K,ot),E.lineTo(V.cx+V.x01,V.cy+V.y01),Ki?1:a>=i?0:NaN}function gDe(i){return i}function pDe(){var i=gDe,a=dDe,f=null,g=kf(0),w=kf(IW),v=kf(0);function b(E){var S,_=(E=iPt(E)).length,M,F,R=0,B=new Array(_),z=new Array(_),Y=+g.apply(this,arguments),nt=Math.min(IW,Math.max(-IW,w.apply(this,arguments)-Y)),ot,ft=Math.min(Math.abs(nt)/_,v.apply(this,arguments)),wt=ft*(nt<0?-1:1),mt;for(S=0;S<_;++S)(mt=z[B[S]=S]=+i(E[S],S,E))>0&&(R+=mt);for(a!=null?B.sort(function(ct,rt){return a(z[ct],z[rt])}):f!=null&&B.sort(function(ct,rt){return f(E[ct],E[rt])}),S=0,F=R?(nt-_*wt)/R:0;S<_;++S,Y=ot)M=B[S],mt=z[M],ot=Y+(mt>0?mt*F:0)+wt,z[M]={data:E[M],index:S,value:mt,startAngle:Y,endAngle:ot,padAngle:ft};return z}return b.value=function(E){return arguments.length?(i=typeof E=="function"?E:kf(+E),b):i},b.sortValues=function(E){return arguments.length?(a=E,f=null,b):a},b.sort=function(E){return arguments.length?(f=E,a=null,b):f},b.startAngle=function(E){return arguments.length?(g=typeof E=="function"?E:kf(+E),b):g},b.endAngle=function(E){return arguments.length?(w=typeof E=="function"?E:kf(+E),b):w},b.padAngle=function(E){return arguments.length?(v=typeof E=="function"?E:kf(+E),b):v},b}class aPt{constructor(a,f){this._context=a,this._x=f}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(a,f){switch(a=+a,f=+f,this._point){case 0:{this._point=1,this._line?this._context.lineTo(a,f):this._context.moveTo(a,f);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+a)/2,this._y0,this._x0,f,a,f):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+f)/2,a,this._y0,a,f);break}}this._x0=a,this._y0=f}}function bDe(i){return new aPt(i,!0)}function wDe(i){return new aPt(i,!1)}function d8(){}function NW(i,a,f){i._context.bezierCurveTo((2*i._x0+i._x1)/3,(2*i._y0+i._y1)/3,(i._x0+2*i._x1)/3,(i._y0+2*i._y1)/3,(i._x0+4*i._x1+a)/6,(i._y0+4*i._y1+f)/6)}function PW(i){this._context=i}PW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:NW(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:NW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function wF(i){return new PW(i)}function oPt(i){this._context=i}oPt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x2=i,this._y2=a;break;case 1:this._point=2,this._x3=i,this._y3=a;break;case 2:this._point=3,this._x4=i,this._y4=a,this._context.moveTo((this._x0+4*this._x1+i)/6,(this._y0+4*this._y1+a)/6);break;default:NW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function mDe(i){return new oPt(i)}function cPt(i){this._context=i}cPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var f=(this._x0+4*this._x1+i)/6,g=(this._y0+4*this._y1+a)/6;this._line?this._context.lineTo(f,g):this._context.moveTo(f,g);break;case 3:this._point=4;default:NW(this,i,a);break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a}};function vDe(i){return new cPt(i)}function uPt(i,a){this._basis=new PW(i),this._beta=a}uPt.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var i=this._x,a=this._y,f=i.length-1;if(f>0)for(var g=i[0],w=a[0],v=i[f]-g,b=a[f]-w,E=-1,S;++E<=f;)S=E/f,this._basis.point(this._beta*i[E]+(1-this._beta)*(g+S*v),this._beta*a[E]+(1-this._beta)*(w+S*b));this._x=this._y=null,this._basis.lineEnd()},point:function(i,a){this._x.push(+i),this._y.push(+a)}};const yDe=function i(a){function f(g){return a===1?new PW(g):new uPt(g,a)}return f.beta=function(g){return i(+g)},f}(.85);function FW(i,a,f){i._context.bezierCurveTo(i._x1+i._k*(i._x2-i._x0),i._y1+i._k*(i._y2-i._y0),i._x2+i._k*(i._x1-a),i._y2+i._k*(i._y1-f),i._x2,i._y2)}function tgt(i,a){this._context=i,this._k=(1-a)/6}tgt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:FW(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2,this._x1=i,this._y1=a;break;case 2:this._point=3;default:FW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const xDe=function i(a){function f(g){return new tgt(g,a)}return f.tension=function(g){return i(+g)},f}(0);function egt(i,a){this._context=i,this._k=(1-a)/6}egt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:FW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const kDe=function i(a){function f(g){return new egt(g,a)}return f.tension=function(g){return i(+g)},f}(0);function ngt(i,a){this._context=i,this._k=(1-a)/6}ngt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:FW(this,i,a);break}this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const EDe=function i(a){function f(g){return new ngt(g,a)}return f.tension=function(g){return i(+g)},f}(0);function rgt(i,a,f){var g=i._x1,w=i._y1,v=i._x2,b=i._y2;if(i._l01_a>rg){var E=2*i._l01_2a+3*i._l01_a*i._l12_a+i._l12_2a,S=3*i._l01_a*(i._l01_a+i._l12_a);g=(g*E-i._x0*i._l12_2a+i._x2*i._l01_2a)/S,w=(w*E-i._y0*i._l12_2a+i._y2*i._l01_2a)/S}if(i._l23_a>rg){var _=2*i._l23_2a+3*i._l23_a*i._l12_a+i._l12_2a,M=3*i._l23_a*(i._l23_a+i._l12_a);v=(v*_+i._x1*i._l23_2a-a*i._l12_2a)/M,b=(b*_+i._y1*i._l23_2a-f*i._l12_2a)/M}i._context.bezierCurveTo(g,w,v,b,i._x2,i._y2)}function lPt(i,a){this._context=i,this._alpha=a}lPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3;default:rgt(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const TDe=function i(a){function f(g){return a?new lPt(g,a):new tgt(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function hPt(i,a){this._context=i,this._alpha=a}hPt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x3,this._y3),this._context.closePath();break}case 2:{this._context.lineTo(this._x3,this._y3),this._context.closePath();break}case 3:{this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5);break}}},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=i,this._y3=a;break;case 1:this._point=2,this._context.moveTo(this._x4=i,this._y4=a);break;case 2:this._point=3,this._x5=i,this._y5=a;break;default:rgt(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const CDe=function i(a){function f(g){return a?new hPt(g,a):new egt(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function fPt(i,a){this._context=i,this._alpha=a}fPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){if(i=+i,a=+a,this._point){var f=this._x2-i,g=this._y2-a;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(f*f+g*g,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:rgt(this,i,a);break}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=i,this._y0=this._y1,this._y1=this._y2,this._y2=a}};const SDe=function i(a){function f(g){return a?new fPt(g,a):new ngt(g,0)}return f.alpha=function(g){return i(+g)},f}(.5);function dPt(i){this._context=i}dPt.prototype={areaStart:d8,areaEnd:d8,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(i,a){i=+i,a=+a,this._point?this._context.lineTo(i,a):(this._point=1,this._context.moveTo(i,a))}};function _De(i){return new dPt(i)}function gPt(i){return i<0?-1:1}function pPt(i,a,f){var g=i._x1-i._x0,w=a-i._x1,v=(i._y1-i._y0)/(g||w<0&&-0),b=(f-i._y1)/(w||g<0&&-0),E=(v*w+b*g)/(g+w);return(gPt(v)+gPt(b))*Math.min(Math.abs(v),Math.abs(b),.5*Math.abs(E))||0}function bPt(i,a){var f=i._x1-i._x0;return f?(3*(i._y1-i._y0)/f-a)/2:a}function igt(i,a,f){var g=i._x0,w=i._y0,v=i._x1,b=i._y1,E=(v-g)/3;i._context.bezierCurveTo(g+E,w+E*a,v-E,b-E*f,v,b)}function BW(i){this._context=i}BW.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:igt(this,this._t0,bPt(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(i,a){var f=NaN;if(i=+i,a=+a,!(i===this._x1&&a===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;break;case 2:this._point=3,igt(this,bPt(this,f=pPt(this,i,a)),f);break;default:igt(this,this._t0,f=pPt(this,i,a));break}this._x0=this._x1,this._x1=i,this._y0=this._y1,this._y1=a,this._t0=f}}};function wPt(i){this._context=new mPt(i)}(wPt.prototype=Object.create(BW.prototype)).point=function(i,a){BW.prototype.point.call(this,a,i)};function mPt(i){this._context=i}mPt.prototype={moveTo:function(i,a){this._context.moveTo(a,i)},closePath:function(){this._context.closePath()},lineTo:function(i,a){this._context.lineTo(a,i)},bezierCurveTo:function(i,a,f,g,w,v){this._context.bezierCurveTo(a,i,g,f,v,w)}};function ADe(i){return new BW(i)}function LDe(i){return new wPt(i)}function vPt(i){this._context=i}vPt.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var i=this._x,a=this._y,f=i.length;if(f)if(this._line?this._context.lineTo(i[0],a[0]):this._context.moveTo(i[0],a[0]),f===2)this._context.lineTo(i[1],a[1]);else for(var g=yPt(i),w=yPt(a),v=0,b=1;b=0;--a)w[a]=(b[a]-w[a+1])/v[a];for(v[f-1]=(i[f]+w[f-1])/2,a=0;a=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(i,a){switch(i=+i,a=+a,this._point){case 0:this._point=1,this._line?this._context.lineTo(i,a):this._context.moveTo(i,a);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,a),this._context.lineTo(i,a);else{var f=this._x*(1-this._t)+i*this._t;this._context.lineTo(f,this._y),this._context.lineTo(f,a)}break}}this._x=i,this._y=a}};function MDe(i){return new RW(i,.5)}function IDe(i){return new RW(i,0)}function ODe(i){return new RW(i,1)}function mF(i,a,f){this.k=i,this.x=a,this.y=f}mF.prototype={constructor:mF,scale:function(i){return i===1?this:new mF(this.k*i,this.x,this.y)},translate:function(i,a){return i===0&a===0?this:new mF(this.k,this.x+this.k*i,this.y+this.k*a)},apply:function(i){return[i[0]*this.k+this.x,i[1]*this.k+this.y]},applyX:function(i){return i*this.k+this.x},applyY:function(i){return i*this.k+this.y},invert:function(i){return[(i[0]-this.x)/this.k,(i[1]-this.y)/this.k]},invertX:function(i){return(i-this.x)/this.k},invertY:function(i){return(i-this.y)/this.k},rescaleX:function(i){return i.copy().domain(i.range().map(this.invertX,this).map(i.invert,i))},rescaleY:function(i){return i.copy().domain(i.range().map(this.invertY,this).map(i.invert,i))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}},mF.prototype;/*! @license DOMPurify 3.0.5 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.0.5/LICENSE */const{entries:xPt,setPrototypeOf:kPt,isFrozen:NDe,getPrototypeOf:PDe,getOwnPropertyDescriptor:FDe}=Object;let{freeze:Wg,seal:qv,create:BDe}=Object,{apply:sgt,construct:agt}=typeof Reflect<"u"&&Reflect;sgt||(sgt=function(a,f,g){return a.apply(f,g)}),Wg||(Wg=function(a){return a}),qv||(qv=function(a){return a}),agt||(agt=function(a,f){return new a(...f)});const RDe=Ww(Array.prototype.forEach),EPt=Ww(Array.prototype.pop),vF=Ww(Array.prototype.push),jW=Ww(String.prototype.toLowerCase),ogt=Ww(String.prototype.toString),jDe=Ww(String.prototype.match),Hv=Ww(String.prototype.replace),$De=Ww(String.prototype.indexOf),zDe=Ww(String.prototype.trim),E2=Ww(RegExp.prototype.test),yF=qDe(TypeError);function Ww(i){return function(a){for(var f=arguments.length,g=new Array(f>1?f-1:0),w=1;w/gm),KDe=qv(/\${[\w\W]*}/gm),WDe=qv(/^data-[\-\w.\u00B7-\uFFFF]/),YDe=qv(/^aria-[\-\w]+$/),APt=qv(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),XDe=qv(/^(?:\w+script|data):/i),QDe=qv(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),LPt=qv(/^html$/i);var DPt=Object.freeze({__proto__:null,MUSTACHE_EXPR:UDe,ERB_EXPR:GDe,TMPLIT_EXPR:KDe,DATA_ATTR:WDe,ARIA_ATTR:YDe,IS_ALLOWED_URI:APt,IS_SCRIPT_OR_DATA:XDe,ATTR_WHITESPACE:QDe,DOCTYPE_NAME:LPt});const JDe=()=>typeof window>"u"?null:window,ZDe=function(a,f){if(typeof a!="object"||typeof a.createPolicy!="function")return null;let g=null;const w="data-tt-policy-suffix";f&&f.hasAttribute(w)&&(g=f.getAttribute(w));const v="dompurify"+(g?"#"+g:"");try{return a.createPolicy(v,{createHTML(b){return b},createScriptURL(b){return b}})}catch{return console.warn("TrustedTypes policy "+v+" could not be created."),null}};function MPt(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:JDe();const a=Gi=>MPt(Gi);if(a.version="3.0.5",a.removed=[],!i||!i.document||i.document.nodeType!==9)return a.isSupported=!1,a;const f=i.document,g=f.currentScript;let{document:w}=i;const{DocumentFragment:v,HTMLTemplateElement:b,Node:E,Element:S,NodeFilter:_,NamedNodeMap:M=i.NamedNodeMap||i.MozNamedAttrMap,HTMLFormElement:F,DOMParser:R,trustedTypes:B}=i,z=S.prototype,Y=$W(z,"cloneNode"),nt=$W(z,"nextSibling"),ot=$W(z,"childNodes"),ft=$W(z,"parentNode");if(typeof b=="function"){const Gi=w.createElement("template");Gi.content&&Gi.content.ownerDocument&&(w=Gi.content.ownerDocument)}let wt,mt="";const{implementation:ct,createNodeIterator:rt,createDocumentFragment:it,getElementsByTagName:gt}=w,{importNode:Q}=f;let dt={};a.isSupported=typeof xPt=="function"&&typeof ft=="function"&&ct&&ct.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:K,ERB_EXPR:yt,TMPLIT_EXPR:V,DATA_ATTR:Ot,ARIA_ATTR:It,IS_SCRIPT_OR_DATA:jt,ATTR_WHITESPACE:xt}=DPt;let{IS_ALLOWED_URI:Ft}=DPt,Ct=null;const kt=Fo({},[...TPt,...cgt,...ugt,...lgt,...CPt]);let Gt=null;const Fe=Fo({},[...SPt,...hgt,..._Pt,...zW]);let Mt=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),pn=null,Ae=null,ye=!0,tn=!0,sn=!1,be=!0,Ne=!1,Xt=!1,_e=!1,xe=!1,Mn=!1,ce=!1,Br=!1,we=!0,Fi=!1;const mi="user-content-";let ga=!0,Ss=!1,za={},br=null;const An=Fo({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Nn=null;const Bn=Fo({},["audio","video","img","source","image","track"]);let ke=null;const pe=Fo({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Je="http://www.w3.org/1998/Math/MathML",an="http://www.w3.org/2000/svg",xn="http://www.w3.org/1999/xhtml";let qa=xn,xo=!1,ko=null;const va=Fo({},[Je,an,xn],ogt);let Ha;const ds=["application/xhtml+xml","text/html"],Fu="text/html";let Zs,d1=null;const I2=w.createElement("form"),ll=function(cn){return cn instanceof RegExp||cn instanceof Function},Ic=function(cn){if(!(d1&&d1===cn)){if((!cn||typeof cn!="object")&&(cn={}),cn=XL(cn),Ha=ds.indexOf(cn.PARSER_MEDIA_TYPE)===-1?Ha=Fu:Ha=cn.PARSER_MEDIA_TYPE,Zs=Ha==="application/xhtml+xml"?ogt:jW,Ct="ALLOWED_TAGS"in cn?Fo({},cn.ALLOWED_TAGS,Zs):kt,Gt="ALLOWED_ATTR"in cn?Fo({},cn.ALLOWED_ATTR,Zs):Fe,ko="ALLOWED_NAMESPACES"in cn?Fo({},cn.ALLOWED_NAMESPACES,ogt):va,ke="ADD_URI_SAFE_ATTR"in cn?Fo(XL(pe),cn.ADD_URI_SAFE_ATTR,Zs):pe,Nn="ADD_DATA_URI_TAGS"in cn?Fo(XL(Bn),cn.ADD_DATA_URI_TAGS,Zs):Bn,br="FORBID_CONTENTS"in cn?Fo({},cn.FORBID_CONTENTS,Zs):An,pn="FORBID_TAGS"in cn?Fo({},cn.FORBID_TAGS,Zs):{},Ae="FORBID_ATTR"in cn?Fo({},cn.FORBID_ATTR,Zs):{},za="USE_PROFILES"in cn?cn.USE_PROFILES:!1,ye=cn.ALLOW_ARIA_ATTR!==!1,tn=cn.ALLOW_DATA_ATTR!==!1,sn=cn.ALLOW_UNKNOWN_PROTOCOLS||!1,be=cn.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ne=cn.SAFE_FOR_TEMPLATES||!1,Xt=cn.WHOLE_DOCUMENT||!1,Mn=cn.RETURN_DOM||!1,ce=cn.RETURN_DOM_FRAGMENT||!1,Br=cn.RETURN_TRUSTED_TYPE||!1,xe=cn.FORCE_BODY||!1,we=cn.SANITIZE_DOM!==!1,Fi=cn.SANITIZE_NAMED_PROPS||!1,ga=cn.KEEP_CONTENT!==!1,Ss=cn.IN_PLACE||!1,Ft=cn.ALLOWED_URI_REGEXP||APt,qa=cn.NAMESPACE||xn,Mt=cn.CUSTOM_ELEMENT_HANDLING||{},cn.CUSTOM_ELEMENT_HANDLING&&ll(cn.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Mt.tagNameCheck=cn.CUSTOM_ELEMENT_HANDLING.tagNameCheck),cn.CUSTOM_ELEMENT_HANDLING&&ll(cn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Mt.attributeNameCheck=cn.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),cn.CUSTOM_ELEMENT_HANDLING&&typeof cn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(Mt.allowCustomizedBuiltInElements=cn.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Ne&&(tn=!1),ce&&(Mn=!0),za&&(Ct=Fo({},[...CPt]),Gt=[],za.html===!0&&(Fo(Ct,TPt),Fo(Gt,SPt)),za.svg===!0&&(Fo(Ct,cgt),Fo(Gt,hgt),Fo(Gt,zW)),za.svgFilters===!0&&(Fo(Ct,ugt),Fo(Gt,hgt),Fo(Gt,zW)),za.mathMl===!0&&(Fo(Ct,lgt),Fo(Gt,_Pt),Fo(Gt,zW))),cn.ADD_TAGS&&(Ct===kt&&(Ct=XL(Ct)),Fo(Ct,cn.ADD_TAGS,Zs)),cn.ADD_ATTR&&(Gt===Fe&&(Gt=XL(Gt)),Fo(Gt,cn.ADD_ATTR,Zs)),cn.ADD_URI_SAFE_ATTR&&Fo(ke,cn.ADD_URI_SAFE_ATTR,Zs),cn.FORBID_CONTENTS&&(br===An&&(br=XL(br)),Fo(br,cn.FORBID_CONTENTS,Zs)),ga&&(Ct["#text"]=!0),Xt&&Fo(Ct,["html","head","body"]),Ct.table&&(Fo(Ct,["tbody"]),delete pn.tbody),cn.TRUSTED_TYPES_POLICY){if(typeof cn.TRUSTED_TYPES_POLICY.createHTML!="function")throw yF('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof cn.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw yF('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');wt=cn.TRUSTED_TYPES_POLICY,mt=wt.createHTML("")}else wt===void 0&&(wt=ZDe(B,g)),wt!==null&&typeof mt=="string"&&(mt=wt.createHTML(""));Wg&&Wg(cn),d1=cn}},wc=Fo({},["mi","mo","mn","ms","mtext"]),Ea=Fo({},["foreignobject","desc","title","annotation-xml"]),gu=Fo({},["title","style","font","a","script"]),ta=Fo({},cgt);Fo(ta,ugt),Fo(ta,HDe);const fo=Fo({},lgt);Fo(fo,VDe);const mc=function(cn){let Nr=ft(cn);(!Nr||!Nr.tagName)&&(Nr={namespaceURI:qa,tagName:"template"});const Si=jW(cn.tagName),vc=jW(Nr.tagName);return ko[cn.namespaceURI]?cn.namespaceURI===an?Nr.namespaceURI===xn?Si==="svg":Nr.namespaceURI===Je?Si==="svg"&&(vc==="annotation-xml"||wc[vc]):!!ta[Si]:cn.namespaceURI===Je?Nr.namespaceURI===xn?Si==="math":Nr.namespaceURI===an?Si==="math"&&Ea[vc]:!!fo[Si]:cn.namespaceURI===xn?Nr.namespaceURI===an&&!Ea[vc]||Nr.namespaceURI===Je&&!wc[vc]?!1:!fo[Si]&&(gu[Si]||!ta[Si]):!!(Ha==="application/xhtml+xml"&&ko[cn.namespaceURI]):!1},ca=function(cn){vF(a.removed,{element:cn});try{cn.parentNode.removeChild(cn)}catch{cn.remove()}},ya=function(cn,Nr){try{vF(a.removed,{attribute:Nr.getAttributeNode(cn),from:Nr})}catch{vF(a.removed,{attribute:null,from:Nr})}if(Nr.removeAttribute(cn),cn==="is"&&!Gt[cn])if(Mn||ce)try{ca(Nr)}catch{}else try{Nr.setAttribute(cn,"")}catch{}},ea=function(cn){let Nr,Si;if(xe)cn=""+cn;else{const Eh=jDe(cn,/^[\r\n\t ]+/);Si=Eh&&Eh[0]}Ha==="application/xhtml+xml"&&qa===xn&&(cn=''+cn+"");const vc=wt?wt.createHTML(cn):cn;if(qa===xn)try{Nr=new R().parseFromString(vc,Ha)}catch{}if(!Nr||!Nr.documentElement){Nr=ct.createDocument(qa,"template",null);try{Nr.documentElement.innerHTML=xo?mt:vc}catch{}}const Rc=Nr.body||Nr.documentElement;return cn&&Si&&Rc.insertBefore(w.createTextNode(Si),Rc.childNodes[0]||null),qa===xn?gt.call(Nr,Xt?"html":"body")[0]:Xt?Nr.documentElement:Rc},Zl=function(cn){return rt.call(cn.ownerDocument||cn,cn,_.SHOW_ELEMENT|_.SHOW_COMMENT|_.SHOW_TEXT,null,!1)},Uc=function(cn){return cn instanceof F&&(typeof cn.nodeName!="string"||typeof cn.textContent!="string"||typeof cn.removeChild!="function"||!(cn.attributes instanceof M)||typeof cn.removeAttribute!="function"||typeof cn.setAttribute!="function"||typeof cn.namespaceURI!="string"||typeof cn.insertBefore!="function"||typeof cn.hasChildNodes!="function")},rm=function(cn){return typeof E=="object"?cn instanceof E:cn&&typeof cn=="object"&&typeof cn.nodeType=="number"&&typeof cn.nodeName=="string"},kh=function(cn,Nr,Si){dt[cn]&&RDe(dt[cn],vc=>{vc.call(a,Nr,Si,d1)})},Md=function(cn){let Nr;if(kh("beforeSanitizeElements",cn,null),Uc(cn))return ca(cn),!0;const Si=Zs(cn.nodeName);if(kh("uponSanitizeElement",cn,{tagName:Si,allowedTags:Ct}),cn.hasChildNodes()&&!rm(cn.firstElementChild)&&(!rm(cn.content)||!rm(cn.content.firstElementChild))&&E2(/<[/\w]/g,cn.innerHTML)&&E2(/<[/\w]/g,cn.textContent))return ca(cn),!0;if(!Ct[Si]||pn[Si]){if(!pn[Si]&&Id(Si)&&(Mt.tagNameCheck instanceof RegExp&&E2(Mt.tagNameCheck,Si)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(Si)))return!1;if(ga&&!br[Si]){const vc=ft(cn)||cn.parentNode,Rc=ot(cn)||cn.childNodes;if(Rc&&vc){const Eh=Rc.length;for(let Zc=Eh-1;Zc>=0;--Zc)vc.insertBefore(Y(Rc[Zc],!0),nt(cn))}}return ca(cn),!0}return cn instanceof S&&!mc(cn)||(Si==="noscript"||Si==="noembed"||Si==="noframes")&&E2(/<\/no(script|embed|frames)/i,cn.innerHTML)?(ca(cn),!0):(Ne&&cn.nodeType===3&&(Nr=cn.textContent,Nr=Hv(Nr,K," "),Nr=Hv(Nr,yt," "),Nr=Hv(Nr,V," "),cn.textContent!==Nr&&(vF(a.removed,{element:cn.cloneNode()}),cn.textContent=Nr)),kh("afterSanitizeElements",cn,null),!1)},w0=function(cn,Nr,Si){if(we&&(Nr==="id"||Nr==="name")&&(Si in w||Si in I2))return!1;if(!(tn&&!Ae[Nr]&&E2(Ot,Nr))){if(!(ye&&E2(It,Nr))){if(!Gt[Nr]||Ae[Nr]){if(!(Id(cn)&&(Mt.tagNameCheck instanceof RegExp&&E2(Mt.tagNameCheck,cn)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(cn))&&(Mt.attributeNameCheck instanceof RegExp&&E2(Mt.attributeNameCheck,Nr)||Mt.attributeNameCheck instanceof Function&&Mt.attributeNameCheck(Nr))||Nr==="is"&&Mt.allowCustomizedBuiltInElements&&(Mt.tagNameCheck instanceof RegExp&&E2(Mt.tagNameCheck,Si)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(Si))))return!1}else if(!ke[Nr]){if(!E2(Ft,Hv(Si,xt,""))){if(!((Nr==="src"||Nr==="xlink:href"||Nr==="href")&&cn!=="script"&&$De(Si,"data:")===0&&Nn[cn])){if(!(sn&&!E2(jt,Hv(Si,xt,"")))){if(Si)return!1}}}}}}return!0},Id=function(cn){return cn.indexOf("-")>0},m0=function(cn){let Nr,Si,vc,Rc;kh("beforeSanitizeAttributes",cn,null);const{attributes:Eh}=cn;if(!Eh)return;const Zc={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Gt};for(Rc=Eh.length;Rc--;){Nr=Eh[Rc];const{name:Qh,namespaceURI:Od}=Nr;if(Si=Qh==="value"?Nr.value:zDe(Nr.value),vc=Zs(Qh),Zc.attrName=vc,Zc.attrValue=Si,Zc.keepAttr=!0,Zc.forceKeepAttr=void 0,kh("uponSanitizeAttribute",cn,Zc),Si=Zc.attrValue,Zc.forceKeepAttr||(ya(Qh,cn),!Zc.keepAttr))continue;if(!be&&E2(/\/>/i,Si)){ya(Qh,cn);continue}Ne&&(Si=Hv(Si,K," "),Si=Hv(Si,yt," "),Si=Hv(Si,V," "));const cs=Zs(cn.nodeName);if(w0(cs,vc,Si)){if(Fi&&(vc==="id"||vc==="name")&&(ya(Qh,cn),Si=mi+Si),wt&&typeof B=="object"&&typeof B.getAttributeType=="function"&&!Od)switch(B.getAttributeType(cs,vc)){case"TrustedHTML":{Si=wt.createHTML(Si);break}case"TrustedScriptURL":{Si=wt.createScriptURL(Si);break}}try{Od?cn.setAttributeNS(Od,Qh,Si):cn.setAttribute(Qh,Si),EPt(a.removed)}catch{}}}kh("afterSanitizeAttributes",cn,null)},hg=function Gi(cn){let Nr;const Si=Zl(cn);for(kh("beforeSanitizeShadowDOM",cn,null);Nr=Si.nextNode();)kh("uponSanitizeShadowNode",Nr,null),!Md(Nr)&&(Nr.content instanceof v&&Gi(Nr.content),m0(Nr));kh("afterSanitizeShadowDOM",cn,null)};return a.sanitize=function(Gi){let cn=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Nr,Si,vc,Rc;if(xo=!Gi,xo&&(Gi=""),typeof Gi!="string"&&!rm(Gi))if(typeof Gi.toString=="function"){if(Gi=Gi.toString(),typeof Gi!="string")throw yF("dirty is not a string, aborting")}else throw yF("toString is not a function");if(!a.isSupported)return Gi;if(_e||Ic(cn),a.removed=[],typeof Gi=="string"&&(Ss=!1),Ss){if(Gi.nodeName){const Qh=Zs(Gi.nodeName);if(!Ct[Qh]||pn[Qh])throw yF("root node is forbidden and cannot be sanitized in-place")}}else if(Gi instanceof E)Nr=ea(""),Si=Nr.ownerDocument.importNode(Gi,!0),Si.nodeType===1&&Si.nodeName==="BODY"||Si.nodeName==="HTML"?Nr=Si:Nr.appendChild(Si);else{if(!Mn&&!Ne&&!Xt&&Gi.indexOf("<")===-1)return wt&&Br?wt.createHTML(Gi):Gi;if(Nr=ea(Gi),!Nr)return Mn?null:Br?mt:""}Nr&&xe&&ca(Nr.firstChild);const Eh=Zl(Ss?Gi:Nr);for(;vc=Eh.nextNode();)Md(vc)||(vc.content instanceof v&&hg(vc.content),m0(vc));if(Ss)return Gi;if(Mn){if(ce)for(Rc=it.call(Nr.ownerDocument);Nr.firstChild;)Rc.appendChild(Nr.firstChild);else Rc=Nr;return(Gt.shadowroot||Gt.shadowrootmode)&&(Rc=Q.call(f,Rc,!0)),Rc}let Zc=Xt?Nr.outerHTML:Nr.innerHTML;return Xt&&Ct["!doctype"]&&Nr.ownerDocument&&Nr.ownerDocument.doctype&&Nr.ownerDocument.doctype.name&&E2(LPt,Nr.ownerDocument.doctype.name)&&(Zc=" +`+Zc),Ne&&(Zc=Hv(Zc,K," "),Zc=Hv(Zc,yt," "),Zc=Hv(Zc,V," ")),wt&&Br?wt.createHTML(Zc):Zc},a.setConfig=function(Gi){Ic(Gi),_e=!0},a.clearConfig=function(){d1=null,_e=!1},a.isValidAttribute=function(Gi,cn,Nr){d1||Ic({});const Si=Zs(Gi),vc=Zs(cn);return w0(Si,vc,Nr)},a.addHook=function(Gi,cn){typeof cn=="function"&&(dt[Gi]=dt[Gi]||[],vF(dt[Gi],cn))},a.removeHook=function(Gi){if(dt[Gi])return EPt(dt[Gi])},a.removeHooks=function(Gi){dt[Gi]&&(dt[Gi]=[])},a.removeAllHooks=function(){dt={}},a}var QL=MPt();const xF=//gi,tMe=i=>i?NPt(i).replace(/\\n/g,"#br#").split("#br#"):[""],eMe=(()=>{let i=!1;return()=>{i||(nMe(),i=!0)}})();function nMe(){const i="data-temp-href-target";QL.addHook("beforeSanitizeAttributes",a=>{a.tagName==="A"&&a.hasAttribute("target")&&a.setAttribute(i,a.getAttribute("target")||"")}),QL.addHook("afterSanitizeAttributes",a=>{a.tagName==="A"&&a.hasAttribute(i)&&(a.setAttribute("target",a.getAttribute(i)||""),a.removeAttribute(i),a.getAttribute("target")==="_blank"&&a.setAttribute("rel","noopener"))})}const IPt=i=>(eMe(),QL.sanitize(i)),OPt=(i,a)=>{var f;if(((f=a.flowchart)==null?void 0:f.htmlLabels)!==!1){const g=a.securityLevel;g==="antiscript"||g==="strict"?i=IPt(i):g!=="loose"&&(i=NPt(i),i=i.replace(//g,">"),i=i.replace(/=/g,"="),i=aMe(i))}return i},Ef=(i,a)=>i&&(a.dompurifyConfig?i=QL.sanitize(OPt(i,a),a.dompurifyConfig).toString():i=QL.sanitize(OPt(i,a),{FORBID_TAGS:["style"]}).toString(),i),rMe=(i,a)=>typeof i=="string"?Ef(i,a):i.flat().map(f=>Ef(f,a)),iMe=i=>xF.test(i),sMe=i=>i.split(xF),aMe=i=>i.replace(/#br#/g,"
    "),NPt=i=>i.replace(xF,"#br#"),oMe=i=>{let a="";return i&&(a=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,a=a.replaceAll(/\(/g,"\\("),a=a.replaceAll(/\)/g,"\\)")),a},j1=i=>!(i===!1||["false","null","0"].includes(String(i).trim().toLowerCase())),cMe=function(...i){const a=i.filter(f=>!isNaN(f));return Math.max(...a)},uMe=function(...i){const a=i.filter(f=>!isNaN(f));return Math.min(...a)},kF=function(i){const a=i.split(/(,)/),f=[];for(let g=0;g0&&g+1Math.max(0,i.split(a).length-1),lMe=(i,a)=>{const f=fgt(i,"~"),g=fgt(a,"~");return f===1&&g===1},hMe=i=>{const a=fgt(i,"~");let f=!1;if(a<=1)return i;a%2!==0&&i.startsWith("~")&&(i=i.substring(1),f=!0);const g=[...i];let w=g.indexOf("~"),v=g.lastIndexOf("~");for(;w!==-1&&v!==-1&&w!==v;)g[w]="<",g[v]=">",w=g.indexOf("~"),v=g.lastIndexOf("~");return f&&g.unshift("~"),g.join("")},ei={getRows:tMe,sanitizeText:Ef,sanitizeTextOrArray:rMe,hasBreaks:iMe,splitBreaks:sMe,lineBreakRegex:xF,removeScript:IPt,getUrl:oMe,evaluate:j1,getMax:cMe,getMin:uMe},qW={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:i=>i>=255?255:i<0?0:i,g:i=>i>=255?255:i<0?0:i,b:i=>i>=255?255:i<0?0:i,h:i=>i%360,s:i=>i>=100?100:i<0?0:i,l:i=>i>=100?100:i<0?0:i,a:i=>i>=1?1:i<0?0:i},toLinear:i=>{const a=i/255;return i>.03928?Math.pow((a+.055)/1.055,2.4):a/12.92},hue2rgb:(i,a,f)=>(f<0&&(f+=1),f>1&&(f-=1),f<1/6?i+(a-i)*6*f:f<1/2?a:f<2/3?i+(a-i)*(2/3-f)*6:i),hsl2rgb:({h:i,s:a,l:f},g)=>{if(!a)return f*2.55;i/=360,a/=100,f/=100;const w=f<.5?f*(1+a):f+a-f*a,v=2*f-w;switch(g){case"r":return qW.hue2rgb(v,w,i+1/3)*255;case"g":return qW.hue2rgb(v,w,i)*255;case"b":return qW.hue2rgb(v,w,i-1/3)*255}},rgb2hsl:({r:i,g:a,b:f},g)=>{i/=255,a/=255,f/=255;const w=Math.max(i,a,f),v=Math.min(i,a,f),b=(w+v)/2;if(g==="l")return b*100;if(w===v)return 0;const E=w-v,S=b>.5?E/(2-w-v):E/(w+v);if(g==="s")return S*100;switch(w){case i:return((a-f)/E+(aa>f?Math.min(a,Math.max(f,i)):Math.min(f,Math.max(a,i)),round:i=>Math.round(i*1e10)/1e10},unit:{dec2hex:i=>{const a=Math.round(i).toString(16);return a.length>1?a:`0${a}`}}},g8={};for(let i=0;i<=255;i++)g8[i]=Ia.unit.dec2hex(i);const ig={ALL:0,RGB:1,HSL:2};class fMe{constructor(){this.type=ig.ALL}get(){return this.type}set(a){if(this.type&&this.type!==a)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=a}reset(){this.type=ig.ALL}is(a){return this.type===a}}const dMe=fMe;class gMe{constructor(a,f){this.color=f,this.changed=!1,this.data=a,this.type=new dMe}set(a,f){return this.color=f,this.changed=!1,this.data=a,this.type.type=ig.ALL,this}_ensureHSL(){const a=this.data,{h:f,s:g,l:w}=a;f===void 0&&(a.h=Ia.channel.rgb2hsl(a,"h")),g===void 0&&(a.s=Ia.channel.rgb2hsl(a,"s")),w===void 0&&(a.l=Ia.channel.rgb2hsl(a,"l"))}_ensureRGB(){const a=this.data,{r:f,g,b:w}=a;f===void 0&&(a.r=Ia.channel.hsl2rgb(a,"r")),g===void 0&&(a.g=Ia.channel.hsl2rgb(a,"g")),w===void 0&&(a.b=Ia.channel.hsl2rgb(a,"b"))}get r(){const a=this.data,f=a.r;return!this.type.is(ig.HSL)&&f!==void 0?f:(this._ensureHSL(),Ia.channel.hsl2rgb(a,"r"))}get g(){const a=this.data,f=a.g;return!this.type.is(ig.HSL)&&f!==void 0?f:(this._ensureHSL(),Ia.channel.hsl2rgb(a,"g"))}get b(){const a=this.data,f=a.b;return!this.type.is(ig.HSL)&&f!==void 0?f:(this._ensureHSL(),Ia.channel.hsl2rgb(a,"b"))}get h(){const a=this.data,f=a.h;return!this.type.is(ig.RGB)&&f!==void 0?f:(this._ensureRGB(),Ia.channel.rgb2hsl(a,"h"))}get s(){const a=this.data,f=a.s;return!this.type.is(ig.RGB)&&f!==void 0?f:(this._ensureRGB(),Ia.channel.rgb2hsl(a,"s"))}get l(){const a=this.data,f=a.l;return!this.type.is(ig.RGB)&&f!==void 0?f:(this._ensureRGB(),Ia.channel.rgb2hsl(a,"l"))}get a(){return this.data.a}set r(a){this.type.set(ig.RGB),this.changed=!0,this.data.r=a}set g(a){this.type.set(ig.RGB),this.changed=!0,this.data.g=a}set b(a){this.type.set(ig.RGB),this.changed=!0,this.data.b=a}set h(a){this.type.set(ig.HSL),this.changed=!0,this.data.h=a}set s(a){this.type.set(ig.HSL),this.changed=!0,this.data.s=a}set l(a){this.type.set(ig.HSL),this.changed=!0,this.data.l=a}set a(a){this.changed=!0,this.data.a=a}}const pMe=gMe,HW=new pMe({r:0,g:0,b:0,a:0},"transparent"),PPt={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:i=>{if(i.charCodeAt(0)!==35)return;const a=i.match(PPt.re);if(!a)return;const f=a[1],g=parseInt(f,16),w=f.length,v=w%4===0,b=w>4,E=b?1:17,S=b?8:4,_=v?0:-1,M=b?255:15;return HW.set({r:(g>>S*(_+3)&M)*E,g:(g>>S*(_+2)&M)*E,b:(g>>S*(_+1)&M)*E,a:v?(g&M)*E/255:1},i)},stringify:i=>{const{r:a,g:f,b:g,a:w}=i;return w<1?`#${g8[Math.round(a)]}${g8[Math.round(f)]}${g8[Math.round(g)]}${g8[Math.round(w*255)]}`:`#${g8[Math.round(a)]}${g8[Math.round(f)]}${g8[Math.round(g)]}`}},EF=PPt,VW={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:i=>{const a=i.match(VW.hueRe);if(a){const[,f,g]=a;switch(g){case"grad":return Ia.channel.clamp.h(parseFloat(f)*.9);case"rad":return Ia.channel.clamp.h(parseFloat(f)*180/Math.PI);case"turn":return Ia.channel.clamp.h(parseFloat(f)*360)}}return Ia.channel.clamp.h(parseFloat(i))},parse:i=>{const a=i.charCodeAt(0);if(a!==104&&a!==72)return;const f=i.match(VW.re);if(!f)return;const[,g,w,v,b,E]=f;return HW.set({h:VW._hue2deg(g),s:Ia.channel.clamp.s(parseFloat(w)),l:Ia.channel.clamp.l(parseFloat(v)),a:b?Ia.channel.clamp.a(E?parseFloat(b)/100:parseFloat(b)):1},i)},stringify:i=>{const{h:a,s:f,l:g,a:w}=i;return w<1?`hsla(${Ia.lang.round(a)}, ${Ia.lang.round(f)}%, ${Ia.lang.round(g)}%, ${w})`:`hsl(${Ia.lang.round(a)}, ${Ia.lang.round(f)}%, ${Ia.lang.round(g)}%)`}},UW=VW,GW={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:i=>{i=i.toLowerCase();const a=GW.colors[i];if(a)return EF.parse(a)},stringify:i=>{const a=EF.stringify(i);for(const f in GW.colors)if(GW.colors[f]===a)return f}},FPt=GW,BPt={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:i=>{const a=i.charCodeAt(0);if(a!==114&&a!==82)return;const f=i.match(BPt.re);if(!f)return;const[,g,w,v,b,E,S,_,M]=f;return HW.set({r:Ia.channel.clamp.r(w?parseFloat(g)*2.55:parseFloat(g)),g:Ia.channel.clamp.g(b?parseFloat(v)*2.55:parseFloat(v)),b:Ia.channel.clamp.b(S?parseFloat(E)*2.55:parseFloat(E)),a:_?Ia.channel.clamp.a(M?parseFloat(_)/100:parseFloat(_)):1},i)},stringify:i=>{const{r:a,g:f,b:g,a:w}=i;return w<1?`rgba(${Ia.lang.round(a)}, ${Ia.lang.round(f)}, ${Ia.lang.round(g)}, ${Ia.lang.round(w)})`:`rgb(${Ia.lang.round(a)}, ${Ia.lang.round(f)}, ${Ia.lang.round(g)})`}},KW=BPt,Vv={format:{keyword:FPt,hex:EF,rgb:KW,rgba:KW,hsl:UW,hsla:UW},parse:i=>{if(typeof i!="string")return i;const a=EF.parse(i)||KW.parse(i)||UW.parse(i)||FPt.parse(i);if(a)return a;throw new Error(`Unsupported color format: "${i}"`)},stringify:i=>!i.changed&&i.color?i.color:i.type.is(ig.HSL)||i.data.r===void 0?UW.stringify(i):i.a<1||!Number.isInteger(i.r)||!Number.isInteger(i.g)||!Number.isInteger(i.b)?KW.stringify(i):EF.stringify(i)},RPt=(i,a)=>{const f=Vv.parse(i);for(const g in a)f[g]=Ia.channel.clamp[g](a[g]);return Vv.stringify(f)},g9=(i,a,f=0,g=1)=>{if(typeof i!="number")return RPt(i,{a});const w=HW.set({r:Ia.channel.clamp.r(i),g:Ia.channel.clamp.g(a),b:Ia.channel.clamp.b(f),a:Ia.channel.clamp.a(g)});return Vv.stringify(w)},jPt=(i,a)=>Ia.lang.round(Vv.parse(i)[a]),bMe=i=>{const{r:a,g:f,b:g}=Vv.parse(i),w=.2126*Ia.channel.toLinear(a)+.7152*Ia.channel.toLinear(f)+.0722*Ia.channel.toLinear(g);return Ia.lang.round(w)},wMe=i=>bMe(i)>=.5,p9=i=>!wMe(i),$Pt=(i,a,f)=>{const g=Vv.parse(i),w=g[a],v=Ia.channel.clamp[a](w+f);return w!==v&&(g[a]=v),Vv.stringify(g)},Is=(i,a)=>$Pt(i,"l",a),Js=(i,a)=>$Pt(i,"l",-a),Cn=(i,a)=>{const f=Vv.parse(i),g={};for(const w in a)a[w]&&(g[w]=f[w]+a[w]);return RPt(i,g)},mMe=(i,a,f=50)=>{const{r:g,g:w,b:v,a:b}=Vv.parse(i),{r:E,g:S,b:_,a:M}=Vv.parse(a),F=f/100,R=F*2-1,B=b-M,Y=((R*B===-1?R:(R+B)/(1+R*B))+1)/2,nt=1-Y,ot=g*Y+E*nt,ft=w*Y+S*nt,wt=v*Y+_*nt,mt=b*F+M*(1-F);return g9(ot,ft,wt,mt)},Ii=(i,a=100)=>{const f=Vv.parse(i);return f.r=255-f.r,f.g=255-f.g,f.b=255-f.b,mMe(f,i,a)},Yg=(i,a)=>a?Cn(i,{s:-40,l:10}):Cn(i,{s:-40,l:-10}),WW="#ffffff",YW="#f2f2f2";let vMe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){var f,g,w,v,b,E,S,_,M,F,R;if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||Cn(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||Cn(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||Yg(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||Yg(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||Ii(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||Ii(this.tertiaryColor),this.lineColor=this.lineColor||Ii(this.background),this.arrowheadColor=this.arrowheadColor||Ii(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?Js(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||"grey",this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||Js(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||Ii(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||Is(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this.darkMode)for(let B=0;B{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const yMe=i=>{const a=new vMe;return a.calculate(i),a};let xMe=class{constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=Is(this.primaryColor,16),this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Ii(this.background),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.tertiaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=Is(Ii("#323D47"),10),this.lineColor="calculated",this.border1="#81B1DB",this.border2=g9(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=Js("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=Js(this.sectionBkgColor,10),this.taskBorderColor=g9(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=g9(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.secondBkg=Is(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=Is(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.mainContrastColor,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=Is(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=Cn(this.primaryColor,{h:64}),this.fillType3=Cn(this.secondaryColor,{h:64}),this.fillType4=Cn(this.primaryColor,{h:-64}),this.fillType5=Cn(this.secondaryColor,{h:-64}),this.fillType6=Cn(this.primaryColor,{h:128}),this.fillType7=Cn(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330});for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const kMe=i=>{const a=new xMe;return a.calculate(i),a};let EMe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=Cn(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.tertiaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#e8e8e8",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.sectionBkgColor=g9(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||Js(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||Js(this.tertiaryColor,40);for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const dgt=i=>{const a=new EMe;return a.calculate(i),a};let TMe=class{constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=Is("#cde498",10),this.primaryBorderColor=Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.primaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="grey",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.actorBorder=Js(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||Cn(this.primaryColor,{h:30}),this.cScale4=this.cScale4||Cn(this.primaryColor,{h:60}),this.cScale5=this.cScale5||Cn(this.primaryColor,{h:90}),this.cScale6=this.cScale6||Cn(this.primaryColor,{h:120}),this.cScale7=this.cScale7||Cn(this.primaryColor,{h:150}),this.cScale8=this.cScale8||Cn(this.primaryColor,{h:210}),this.cScale9=this.cScale9||Cn(this.primaryColor,{h:270}),this.cScale10=this.cScale10||Cn(this.primaryColor,{h:300}),this.cScale11=this.cScale11||Cn(this.primaryColor,{h:330}),this["cScalePeer1"]=this["cScalePeer1"]||Js(this.secondaryColor,45),this["cScalePeer2"]=this["cScalePeer2"]||Js(this.tertiaryColor,40);for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}};const CMe=i=>{const a=new TMe;return a.calculate(i),a};class SMe{constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=Is(this.contrast,55),this.background="#ffffff",this.tertiaryColor=Cn(this.primaryColor,{h:-160}),this.primaryBorderColor=Yg(this.primaryColor,this.darkMode),this.secondaryBorderColor=Yg(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=Yg(this.tertiaryColor,this.darkMode),this.primaryTextColor=Ii(this.primaryColor),this.secondaryTextColor=Ii(this.secondaryColor),this.tertiaryTextColor=Ii(this.tertiaryColor),this.lineColor=Ii(this.background),this.textColor=Ii(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){var a,f,g,w,v,b,E,S,_,M,F;this.secondBkg=Is(this.contrast,55),this.border2=this.contrast,this.actorBorder=Is(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.lineColor,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let R=0;R{this[g]=a[g]}),this.updateColors(),f.forEach(g=>{this[g]=a[g]})}}const Lx={base:{getThemeVariables:yMe},dark:{getThemeVariables:kMe},default:{getThemeVariables:dgt},forest:{getThemeVariables:CMe},neutral:{getThemeVariables:i=>{const a=new SMe;return a.calculate(i),a}}},Dx={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"]},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},theme:"default",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","maxEdges"],deterministicIds:!1,fontSize:16},zPt={...Dx,deterministicIDSeed:void 0,themeCSS:void 0,themeVariables:Lx.default.getThemeVariables(),sequence:{...Dx.sequence,messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}},noteFont:function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}},actorFont:function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}},gantt:{...Dx.gantt,tickInterval:void 0,useWidth:void 0},c4:{...Dx.c4,useWidth:void 0,personFont:function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}},external_personFont:function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}},systemFont:function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}},external_systemFont:function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}},system_dbFont:function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}},external_system_dbFont:function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}},system_queueFont:function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}},external_system_queueFont:function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}},containerFont:function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}},external_containerFont:function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}},container_dbFont:function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}},external_container_dbFont:function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}},container_queueFont:function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}},external_container_queueFont:function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}},componentFont:function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}},external_componentFont:function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}},component_dbFont:function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}},external_component_dbFont:function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}},component_queueFont:function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}},external_component_queueFont:function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}},boundaryFont:function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}},messageFont:function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}},pie:{...Dx.pie,useWidth:984},xyChart:{...Dx.xyChart,useWidth:void 0},requirement:{...Dx.requirement,useWidth:void 0},gitGraph:{...Dx.gitGraph,useMaxWidth:!1},sankey:{...Dx.sankey,useMaxWidth:!1}},qPt=(i,a="")=>Object.keys(i).reduce((f,g)=>Array.isArray(i[g])?f:typeof i[g]=="object"&&i[g]!==null?[...f,a+g,...qPt(i[g],"")]:[...f,a+g],[]),_Me=new Set(qPt(zPt,"")),Bl=zPt,XW=i=>{if(Kt.debug("sanitizeDirective called with",i),!(typeof i!="object"||i==null)){if(Array.isArray(i)){i.forEach(a=>XW(a));return}for(const a of Object.keys(i)){if(Kt.debug("Checking key",a),a.startsWith("__")||a.includes("proto")||a.includes("constr")||!_Me.has(a)||i[a]==null){Kt.debug("sanitize deleting key: ",a),delete i[a];continue}if(typeof i[a]=="object"){Kt.debug("sanitizing object",a),XW(i[a]);continue}const f=["themeCSS","fontFamily","altFontFamily"];for(const g of f)a.includes(g)&&(Kt.debug("sanitizing css option",a),i[a]=AMe(i[a]))}if(i.themeVariables)for(const a of Object.keys(i.themeVariables)){const f=i.themeVariables[a];f!=null&&f.match&&!f.match(/^[\d "#%(),.;A-Za-z]+$/)&&(i.themeVariables[a]="")}Kt.debug("After sanitization",i)}},AMe=i=>{let a=0,f=0;for(const g of i){if(a{for(const{id:a,detector:f,loader:g}of i)GPt(a,f,g)},GPt=(i,a,f)=>{JL[i]?Kt.error(`Detector with key ${i} already exists`):JL[i]={detector:a,loader:f},Kt.debug(`Detector with key ${i} added${f?" with loader":""}`)},DMe=i=>JL[i].loader,ggt=(i,a,{depth:f=2,clobber:g=!1}={})=>{const w={depth:f,clobber:g};return Array.isArray(a)&&!Array.isArray(i)?(a.forEach(v=>ggt(i,v,w)),i):Array.isArray(a)&&Array.isArray(i)?(a.forEach(v=>{i.includes(v)||i.push(v)}),i):i===void 0||f<=0?i!=null&&typeof i=="object"&&typeof a=="object"?Object.assign(i,a):a:(a!==void 0&&typeof i=="object"&&typeof a=="object"&&Object.keys(a).forEach(v=>{typeof a[v]=="object"&&(i[v]===void 0||typeof i[v]=="object")?(i[v]===void 0&&(i[v]=Array.isArray(a[v])?[]:{}),i[v]=ggt(i[v],a[v],{depth:f-1,clobber:g})):(g||typeof i[v]!="object"&&typeof a[v]!="object")&&(i[v]=a[v])}),i)},Ld=ggt;var MMe=typeof global=="object"&&global&&global.Object===Object&&global;const KPt=MMe;var IMe=typeof self=="object"&&self&&self.Object===Object&&self,OMe=KPt||IMe||Function("return this")();const Uv=OMe;var NMe=Uv.Symbol;const Yw=NMe;var WPt=Object.prototype,PMe=WPt.hasOwnProperty,FMe=WPt.toString,CF=Yw?Yw.toStringTag:void 0;function BMe(i){var a=PMe.call(i,CF),f=i[CF];try{i[CF]=void 0;var g=!0}catch{}var w=FMe.call(i);return g&&(a?i[CF]=f:delete i[CF]),w}var RMe=Object.prototype,jMe=RMe.toString;function $Me(i){return jMe.call(i)}var zMe="[object Null]",qMe="[object Undefined]",YPt=Yw?Yw.toStringTag:void 0;function b9(i){return i==null?i===void 0?qMe:zMe:YPt&&YPt in Object(i)?BMe(i):$Me(i)}function T2(i){var a=typeof i;return i!=null&&(a=="object"||a=="function")}var HMe="[object AsyncFunction]",VMe="[object Function]",UMe="[object GeneratorFunction]",GMe="[object Proxy]";function ZL(i){if(!T2(i))return!1;var a=b9(i);return a==VMe||a==UMe||a==HMe||a==GMe}var KMe=Uv["__core-js_shared__"];const pgt=KMe;var XPt=function(){var i=/[^.]+$/.exec(pgt&&pgt.keys&&pgt.keys.IE_PROTO||"");return i?"Symbol(src)_1."+i:""}();function WMe(i){return!!XPt&&XPt in i}var YMe=Function.prototype,XMe=YMe.toString;function w9(i){if(i!=null){try{return XMe.call(i)}catch{}try{return i+""}catch{}}return""}var QMe=/[\\^$.*+?()[\]{}|]/g,JMe=/^\[object .+?Constructor\]$/,ZMe=Function.prototype,tIe=Object.prototype,eIe=ZMe.toString,nIe=tIe.hasOwnProperty,rIe=RegExp("^"+eIe.call(nIe).replace(QMe,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function iIe(i){if(!T2(i)||WMe(i))return!1;var a=ZL(i)?rIe:JMe;return a.test(w9(i))}function sIe(i,a){return i==null?void 0:i[a]}function m9(i,a){var f=sIe(i,a);return iIe(f)?f:void 0}var aIe=m9(Object,"create");const SF=aIe;function oIe(){this.__data__=SF?SF(null):{},this.size=0}function cIe(i){var a=this.has(i)&&delete this.__data__[i];return this.size-=a?1:0,a}var uIe="__lodash_hash_undefined__",lIe=Object.prototype,hIe=lIe.hasOwnProperty;function fIe(i){var a=this.__data__;if(SF){var f=a[i];return f===uIe?void 0:f}return hIe.call(a,i)?a[i]:void 0}var dIe=Object.prototype,gIe=dIe.hasOwnProperty;function pIe(i){var a=this.__data__;return SF?a[i]!==void 0:gIe.call(a,i)}var bIe="__lodash_hash_undefined__";function wIe(i,a){var f=this.__data__;return this.size+=this.has(i)?0:1,f[i]=SF&&a===void 0?bIe:a,this}function v9(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1}function TIe(i,a){var f=this.__data__,g=JW(f,i);return g<0?(++this.size,f.push([i,a])):f[g][1]=a,this}function Mx(i){var a=-1,f=i==null?0:i.length;for(this.clear();++a-1&&i%1==0&&i<=ZIe}function p8(i){return i!=null&&ygt(i.length)&&!ZL(i)}function uFt(i){return e4(i)&&p8(i)}function tOe(){return!1}var lFt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,hFt=lFt&&typeof module=="object"&&module&&!module.nodeType&&module,eOe=hFt&&hFt.exports===lFt,fFt=eOe?Uv.Buffer:void 0,nOe=fFt?fFt.isBuffer:void 0,rOe=nOe||tOe;const rD=rOe;var iOe="[object Object]",sOe=Function.prototype,aOe=Object.prototype,dFt=sOe.toString,oOe=aOe.hasOwnProperty,cOe=dFt.call(Object);function gFt(i){if(!e4(i)||b9(i)!=iOe)return!1;var a=vgt(i);if(a===null)return!0;var f=oOe.call(a,"constructor")&&a.constructor;return typeof f=="function"&&f instanceof f&&dFt.call(f)==cOe}var uOe="[object Arguments]",lOe="[object Array]",hOe="[object Boolean]",fOe="[object Date]",dOe="[object Error]",gOe="[object Function]",pOe="[object Map]",bOe="[object Number]",wOe="[object Object]",mOe="[object RegExp]",vOe="[object Set]",yOe="[object String]",xOe="[object WeakMap]",kOe="[object ArrayBuffer]",EOe="[object DataView]",TOe="[object Float32Array]",COe="[object Float64Array]",SOe="[object Int8Array]",_Oe="[object Int16Array]",AOe="[object Int32Array]",LOe="[object Uint8Array]",DOe="[object Uint8ClampedArray]",MOe="[object Uint16Array]",IOe="[object Uint32Array]",Rl={};Rl[TOe]=Rl[COe]=Rl[SOe]=Rl[_Oe]=Rl[AOe]=Rl[LOe]=Rl[DOe]=Rl[MOe]=Rl[IOe]=!0,Rl[uOe]=Rl[lOe]=Rl[kOe]=Rl[hOe]=Rl[EOe]=Rl[fOe]=Rl[dOe]=Rl[gOe]=Rl[pOe]=Rl[bOe]=Rl[wOe]=Rl[mOe]=Rl[vOe]=Rl[yOe]=Rl[xOe]=!1;function OOe(i){return e4(i)&&ygt(i.length)&&!!Rl[b9(i)]}function iY(i){return function(a){return i(a)}}var pFt=typeof exports=="object"&&exports&&!exports.nodeType&&exports,AF=pFt&&typeof module=="object"&&module&&!module.nodeType&&module,NOe=AF&&AF.exports===pFt,xgt=NOe&&KPt.process,POe=function(){try{var i=AF&&AF.require&&AF.require("util").types;return i||xgt&&xgt.binding&&xgt.binding("util")}catch{}}();const iD=POe;var bFt=iD&&iD.isTypedArray,FOe=bFt?iY(bFt):OOe;const sY=FOe;function kgt(i,a){if(!(a==="constructor"&&typeof i[a]=="function")&&a!="__proto__")return i[a]}var BOe=Object.prototype,ROe=BOe.hasOwnProperty;function aY(i,a,f){var g=i[a];(!(ROe.call(i,a)&&tD(g,f))||f===void 0&&!(a in i))&&eY(i,a,f)}function LF(i,a,f,g){var w=!f;f||(f={});for(var v=-1,b=a.length;++v-1&&i%1==0&&i0){if(++a>=ZOe)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}var rNe=nNe(JOe);const xFt=rNe;function cY(i,a){return xFt(yFt(i,a,x9),i+"")}function DF(i,a,f){if(!T2(f))return!1;var g=typeof a;return(g=="number"?p8(f)&&oY(a,f.length):g=="string"&&a in f)?tD(f[a],i):!1}function iNe(i){return cY(function(a,f){var g=-1,w=f.length,v=w>1?f[w-1]:void 0,b=w>2?f[2]:void 0;for(v=i.length>3&&typeof v=="function"?(w--,v):void 0,b&&DF(f[0],f[1],b)&&(v=w<3?void 0:v,w=1),a=Object(a);++gE.args);XW(b),g=Ld(g,[...b])}else g=f.args;if(!g)return;let w=QW(i,a);const v="config";return g[v]!==void 0&&(w==="flowchart-v2"&&(w="flowchart"),g[w]=g[v],delete g[v]),g},EFt=function(i,a=null){try{const f=new RegExp(`[%]{2}(?![{]${oNe.source})(?=[}][%]{2}).* +`,"ig");i=i.trim().replace(f,"").replace(/'/gm,'"'),Kt.debug(`Detecting diagram directive${a!==null?" type:"+a:""} based on the text:${i}`);let g;const w=[];for(;(g=TF.exec(i))!==null;)if(g.index===TF.lastIndex&&TF.lastIndex++,g&&!a||a&&g[1]&&g[1].match(a)||a&&g[2]&&g[2].match(a)){const v=g[1]?g[1]:g[2],b=g[3]?g[3].trim():g[4]?JSON.parse(g[4].trim()):null;w.push({type:v,args:b})}return w.length===0?{type:i,args:null}:w.length===1?w[0]:w}catch(f){return Kt.error(`ERROR: ${f.message} - Unable to parse directive type: '${a}' based on the text: '${i}'`),{type:void 0,args:null}}},uNe=function(i){return i.replace(TF,"")},lNe=function(i,a){for(const[f,g]of a.entries())if(g.match(i))return f;return-1};function Xw(i,a){if(!i)return a;const f=`curve${i.charAt(0).toUpperCase()+i.slice(1)}`;return aNe[f]??a}function hNe(i,a){const f=i.trim();if(f)return a.securityLevel!=="loose"?h8(f):f}const fNe=(i,...a)=>{const f=i.split("."),g=f.length-1,w=f[g];let v=window;for(let b=0;b{f+=TFt(w,a),a=w});const g=f/2;return Egt(i,g)}function gNe(i){return i.length===1?i[0]:dNe(i)}const CFt=(i,a=2)=>{const f=Math.pow(10,a);return Math.round(i*f)/f},Egt=(i,a)=>{let f,g=a;for(const w of i){if(f){const v=TFt(w,f);if(v=1)return{x:w.x,y:w.y};if(b>0&&b<1)return{x:CFt((1-b)*f.x+b*w.x,5),y:CFt((1-b)*f.y+b*w.y,5)}}}f=w}throw new Error("Could not find a suitable point for the given distance")},pNe=(i,a,f)=>{Kt.info(`our points ${JSON.stringify(a)}`),a[0]!==f&&(a=a.reverse());const w=Egt(a,25),v=i?10:5,b=Math.atan2(a[0].y-w.y,a[0].x-w.x),E={x:0,y:0};return E.x=Math.sin(b)*v+(a[0].x+w.x)/2,E.y=-Math.cos(b)*v+(a[0].y+w.y)/2,E};function bNe(i,a,f){const g=structuredClone(f);Kt.info("our points",g),a!=="start_left"&&a!=="start_right"&&g.reverse();const w=25+i,v=Egt(g,w),b=10+i*.5,E=Math.atan2(g[0].y-v.y,g[0].x-v.x),S={x:0,y:0};return a==="start_left"?(S.x=Math.sin(E+Math.PI)*b+(g[0].x+v.x)/2,S.y=-Math.cos(E+Math.PI)*b+(g[0].y+v.y)/2):a==="end_right"?(S.x=Math.sin(E-Math.PI)*b+(g[0].x+v.x)/2-5,S.y=-Math.cos(E-Math.PI)*b+(g[0].y+v.y)/2-5):a==="end_left"?(S.x=Math.sin(E)*b+(g[0].x+v.x)/2-5,S.y=-Math.cos(E)*b+(g[0].y+v.y)/2-5):(S.x=Math.sin(E)*b+(g[0].x+v.x)/2,S.y=-Math.cos(E)*b+(g[0].y+v.y)/2),S}function C2(i){let a="",f="";for(const g of i)g!==void 0&&(g.startsWith("color:")||g.startsWith("text-align:")?f=f+g+";":a=a+g+";");return{style:a,labelStyle:f}}let SFt=0;const _Ft=()=>(SFt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+SFt);function wNe(i){let a="";const f="0123456789abcdef",g=f.length;for(let w=0;wwNe(i.length),mNe=function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}},vNe=function(i,a){const f=a.text.replace(ei.lineBreakRegex," "),[,g]=k9(a.fontSize),w=i.append("text");w.attr("x",a.x),w.attr("y",a.y),w.style("text-anchor",a.anchor),w.style("font-family",a.fontFamily),w.style("font-size",g),w.style("font-weight",a.fontWeight),w.attr("fill",a.fill),a.class!==void 0&&w.attr("class",a.class);const v=w.append("tspan");return v.attr("x",a.x+a.textMargin*2),v.attr("fill",a.fill),v.text(f),w},LFt=eD((i,a,f)=>{if(!i||(f=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},f),ei.lineBreakRegex.test(i)))return i;const g=i.split(" "),w=[];let v="";return g.forEach((b,E)=>{const S=n4(`${b} `,f),_=n4(v,f);if(S>a){const{hyphenatedStrings:R,remainingWord:B}=yNe(b,a,"-",f);w.push(v,...R),v=B}else _+S>=a?(w.push(v),v=b):v=[v,b].filter(Boolean).join(" ");E+1===g.length&&w.push(v)}),w.filter(b=>b!=="").join(f.joinWith)},(i,a,f)=>`${i}${a}${f.fontSize}${f.fontWeight}${f.fontFamily}${f.joinWith}`),yNe=eD((i,a,f="-",g)=>{g=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},g);const w=[...i],v=[];let b="";return w.forEach((E,S)=>{const _=`${b}${E}`;if(n4(_,g)>=a){const F=S+1,R=w.length===F,B=`${_}${f}`;v.push(R?_:B),b=""}else b=_}),{hyphenatedStrings:v,remainingWord:b}},(i,a,f="-",g)=>`${i}${a}${f}${g.fontSize}${g.fontWeight}${g.fontFamily}`);function Tgt(i,a){return Cgt(i,a).height}function n4(i,a){return Cgt(i,a).width}const Cgt=eD((i,a)=>{const{fontSize:f=12,fontFamily:g="Arial",fontWeight:w=400}=a;if(!i)return{width:0,height:0};const[,v]=k9(f),b=["sans-serif",g],E=i.split(ei.lineBreakRegex),S=[],_=Tr("body");if(!_.remove)return{width:0,height:0,lineHeight:0};const M=_.append("svg");for(const R of b){let B=0;const z={width:0,height:0,lineHeight:0};for(const Y of E){const nt=mNe();nt.text=Y||kFt;const ot=vNe(M,nt).style("font-size",v).style("font-weight",w).style("font-family",R),ft=(ot._groups||ot)[0][0].getBBox();if(ft.width===0&&ft.height===0)throw new Error("svg element not in render tree");z.width=Math.round(Math.max(z.width,ft.width)),B=Math.round(ft.height),z.height+=B,z.lineHeight=Math.round(Math.max(z.lineHeight,B))}S.push(z)}M.remove();const F=isNaN(S[1].height)||isNaN(S[1].width)||isNaN(S[1].lineHeight)||S[0].height>S[1].height&&S[0].width>S[1].width&&S[0].lineHeight>S[1].lineHeight?0:1;return S[F]},(i,a)=>`${i}${a.fontSize}${a.fontWeight}${a.fontFamily}`);class xNe{constructor(a=!1,f){this.count=0,this.count=f?f.length:0,this.next=a?()=>this.count++:()=>Date.now()}}let lY;const kNe=function(i){return lY=lY||document.createElement("div"),i=escape(i).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),lY.innerHTML=i,unescape(lY.textContent)};function DFt(i){return"str"in i}const ENe=(i,a,f,g)=>{var v;if(!g)return;const w=(v=i.node())==null?void 0:v.getBBox();w&&i.append("text").text(g).attr("x",w.x+w.width/2).attr("y",-f).attr("class",a)},k9=i=>{if(typeof i=="number")return[i,i+"px"];const a=parseInt(i??"",10);return Number.isNaN(a)?[void 0,void 0]:i===String(a)?[a,i+"px"]:[a,i]};function MF(i,a){return uY({},i,a)}const uo={assignWithDepth:Ld,wrapLabel:LFt,calculateTextHeight:Tgt,calculateTextWidth:n4,calculateTextDimensions:Cgt,cleanAndMerge:MF,detectInit:cNe,detectDirective:EFt,isSubstringInArray:lNe,interpolateToCurve:Xw,calcLabelPosition:gNe,calcCardinalityPosition:pNe,calcTerminalLabelPosition:bNe,formatUrl:hNe,getStylesFromArray:C2,generateId:_Ft,random:AFt,runFunc:fNe,entityDecode:kNe,insertTitle:ENe,parseFontSize:k9,InitIDGenerator:xNe},TNe=function(i){let a=i;return a=a.replace(/style.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/classDef.*:\S*#.*;/g,function(f){return f.substring(0,f.length-1)}),a=a.replace(/#\w+;/g,function(f){const g=f.substring(1,f.length-1);return/^\+?\d+$/.test(g)?"fl°°"+g+"¶ß":"fl°"+g+"¶ß"}),a},IF=function(i){return i.replace(/fl°°/g,"&#").replace(/fl°/g,"&").replace(/¶ß/g,";")};var MFt="comm",IFt="rule",OFt="decl",CNe="@import",SNe="@keyframes",_Ne=Math.abs,Sgt=String.fromCharCode;function NFt(i){return i.trim()}function _gt(i,a,f){return i.replace(a,f)}function ANe(i,a){return i.indexOf(a)}function OF(i,a){return i.charCodeAt(a)|0}function NF(i,a,f){return i.slice(a,f)}function b8(i){return i.length}function PFt(i){return i.length}function hY(i,a){return a.push(i),i}var fY=1,aD=1,FFt=0,Qw=0,a1=0,oD="";function Agt(i,a,f,g,w,v,b){return{value:i,root:a,parent:f,type:g,props:w,children:v,line:fY,column:aD,length:b,return:""}}function LNe(){return a1}function DNe(){return a1=Qw>0?OF(oD,--Qw):0,aD--,a1===10&&(aD=1,fY--),a1}function Kv(){return a1=Qw2||Lgt(a1)>3?"":" "}function NNe(i,a){for(;--a&&Kv()&&!(a1<48||a1>102||a1>57&&a1<65||a1>70&&a1<97););return gY(i,dY()+(a<6&&E9()==32&&Kv()==32))}function Mgt(i){for(;Kv();)switch(a1){case i:return Qw;case 34:case 39:i!==34&&i!==39&&Mgt(a1);break;case 40:i===41&&Mgt(i);break;case 92:Kv();break}return Qw}function PNe(i,a){for(;Kv()&&i+a1!==47+10;)if(i+a1===42+42&&E9()===47)break;return"/*"+gY(a,Qw-1)+"*"+Sgt(i===47?i:Kv())}function FNe(i){for(;!Lgt(E9());)Kv();return gY(i,Qw)}function BNe(i){return INe(pY("",null,null,null,[""],i=MNe(i),0,[0],i))}function pY(i,a,f,g,w,v,b,E,S){for(var _=0,M=0,F=b,R=0,B=0,z=0,Y=1,nt=1,ot=1,ft=0,wt="",mt=w,ct=v,rt=g,it=wt;nt;)switch(z=ft,ft=Kv()){case 40:if(z!=108&&OF(it,F-1)==58){ANe(it+=_gt(Dgt(ft),"&","&\f"),"&\f")!=-1&&(ot=-1);break}case 34:case 39:case 91:it+=Dgt(ft);break;case 9:case 10:case 13:case 32:it+=ONe(z);break;case 92:it+=NNe(dY()-1,7);continue;case 47:switch(E9()){case 42:case 47:hY(RNe(PNe(Kv(),dY()),a,f),S);break;default:it+="/"}break;case 123*Y:E[_++]=b8(it)*ot;case 125*Y:case 59:case 0:switch(ft){case 0:case 125:nt=0;case 59+M:B>0&&b8(it)-F&&hY(B>32?RFt(it+";",g,f,F-1):RFt(_gt(it," ","")+";",g,f,F-2),S);break;case 59:it+=";";default:if(hY(rt=BFt(it,a,f,_,M,w,E,wt,mt=[],ct=[],F),v),ft===123)if(M===0)pY(it,a,rt,rt,mt,v,F,E,ct);else switch(R===99&&OF(it,3)===110?100:R){case 100:case 109:case 115:pY(i,rt,rt,g&&hY(BFt(i,rt,rt,0,0,w,E,wt,w,mt=[],F),ct),w,ct,F,E,g?mt:ct);break;default:pY(it,rt,rt,rt,[""],ct,0,E,ct)}}_=M=B=0,Y=ot=1,wt=it="",F=b;break;case 58:F=1+b8(it),B=z;default:if(Y<1){if(ft==123)--Y;else if(ft==125&&Y++==0&&DNe()==125)continue}switch(it+=Sgt(ft),ft*Y){case 38:ot=M>0?1:(it+="\f",-1);break;case 44:E[_++]=(b8(it)-1)*ot,ot=1;break;case 64:E9()===45&&(it+=Dgt(Kv())),R=E9(),M=F=b8(wt=it+=FNe(dY())),ft++;break;case 45:z===45&&b8(it)==2&&(Y=0)}}return v}function BFt(i,a,f,g,w,v,b,E,S,_,M){for(var F=w-1,R=w===0?v:[""],B=PFt(R),z=0,Y=0,nt=0;z0?R[ot]+" "+ft:_gt(ft,/&\f/g,R[ot])))&&(S[nt++]=wt);return Agt(i,a,f,w===0?IFt:E,S,_,M)}function RNe(i,a,f){return Agt(i,a,f,MFt,Sgt(LNe()),NF(i,2,-2),0)}function RFt(i,a,f,g){return Agt(i,a,f,OFt,NF(i,0,g),NF(i,g+1,-1),g)}function Igt(i,a){for(var f="",g=PFt(i),w=0;w{let f=Ld({},i),g={};for(const w of a)HFt(w),g=Ld(g,w);if(f=Ld(f,g),g.theme&&g.theme in Lx){const w=Ld({},$Ft),v=Ld(w.themeVariables||{},g.themeVariables);f.theme&&f.theme in Lx&&(f.themeVariables=Lx[f.theme].getThemeVariables(v))}return PF=f,UFt(PF),PF},$Ne=i=>(ib=Ld({},cD),ib=Ld(ib,i),i.theme&&Lx[i.theme]&&(ib.themeVariables=Lx[i.theme].getThemeVariables(i.themeVariables)),bY(ib,uD),ib),zNe=i=>{$Ft=Ld({},i)},qNe=i=>(ib=Ld(ib,i),bY(ib,uD),ib),zFt=()=>Ld({},ib),qFt=i=>(UFt(i),Ld(PF,i),o1()),o1=()=>Ld({},PF),HFt=i=>{i&&(["secure",...ib.secure??[]].forEach(a=>{Object.hasOwn(i,a)&&(Kt.debug(`Denied attempt to modify a secure key ${a}`,i[a]),delete i[a])}),Object.keys(i).forEach(a=>{a.startsWith("__")&&delete i[a]}),Object.keys(i).forEach(a=>{typeof i[a]=="string"&&(i[a].includes("<")||i[a].includes(">")||i[a].includes("url(data:"))&&delete i[a],typeof i[a]=="object"&&HFt(i[a])}))},HNe=i=>{XW(i),i.fontFamily&&(!i.themeVariables||!i.themeVariables.fontFamily)&&(i.themeVariables={fontFamily:i.fontFamily}),uD.push(i),bY(ib,uD)},wY=(i=ib)=>{uD=[],bY(i,uD)},VNe={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},VFt={},UNe=i=>{VFt[i]||(Kt.warn(VNe[i]),VFt[i]=!0)},UFt=i=>{i&&(i.lazyLoadedDiagrams||i.loadExternalDiagramsAtStartup)&&UNe("LAZY_LOAD_DEPRECATED")},GFt="c4",GNe={id:GFt,detector:i=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>uje);return{id:GFt,diagram:i}}},KFt="flowchart",KNe={id:KFt,detector:(i,a)=>{var f,g;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-wrapper"||((g=a==null?void 0:a.flowchart)==null?void 0:g.defaultRenderer)==="elk"?!1:/^\s*graph/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>wWe);return{id:KFt,diagram:i}}},WFt="flowchart-v2",WNe={id:WFt,detector:(i,a)=>{var f,g,w;return((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="dagre-d3"||((g=a==null?void 0:a.flowchart)==null?void 0:g.defaultRenderer)==="elk"?!1:/^\s*graph/.test(i)&&((w=a==null?void 0:a.flowchart)==null?void 0:w.defaultRenderer)==="dagre-wrapper"?!0:/^\s*flowchart/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>mWe);return{id:WFt,diagram:i}}},YFt="er",YNe={id:YFt,detector:i=>/^\s*erDiagram/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>VWe);return{id:YFt,diagram:i}}},XFt="gitGraph",XNe={id:XFt,detector:i=>/^\s*gitGraph/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>bYe);return{id:XFt,diagram:i}}},QFt="gantt",QNe={id:QFt,detector:i=>/^\s*gantt/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>sXe);return{id:QFt,diagram:i}}},JFt="info",JNe={id:JFt,detector:i=>/^\s*info/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>oXe);return{id:JFt,diagram:i}}},ZFt="pie",ZNe={id:ZFt,detector:i=>/^\s*pie/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>dXe);return{id:ZFt,diagram:i}}},tBt="quadrantChart",tPe={id:tBt,detector:i=>/^\s*quadrantChart/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>LXe);return{id:tBt,diagram:i}}},eBt="xychart",ePe={id:eBt,detector:i=>/^\s*xychart-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>ZXe);return{id:eBt,diagram:i}}},nBt="requirement",nPe={id:nBt,detector:i=>/^\s*requirement(Diagram)?/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>uQe);return{id:nBt,diagram:i}}},rBt="sequence",rPe={id:rBt,detector:i=>/^\s*sequenceDiagram/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>fJe);return{id:rBt,diagram:i}}},iBt="class",iPe={id:iBt,detector:(i,a)=>{var f;return((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:/^\s*classDiagram/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>FJe);return{id:iBt,diagram:i}}},sBt="classDiagram",sPe={id:sBt,detector:(i,a)=>{var f;return/^\s*classDiagram/.test(i)&&((f=a==null?void 0:a.class)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!0:/^\s*classDiagram-v2/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>qJe);return{id:sBt,diagram:i}}},aBt="state",aPe={id:aBt,detector:(i,a)=>{var f;return((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper"?!1:/^\s*stateDiagram/.test(i)},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>LZe);return{id:aBt,diagram:i}}},oBt="stateDiagram",oPe={id:oBt,detector:(i,a)=>{var f;return!!(/^\s*stateDiagram-v2/.test(i)||/^\s*stateDiagram/.test(i)&&((f=a==null?void 0:a.state)==null?void 0:f.defaultRenderer)==="dagre-wrapper")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>WZe);return{id:oBt,diagram:i}}},cBt="journey",cPe={id:cBt,detector:i=>/^\s*journey/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>dtn);return{id:cBt,diagram:i}}},uPe=function(i,a){for(let f of a)i.attr(f[0],f[1])},lPe=function(i,a,f){let g=new Map;return f?(g.set("width","100%"),g.set("style",`max-width: ${a}px;`)):(g.set("height",i),g.set("width",a)),g},sg=function(i,a,f,g){const w=lPe(a,f,g);uPe(i,w)},w8=function(i,a,f,g){const w=a.node().getBBox(),v=w.width,b=w.height;Kt.info(`SVG bounds: ${v}x${b}`,w);let E=0,S=0;Kt.info(`Graph bounds: ${E}x${S}`,i),E=v+f*2,S=b+f*2,Kt.info(`Calculated bounds: ${E}x${S}`),sg(a,S,E,g);const _=`${w.x-f} ${w.y-f} ${w.width+2*f} ${w.height+2*f}`;a.attr("viewBox",_)},mY={},hPe=(i,a,f)=>{let g="";return i in mY&&mY[i]?g=mY[i](f):Kt.warn(`No theme found for ${i}`),` & { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + fill: ${f.textColor} + } + + /* Classes common for multiple diagrams */ + + & .error-icon { + fill: ${f.errorBkgColor}; + } + & .error-text { + fill: ${f.errorTextColor}; + stroke: ${f.errorTextColor}; + } + + & .edge-thickness-normal { + stroke-width: 2px; + } + & .edge-thickness-thick { + stroke-width: 3.5px + } + & .edge-pattern-solid { + stroke-dasharray: 0; + } + + & .edge-pattern-dashed{ + stroke-dasharray: 3; + } + .edge-pattern-dotted { + stroke-dasharray: 2; + } + + & .marker { + fill: ${f.lineColor}; + stroke: ${f.lineColor}; + } + & .marker.cross { + stroke: ${f.lineColor}; + } + + & svg { + font-family: ${f.fontFamily}; + font-size: ${f.fontSize}; + } + + ${g} + + ${a} +`},fPe=(i,a)=>{a!==void 0&&(mY[i]=a)},dPe=hPe;let Ogt="",Ngt="",Pgt="";const Fgt=i=>Ef(i,o1()),ag=()=>{Ogt="",Pgt="",Ngt=""},og=i=>{Ogt=Fgt(i).replace(/^\s+/g,"")},Xg=()=>Ogt,Qg=i=>{Pgt=Fgt(i).replace(/\n\s+/g,` +`)},Jg=()=>Pgt,S2=i=>{Ngt=Fgt(i)},Zg=()=>Ngt,uBt=Object.freeze(Object.defineProperty({__proto__:null,clear:ag,getAccDescription:Jg,getAccTitle:Xg,getDiagramTitle:Zg,setAccDescription:Qg,setAccTitle:og,setDiagramTitle:S2},Symbol.toStringTag,{value:"Module"})),gPe=Kt,pPe=d0t,Re=o1,bPe=qFt,lBt=cD,wPe=i=>Ef(i,Re()),hBt=w8,mPe=()=>uBt,vY={},yY=(i,a,f)=>{var g;if(vY[i])throw new Error(`Diagram ${i} already registered.`);vY[i]=a,f&&GPt(i,f),fPe(i,a.styles),(g=a.injectUtils)==null||g.call(a,gPe,pPe,Re,wPe,hBt,mPe(),()=>{})},Bgt=i=>{if(i in vY)return vY[i];throw new vPe(i)};class vPe extends Error{constructor(a){super(`Diagram ${a} not found.`)}}const FF=i=>{var w;const{securityLevel:a}=Re();let f=Tr("body");if(a==="sandbox"){const b=((w=Tr(`#i${i}`).node())==null?void 0:w.contentDocument)??document;f=Tr(b.body)}return f.select(`#${i}`)},fBt={draw:(i,a,f)=>{Kt.debug(`rendering svg for syntax error +`);const g=FF(a);g.attr("viewBox","0 0 2412 512"),sg(g,100,512,!0);const w=g.append("g");w.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),w.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),w.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),w.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),w.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),w.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),w.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),w.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${f}`)}},yPe=fBt,xPe={db:{},renderer:fBt,parser:{parser:{yy:{}},parse:()=>{}}},dBt="flowchart-elk",kPe={id:dBt,detector:(i,a)=>{var f;return!!(/^\s*flowchart-elk/.test(i)||/^\s*flowchart|graph/.test(i)&&((f=a==null?void 0:a.flowchart)==null?void 0:f.defaultRenderer)==="elk")},loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Ltn);return{id:dBt,diagram:i}}},gBt="timeline",EPe={id:gBt,detector:i=>/^\s*timeline/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Wtn);return{id:gBt,diagram:i}}},pBt="mindmap",TPe={id:pBt,detector:i=>/^\s*mindmap/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>ken);return{id:pBt,diagram:i}}},bBt="sankey",CPe={id:bBt,detector:i=>/^\s*sankey-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>Jen);return{id:bBt,diagram:i}}},wBt="block",SPe={id:wBt,detector:i=>/^\s*block-beta/.test(i),loader:async()=>{const{diagram:i}=await Promise.resolve().then(()=>mnn);return{id:wBt,diagram:i}}};let mBt=!1;const Rgt=()=>{mBt||(mBt=!0,yY("error",xPe,i=>i.toLowerCase().trim()==="error"),yY("---",{db:{clear:()=>{}},styles:{},renderer:{draw:()=>{}},parser:{parser:{yy:{}},parse:()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}},init:()=>null},i=>i.toLowerCase().trimStart().startsWith("---")),UPt(GNe,sPe,iPe,YNe,QNe,JNe,ZNe,nPe,rPe,kPe,WNe,KNe,TPe,EPe,XNe,oPe,aPe,cPe,tPe,CPe,ePe,SPe))};class vBt{constructor(a,f={}){this.text=a,this.metadata=f,this.type="graph",this.text=TNe(a),this.text+=` +`;const g=o1();try{this.type=QW(a,g)}catch(v){this.type="error",this.detectError=v}const w=Bgt(this.type);Kt.debug("Type "+this.type),this.db=w.db,this.renderer=w.renderer,this.parser=w.parser,this.parser.parser.yy=this.db,this.init=w.init,this.parse()}parse(){var f,g,w,v,b;if(this.detectError)throw this.detectError;(g=(f=this.db).clear)==null||g.call(f);const a=o1();(w=this.init)==null||w.call(this,a),this.metadata.title&&((b=(v=this.db).setDiagramTitle)==null||b.call(v,this.metadata.title)),this.parser.parse(this.text)}async render(a,f){await this.renderer.draw(this.text,a,f,this)}getParser(){return this.parser}getType(){return this.type}}const _Pe=async(i,a={})=>{const f=QW(i,o1());try{Bgt(f)}catch{const w=DMe(f);if(!w)throw new VPt(`Diagram ${f} not found.`);const{id:v,diagram:b}=await w();yY(v,b)}return new vBt(i,a)};let yBt=[];const APe=()=>{yBt.forEach(i=>{i()}),yBt=[]};var LPe=sFt(Object.keys,Object);const DPe=LPe;var MPe=Object.prototype,IPe=MPe.hasOwnProperty;function xBt(i){if(!rY(i))return DPe(i);var a=[];for(var f in Object(i))IPe.call(i,f)&&f!="constructor"&&a.push(f);return a}var OPe=m9(Uv,"DataView");const jgt=OPe;var NPe=m9(Uv,"Promise");const $gt=NPe;var PPe=m9(Uv,"Set");const lD=PPe;var FPe=m9(Uv,"WeakMap");const zgt=FPe;var kBt="[object Map]",BPe="[object Object]",EBt="[object Promise]",TBt="[object Set]",CBt="[object WeakMap]",SBt="[object DataView]",RPe=w9(jgt),jPe=w9(_F),$Pe=w9($gt),zPe=w9(lD),qPe=w9(zgt),T9=b9;(jgt&&T9(new jgt(new ArrayBuffer(1)))!=SBt||_F&&T9(new _F)!=kBt||$gt&&T9($gt.resolve())!=EBt||lD&&T9(new lD)!=TBt||zgt&&T9(new zgt)!=CBt)&&(T9=function(i){var a=b9(i),f=a==BPe?i.constructor:void 0,g=f?w9(f):"";if(g)switch(g){case RPe:return SBt;case jPe:return kBt;case $Pe:return EBt;case zPe:return TBt;case qPe:return CBt}return a});const hD=T9;var HPe="[object Map]",VPe="[object Set]",UPe=Object.prototype,GPe=UPe.hasOwnProperty;function BF(i){if(i==null)return!0;if(p8(i)&&(s1(i)||typeof i=="string"||typeof i.splice=="function"||rD(i)||sY(i)||nD(i)))return!i.length;var a=hD(i);if(a==HPe||a==VPe)return!i.size;if(rY(i))return!xBt(i).length;for(var f in i)if(GPe.call(i,f))return!1;return!0}const KPe="graphics-document document";function WPe(i,a){i.attr("role",KPe),a!==""&&i.attr("aria-roledescription",a)}function YPe(i,a,f,g){if(i.insert!==void 0){if(f){const w=`chart-desc-${g}`;i.attr("aria-describedby",w),i.insert("desc",":first-child").attr("id",w).text(f)}if(a){const w=`chart-title-${g}`;i.attr("aria-labelledby",w),i.insert("title",":first-child").attr("id",w).text(a)}}}const XPe=i=>i.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart();/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */function _Bt(i){return typeof i>"u"||i===null}function QPe(i){return typeof i=="object"&&i!==null}function JPe(i){return Array.isArray(i)?i:_Bt(i)?[]:[i]}function ZPe(i,a){var f,g,w,v;if(a)for(v=Object.keys(a),f=0,g=v.length;fE&&(v=" ... ",a=g-E+v.length),f-g>E&&(b=" ...",f=g+E-b.length),{str:v+i.slice(a,f).replace(/\t/g,"→")+b,pos:g-a+v.length}}function Hgt(i,a){return tp.repeat(" ",a-i.length)+i}function cFe(i,a){if(a=Object.create(a||null),!i.buffer)return null;a.maxLength||(a.maxLength=79),typeof a.indent!="number"&&(a.indent=1),typeof a.linesBefore!="number"&&(a.linesBefore=3),typeof a.linesAfter!="number"&&(a.linesAfter=2);for(var f=/\r?\n|\r|\0/g,g=[0],w=[],v,b=-1;v=f.exec(i.buffer);)w.push(v.index),g.push(v.index+v[0].length),i.position<=v.index&&b<0&&(b=g.length-2);b<0&&(b=g.length-1);var E="",S,_,M=Math.min(i.line+a.linesAfter,w.length).toString().length,F=a.maxLength-(a.indent+M+3);for(S=1;S<=a.linesBefore&&!(b-S<0);S++)_=qgt(i.buffer,g[b-S],w[b-S],i.position-(g[b]-g[b-S]),F),E=tp.repeat(" ",a.indent)+Hgt((i.line-S+1).toString(),M)+" | "+_.str+` +`+E;for(_=qgt(i.buffer,g[b],w[b],i.position,F),E+=tp.repeat(" ",a.indent)+Hgt((i.line+1).toString(),M)+" | "+_.str+` +`,E+=tp.repeat("-",a.indent+M+3+_.pos)+`^ +`,S=1;S<=a.linesAfter&&!(b+S>=w.length);S++)_=qgt(i.buffer,g[b+S],w[b+S],i.position-(g[b]-g[b+S]),F),E+=tp.repeat(" ",a.indent)+Hgt((i.line+S+1).toString(),M)+" | "+_.str+` +`;return E.replace(/\n$/,"")}var uFe=cFe,lFe=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],hFe=["scalar","sequence","mapping"];function fFe(i){var a={};return i!==null&&Object.keys(i).forEach(function(f){i[f].forEach(function(g){a[String(g)]=f})}),a}function dFe(i,a){if(a=a||{},Object.keys(a).forEach(function(f){if(lFe.indexOf(f)===-1)throw new Ox('Unknown option "'+f+'" is met in definition of "'+i+'" YAML type.')}),this.options=a,this.tag=i,this.kind=a.kind||null,this.resolve=a.resolve||function(){return!0},this.construct=a.construct||function(f){return f},this.instanceOf=a.instanceOf||null,this.predicate=a.predicate||null,this.represent=a.represent||null,this.representName=a.representName||null,this.defaultStyle=a.defaultStyle||null,this.multi=a.multi||!1,this.styleAliases=fFe(a.styleAliases||null),hFe.indexOf(this.kind)===-1)throw new Ox('Unknown kind "'+this.kind+'" is specified for "'+i+'" YAML type.')}var cg=dFe;function LBt(i,a){var f=[];return i[a].forEach(function(g){var w=f.length;f.forEach(function(v,b){v.tag===g.tag&&v.kind===g.kind&&v.multi===g.multi&&(w=b)}),f[w]=g}),f}function gFe(){var i={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},a,f;function g(w){w.multi?(i.multi[w.kind].push(w),i.multi.fallback.push(w)):i[w.kind][w.tag]=i.fallback[w.tag]=w}for(a=0,f=arguments.length;a=0?"0b"+i.toString(2):"-0b"+i.toString(2).slice(1)},octal:function(i){return i>=0?"0o"+i.toString(8):"-0o"+i.toString(8).slice(1)},decimal:function(i){return i.toString(10)},hexadecimal:function(i){return i>=0?"0x"+i.toString(16).toUpperCase():"-0x"+i.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),PFe=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function FFe(i){return!(i===null||!PFe.test(i)||i[i.length-1]==="_")}function BFe(i){var a,f;return a=i.replace(/_/g,"").toLowerCase(),f=a[0]==="-"?-1:1,"+-".indexOf(a[0])>=0&&(a=a.slice(1)),a===".inf"?f===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:a===".nan"?NaN:f*parseFloat(a,10)}var RFe=/^[-+]?[0-9]+e/;function jFe(i,a){var f;if(isNaN(i))switch(a){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===i)switch(a){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===i)switch(a){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(tp.isNegativeZero(i))return"-0.0";return f=i.toString(10),RFe.test(f)?f.replace("e",".e"):f}function $Fe(i){return Object.prototype.toString.call(i)==="[object Number]"&&(i%1!==0||tp.isNegativeZero(i))}var zFe=new cg("tag:yaml.org,2002:float",{kind:"scalar",resolve:FFe,construct:BFe,predicate:$Fe,represent:jFe,defaultStyle:"lowercase"}),DBt=vFe.extend({implicit:[EFe,_Fe,NFe,zFe]}),qFe=DBt,MBt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),IBt=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function HFe(i){return i===null?!1:MBt.exec(i)!==null||IBt.exec(i)!==null}function VFe(i){var a,f,g,w,v,b,E,S=0,_=null,M,F,R;if(a=MBt.exec(i),a===null&&(a=IBt.exec(i)),a===null)throw new Error("Date resolve error");if(f=+a[1],g=+a[2]-1,w=+a[3],!a[4])return new Date(Date.UTC(f,g,w));if(v=+a[4],b=+a[5],E=+a[6],a[7]){for(S=a[7].slice(0,3);S.length<3;)S+="0";S=+S}return a[9]&&(M=+a[10],F=+(a[11]||0),_=(M*60+F)*6e4,a[9]==="-"&&(_=-_)),R=new Date(Date.UTC(f,g,w,v,b,E,S)),_&&R.setTime(R.getTime()-_),R}function UFe(i){return i.toISOString()}var GFe=new cg("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:HFe,construct:VFe,instanceOf:Date,represent:UFe});function KFe(i){return i==="<<"||i===null}var WFe=new cg("tag:yaml.org,2002:merge",{kind:"scalar",resolve:KFe}),Ugt=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function YFe(i){if(i===null)return!1;var a,f,g=0,w=i.length,v=Ugt;for(f=0;f64)){if(a<0)return!1;g+=6}return g%8===0}function XFe(i){var a,f,g=i.replace(/[\r\n=]/g,""),w=g.length,v=Ugt,b=0,E=[];for(a=0;a>16&255),E.push(b>>8&255),E.push(b&255)),b=b<<6|v.indexOf(g.charAt(a));return f=w%4*6,f===0?(E.push(b>>16&255),E.push(b>>8&255),E.push(b&255)):f===18?(E.push(b>>10&255),E.push(b>>2&255)):f===12&&E.push(b>>4&255),new Uint8Array(E)}function QFe(i){var a="",f=0,g,w,v=i.length,b=Ugt;for(g=0;g>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]),f=(f<<8)+i[g];return w=v%3,w===0?(a+=b[f>>18&63],a+=b[f>>12&63],a+=b[f>>6&63],a+=b[f&63]):w===2?(a+=b[f>>10&63],a+=b[f>>4&63],a+=b[f<<2&63],a+=b[64]):w===1&&(a+=b[f>>2&63],a+=b[f<<4&63],a+=b[64],a+=b[64]),a}function JFe(i){return Object.prototype.toString.call(i)==="[object Uint8Array]"}var ZFe=new cg("tag:yaml.org,2002:binary",{kind:"scalar",resolve:YFe,construct:XFe,predicate:JFe,represent:QFe}),tBe=Object.prototype.hasOwnProperty,eBe=Object.prototype.toString;function nBe(i){if(i===null)return!0;var a=[],f,g,w,v,b,E=i;for(f=0,g=E.length;f>10)+55296,(i-65536&1023)+56320)}for(var $Bt=new Array(256),zBt=new Array(256),dD=0;dD<256;dD++)$Bt[dD]=jBt(dD)?1:0,zBt[dD]=jBt(dD);function kBe(i,a){this.input=i,this.filename=a.filename||null,this.schema=a.schema||dBe,this.onWarning=a.onWarning||null,this.legacy=a.legacy||!1,this.json=a.json||!1,this.listener=a.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=i.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function qBt(i,a){var f={name:i.filename,buffer:i.input.slice(0,-1),position:i.position,line:i.line,column:i.position-i.lineStart};return f.snippet=uFe(f),new Ox(a,f)}function Ks(i,a){throw qBt(i,a)}function EY(i,a){i.onWarning&&i.onWarning.call(null,qBt(i,a))}var HBt={YAML:function(a,f,g){var w,v,b;a.version!==null&&Ks(a,"duplication of %YAML directive"),g.length!==1&&Ks(a,"YAML directive accepts exactly one argument"),w=/^([0-9]+)\.([0-9]+)$/.exec(g[0]),w===null&&Ks(a,"ill-formed argument of the YAML directive"),v=parseInt(w[1],10),b=parseInt(w[2],10),v!==1&&Ks(a,"unacceptable YAML version of the document"),a.version=g[0],a.checkLineBreaks=b<2,b!==1&&b!==2&&EY(a,"unsupported YAML version of the document")},TAG:function(a,f,g){var w,v;g.length!==2&&Ks(a,"TAG directive accepts exactly two arguments"),w=g[0],v=g[1],FBt.test(w)||Ks(a,"ill-formed tag handle (first argument) of the TAG directive"),m8.call(a.tagMap,w)&&Ks(a,'there is a previously declared suffix for "'+w+'" tag handle'),BBt.test(v)||Ks(a,"ill-formed tag prefix (second argument) of the TAG directive");try{v=decodeURIComponent(v)}catch{Ks(a,"tag prefix is malformed: "+v)}a.tagMap[w]=v}};function v8(i,a,f,g){var w,v,b,E;if(a1&&(i.result+=tp.repeat(` +`,a-1))}function EBe(i,a,f){var g,w,v,b,E,S,_,M,F=i.kind,R=i.result,B;if(B=i.input.charCodeAt(i.position),sb(B)||fD(B)||B===35||B===38||B===42||B===33||B===124||B===62||B===39||B===34||B===37||B===64||B===96||(B===63||B===45)&&(w=i.input.charCodeAt(i.position+1),sb(w)||f&&fD(w)))return!1;for(i.kind="scalar",i.result="",v=b=i.position,E=!1;B!==0;){if(B===58){if(w=i.input.charCodeAt(i.position+1),sb(w)||f&&fD(w))break}else if(B===35){if(g=i.input.charCodeAt(i.position-1),sb(g))break}else{if(i.position===i.lineStart&&TY(i)||f&&fD(B))break;if(r4(B))if(S=i.line,_=i.lineStart,M=i.lineIndent,c1(i,!1,-1),i.lineIndent>=a){E=!0,B=i.input.charCodeAt(i.position);continue}else{i.position=b,i.line=S,i.lineStart=_,i.lineIndent=M;break}}E&&(v8(i,v,b,!1),Wgt(i,i.line-S),v=b=i.position,E=!1),C9(B)||(b=i.position+1),B=i.input.charCodeAt(++i.position)}return v8(i,v,b,!1),i.result?!0:(i.kind=F,i.result=R,!1)}function TBe(i,a){var f,g,w;if(f=i.input.charCodeAt(i.position),f!==39)return!1;for(i.kind="scalar",i.result="",i.position++,g=w=i.position;(f=i.input.charCodeAt(i.position))!==0;)if(f===39)if(v8(i,g,i.position,!0),f=i.input.charCodeAt(++i.position),f===39)g=i.position,i.position++,w=i.position;else return!0;else r4(f)?(v8(i,g,w,!0),Wgt(i,c1(i,!1,a)),g=w=i.position):i.position===i.lineStart&&TY(i)?Ks(i,"unexpected end of the document within a single quoted scalar"):(i.position++,w=i.position);Ks(i,"unexpected end of the stream within a single quoted scalar")}function CBe(i,a){var f,g,w,v,b,E;if(E=i.input.charCodeAt(i.position),E!==34)return!1;for(i.kind="scalar",i.result="",i.position++,f=g=i.position;(E=i.input.charCodeAt(i.position))!==0;){if(E===34)return v8(i,f,i.position,!0),i.position++,!0;if(E===92){if(v8(i,f,i.position,!0),E=i.input.charCodeAt(++i.position),r4(E))c1(i,!1,a);else if(E<256&&$Bt[E])i.result+=zBt[E],i.position++;else if((b=vBe(E))>0){for(w=b,v=0;w>0;w--)E=i.input.charCodeAt(++i.position),(b=mBe(E))>=0?v=(v<<4)+b:Ks(i,"expected hexadecimal character");i.result+=xBe(v),i.position++}else Ks(i,"unknown escape sequence");f=g=i.position}else r4(E)?(v8(i,f,g,!0),Wgt(i,c1(i,!1,a)),f=g=i.position):i.position===i.lineStart&&TY(i)?Ks(i,"unexpected end of the document within a double quoted scalar"):(i.position++,g=i.position)}Ks(i,"unexpected end of the stream within a double quoted scalar")}function SBe(i,a){var f=!0,g,w,v,b=i.tag,E,S=i.anchor,_,M,F,R,B,z=Object.create(null),Y,nt,ot,ft;if(ft=i.input.charCodeAt(i.position),ft===91)M=93,B=!1,E=[];else if(ft===123)M=125,B=!0,E={};else return!1;for(i.anchor!==null&&(i.anchorMap[i.anchor]=E),ft=i.input.charCodeAt(++i.position);ft!==0;){if(c1(i,!0,a),ft=i.input.charCodeAt(i.position),ft===M)return i.position++,i.tag=b,i.anchor=S,i.kind=B?"mapping":"sequence",i.result=E,!0;f?ft===44&&Ks(i,"expected the node content, but found ','"):Ks(i,"missed comma between flow collection entries"),nt=Y=ot=null,F=R=!1,ft===63&&(_=i.input.charCodeAt(i.position+1),sb(_)&&(F=R=!0,i.position++,c1(i,!0,a))),g=i.line,w=i.lineStart,v=i.position,pD(i,a,xY,!1,!0),nt=i.tag,Y=i.result,c1(i,!0,a),ft=i.input.charCodeAt(i.position),(R||i.line===g)&&ft===58&&(F=!0,ft=i.input.charCodeAt(++i.position),c1(i,!0,a),pD(i,a,xY,!1,!0),ot=i.result),B?gD(i,E,z,nt,Y,ot,g,w,v):F?E.push(gD(i,null,z,nt,Y,ot,g,w,v)):E.push(Y),c1(i,!0,a),ft=i.input.charCodeAt(i.position),ft===44?(f=!0,ft=i.input.charCodeAt(++i.position)):f=!1}Ks(i,"unexpected end of the stream within a flow collection")}function _Be(i,a){var f,g,w=Ggt,v=!1,b=!1,E=a,S=0,_=!1,M,F;if(F=i.input.charCodeAt(i.position),F===124)g=!1;else if(F===62)g=!0;else return!1;for(i.kind="scalar",i.result="";F!==0;)if(F=i.input.charCodeAt(++i.position),F===43||F===45)Ggt===w?w=F===43?PBt:gBe:Ks(i,"repeat of a chomping mode identifier");else if((M=yBe(F))>=0)M===0?Ks(i,"bad explicit indentation width of a block scalar; it cannot be less than one"):b?Ks(i,"repeat of an indentation width identifier"):(E=a+M-1,b=!0);else break;if(C9(F)){do F=i.input.charCodeAt(++i.position);while(C9(F));if(F===35)do F=i.input.charCodeAt(++i.position);while(!r4(F)&&F!==0)}for(;F!==0;){for(Kgt(i),i.lineIndent=0,F=i.input.charCodeAt(i.position);(!b||i.lineIndentE&&(E=i.lineIndent),r4(F)){S++;continue}if(i.lineIndenta)&&S!==0)Ks(i,"bad indentation of a sequence entry");else if(i.lineIndenta)&&(nt&&(b=i.line,E=i.lineStart,S=i.position),pD(i,a,kY,!0,w)&&(nt?z=i.result:Y=i.result),nt||(gD(i,F,R,B,z,Y,b,E,S),B=z=Y=null),c1(i,!0,-1),ft=i.input.charCodeAt(i.position)),(i.line===v||i.lineIndent>a)&&ft!==0)Ks(i,"bad indentation of a mapping entry");else if(i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndenta?S=1:i.lineIndent===a?S=0:i.lineIndent tag; it should be "scalar", not "'+i.kind+'"'),F=0,R=i.implicitTypes.length;F"),i.result!==null&&z.kind!==i.kind&&Ks(i,"unacceptable node kind for !<"+i.tag+'> tag; it should be "'+z.kind+'", not "'+i.kind+'"'),z.resolve(i.result,i.tag)?(i.result=z.construct(i.result,i.tag),i.anchor!==null&&(i.anchorMap[i.anchor]=i.result)):Ks(i,"cannot resolve a node with !<"+i.tag+"> explicit tag")}return i.listener!==null&&i.listener("close",i),i.tag!==null||i.anchor!==null||M}function IBe(i){var a=i.position,f,g,w,v=!1,b;for(i.version=null,i.checkLineBreaks=i.legacy,i.tagMap=Object.create(null),i.anchorMap=Object.create(null);(b=i.input.charCodeAt(i.position))!==0&&(c1(i,!0,-1),b=i.input.charCodeAt(i.position),!(i.lineIndent>0||b!==37));){for(v=!0,b=i.input.charCodeAt(++i.position),f=i.position;b!==0&&!sb(b);)b=i.input.charCodeAt(++i.position);for(g=i.input.slice(f,i.position),w=[],g.length<1&&Ks(i,"directive name must not be less than one character in length");b!==0;){for(;C9(b);)b=i.input.charCodeAt(++i.position);if(b===35){do b=i.input.charCodeAt(++i.position);while(b!==0&&!r4(b));break}if(r4(b))break;for(f=i.position;b!==0&&!sb(b);)b=i.input.charCodeAt(++i.position);w.push(i.input.slice(f,i.position))}b!==0&&Kgt(i),m8.call(HBt,g)?HBt[g](i,g,w):EY(i,'unknown document directive "'+g+'"')}if(c1(i,!0,-1),i.lineIndent===0&&i.input.charCodeAt(i.position)===45&&i.input.charCodeAt(i.position+1)===45&&i.input.charCodeAt(i.position+2)===45?(i.position+=3,c1(i,!0,-1)):v&&Ks(i,"directives end mark is expected"),pD(i,i.lineIndent-1,kY,!1,!0),c1(i,!0,-1),i.checkLineBreaks&&bBe.test(i.input.slice(a,i.position))&&EY(i,"non-ASCII line breaks are interpreted as content"),i.documents.push(i.result),i.position===i.lineStart&&TY(i)){i.input.charCodeAt(i.position)===46&&(i.position+=3,c1(i,!0,-1));return}if(i.position"u"&&(f=a,a=null);var g=GBt(i,f);if(typeof a!="function")return g;for(var w=0,v=g.length;wi.replace(/\r\n?/g,` +`).replace(/<(\w+)([^>]*)>/g,(a,f,g)=>"<"+f+g.replace(/="([^"]*)"/g,"='$1'")+">"),qBe=i=>{const{text:a,metadata:f}=$Be(i),{displayMode:g,title:w,config:v={}}=f;return g&&(v.gantt||(v.gantt={}),v.gantt.displayMode=g),{title:w,config:v,text:a}},HBe=i=>{const a=uo.detectInit(i)??{},f=uo.detectDirective(i,"wrap");return Array.isArray(f)?a.wrap=f.some(({type:g})=>{}):(f==null?void 0:f.type)==="wrap"&&(a.wrap=!0),{text:uNe(i),directive:a}};function KBt(i){const a=zBe(i),f=qBe(a),g=HBe(f.text),w=MF(f.config,g.directive);return i=XPe(g.text),{code:i,title:f.title,config:w}}const VBe=5e4,UBe="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa",GBe="sandbox",KBe="loose",WBe="http://www.w3.org/2000/svg",YBe="http://www.w3.org/1999/xlink",XBe="http://www.w3.org/1999/xhtml",QBe="100%",JBe="100%",ZBe="border:0;margin:0;",tRe="margin:0",eRe="allow-top-navigation-by-user-activation allow-popups",nRe='The "iframe" tag is not supported by your browser.',rRe=["foreignobject"],iRe=["dominant-baseline"];function WBt(i){const a=KBt(i);return wY(),HNe(a.config??{}),a}async function sRe(i,a){Rgt(),i=WBt(i).code;try{await Ygt(i)}catch(f){if(a!=null&&a.suppressErrors)return!1;throw f}return!0}const YBt=(i,a,f=[])=>` +.${i} ${a} { ${f.join(" !important; ")} !important; }`,aRe=(i,a={})=>{var g;let f="";if(i.themeCSS!==void 0&&(f+=` +${i.themeCSS}`),i.fontFamily!==void 0&&(f+=` +:root { --mermaid-font-family: ${i.fontFamily}}`),i.altFontFamily!==void 0&&(f+=` +:root { --mermaid-alt-font-family: ${i.altFontFamily}}`),!BF(a)){const E=i.htmlLabels||((g=i.flowchart)==null?void 0:g.htmlLabels)?["> *","span"]:["rect","polygon","ellipse","circle","path"];for(const S in a){const _=a[S];BF(_.styles)||E.forEach(M=>{f+=YBt(_.id,M,_.styles)}),BF(_.textStyles)||(f+=YBt(_.id,"tspan",_.textStyles))}}return f},oRe=(i,a,f,g)=>{const w=aRe(i,f),v=dPe(a,w,i.themeVariables);return Igt(BNe(`${g}{${v}}`),jNe)},cRe=(i="",a,f)=>{let g=i;return!f&&!a&&(g=g.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),g=IF(g),g=g.replace(/
    /g,"
    "),g},uRe=(i="",a)=>{var w,v;const f=(v=(w=a==null?void 0:a.viewBox)==null?void 0:w.baseVal)!=null&&v.height?a.viewBox.baseVal.height+"px":JBe,g=btoa(''+i+"");return``},XBt=(i,a,f,g,w)=>{const v=i.append("div");v.attr("id",f),g&&v.attr("style",g);const b=v.append("svg").attr("id",a).attr("width","100%").attr("xmlns",WBe);return w&&b.attr("xmlns:xlink",w),b.append("g"),i};function QBt(i,a){return i.append("iframe").attr("id",a).attr("style","width: 100%; height: 100%;").attr("sandbox","")}const lRe=(i,a,f,g)=>{var w,v,b;(w=i.getElementById(a))==null||w.remove(),(v=i.getElementById(f))==null||v.remove(),(b=i.getElementById(g))==null||b.remove()},hRe=async function(i,a,f){var V,Ot,It,jt,xt,Ft;Rgt();const g=WBt(a);a=g.code;const w=o1();Kt.debug(w),a.length>((w==null?void 0:w.maxTextSize)??VBe)&&(a=UBe);const v="#"+i,b="i"+i,E="#"+b,S="d"+i,_="#"+S;let M=Tr("body");const F=w.securityLevel===GBe,R=w.securityLevel===KBe,B=w.fontFamily;if(f!==void 0){if(f&&(f.innerHTML=""),F){const Ct=QBt(Tr(f),b);M=Tr(Ct.nodes()[0].contentDocument.body),M.node().style.margin=0}else M=Tr(f);XBt(M,i,S,`font-family: ${B}`,YBe)}else{if(lRe(document,i,S,b),F){const Ct=QBt(Tr("body"),b);M=Tr(Ct.nodes()[0].contentDocument.body),M.node().style.margin=0}else M=Tr("body");XBt(M,i,S)}let z,Y;try{z=await Ygt(a,{title:g.title})}catch(Ct){z=new vBt("error"),Y=Ct}const nt=M.select(_).node(),ot=z.type,ft=nt.firstChild,wt=ft.firstChild,mt=(Ot=(V=z.renderer).getClasses)==null?void 0:Ot.call(V,a,z),ct=oRe(w,ot,mt,v),rt=document.createElement("style");rt.innerHTML=ct,ft.insertBefore(rt,wt);try{await z.renderer.draw(a,i,jFt,z)}catch(Ct){throw yPe.draw(a,i,jFt),Ct}const it=M.select(`${_} svg`),gt=(jt=(It=z.db).getAccTitle)==null?void 0:jt.call(It),Q=(Ft=(xt=z.db).getAccDescription)==null?void 0:Ft.call(xt);dRe(ot,it,gt,Q),M.select(`[id="${i}"]`).selectAll("foreignobject > *").attr("xmlns",XBe);let dt=M.select(_).node().innerHTML;if(Kt.debug("config.arrowMarkerAbsolute",w.arrowMarkerAbsolute),dt=cRe(dt,F,j1(w.arrowMarkerAbsolute)),F){const Ct=M.select(_+" svg").node();dt=uRe(dt,Ct)}else R||(dt=QL.sanitize(dt,{ADD_TAGS:rRe,ADD_ATTR:iRe}));if(APe(),Y)throw Y;const yt=Tr(F?E:_).node();return yt&&"remove"in yt&&yt.remove(),{svg:dt,bindFunctions:z.db.bindFunctions}};function fRe(i={}){var f;i!=null&&i.fontFamily&&!((f=i.themeVariables)!=null&&f.fontFamily)&&(i.themeVariables||(i.themeVariables={}),i.themeVariables.fontFamily=i.fontFamily),zNe(i),i!=null&&i.theme&&i.theme in Lx?i.themeVariables=Lx[i.theme].getThemeVariables(i.themeVariables):i&&(i.themeVariables=Lx.default.getThemeVariables(i.themeVariables));const a=typeof i=="object"?$Ne(i):zFt();d0t(a.logLevel),Rgt()}const Ygt=(i,a={})=>{const{code:f}=KBt(i);return _Pe(f,a)};function dRe(i,a,f,g){WPe(a,i),YPe(a,f,g,a.attr("id"))}const S9=Object.freeze({render:hRe,parse:sRe,getDiagramFromText:Ygt,initialize:fRe,getConfig:o1,setConfig:qFt,getSiteConfig:zFt,updateSiteConfig:qNe,reset:()=>{wY()},globalReset:()=>{wY(cD)},defaultConfig:cD});d0t(o1().logLevel),wY(o1());const gRe=async()=>{Kt.debug("Loading registered diagrams");const a=(await Promise.allSettled(Object.entries(JL).map(async([f,{detector:g,loader:w}])=>{if(w)try{Bgt(f)}catch{try{const{diagram:b,id:E}=await w();yY(E,b,g)}catch(b){throw Kt.error(`Failed to load external diagram with key ${f}. Removing from detectors.`),delete JL[f],b}}}))).filter(f=>f.status==="rejected");if(a.length>0){Kt.error(`Failed to load ${a.length} external diagrams`);for(const f of a)Kt.error(f);throw new Error(`Failed to load ${a.length} external diagrams`)}},pRe=(i,a,f)=>{Kt.warn(i),DFt(i)?(f&&f(i.str,i.hash),a.push({...i,message:i.str,error:i})):(f&&f(i),i instanceof Error&&a.push({str:i.message,message:i.message,hash:i.name,error:i}))},JBt=async function(i={querySelector:".mermaid"}){try{await bRe(i)}catch(a){if(DFt(a)&&Kt.error(a.str),_2.parseError&&_2.parseError(a),!i.suppressErrors)throw Kt.error("Use the suppressErrors option to suppress these errors"),a}},bRe=async function({postRenderCallback:i,querySelector:a,nodes:f}={querySelector:".mermaid"}){const g=S9.getConfig();Kt.debug(`${i?"":"No "}Callback function found`);let w;if(f)w=f;else if(a)w=document.querySelectorAll(a);else throw new Error("Nodes and querySelector are both undefined");Kt.debug(`Found ${w.length} diagrams`),(g==null?void 0:g.startOnLoad)!==void 0&&(Kt.debug("Start On Load: "+(g==null?void 0:g.startOnLoad)),S9.updateSiteConfig({startOnLoad:g==null?void 0:g.startOnLoad}));const v=new uo.InitIDGenerator(g.deterministicIds,g.deterministicIDSeed);let b;const E=[];for(const S of Array.from(w)){Kt.info("Rendering diagram: "+S.id);/*! Check if previously processed */if(S.getAttribute("data-processed"))continue;S.setAttribute("data-processed","true");const _=`mermaid-${v.next()}`;b=S.innerHTML,b=BL(uo.entityDecode(b)).trim().replace(//gi,"
    ");const M=uo.detectInit(b);M&&Kt.debug("Detected early reinit: ",M);try{const{svg:F,bindFunctions:R}=await nRt(_,b,S);S.innerHTML=F,i&&await i(_),R&&R(S)}catch(F){pRe(F,E,_2.parseError)}}if(E.length>0)throw E[0]},ZBt=function(i){S9.initialize(i)},wRe=async function(i,a,f){Kt.warn("mermaid.init is deprecated. Please use run instead."),i&&ZBt(i);const g={postRenderCallback:f,querySelector:".mermaid"};typeof a=="string"?g.querySelector=a:a&&(a instanceof HTMLElement?g.nodes=[a]:g.nodes=a),await JBt(g)},mRe=async(i,{lazyLoad:a=!0}={})=>{UPt(...i),a===!1&&await gRe()},tRt=function(){if(_2.startOnLoad){const{startOnLoad:i}=S9.getConfig();i&&_2.run().catch(a=>Kt.error("Mermaid failed to initialize",a))}};if(typeof document<"u"){/*! + * Wait for document loaded before starting the execution + */window.addEventListener("load",tRt,!1)}const vRe=function(i){_2.parseError=i},CY=[];let Xgt=!1;const eRt=async()=>{if(!Xgt){for(Xgt=!0;CY.length>0;){const i=CY.shift();if(i)try{await i()}catch(a){Kt.error("Error executing queue",a)}}Xgt=!1}},yRe=async(i,a)=>new Promise((f,g)=>{const w=()=>new Promise((v,b)=>{S9.parse(i,a).then(E=>{v(E),f(E)},E=>{var S;Kt.error("Error parsing",E),(S=_2.parseError)==null||S.call(_2,E),b(E),g(E)})});CY.push(w),eRt().catch(g)}),nRt=(i,a,f)=>new Promise((g,w)=>{const v=()=>new Promise((b,E)=>{S9.render(i,a,f).then(S=>{b(S),g(S)},S=>{var _;Kt.error("Error parsing",S),(_=_2.parseError)==null||_.call(_2,S),E(S),w(S)})});CY.push(v),eRt().catch(w)}),_2={startOnLoad:!0,mermaidAPI:S9,parse:yRe,render:nRt,init:wRe,run:JBt,registerExternalDiagrams:mRe,initialize:ZBt,parseError:void 0,contentLoaded:tRt,setParseErrorHandler:vRe,detectType:QW};var SY=function(){var i=function(br,An,Nn,Bn){for(Nn=Nn||{},Bn=br.length;Bn--;Nn[br[Bn]]=An);return Nn},a=[1,24],f=[1,25],g=[1,26],w=[1,27],v=[1,28],b=[1,63],E=[1,64],S=[1,65],_=[1,66],M=[1,67],F=[1,68],R=[1,69],B=[1,29],z=[1,30],Y=[1,31],nt=[1,32],ot=[1,33],ft=[1,34],wt=[1,35],mt=[1,36],ct=[1,37],rt=[1,38],it=[1,39],gt=[1,40],Q=[1,41],dt=[1,42],K=[1,43],yt=[1,44],V=[1,45],Ot=[1,46],It=[1,47],jt=[1,48],xt=[1,50],Ft=[1,51],Ct=[1,52],kt=[1,53],Gt=[1,54],Fe=[1,55],Mt=[1,56],pn=[1,57],Ae=[1,58],ye=[1,59],tn=[1,60],sn=[14,42],be=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Ne=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],Xt=[1,82],_e=[1,83],xe=[1,84],Mn=[1,85],ce=[12,14,42],Br=[12,14,33,42],we=[12,14,33,42,76,77,79,80],Fi=[12,33],mi=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],ga={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:function(An,Nn,Bn,ke,pe,Je,an){var xn=Je.length-1;switch(pe){case 3:ke.setDirection("TB");break;case 4:ke.setDirection("BT");break;case 5:ke.setDirection("RL");break;case 6:ke.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:ke.setC4Type(Je[xn-3]);break;case 19:ke.setTitle(Je[xn].substring(6)),this.$=Je[xn].substring(6);break;case 20:ke.setAccDescription(Je[xn].substring(15)),this.$=Je[xn].substring(15);break;case 21:this.$=Je[xn].trim(),ke.setTitle(this.$);break;case 22:case 23:this.$=Je[xn].trim(),ke.setAccDescription(this.$);break;case 28:case 29:Je[xn].splice(2,0,"ENTERPRISE"),ke.addPersonOrSystemBoundary(...Je[xn]),this.$=Je[xn];break;case 30:ke.addPersonOrSystemBoundary(...Je[xn]),this.$=Je[xn];break;case 31:Je[xn].splice(2,0,"CONTAINER"),ke.addContainerBoundary(...Je[xn]),this.$=Je[xn];break;case 32:ke.addDeploymentNode("node",...Je[xn]),this.$=Je[xn];break;case 33:ke.addDeploymentNode("nodeL",...Je[xn]),this.$=Je[xn];break;case 34:ke.addDeploymentNode("nodeR",...Je[xn]),this.$=Je[xn];break;case 35:ke.popBoundaryParseStack();break;case 39:ke.addPersonOrSystem("person",...Je[xn]),this.$=Je[xn];break;case 40:ke.addPersonOrSystem("external_person",...Je[xn]),this.$=Je[xn];break;case 41:ke.addPersonOrSystem("system",...Je[xn]),this.$=Je[xn];break;case 42:ke.addPersonOrSystem("system_db",...Je[xn]),this.$=Je[xn];break;case 43:ke.addPersonOrSystem("system_queue",...Je[xn]),this.$=Je[xn];break;case 44:ke.addPersonOrSystem("external_system",...Je[xn]),this.$=Je[xn];break;case 45:ke.addPersonOrSystem("external_system_db",...Je[xn]),this.$=Je[xn];break;case 46:ke.addPersonOrSystem("external_system_queue",...Je[xn]),this.$=Je[xn];break;case 47:ke.addContainer("container",...Je[xn]),this.$=Je[xn];break;case 48:ke.addContainer("container_db",...Je[xn]),this.$=Je[xn];break;case 49:ke.addContainer("container_queue",...Je[xn]),this.$=Je[xn];break;case 50:ke.addContainer("external_container",...Je[xn]),this.$=Je[xn];break;case 51:ke.addContainer("external_container_db",...Je[xn]),this.$=Je[xn];break;case 52:ke.addContainer("external_container_queue",...Je[xn]),this.$=Je[xn];break;case 53:ke.addComponent("component",...Je[xn]),this.$=Je[xn];break;case 54:ke.addComponent("component_db",...Je[xn]),this.$=Je[xn];break;case 55:ke.addComponent("component_queue",...Je[xn]),this.$=Je[xn];break;case 56:ke.addComponent("external_component",...Je[xn]),this.$=Je[xn];break;case 57:ke.addComponent("external_component_db",...Je[xn]),this.$=Je[xn];break;case 58:ke.addComponent("external_component_queue",...Je[xn]),this.$=Je[xn];break;case 60:ke.addRel("rel",...Je[xn]),this.$=Je[xn];break;case 61:ke.addRel("birel",...Je[xn]),this.$=Je[xn];break;case 62:ke.addRel("rel_u",...Je[xn]),this.$=Je[xn];break;case 63:ke.addRel("rel_d",...Je[xn]),this.$=Je[xn];break;case 64:ke.addRel("rel_l",...Je[xn]),this.$=Je[xn];break;case 65:ke.addRel("rel_r",...Je[xn]),this.$=Je[xn];break;case 66:ke.addRel("rel_b",...Je[xn]),this.$=Je[xn];break;case 67:Je[xn].splice(0,1),ke.addRel("rel",...Je[xn]),this.$=Je[xn];break;case 68:ke.updateElStyle("update_el_style",...Je[xn]),this.$=Je[xn];break;case 69:ke.updateRelStyle("update_rel_style",...Je[xn]),this.$=Je[xn];break;case 70:ke.updateLayoutConfig("update_layout_config",...Je[xn]),this.$=Je[xn];break;case 71:this.$=[Je[xn]];break;case 72:Je[xn].unshift(Je[xn-1]),this.$=Je[xn];break;case 73:case 75:this.$=Je[xn].trim();break;case 74:let qa={};qa[Je[xn-1].trim()]=Je[xn].trim(),this.$=qa;break;case 76:this.$="";break}},table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:70,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:71,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:72,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{13:73,19:20,20:21,21:22,22:a,23:f,24:g,26:w,28:v,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{14:[1,74]},i(sn,[2,13],{43:23,29:49,30:61,32:62,20:75,34:b,36:E,37:S,38:_,39:M,40:F,41:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn}),i(sn,[2,14]),i(be,[2,16],{12:[1,76]}),i(sn,[2,36],{12:[1,77]}),i(Ne,[2,19]),i(Ne,[2,20]),{25:[1,78]},{27:[1,79]},i(Ne,[2,23]),{35:80,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:86,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:87,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:88,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:89,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:90,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:91,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:92,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:93,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:94,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:95,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:96,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:97,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:98,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:99,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:100,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:101,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:102,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:103,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:104,75:81,76:Xt,77:_e,79:xe,80:Mn},i(ce,[2,59]),{35:105,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:106,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:107,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:108,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:109,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:110,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:111,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:112,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:113,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:114,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:115,75:81,76:Xt,77:_e,79:xe,80:Mn},{20:116,29:49,30:61,32:62,34:b,36:E,37:S,38:_,39:M,40:F,41:R,43:23,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn},{12:[1,118],33:[1,117]},{35:119,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:120,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:121,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:122,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:123,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:124,75:81,76:Xt,77:_e,79:xe,80:Mn},{35:125,75:81,76:Xt,77:_e,79:xe,80:Mn},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},i(sn,[2,15]),i(be,[2,17],{21:22,19:130,22:a,23:f,24:g,26:w,28:v}),i(sn,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:a,23:f,24:g,26:w,28:v,34:b,36:E,37:S,38:_,39:M,40:F,41:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt,51:mt,52:ct,53:rt,54:it,55:gt,56:Q,57:dt,58:K,59:yt,60:V,61:Ot,62:It,63:jt,64:xt,65:Ft,66:Ct,67:kt,68:Gt,69:Fe,70:Mt,71:pn,72:Ae,73:ye,74:tn}),i(Ne,[2,21]),i(Ne,[2,22]),i(ce,[2,39]),i(Br,[2,71],{75:81,35:132,76:Xt,77:_e,79:xe,80:Mn}),i(we,[2,73]),{78:[1,133]},i(we,[2,75]),i(we,[2,76]),i(ce,[2,40]),i(ce,[2,41]),i(ce,[2,42]),i(ce,[2,43]),i(ce,[2,44]),i(ce,[2,45]),i(ce,[2,46]),i(ce,[2,47]),i(ce,[2,48]),i(ce,[2,49]),i(ce,[2,50]),i(ce,[2,51]),i(ce,[2,52]),i(ce,[2,53]),i(ce,[2,54]),i(ce,[2,55]),i(ce,[2,56]),i(ce,[2,57]),i(ce,[2,58]),i(ce,[2,60]),i(ce,[2,61]),i(ce,[2,62]),i(ce,[2,63]),i(ce,[2,64]),i(ce,[2,65]),i(ce,[2,66]),i(ce,[2,67]),i(ce,[2,68]),i(ce,[2,69]),i(ce,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},i(Fi,[2,28]),i(Fi,[2,29]),i(Fi,[2,30]),i(Fi,[2,31]),i(Fi,[2,32]),i(Fi,[2,33]),i(Fi,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},i(be,[2,18]),i(sn,[2,38]),i(Br,[2,72]),i(we,[2,74]),i(ce,[2,24]),i(ce,[2,35]),i(mi,[2,25]),i(mi,[2,26],{12:[1,138]}),i(mi,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:function(An,Nn){if(Nn.recoverable)this.trace(An);else{var Bn=new Error(An);throw Bn.hash=Nn,Bn}},parse:function(An){var Nn=this,Bn=[0],ke=[],pe=[null],Je=[],an=this.table,xn="",qa=0,xo=0,ko=2,va=1,Ha=Je.slice.call(arguments,1),ds=Object.create(this.lexer),Fu={yy:{}};for(var Zs in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Zs)&&(Fu.yy[Zs]=this.yy[Zs]);ds.setInput(An,Fu.yy),Fu.yy.lexer=ds,Fu.yy.parser=this,typeof ds.yylloc>"u"&&(ds.yylloc={});var d1=ds.yylloc;Je.push(d1);var I2=ds.options&&ds.options.ranges;typeof Fu.yy.parseError=="function"?this.parseError=Fu.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ll(){var Zl;return Zl=ke.pop()||ds.lex()||va,typeof Zl!="number"&&(Zl instanceof Array&&(ke=Zl,Zl=ke.pop()),Zl=Nn.symbols_[Zl]||Zl),Zl}for(var Ic,wc,Ea,gu,ta={},fo,mc,ca,ya;;){if(wc=Bn[Bn.length-1],this.defaultActions[wc]?Ea=this.defaultActions[wc]:((Ic===null||typeof Ic>"u")&&(Ic=ll()),Ea=an[wc]&&an[wc][Ic]),typeof Ea>"u"||!Ea.length||!Ea[0]){var ea="";ya=[];for(fo in an[wc])this.terminals_[fo]&&fo>ko&&ya.push("'"+this.terminals_[fo]+"'");ds.showPosition?ea="Parse error on line "+(qa+1)+`: +`+ds.showPosition()+` +Expecting `+ya.join(", ")+", got '"+(this.terminals_[Ic]||Ic)+"'":ea="Parse error on line "+(qa+1)+": Unexpected "+(Ic==va?"end of input":"'"+(this.terminals_[Ic]||Ic)+"'"),this.parseError(ea,{text:ds.match,token:this.terminals_[Ic]||Ic,line:ds.yylineno,loc:d1,expected:ya})}if(Ea[0]instanceof Array&&Ea.length>1)throw new Error("Parse Error: multiple actions possible at state: "+wc+", token: "+Ic);switch(Ea[0]){case 1:Bn.push(Ic),pe.push(ds.yytext),Je.push(ds.yylloc),Bn.push(Ea[1]),Ic=null,xo=ds.yyleng,xn=ds.yytext,qa=ds.yylineno,d1=ds.yylloc;break;case 2:if(mc=this.productions_[Ea[1]][1],ta.$=pe[pe.length-mc],ta._$={first_line:Je[Je.length-(mc||1)].first_line,last_line:Je[Je.length-1].last_line,first_column:Je[Je.length-(mc||1)].first_column,last_column:Je[Je.length-1].last_column},I2&&(ta._$.range=[Je[Je.length-(mc||1)].range[0],Je[Je.length-1].range[1]]),gu=this.performAction.apply(ta,[xn,xo,qa,Fu.yy,Ea[1],pe,Je].concat(Ha)),typeof gu<"u")return gu;mc&&(Bn=Bn.slice(0,-1*mc*2),pe=pe.slice(0,-1*mc),Je=Je.slice(0,-1*mc)),Bn.push(this.productions_[Ea[1]][0]),pe.push(ta.$),Je.push(ta._$),ca=an[Bn[Bn.length-2]][Bn[Bn.length-1]],Bn.push(ca);break;case 3:return!0}}return!0}},Ss=function(){var br={EOF:1,parseError:function(Nn,Bn){if(this.yy.parser)this.yy.parser.parseError(Nn,Bn);else throw new Error(Nn)},setInput:function(An,Nn){return this.yy=Nn||this.yy||{},this._input=An,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var An=this._input[0];this.yytext+=An,this.yyleng++,this.offset++,this.match+=An,this.matched+=An;var Nn=An.match(/(?:\r\n?|\n).*/g);return Nn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),An},unput:function(An){var Nn=An.length,Bn=An.split(/(?:\r\n?|\n)/g);this._input=An+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Nn),this.offset-=Nn;var ke=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Bn.length-1&&(this.yylineno-=Bn.length-1);var pe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Bn?(Bn.length===ke.length?this.yylloc.first_column:0)+ke[ke.length-Bn.length].length-Bn[0].length:this.yylloc.first_column-Nn},this.options.ranges&&(this.yylloc.range=[pe[0],pe[0]+this.yyleng-Nn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(An){this.unput(this.match.slice(An))},pastInput:function(){var An=this.matched.substr(0,this.matched.length-this.match.length);return(An.length>20?"...":"")+An.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var An=this.match;return An.length<20&&(An+=this._input.substr(0,20-An.length)),(An.substr(0,20)+(An.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var An=this.pastInput(),Nn=new Array(An.length+1).join("-");return An+this.upcomingInput()+` +`+Nn+"^"},test_match:function(An,Nn){var Bn,ke,pe;if(this.options.backtrack_lexer&&(pe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(pe.yylloc.range=this.yylloc.range.slice(0))),ke=An[0].match(/(?:\r\n?|\n).*/g),ke&&(this.yylineno+=ke.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:ke?ke[ke.length-1].length-ke[ke.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+An[0].length},this.yytext+=An[0],this.match+=An[0],this.matches=An,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(An[0].length),this.matched+=An[0],Bn=this.performAction.call(this,this.yy,this,Nn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Bn)return Bn;if(this._backtrack){for(var Je in pe)this[Je]=pe[Je];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var An,Nn,Bn,ke;this._more||(this.yytext="",this.match="");for(var pe=this._currentRules(),Je=0;JeNn[0].length)){if(Nn=Bn,ke=Je,this.options.backtrack_lexer){if(An=this.test_match(Bn,pe[Je]),An!==!1)return An;if(this._backtrack){Nn=!1;continue}else return!1}else if(!this.options.flex)break}return Nn?(An=this.test_match(Nn,pe[ke]),An!==!1?An:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Nn=this.next();return Nn||this.lex()},begin:function(Nn){this.conditionStack.push(Nn)},popState:function(){var Nn=this.conditionStack.length-1;return Nn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Nn){return Nn=this.conditionStack.length-1-Math.abs(Nn||0),Nn>=0?this.conditionStack[Nn]:"INITIAL"},pushState:function(Nn){this.begin(Nn)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(Nn,Bn,ke,pe){switch(ke){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:break;case 14:c;break;case 15:return 12;case 16:break;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:return this.begin("node"),39;case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:return this.begin("rel_u"),66;case 53:return this.begin("rel_u"),66;case 54:return this.begin("rel_d"),67;case 55:return this.begin("rel_d"),67;case 56:return this.begin("rel_l"),68;case 57:return this.begin("rel_l"),68;case 58:return this.begin("rel_r"),69;case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:this.popState(),this.popState();break;case 69:return 80;case 70:break;case 71:return 80;case 72:this.begin("string");break;case 73:this.popState();break;case 74:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 79:this.popState(),this.popState();break;case 80:return"STR";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}};return br}();ga.lexer=Ss;function za(){this.yy={}}return za.prototype=ga,ga.Parser=za,new za}();SY.parser=SY;const xRe=SY;let Wv=[],y8=[""],ep="global",Yv="",i4=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],jF=[],Qgt="",Jgt=!1,_Y=4,AY=2;var rRt;const kRe=function(){return rRt},ERe=function(i){rRt=Ef(i,Re())},TRe=function(i,a,f,g,w,v,b,E,S){if(i==null||a===void 0||a===null||f===void 0||f===null||g===void 0||g===null)return;let _={};const M=jF.find(F=>F.from===a&&F.to===f);if(M?_=M:jF.push(_),_.type=i,_.from=a,_.to=f,_.label={text:g},w==null)_.techn={text:""};else if(typeof w=="object"){let[F,R]=Object.entries(w)[0];_[F]={text:R}}else _.techn={text:w};if(v==null)_.descr={text:""};else if(typeof v=="object"){let[F,R]=Object.entries(v)[0];_[F]={text:R}}else _.descr={text:v};if(typeof b=="object"){let[F,R]=Object.entries(b)[0];_[F]=R}else _.sprite=b;if(typeof E=="object"){let[F,R]=Object.entries(E)[0];_[F]=R}else _.tags=E;if(typeof S=="object"){let[F,R]=Object.entries(S)[0];_[F]=R}else _.link=S;_.wrap=x8()},CRe=function(i,a,f,g,w,v,b){if(a===null||f===null)return;let E={};const S=Wv.find(_=>_.alias===a);if(S&&a===S.alias?E=S:(E.alias=a,Wv.push(E)),f==null?E.label={text:""}:E.label={text:f},g==null)E.descr={text:""};else if(typeof g=="object"){let[_,M]=Object.entries(g)[0];E[_]={text:M}}else E.descr={text:g};if(typeof w=="object"){let[_,M]=Object.entries(w)[0];E[_]=M}else E.sprite=w;if(typeof v=="object"){let[_,M]=Object.entries(v)[0];E[_]=M}else E.tags=v;if(typeof b=="object"){let[_,M]=Object.entries(b)[0];E[_]=M}else E.link=b;E.typeC4Shape={text:i},E.parentBoundary=ep,E.wrap=x8()},SRe=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let S={};const _=Wv.find(M=>M.alias===a);if(_&&a===_.alias?S=_:(S.alias=a,Wv.push(S)),f==null?S.label={text:""}:S.label={text:f},g==null)S.techn={text:""};else if(typeof g=="object"){let[M,F]=Object.entries(g)[0];S[M]={text:F}}else S.techn={text:g};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[M,F]=Object.entries(w)[0];S[M]={text:F}}else S.descr={text:w};if(typeof v=="object"){let[M,F]=Object.entries(v)[0];S[M]=F}else S.sprite=v;if(typeof b=="object"){let[M,F]=Object.entries(b)[0];S[M]=F}else S.tags=b;if(typeof E=="object"){let[M,F]=Object.entries(E)[0];S[M]=F}else S.link=E;S.wrap=x8(),S.typeC4Shape={text:i},S.parentBoundary=ep},_Re=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let S={};const _=Wv.find(M=>M.alias===a);if(_&&a===_.alias?S=_:(S.alias=a,Wv.push(S)),f==null?S.label={text:""}:S.label={text:f},g==null)S.techn={text:""};else if(typeof g=="object"){let[M,F]=Object.entries(g)[0];S[M]={text:F}}else S.techn={text:g};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[M,F]=Object.entries(w)[0];S[M]={text:F}}else S.descr={text:w};if(typeof v=="object"){let[M,F]=Object.entries(v)[0];S[M]=F}else S.sprite=v;if(typeof b=="object"){let[M,F]=Object.entries(b)[0];S[M]=F}else S.tags=b;if(typeof E=="object"){let[M,F]=Object.entries(E)[0];S[M]=F}else S.link=E;S.wrap=x8(),S.typeC4Shape={text:i},S.parentBoundary=ep},ARe=function(i,a,f,g,w){if(i===null||a===null)return;let v={};const b=i4.find(E=>E.alias===i);if(b&&i===b.alias?v=b:(v.alias=i,i4.push(v)),a==null?v.label={text:""}:v.label={text:a},f==null)v.type={text:"system"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];v[E]={text:S}}else v.type={text:f};if(typeof g=="object"){let[E,S]=Object.entries(g)[0];v[E]=S}else v.tags=g;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];v[E]=S}else v.link=w;v.parentBoundary=ep,v.wrap=x8(),Yv=ep,ep=i,y8.push(Yv)},LRe=function(i,a,f,g,w){if(i===null||a===null)return;let v={};const b=i4.find(E=>E.alias===i);if(b&&i===b.alias?v=b:(v.alias=i,i4.push(v)),a==null?v.label={text:""}:v.label={text:a},f==null)v.type={text:"container"};else if(typeof f=="object"){let[E,S]=Object.entries(f)[0];v[E]={text:S}}else v.type={text:f};if(typeof g=="object"){let[E,S]=Object.entries(g)[0];v[E]=S}else v.tags=g;if(typeof w=="object"){let[E,S]=Object.entries(w)[0];v[E]=S}else v.link=w;v.parentBoundary=ep,v.wrap=x8(),Yv=ep,ep=i,y8.push(Yv)},DRe=function(i,a,f,g,w,v,b,E){if(a===null||f===null)return;let S={};const _=i4.find(M=>M.alias===a);if(_&&a===_.alias?S=_:(S.alias=a,i4.push(S)),f==null?S.label={text:""}:S.label={text:f},g==null)S.type={text:"node"};else if(typeof g=="object"){let[M,F]=Object.entries(g)[0];S[M]={text:F}}else S.type={text:g};if(w==null)S.descr={text:""};else if(typeof w=="object"){let[M,F]=Object.entries(w)[0];S[M]={text:F}}else S.descr={text:w};if(typeof b=="object"){let[M,F]=Object.entries(b)[0];S[M]=F}else S.tags=b;if(typeof E=="object"){let[M,F]=Object.entries(E)[0];S[M]=F}else S.link=E;S.nodeType=i,S.parentBoundary=ep,S.wrap=x8(),Yv=ep,ep=a,y8.push(Yv)},MRe=function(){ep=Yv,y8.pop(),Yv=y8.pop(),y8.push(Yv)},IRe=function(i,a,f,g,w,v,b,E,S,_,M){let F=Wv.find(R=>R.alias===a);if(!(F===void 0&&(F=i4.find(R=>R.alias===a),F===void 0))){if(f!=null)if(typeof f=="object"){let[R,B]=Object.entries(f)[0];F[R]=B}else F.bgColor=f;if(g!=null)if(typeof g=="object"){let[R,B]=Object.entries(g)[0];F[R]=B}else F.fontColor=g;if(w!=null)if(typeof w=="object"){let[R,B]=Object.entries(w)[0];F[R]=B}else F.borderColor=w;if(v!=null)if(typeof v=="object"){let[R,B]=Object.entries(v)[0];F[R]=B}else F.shadowing=v;if(b!=null)if(typeof b=="object"){let[R,B]=Object.entries(b)[0];F[R]=B}else F.shape=b;if(E!=null)if(typeof E=="object"){let[R,B]=Object.entries(E)[0];F[R]=B}else F.sprite=E;if(S!=null)if(typeof S=="object"){let[R,B]=Object.entries(S)[0];F[R]=B}else F.techn=S;if(_!=null)if(typeof _=="object"){let[R,B]=Object.entries(_)[0];F[R]=B}else F.legendText=_;if(M!=null)if(typeof M=="object"){let[R,B]=Object.entries(M)[0];F[R]=B}else F.legendSprite=M}},ORe=function(i,a,f,g,w,v,b){const E=jF.find(S=>S.from===a&&S.to===f);if(E!==void 0){if(g!=null)if(typeof g=="object"){let[S,_]=Object.entries(g)[0];E[S]=_}else E.textColor=g;if(w!=null)if(typeof w=="object"){let[S,_]=Object.entries(w)[0];E[S]=_}else E.lineColor=w;if(v!=null)if(typeof v=="object"){let[S,_]=Object.entries(v)[0];E[S]=parseInt(_)}else E.offsetX=parseInt(v);if(b!=null)if(typeof b=="object"){let[S,_]=Object.entries(b)[0];E[S]=parseInt(_)}else E.offsetY=parseInt(b)}},NRe=function(i,a,f){let g=_Y,w=AY;if(typeof a=="object"){const v=Object.values(a)[0];g=parseInt(v)}else g=parseInt(a);if(typeof f=="object"){const v=Object.values(f)[0];w=parseInt(v)}else w=parseInt(f);g>=1&&(_Y=g),w>=1&&(AY=w)},PRe=function(){return _Y},FRe=function(){return AY},BRe=function(){return ep},RRe=function(){return Yv},iRt=function(i){return i==null?Wv:Wv.filter(a=>a.parentBoundary===i)},jRe=function(i){return Wv.find(a=>a.alias===i)},$Re=function(i){return Object.keys(iRt(i))},zRe=function(i){return i==null?i4:i4.filter(a=>a.parentBoundary===i)},qRe=function(){return jF},HRe=function(){return Qgt},VRe=function(i){Jgt=i},x8=function(){return Jgt},Zgt={addPersonOrSystem:CRe,addPersonOrSystemBoundary:ARe,addContainer:SRe,addContainerBoundary:LRe,addComponent:_Re,addDeploymentNode:DRe,popBoundaryParseStack:MRe,addRel:TRe,updateElStyle:IRe,updateRelStyle:ORe,updateLayoutConfig:NRe,autoWrap:x8,setWrap:VRe,getC4ShapeArray:iRt,getC4Shape:jRe,getC4ShapeKeys:$Re,getBoundarys:zRe,getCurrentBoundaryParse:BRe,getParentBoundaryParse:RRe,getRels:qRe,getTitle:HRe,getC4Type:kRe,getC4ShapeInRow:PRe,getC4BoundaryInRow:FRe,setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,getConfig:()=>Re().c4,clear:function(){Wv=[],i4=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],Yv="",ep="global",y8=[""],jF=[],y8=[""],Qgt="",Jgt=!1,_Y=4,AY=2},LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:function(i){Qgt=Ef(i,Re())},setC4Type:ERe},LY=(i,a)=>{const f=i.append("rect");if(f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),a.rx!==void 0&&f.attr("rx",a.rx),a.ry!==void 0&&f.attr("ry",a.ry),a.attrs!==void 0)for(const g in a.attrs)f.attr(g,a.attrs[g]);return a.class!==void 0&&f.attr("class",a.class),f},sRt=(i,a)=>{const f={x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,stroke:a.stroke,class:"rect"};LY(i,f).lower()},URe=(i,a)=>{const f=a.text.replace(xF," "),g=i.append("text");g.attr("x",a.x),g.attr("y",a.y),g.attr("class","legend"),g.style("text-anchor",a.anchor),a.class!==void 0&&g.attr("class",a.class);const w=g.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),g},GRe=(i,a,f,g)=>{const w=i.append("image");w.attr("x",a),w.attr("y",f);const v=h8(g);w.attr("xlink:href",v)},KRe=(i,a,f,g)=>{const w=i.append("use");w.attr("x",a),w.attr("y",f);const v=h8(g);w.attr("xlink:href",`#${v}`)},_9=()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0}),tpt=()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0}),ept=function(i,a){return LY(i,a)},aRt=function(i,a,f,g,w,v){const b=i.append("image");b.attr("width",a),b.attr("height",f),b.attr("x",g),b.attr("y",w);let E=v.startsWith("data:image/png;base64")?v:h8(v);b.attr("xlink:href",E)},WRe=(i,a,f)=>{const g=i.append("g");let w=0;for(let v of a){let b=v.textColor?v.textColor:"#444444",E=v.lineColor?v.lineColor:"#444444",S=v.offsetX?parseInt(v.offsetX):0,_=v.offsetY?parseInt(v.offsetY):0,M="";if(w===0){let R=g.append("line");R.attr("x1",v.startPoint.x),R.attr("y1",v.startPoint.y),R.attr("x2",v.endPoint.x),R.attr("y2",v.endPoint.y),R.attr("stroke-width","1"),R.attr("stroke",E),R.style("fill","none"),v.type!=="rel_b"&&R.attr("marker-end","url("+M+"#arrowhead)"),(v.type==="birel"||v.type==="rel_b")&&R.attr("marker-start","url("+M+"#arrowend)"),w=-1}else{let R=g.append("path");R.attr("fill","none").attr("stroke-width","1").attr("stroke",E).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",v.startPoint.x).replaceAll("starty",v.startPoint.y).replaceAll("controlx",v.startPoint.x+(v.endPoint.x-v.startPoint.x)/2-(v.endPoint.x-v.startPoint.x)/4).replaceAll("controly",v.startPoint.y+(v.endPoint.y-v.startPoint.y)/2).replaceAll("stopx",v.endPoint.x).replaceAll("stopy",v.endPoint.y)),v.type!=="rel_b"&&R.attr("marker-end","url("+M+"#arrowhead)"),(v.type==="birel"||v.type==="rel_b")&&R.attr("marker-start","url("+M+"#arrowend)")}let F=f.messageFont();Nx(f)(v.label.text,g,Math.min(v.startPoint.x,v.endPoint.x)+Math.abs(v.endPoint.x-v.startPoint.x)/2+S,Math.min(v.startPoint.y,v.endPoint.y)+Math.abs(v.endPoint.y-v.startPoint.y)/2+_,v.label.width,v.label.height,{fill:b},F),v.techn&&v.techn.text!==""&&(F=f.messageFont(),Nx(f)("["+v.techn.text+"]",g,Math.min(v.startPoint.x,v.endPoint.x)+Math.abs(v.endPoint.x-v.startPoint.x)/2+S,Math.min(v.startPoint.y,v.endPoint.y)+Math.abs(v.endPoint.y-v.startPoint.y)/2+f.messageFontSize+5+_,Math.max(v.label.width,v.techn.width),v.techn.height,{fill:b,"font-style":"italic"},F))}},YRe=function(i,a,f){const g=i.append("g");let w=a.bgColor?a.bgColor:"none",v=a.borderColor?a.borderColor:"#444444",b=a.fontColor?a.fontColor:"black",E={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};a.nodeType&&(E={"stroke-width":1});let S={x:a.x,y:a.y,fill:w,stroke:v,width:a.width,height:a.height,rx:2.5,ry:2.5,attrs:E};ept(g,S);let _=f.boundaryFont();_.fontWeight="bold",_.fontSize=_.fontSize+2,_.fontColor=b,Nx(f)(a.label.text,g,a.x,a.y+a.label.Y,a.width,a.height,{fill:"#444444"},_),a.type&&a.type.text!==""&&(_=f.boundaryFont(),_.fontColor=b,Nx(f)(a.type.text,g,a.x,a.y+a.type.Y,a.width,a.height,{fill:"#444444"},_)),a.descr&&a.descr.text!==""&&(_=f.boundaryFont(),_.fontSize=_.fontSize-2,_.fontColor=b,Nx(f)(a.descr.text,g,a.x,a.y+a.descr.Y,a.width,a.height,{fill:"#444444"},_))},XRe=function(i,a,f){var F;let g=a.bgColor?a.bgColor:f[a.typeC4Shape.text+"_bg_color"],w=a.borderColor?a.borderColor:f[a.typeC4Shape.text+"_border_color"],v=a.fontColor?a.fontColor:"#FFFFFF",b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(a.typeC4Shape.text){case"person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":b="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII=";break}const E=i.append("g");E.attr("class","person-man");const S=_9();switch(a.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":S.x=a.x,S.y=a.y,S.fill=g,S.width=a.width,S.height=a.height,S.stroke=w,S.rx=2.5,S.ry=2.5,S.attrs={"stroke-width":.5},ept(E,S);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":E.append("path").attr("fill",g).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2).replaceAll("height",a.height)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("half",a.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":E.append("path").attr("fill",g).attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",a.x).replaceAll("starty",a.y).replaceAll("width",a.width).replaceAll("half",a.height/2)),E.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",w).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",a.x+a.width).replaceAll("starty",a.y).replaceAll("half",a.height/2));break}let _=sje(f,a.typeC4Shape.text);switch(E.append("text").attr("fill",v).attr("font-family",_.fontFamily).attr("font-size",_.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",a.typeC4Shape.width).attr("x",a.x+a.width/2-a.typeC4Shape.width/2).attr("y",a.y+a.typeC4Shape.Y).text("<<"+a.typeC4Shape.text+">>"),a.typeC4Shape.text){case"person":case"external_person":aRt(E,48,48,a.x+a.width/2-24,a.y+a.image.Y,b);break}let M=f[a.typeC4Shape.text+"Font"]();return M.fontWeight="bold",M.fontSize=M.fontSize+2,M.fontColor=v,Nx(f)(a.label.text,E,a.x,a.y+a.label.Y,a.width,a.height,{fill:v},M),M=f[a.typeC4Shape.text+"Font"](),M.fontColor=v,a.techn&&((F=a.techn)==null?void 0:F.text)!==""?Nx(f)(a.techn.text,E,a.x,a.y+a.techn.Y,a.width,a.height,{fill:v,"font-style":"italic"},M):a.type&&a.type.text!==""&&Nx(f)(a.type.text,E,a.x,a.y+a.type.Y,a.width,a.height,{fill:v,"font-style":"italic"},M),a.descr&&a.descr.text!==""&&(M=f.personFont(),M.fontColor=v,Nx(f)(a.descr.text,E,a.x,a.y+a.descr.Y,a.width,a.height,{fill:v},M)),a.height},QRe=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},JRe=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},ZRe=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},tje=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},eje=function(i){i.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")},nje=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},rje=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},ije=function(i){const f=i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);f.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),f.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")},sje=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),Nx=function(){function i(w,v,b,E,S,_,M){const F=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("text-anchor","middle").text(w);g(F,M)}function a(w,v,b,E,S,_,M,F){const{fontSize:R,fontFamily:B,fontWeight:z}=F,Y=w.split(ei.lineBreakRegex);for(let nt=0;nt=this.data.widthLimit||g>=this.data.widthLimit||this.nextData.cnt>oRt)&&(f=this.nextData.startx+a.margin+Cs.nextLinePaddingX,w=this.nextData.stopy+a.margin*2,this.nextData.stopx=g=f+a.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=v=w+a.height,this.nextData.cnt=1),a.x=f,a.y=w,this.updateVal(this.data,"startx",f,Math.min),this.updateVal(this.data,"starty",w,Math.min),this.updateVal(this.data,"stopx",g,Math.max),this.updateVal(this.data,"stopy",v,Math.max),this.updateVal(this.nextData,"startx",f,Math.min),this.updateVal(this.nextData,"starty",w,Math.min),this.updateVal(this.nextData,"stopx",g,Math.max),this.updateVal(this.nextData,"stopy",v,Math.max)}init(a){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},rpt(a.db.getConfig())}bumpLastMargin(a){this.data.stopx+=a,this.data.stopy+=a}}const rpt=function(i){Ld(Cs,i),i.fontFamily&&(Cs.personFontFamily=Cs.systemFontFamily=Cs.messageFontFamily=i.fontFamily),i.fontSize&&(Cs.personFontSize=Cs.systemFontSize=Cs.messageFontSize=i.fontSize),i.fontWeight&&(Cs.personFontWeight=Cs.systemFontWeight=Cs.messageFontWeight=i.fontWeight)},$F=(i,a)=>({fontFamily:i[a+"FontFamily"],fontSize:i[a+"FontSize"],fontWeight:i[a+"FontWeight"]}),IY=i=>({fontFamily:i.boundaryFontFamily,fontSize:i.boundaryFontSize,fontWeight:i.boundaryFontWeight}),aje=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight});function Xv(i,a,f,g,w){if(!a[i].width)if(f)a[i].text=LFt(a[i].text,w,g),a[i].textLines=a[i].text.split(ei.lineBreakRegex).length,a[i].width=w,a[i].height=Tgt(a[i].text,g);else{let v=a[i].text.split(ei.lineBreakRegex);a[i].textLines=v.length;let b=0;a[i].height=0,a[i].width=0;for(const E of v)a[i].width=Math.max(n4(E,g),a[i].width),b=Tgt(E,g),a[i].height=a[i].height+b}}const uRt=function(i,a,f){a.x=f.data.startx,a.y=f.data.starty,a.width=f.data.stopx-f.data.startx,a.height=f.data.stopy-f.data.starty,a.label.y=Cs.c4ShapeMargin-35;let g=a.wrap&&Cs.wrap,w=IY(Cs);w.fontSize=w.fontSize+2,w.fontWeight="bold";let v=n4(a.label.text,w);Xv("label",a,g,w,v),s4.drawBoundary(i,a,Cs)},lRt=function(i,a,f,g){let w=0;for(const v of g){w=0;const b=f[v];let E=$F(Cs,b.typeC4Shape.text);switch(E.fontSize=E.fontSize-2,b.typeC4Shape.width=n4("«"+b.typeC4Shape.text+"»",E),b.typeC4Shape.height=E.fontSize+2,b.typeC4Shape.Y=Cs.c4ShapePadding,w=b.typeC4Shape.Y+b.typeC4Shape.height-4,b.image={width:0,height:0,Y:0},b.typeC4Shape.text){case"person":case"external_person":b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height;break}b.sprite&&(b.image.width=48,b.image.height=48,b.image.Y=w,w=b.image.Y+b.image.height);let S=b.wrap&&Cs.wrap,_=Cs.width-Cs.c4ShapePadding*2,M=$F(Cs,b.typeC4Shape.text);if(M.fontSize=M.fontSize+2,M.fontWeight="bold",Xv("label",b,S,M,_),b.label.Y=w+8,w=b.label.Y+b.label.height,b.type&&b.type.text!==""){b.type.text="["+b.type.text+"]";let B=$F(Cs,b.typeC4Shape.text);Xv("type",b,S,B,_),b.type.Y=w+5,w=b.type.Y+b.type.height}else if(b.techn&&b.techn.text!==""){b.techn.text="["+b.techn.text+"]";let B=$F(Cs,b.techn.text);Xv("techn",b,S,B,_),b.techn.Y=w+5,w=b.techn.Y+b.techn.height}let F=w,R=b.label.width;if(b.descr&&b.descr.text!==""){let B=$F(Cs,b.typeC4Shape.text);Xv("descr",b,S,B,_),b.descr.Y=w+20,w=b.descr.Y+b.descr.height,R=Math.max(b.label.width,b.descr.width),F=w-b.descr.textLines*5}R=R+Cs.c4ShapePadding,b.width=Math.max(b.width||Cs.width,R,Cs.width),b.height=Math.max(b.height||Cs.height,F,Cs.height),b.margin=b.margin||Cs.c4ShapeMargin,i.insert(b),s4.drawC4Shape(a,b,Cs)}i.bumpLastMargin(Cs.c4ShapeMargin)};let Jw=class{constructor(a,f){this.x=a,this.y=f}},hRt=function(i,a){let f=i.x,g=i.y,w=a.x,v=a.y,b=f+i.width/2,E=g+i.height/2,S=Math.abs(f-w),_=Math.abs(g-v),M=_/S,F=i.height/i.width,R=null;return g==v&&fw?R=new Jw(f,E):f==w&&gv&&(R=new Jw(b,g)),f>w&&g=M?R=new Jw(f,E+M*i.width/2):R=new Jw(b-S/_*i.height/2,g+i.height):f=M?R=new Jw(f+i.width,E+M*i.width/2):R=new Jw(b+S/_*i.height/2,g+i.height):fv?F>=M?R=new Jw(f+i.width,E-M*i.width/2):R=new Jw(b+i.height/2*S/_,g):f>w&&g>v&&(F>=M?R=new Jw(f,E-i.width/2*M):R=new Jw(b-i.height/2*S/_,g)),R},oje=function(i,a){let f={x:0,y:0};f.x=a.x+a.width/2,f.y=a.y+a.height/2;let g=hRt(i,f);f.x=i.x+i.width/2,f.y=i.y+i.height/2;let w=hRt(a,f);return{startPoint:g,endPoint:w}};const cje=function(i,a,f,g){let w=0;for(let v of a){w=w+1;let b=v.wrap&&Cs.wrap,E=aje(Cs);g.db.getC4Type()==="C4Dynamic"&&(v.label.text=w+": "+v.label.text);let _=n4(v.label.text,E);Xv("label",v,b,E,_),v.techn&&v.techn.text!==""&&(_=n4(v.techn.text,E),Xv("techn",v,b,E,_)),v.descr&&v.descr.text!==""&&(_=n4(v.descr.text,E),Xv("descr",v,b,E,_));let M=f(v.from),F=f(v.to),R=oje(M,F);v.startPoint=R.startPoint,v.endPoint=R.endPoint}s4.drawRels(i,a,Cs)};function fRt(i,a,f,g,w){let v=new cRt(w);v.data.widthLimit=f.data.widthLimit/Math.min(npt,g.length);for(let[b,E]of g.entries()){let S=0;E.image={width:0,height:0,Y:0},E.sprite&&(E.image.width=48,E.image.height=48,E.image.Y=S,S=E.image.Y+E.image.height);let _=E.wrap&&Cs.wrap,M=IY(Cs);if(M.fontSize=M.fontSize+2,M.fontWeight="bold",Xv("label",E,_,M,v.data.widthLimit),E.label.Y=S+8,S=E.label.Y+E.label.height,E.type&&E.type.text!==""){E.type.text="["+E.type.text+"]";let z=IY(Cs);Xv("type",E,_,z,v.data.widthLimit),E.type.Y=S+5,S=E.type.Y+E.type.height}if(E.descr&&E.descr.text!==""){let z=IY(Cs);z.fontSize=z.fontSize-2,Xv("descr",E,_,z,v.data.widthLimit),E.descr.Y=S+20,S=E.descr.Y+E.descr.height}if(b==0||b%npt===0){let z=f.data.startx+Cs.diagramMarginX,Y=f.data.stopy+Cs.diagramMarginY+S;v.setData(z,z,Y,Y)}else{let z=v.data.stopx!==v.data.startx?v.data.stopx+Cs.diagramMarginX:v.data.startx,Y=v.data.starty;v.setData(z,z,Y,Y)}v.name=E.alias;let F=w.db.getC4ShapeArray(E.alias),R=w.db.getC4ShapeKeys(E.alias);R.length>0&&lRt(v,i,F,R),a=E.alias;let B=w.db.getBoundarys(a);B.length>0&&fRt(i,a,v,B,w),E.alias!=="global"&&uRt(i,E,v),f.data.stopy=Math.max(v.data.stopy+Cs.c4ShapeMargin,f.data.stopy),f.data.stopx=Math.max(v.data.stopx+Cs.c4ShapeMargin,f.data.stopx),DY=Math.max(DY,f.data.stopx),MY=Math.max(MY,f.data.stopy)}}const dRt={drawPersonOrSystemArray:lRt,drawBoundary:uRt,setConf:rpt,draw:function(i,a,f,g){Cs=Re().c4;const w=Re().securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const b=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body");let E=g.db;g.db.setWrap(Cs.wrap),oRt=E.getC4ShapeInRow(),npt=E.getC4BoundaryInRow(),Kt.debug(`C:${JSON.stringify(Cs,null,2)}`);const S=w==="sandbox"?b.select(`[id="${a}"]`):Tr(`[id="${a}"]`);s4.insertComputerIcon(S),s4.insertDatabaseIcon(S),s4.insertClockIcon(S);let _=new cRt(g);_.setData(Cs.diagramMarginX,Cs.diagramMarginX,Cs.diagramMarginY,Cs.diagramMarginY),_.data.widthLimit=screen.availWidth,DY=Cs.diagramMarginX,MY=Cs.diagramMarginY;const M=g.db.getTitle();let F=g.db.getBoundarys("");fRt(S,"",_,F,g),s4.insertArrowHead(S),s4.insertArrowEnd(S),s4.insertArrowCrossHead(S),s4.insertArrowFilledHead(S),cje(S,g.db.getRels(),g.db.getC4Shape,g),_.data.stopx=DY,_.data.stopy=MY;const R=_.data;let z=R.stopy-R.starty+2*Cs.diagramMarginY;const nt=R.stopx-R.startx+2*Cs.diagramMarginX;M&&S.append("text").text(M).attr("x",(R.stopx-R.startx)/2-4*Cs.diagramMarginX).attr("y",R.starty+Cs.diagramMarginY),sg(S,z,nt,Cs.useMaxWidth);const ot=M?60:0;S.attr("viewBox",R.startx-Cs.diagramMarginX+" -"+(Cs.diagramMarginY+ot)+" "+nt+" "+(z+ot)),Kt.debug("models:",R)}},uje=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:xRe,db:Zgt,renderer:dRt,styles:i=>`.person { + stroke: ${i.personBorder}; + fill: ${i.personBkg}; + } +`,init:({c4:i,wrap:a})=>{dRt.setConf(i),Zgt.setWrap(a)}}},Symbol.toStringTag,{value:"Module"}));var ipt=function(){var i=function(Od,cs,As,to){for(As=As||{},to=Od.length;to--;As[Od[to]]=cs);return As},a=[1,4],f=[1,3],g=[1,5],w=[1,8,9,10,11,27,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],v=[2,2],b=[1,13],E=[1,14],S=[1,15],_=[1,16],M=[1,23],F=[1,25],R=[1,26],B=[1,27],z=[1,49],Y=[1,48],nt=[1,29],ot=[1,30],ft=[1,31],wt=[1,32],mt=[1,33],ct=[1,44],rt=[1,46],it=[1,42],gt=[1,47],Q=[1,43],dt=[1,50],K=[1,45],yt=[1,51],V=[1,52],Ot=[1,34],It=[1,35],jt=[1,36],xt=[1,37],Ft=[1,57],Ct=[1,8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],kt=[1,61],Gt=[1,60],Fe=[1,62],Mt=[8,9,11,73,75],pn=[1,88],Ae=[1,93],ye=[1,92],tn=[1,89],sn=[1,85],be=[1,91],Ne=[1,87],Xt=[1,94],_e=[1,90],xe=[1,95],Mn=[1,86],ce=[8,9,10,11,73,75],Br=[8,9,10,11,44,73,75],we=[8,9,10,11,29,42,44,46,48,50,52,54,56,58,61,63,65,66,68,73,75,86,99,102,103,106,108,111,112,113],Fi=[8,9,11,42,58,73,75,86,99,102,103,106,108,111,112,113],mi=[42,58,86,99,102,103,106,108,111,112,113],ga=[1,121],Ss=[1,120],za=[1,128],br=[1,142],An=[1,143],Nn=[1,144],Bn=[1,145],ke=[1,130],pe=[1,132],Je=[1,136],an=[1,137],xn=[1,138],qa=[1,139],xo=[1,140],ko=[1,141],va=[1,146],Ha=[1,147],ds=[1,126],Fu=[1,127],Zs=[1,134],d1=[1,129],I2=[1,133],ll=[1,131],Ic=[8,9,10,11,27,32,34,36,38,42,58,81,82,83,84,85,86,99,102,103,106,108,111,112,113,118,119,120,121],wc=[1,149],Ea=[8,9,11],gu=[8,9,10,11,14,42,58,86,102,103,106,108,111,112,113],ta=[1,169],fo=[1,165],mc=[1,166],ca=[1,170],ya=[1,167],ea=[1,168],Zl=[75,113,116],Uc=[8,9,10,11,12,14,27,29,32,42,58,73,81,82,83,84,85,86,87,102,106,108,111,112,113],rm=[10,103],kh=[31,47,49,51,53,55,60,62,64,65,67,69,113,114,115],Md=[1,235],w0=[1,233],Id=[1,237],m0=[1,231],hg=[1,232],Gi=[1,234],cn=[1,236],Nr=[1,238],Si=[1,255],vc=[8,9,11,103],Rc=[8,9,10,11,58,81,102,103,106,107,108,109],Eh={trace:function(){},yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeperator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,verticeStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,link:39,node:40,styledVertex:41,AMP:42,vertex:43,STYLE_SEPARATOR:44,idString:45,DOUBLECIRCLESTART:46,DOUBLECIRCLEEND:47,PS:48,PE:49,"(-":50,"-)":51,STADIUMSTART:52,STADIUMEND:53,SUBROUTINESTART:54,SUBROUTINEEND:55,VERTEX_WITH_PROPS_START:56,"NODE_STRING[field]":57,COLON:58,"NODE_STRING[value]":59,PIPE:60,CYLINDERSTART:61,CYLINDEREND:62,DIAMOND_START:63,DIAMOND_STOP:64,TAGEND:65,TRAPSTART:66,TRAPEND:67,INVTRAPSTART:68,INVTRAPEND:69,linkStatement:70,arrowText:71,TESTSTR:72,START_LINK:73,edgeText:74,LINK:75,edgeTextToken:76,STR:77,MD_STR:78,textToken:79,keywords:80,STYLE:81,LINKSTYLE:82,CLASSDEF:83,CLASS:84,CLICK:85,DOWN:86,UP:87,textNoTagsToken:88,stylesOpt:89,"idString[vertex]":90,"idString[class]":91,CALLBACKNAME:92,CALLBACKARGS:93,HREF:94,LINK_TARGET:95,"STR[link]":96,"STR[tooltip]":97,alphaNum:98,DEFAULT:99,numList:100,INTERPOLATE:101,NUM:102,COMMA:103,style:104,styleComponent:105,NODE_STRING:106,UNIT:107,BRKT:108,PCT:109,idStringToken:110,MINUS:111,MULT:112,UNICODE_TEXT:113,TEXT:114,TAGSTART:115,EDGE_TEXT:116,alphaNumToken:117,direction_tb:118,direction_bt:119,direction_rl:120,direction_lr:121,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",42:"AMP",44:"STYLE_SEPARATOR",46:"DOUBLECIRCLESTART",47:"DOUBLECIRCLEEND",48:"PS",49:"PE",50:"(-",51:"-)",52:"STADIUMSTART",53:"STADIUMEND",54:"SUBROUTINESTART",55:"SUBROUTINEEND",56:"VERTEX_WITH_PROPS_START",57:"NODE_STRING[field]",58:"COLON",59:"NODE_STRING[value]",60:"PIPE",61:"CYLINDERSTART",62:"CYLINDEREND",63:"DIAMOND_START",64:"DIAMOND_STOP",65:"TAGEND",66:"TRAPSTART",67:"TRAPEND",68:"INVTRAPSTART",69:"INVTRAPEND",72:"TESTSTR",73:"START_LINK",75:"LINK",77:"STR",78:"MD_STR",81:"STYLE",82:"LINKSTYLE",83:"CLASSDEF",84:"CLASS",85:"CLICK",86:"DOWN",87:"UP",90:"idString[vertex]",91:"idString[class]",92:"CALLBACKNAME",93:"CALLBACKARGS",94:"HREF",95:"LINK_TARGET",96:"STR[link]",97:"STR[tooltip]",99:"DEFAULT",101:"INTERPOLATE",102:"NUM",103:"COMMA",106:"NODE_STRING",107:"UNIT",108:"BRKT",109:"PCT",111:"MINUS",112:"MULT",113:"UNICODE_TEXT",114:"TEXT",115:"TAGSTART",116:"EDGE_TEXT",118:"direction_tb",119:"direction_bt",120:"direction_rl",121:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[20,3],[20,4],[20,2],[20,1],[40,1],[40,5],[41,1],[41,3],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,8],[43,4],[43,4],[43,4],[43,6],[43,4],[43,4],[43,4],[43,4],[43,4],[43,1],[39,2],[39,3],[39,3],[39,1],[39,3],[74,1],[74,2],[74,1],[74,1],[70,1],[71,3],[30,1],[30,2],[30,1],[30,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[80,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[100,1],[100,3],[89,1],[89,3],[104,1],[104,2],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[105,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[110,1],[79,1],[79,1],[79,1],[79,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[88,1],[76,1],[76,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[117,1],[45,1],[45,2],[98,1],[98,2],[33,1],[33,1],[33,1],[33,1]],performAction:function(cs,As,to,Ci,pu,Le,iy){var $e=Le.length-1;switch(pu){case 2:this.$=[];break;case 3:(!Array.isArray(Le[$e])||Le[$e].length>0)&&Le[$e-1].push(Le[$e]),this.$=Le[$e-1];break;case 4:case 176:this.$=Le[$e];break;case 11:Ci.setDirection("TB"),this.$="TB";break;case 12:Ci.setDirection(Le[$e-1]),this.$=Le[$e-1];break;case 27:this.$=Le[$e-1].nodes;break;case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 33:this.$=Ci.addSubGraph(Le[$e-6],Le[$e-1],Le[$e-4]);break;case 34:this.$=Ci.addSubGraph(Le[$e-3],Le[$e-1],Le[$e-3]);break;case 35:this.$=Ci.addSubGraph(void 0,Le[$e-1],void 0);break;case 37:this.$=Le[$e].trim(),Ci.setAccTitle(this.$);break;case 38:case 39:this.$=Le[$e].trim(),Ci.setAccDescription(this.$);break;case 43:Ci.addLink(Le[$e-2].stmt,Le[$e],Le[$e-1]),this.$={stmt:Le[$e],nodes:Le[$e].concat(Le[$e-2].nodes)};break;case 44:Ci.addLink(Le[$e-3].stmt,Le[$e-1],Le[$e-2]),this.$={stmt:Le[$e-1],nodes:Le[$e-1].concat(Le[$e-3].nodes)};break;case 45:this.$={stmt:Le[$e-1],nodes:Le[$e-1]};break;case 46:this.$={stmt:Le[$e],nodes:Le[$e]};break;case 47:this.$=[Le[$e]];break;case 48:this.$=Le[$e-4].concat(Le[$e]);break;case 49:this.$=Le[$e];break;case 50:this.$=Le[$e-2],Ci.setClass(Le[$e-2],Le[$e]);break;case 51:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"square");break;case 52:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"doublecircle");break;case 53:this.$=Le[$e-5],Ci.addVertex(Le[$e-5],Le[$e-2],"circle");break;case 54:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"ellipse");break;case 55:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"stadium");break;case 56:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"subroutine");break;case 57:this.$=Le[$e-7],Ci.addVertex(Le[$e-7],Le[$e-1],"rect",void 0,void 0,void 0,Object.fromEntries([[Le[$e-5],Le[$e-3]]]));break;case 58:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"cylinder");break;case 59:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"round");break;case 60:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"diamond");break;case 61:this.$=Le[$e-5],Ci.addVertex(Le[$e-5],Le[$e-2],"hexagon");break;case 62:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"odd");break;case 63:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"trapezoid");break;case 64:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"inv_trapezoid");break;case 65:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"lean_right");break;case 66:this.$=Le[$e-3],Ci.addVertex(Le[$e-3],Le[$e-1],"lean_left");break;case 67:this.$=Le[$e],Ci.addVertex(Le[$e]);break;case 68:Le[$e-1].text=Le[$e],this.$=Le[$e-1];break;case 69:case 70:Le[$e-2].text=Le[$e-1],this.$=Le[$e-2];break;case 71:this.$=Le[$e];break;case 72:var g1=Ci.destructLink(Le[$e],Le[$e-2]);this.$={type:g1.type,stroke:g1.stroke,length:g1.length,text:Le[$e-1]};break;case 73:this.$={text:Le[$e],type:"text"};break;case 74:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 75:this.$={text:Le[$e],type:"string"};break;case 76:this.$={text:Le[$e],type:"markdown"};break;case 77:var g1=Ci.destructLink(Le[$e]);this.$={type:g1.type,stroke:g1.stroke,length:g1.length};break;case 78:this.$=Le[$e-1];break;case 79:this.$={text:Le[$e],type:"text"};break;case 80:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 81:this.$={text:Le[$e],type:"string"};break;case 82:case 97:this.$={text:Le[$e],type:"markdown"};break;case 94:this.$={text:Le[$e],type:"text"};break;case 95:this.$={text:Le[$e-1].text+""+Le[$e],type:Le[$e-1].type};break;case 96:this.$={text:Le[$e],type:"text"};break;case 98:this.$=Le[$e-4],Ci.addClass(Le[$e-2],Le[$e]);break;case 99:this.$=Le[$e-4],Ci.setClass(Le[$e-2],Le[$e]);break;case 100:case 108:this.$=Le[$e-1],Ci.setClickEvent(Le[$e-1],Le[$e]);break;case 101:case 109:this.$=Le[$e-3],Ci.setClickEvent(Le[$e-3],Le[$e-2]),Ci.setTooltip(Le[$e-3],Le[$e]);break;case 102:this.$=Le[$e-2],Ci.setClickEvent(Le[$e-2],Le[$e-1],Le[$e]);break;case 103:this.$=Le[$e-4],Ci.setClickEvent(Le[$e-4],Le[$e-3],Le[$e-2]),Ci.setTooltip(Le[$e-4],Le[$e]);break;case 104:this.$=Le[$e-2],Ci.setLink(Le[$e-2],Le[$e]);break;case 105:this.$=Le[$e-4],Ci.setLink(Le[$e-4],Le[$e-2]),Ci.setTooltip(Le[$e-4],Le[$e]);break;case 106:this.$=Le[$e-4],Ci.setLink(Le[$e-4],Le[$e-2],Le[$e]);break;case 107:this.$=Le[$e-6],Ci.setLink(Le[$e-6],Le[$e-4],Le[$e]),Ci.setTooltip(Le[$e-6],Le[$e-2]);break;case 110:this.$=Le[$e-1],Ci.setLink(Le[$e-1],Le[$e]);break;case 111:this.$=Le[$e-3],Ci.setLink(Le[$e-3],Le[$e-2]),Ci.setTooltip(Le[$e-3],Le[$e]);break;case 112:this.$=Le[$e-3],Ci.setLink(Le[$e-3],Le[$e-2],Le[$e]);break;case 113:this.$=Le[$e-5],Ci.setLink(Le[$e-5],Le[$e-4],Le[$e]),Ci.setTooltip(Le[$e-5],Le[$e-2]);break;case 114:this.$=Le[$e-4],Ci.addVertex(Le[$e-2],void 0,void 0,Le[$e]);break;case 115:this.$=Le[$e-4],Ci.updateLink([Le[$e-2]],Le[$e]);break;case 116:this.$=Le[$e-4],Ci.updateLink(Le[$e-2],Le[$e]);break;case 117:this.$=Le[$e-8],Ci.updateLinkInterpolate([Le[$e-6]],Le[$e-2]),Ci.updateLink([Le[$e-6]],Le[$e]);break;case 118:this.$=Le[$e-8],Ci.updateLinkInterpolate(Le[$e-6],Le[$e-2]),Ci.updateLink(Le[$e-6],Le[$e]);break;case 119:this.$=Le[$e-6],Ci.updateLinkInterpolate([Le[$e-4]],Le[$e]);break;case 120:this.$=Le[$e-6],Ci.updateLinkInterpolate(Le[$e-4],Le[$e]);break;case 121:case 123:this.$=[Le[$e]];break;case 122:case 124:Le[$e-2].push(Le[$e]),this.$=Le[$e-2];break;case 126:this.$=Le[$e-1]+Le[$e];break;case 174:this.$=Le[$e];break;case 175:this.$=Le[$e-1]+""+Le[$e];break;case 177:this.$=Le[$e-1]+""+Le[$e];break;case 178:this.$={stmt:"dir",value:"TB"};break;case 179:this.$={stmt:"dir",value:"BT"};break;case 180:this.$={stmt:"dir",value:"RL"};break;case 181:this.$={stmt:"dir",value:"LR"};break}},table:[{3:1,4:2,9:a,10:f,12:g},{1:[3]},i(w,v,{5:6}),{4:7,9:a,10:f,12:g},{4:8,9:a,10:f,12:g},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},i(w,[2,9]),i(w,[2,10]),i(w,[2,11]),{8:[1,54],9:[1,55],10:Ft,15:53,18:56},i(Ct,[2,3]),i(Ct,[2,4]),i(Ct,[2,5]),i(Ct,[2,6]),i(Ct,[2,7]),i(Ct,[2,8]),{8:kt,9:Gt,11:Fe,21:58,39:59,70:63,73:[1,64],75:[1,65]},{8:kt,9:Gt,11:Fe,21:66},{8:kt,9:Gt,11:Fe,21:67},{8:kt,9:Gt,11:Fe,21:68},{8:kt,9:Gt,11:Fe,21:69},{8:kt,9:Gt,11:Fe,21:70},{8:kt,9:Gt,10:[1,71],11:Fe,21:72},i(Ct,[2,36]),{35:[1,73]},{37:[1,74]},i(Ct,[2,39]),i(Mt,[2,46],{18:75,10:Ft}),{10:[1,76]},{10:[1,77]},{10:[1,78]},{10:[1,79]},{14:pn,42:Ae,58:ye,77:[1,83],86:tn,92:[1,80],94:[1,81],98:82,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn,117:84},i(Ct,[2,178]),i(Ct,[2,179]),i(Ct,[2,180]),i(Ct,[2,181]),i(ce,[2,47]),i(ce,[2,49],{44:[1,96]}),i(Br,[2,67],{110:109,29:[1,97],42:z,46:[1,98],48:[1,99],50:[1,100],52:[1,101],54:[1,102],56:[1,103],58:Y,61:[1,104],63:[1,105],65:[1,106],66:[1,107],68:[1,108],86:ct,99:rt,102:it,103:gt,106:Q,108:dt,111:K,112:yt,113:V}),i(we,[2,174]),i(we,[2,135]),i(we,[2,136]),i(we,[2,137]),i(we,[2,138]),i(we,[2,139]),i(we,[2,140]),i(we,[2,141]),i(we,[2,142]),i(we,[2,143]),i(we,[2,144]),i(we,[2,145]),i(w,[2,12]),i(w,[2,18]),i(w,[2,19]),{9:[1,110]},i(Fi,[2,26],{18:111,10:Ft}),i(Ct,[2,27]),{40:112,41:38,42:z,43:39,45:40,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},i(Ct,[2,40]),i(Ct,[2,41]),i(Ct,[2,42]),i(mi,[2,71],{71:113,60:[1,115],72:[1,114]}),{74:116,76:117,77:[1,118],78:[1,119],113:ga,116:Ss},i([42,58,60,72,86,99,102,103,106,108,111,112,113],[2,77]),i(Ct,[2,28]),i(Ct,[2,29]),i(Ct,[2,30]),i(Ct,[2,31]),i(Ct,[2,32]),{10:za,12:br,14:An,27:Nn,28:122,32:Bn,42:ke,58:pe,73:Je,77:[1,124],78:[1,125],80:135,81:an,82:xn,83:qa,84:xo,85:ko,86:va,87:Ha,88:123,102:ds,106:Fu,108:Zs,111:d1,112:I2,113:ll},i(Ic,v,{5:148}),i(Ct,[2,37]),i(Ct,[2,38]),i(Mt,[2,45],{42:wc}),{42:z,45:150,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{99:[1,151],100:152,102:[1,153]},{42:z,45:154,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{42:z,45:155,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},i(Ea,[2,100],{10:[1,156],93:[1,157]}),{77:[1,158]},i(Ea,[2,108],{117:160,10:[1,159],14:pn,42:Ae,58:ye,86:tn,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn}),i(Ea,[2,110],{10:[1,161]}),i(gu,[2,176]),i(gu,[2,163]),i(gu,[2,164]),i(gu,[2,165]),i(gu,[2,166]),i(gu,[2,167]),i(gu,[2,168]),i(gu,[2,169]),i(gu,[2,170]),i(gu,[2,171]),i(gu,[2,172]),i(gu,[2,173]),{42:z,45:162,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{30:163,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:171,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:173,48:[1,172],65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:174,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:175,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:176,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{106:[1,177]},{30:178,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:179,63:[1,180],65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:181,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:182,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{30:183,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},i(we,[2,175]),i(w,[2,20]),i(Fi,[2,25]),i(Mt,[2,43],{18:184,10:Ft}),i(mi,[2,68],{10:[1,185]}),{10:[1,186]},{30:187,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{75:[1,188],76:189,113:ga,116:Ss},i(Zl,[2,73]),i(Zl,[2,75]),i(Zl,[2,76]),i(Zl,[2,161]),i(Zl,[2,162]),{8:kt,9:Gt,10:za,11:Fe,12:br,14:An,21:191,27:Nn,29:[1,190],32:Bn,42:ke,58:pe,73:Je,80:135,81:an,82:xn,83:qa,84:xo,85:ko,86:va,87:Ha,88:192,102:ds,106:Fu,108:Zs,111:d1,112:I2,113:ll},i(Uc,[2,94]),i(Uc,[2,96]),i(Uc,[2,97]),i(Uc,[2,150]),i(Uc,[2,151]),i(Uc,[2,152]),i(Uc,[2,153]),i(Uc,[2,154]),i(Uc,[2,155]),i(Uc,[2,156]),i(Uc,[2,157]),i(Uc,[2,158]),i(Uc,[2,159]),i(Uc,[2,160]),i(Uc,[2,83]),i(Uc,[2,84]),i(Uc,[2,85]),i(Uc,[2,86]),i(Uc,[2,87]),i(Uc,[2,88]),i(Uc,[2,89]),i(Uc,[2,90]),i(Uc,[2,91]),i(Uc,[2,92]),i(Uc,[2,93]),{6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,32:[1,193],33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},{10:Ft,18:194},{10:[1,195],42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:109,111:K,112:yt,113:V},{10:[1,196]},{10:[1,197],103:[1,198]},i(rm,[2,121]),{10:[1,199],42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:109,111:K,112:yt,113:V},{10:[1,200],42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:109,111:K,112:yt,113:V},{77:[1,201]},i(Ea,[2,102],{10:[1,202]}),i(Ea,[2,104],{10:[1,203]}),{77:[1,204]},i(gu,[2,177]),{77:[1,205],95:[1,206]},i(ce,[2,50],{110:109,42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,111:K,112:yt,113:V}),{31:[1,207],65:ta,79:208,113:ca,114:ya,115:ea},i(kh,[2,79]),i(kh,[2,81]),i(kh,[2,82]),i(kh,[2,146]),i(kh,[2,147]),i(kh,[2,148]),i(kh,[2,149]),{47:[1,209],65:ta,79:208,113:ca,114:ya,115:ea},{30:210,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{49:[1,211],65:ta,79:208,113:ca,114:ya,115:ea},{51:[1,212],65:ta,79:208,113:ca,114:ya,115:ea},{53:[1,213],65:ta,79:208,113:ca,114:ya,115:ea},{55:[1,214],65:ta,79:208,113:ca,114:ya,115:ea},{58:[1,215]},{62:[1,216],65:ta,79:208,113:ca,114:ya,115:ea},{64:[1,217],65:ta,79:208,113:ca,114:ya,115:ea},{30:218,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},{31:[1,219],65:ta,79:208,113:ca,114:ya,115:ea},{65:ta,67:[1,220],69:[1,221],79:208,113:ca,114:ya,115:ea},{65:ta,67:[1,223],69:[1,222],79:208,113:ca,114:ya,115:ea},i(Mt,[2,44],{42:wc}),i(mi,[2,70]),i(mi,[2,69]),{60:[1,224],65:ta,79:208,113:ca,114:ya,115:ea},i(mi,[2,72]),i(Zl,[2,74]),{30:225,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},i(Ic,v,{5:226}),i(Uc,[2,95]),i(Ct,[2,35]),{41:227,42:z,43:39,45:40,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},{10:Md,58:w0,81:Id,89:228,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{10:Md,58:w0,81:Id,89:239,101:[1,240],102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{10:Md,58:w0,81:Id,89:241,101:[1,242],102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{102:[1,243]},{10:Md,58:w0,81:Id,89:244,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{42:z,45:245,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V},i(Ea,[2,101]),{77:[1,246]},{77:[1,247],95:[1,248]},i(Ea,[2,109]),i(Ea,[2,111],{10:[1,249]}),i(Ea,[2,112]),i(Br,[2,51]),i(kh,[2,80]),i(Br,[2,52]),{49:[1,250],65:ta,79:208,113:ca,114:ya,115:ea},i(Br,[2,59]),i(Br,[2,54]),i(Br,[2,55]),i(Br,[2,56]),{106:[1,251]},i(Br,[2,58]),i(Br,[2,60]),{64:[1,252],65:ta,79:208,113:ca,114:ya,115:ea},i(Br,[2,62]),i(Br,[2,63]),i(Br,[2,65]),i(Br,[2,64]),i(Br,[2,66]),i([10,42,58,86,99,102,103,106,108,111,112,113],[2,78]),{31:[1,253],65:ta,79:208,113:ca,114:ya,115:ea},{6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,32:[1,254],33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},i(ce,[2,48]),i(Ea,[2,114],{103:Si}),i(vc,[2,123],{105:256,10:Md,58:w0,81:Id,102:m0,106:hg,107:Gi,108:cn,109:Nr}),i(Rc,[2,125]),i(Rc,[2,127]),i(Rc,[2,128]),i(Rc,[2,129]),i(Rc,[2,130]),i(Rc,[2,131]),i(Rc,[2,132]),i(Rc,[2,133]),i(Rc,[2,134]),i(Ea,[2,115],{103:Si}),{10:[1,257]},i(Ea,[2,116],{103:Si}),{10:[1,258]},i(rm,[2,122]),i(Ea,[2,98],{103:Si}),i(Ea,[2,99],{110:109,42:z,58:Y,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,111:K,112:yt,113:V}),i(Ea,[2,103]),i(Ea,[2,105],{10:[1,259]}),i(Ea,[2,106]),{95:[1,260]},{49:[1,261]},{60:[1,262]},{64:[1,263]},{8:kt,9:Gt,11:Fe,21:264},i(Ct,[2,34]),{10:Md,58:w0,81:Id,102:m0,104:265,105:230,106:hg,107:Gi,108:cn,109:Nr},i(Rc,[2,126]),{14:pn,42:Ae,58:ye,86:tn,98:266,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn,117:84},{14:pn,42:Ae,58:ye,86:tn,98:267,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn,117:84},{95:[1,268]},i(Ea,[2,113]),i(Br,[2,53]),{30:269,65:ta,77:fo,78:mc,79:164,113:ca,114:ya,115:ea},i(Br,[2,61]),i(Ic,v,{5:270}),i(vc,[2,124],{105:256,10:Md,58:w0,81:Id,102:m0,106:hg,107:Gi,108:cn,109:Nr}),i(Ea,[2,119],{117:160,10:[1,271],14:pn,42:Ae,58:ye,86:tn,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn}),i(Ea,[2,120],{117:160,10:[1,272],14:pn,42:Ae,58:ye,86:tn,102:sn,103:be,106:Ne,108:Xt,111:_e,112:xe,113:Mn}),i(Ea,[2,107]),{31:[1,273],65:ta,79:208,113:ca,114:ya,115:ea},{6:11,7:12,8:b,9:E,10:S,11:_,20:17,22:18,23:19,24:20,25:21,26:22,27:M,32:[1,274],33:24,34:F,36:R,38:B,40:28,41:38,42:z,43:39,45:40,58:Y,81:nt,82:ot,83:ft,84:wt,85:mt,86:ct,99:rt,102:it,103:gt,106:Q,108:dt,110:41,111:K,112:yt,113:V,118:Ot,119:It,120:jt,121:xt},{10:Md,58:w0,81:Id,89:275,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},{10:Md,58:w0,81:Id,89:276,102:m0,104:229,105:230,106:hg,107:Gi,108:cn,109:Nr},i(Br,[2,57]),i(Ct,[2,33]),i(Ea,[2,117],{103:Si}),i(Ea,[2,118],{103:Si})],defaultActions:{},parseError:function(cs,As){if(As.recoverable)this.trace(cs);else{var to=new Error(cs);throw to.hash=As,to}},parse:function(cs){var As=this,to=[0],Ci=[],pu=[null],Le=[],iy=this.table,$e="",g1=0,ip=0,sy=2,D8=1,g4=Le.slice.call(arguments,1),th=Object.create(this.lexer),fg={yy:{}};for(var O2 in this.yy)Object.prototype.hasOwnProperty.call(this.yy,O2)&&(fg.yy[O2]=this.yy[O2]);th.setInput(cs,fg.yy),fg.yy.lexer=th,fg.yy.parser=this,typeof th.yylloc>"u"&&(th.yylloc={});var M8=th.yylloc;Le.push(M8);var N2=th.options&&th.options.ranges;typeof fg.yy.parseError=="function"?this.parseError=fg.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function p4(){var sp;return sp=Ci.pop()||th.lex()||D8,typeof sp!="number"&&(sp instanceof Array&&(Ci=sp,sp=Ci.pop()),sp=As.symbols_[sp]||sp),sp}for(var U1,Nd,Pd,I8,im={},Gx,hb,Kx,b4;;){if(Nd=to[to.length-1],this.defaultActions[Nd]?Pd=this.defaultActions[Nd]:((U1===null||typeof U1>"u")&&(U1=p4()),Pd=iy[Nd]&&iy[Nd][U1]),typeof Pd>"u"||!Pd.length||!Pd[0]){var ay="";b4=[];for(Gx in iy[Nd])this.terminals_[Gx]&&Gx>sy&&b4.push("'"+this.terminals_[Gx]+"'");th.showPosition?ay="Parse error on line "+(g1+1)+`: +`+th.showPosition()+` +Expecting `+b4.join(", ")+", got '"+(this.terminals_[U1]||U1)+"'":ay="Parse error on line "+(g1+1)+": Unexpected "+(U1==D8?"end of input":"'"+(this.terminals_[U1]||U1)+"'"),this.parseError(ay,{text:th.match,token:this.terminals_[U1]||U1,line:th.yylineno,loc:M8,expected:b4})}if(Pd[0]instanceof Array&&Pd.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Nd+", token: "+U1);switch(Pd[0]){case 1:to.push(U1),pu.push(th.yytext),Le.push(th.yylloc),to.push(Pd[1]),U1=null,ip=th.yyleng,$e=th.yytext,g1=th.yylineno,M8=th.yylloc;break;case 2:if(hb=this.productions_[Pd[1]][1],im.$=pu[pu.length-hb],im._$={first_line:Le[Le.length-(hb||1)].first_line,last_line:Le[Le.length-1].last_line,first_column:Le[Le.length-(hb||1)].first_column,last_column:Le[Le.length-1].last_column},N2&&(im._$.range=[Le[Le.length-(hb||1)].range[0],Le[Le.length-1].range[1]]),I8=this.performAction.apply(im,[$e,ip,g1,fg.yy,Pd[1],pu,Le].concat(g4)),typeof I8<"u")return I8;hb&&(to=to.slice(0,-1*hb*2),pu=pu.slice(0,-1*hb),Le=Le.slice(0,-1*hb)),to.push(this.productions_[Pd[1]][0]),pu.push(im.$),Le.push(im._$),Kx=iy[to[to.length-2]][to[to.length-1]],to.push(Kx);break;case 3:return!0}}return!0}},Zc=function(){var Od={EOF:1,parseError:function(As,to){if(this.yy.parser)this.yy.parser.parseError(As,to);else throw new Error(As)},setInput:function(cs,As){return this.yy=As||this.yy||{},this._input=cs,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var cs=this._input[0];this.yytext+=cs,this.yyleng++,this.offset++,this.match+=cs,this.matched+=cs;var As=cs.match(/(?:\r\n?|\n).*/g);return As?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),cs},unput:function(cs){var As=cs.length,to=cs.split(/(?:\r\n?|\n)/g);this._input=cs+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-As),this.offset-=As;var Ci=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),to.length-1&&(this.yylineno-=to.length-1);var pu=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:to?(to.length===Ci.length?this.yylloc.first_column:0)+Ci[Ci.length-to.length].length-to[0].length:this.yylloc.first_column-As},this.options.ranges&&(this.yylloc.range=[pu[0],pu[0]+this.yyleng-As]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(cs){this.unput(this.match.slice(cs))},pastInput:function(){var cs=this.matched.substr(0,this.matched.length-this.match.length);return(cs.length>20?"...":"")+cs.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var cs=this.match;return cs.length<20&&(cs+=this._input.substr(0,20-cs.length)),(cs.substr(0,20)+(cs.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var cs=this.pastInput(),As=new Array(cs.length+1).join("-");return cs+this.upcomingInput()+` +`+As+"^"},test_match:function(cs,As){var to,Ci,pu;if(this.options.backtrack_lexer&&(pu={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(pu.yylloc.range=this.yylloc.range.slice(0))),Ci=cs[0].match(/(?:\r\n?|\n).*/g),Ci&&(this.yylineno+=Ci.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ci?Ci[Ci.length-1].length-Ci[Ci.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+cs[0].length},this.yytext+=cs[0],this.match+=cs[0],this.matches=cs,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(cs[0].length),this.matched+=cs[0],to=this.performAction.call(this,this.yy,this,As,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),to)return to;if(this._backtrack){for(var Le in pu)this[Le]=pu[Le];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var cs,As,to,Ci;this._more||(this.yytext="",this.match="");for(var pu=this._currentRules(),Le=0;LeAs[0].length)){if(As=to,Ci=Le,this.options.backtrack_lexer){if(cs=this.test_match(to,pu[Le]),cs!==!1)return cs;if(this._backtrack){As=!1;continue}else return!1}else if(!this.options.flex)break}return As?(cs=this.test_match(As,pu[Ci]),cs!==!1?cs:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var As=this.next();return As||this.lex()},begin:function(As){this.conditionStack.push(As)},popState:function(){var As=this.conditionStack.length-1;return As>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(As){return As=this.conditionStack.length-1-Math.abs(As||0),As>=0?this.conditionStack[As]:"INITIAL"},pushState:function(As){this.begin(As)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(As,to,Ci,pu){switch(Ci){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:this.begin("callbackname");break;case 8:this.popState();break;case 9:this.popState(),this.begin("callbackargs");break;case 10:return 92;case 11:this.popState();break;case 12:return 93;case 13:return"MD_STR";case 14:this.popState();break;case 15:this.begin("md_string");break;case 16:return"STR";case 17:this.popState();break;case 18:this.pushState("string");break;case 19:return 81;case 20:return 99;case 21:return 82;case 22:return 101;case 23:return 83;case 24:return 84;case 25:return 94;case 26:this.begin("click");break;case 27:this.popState();break;case 28:return 85;case 29:return As.lex.firstGraph()&&this.begin("dir"),12;case 30:return As.lex.firstGraph()&&this.begin("dir"),12;case 31:return As.lex.firstGraph()&&this.begin("dir"),12;case 32:return 27;case 33:return 32;case 34:return 95;case 35:return 95;case 36:return 95;case 37:return 95;case 38:return this.popState(),13;case 39:return this.popState(),14;case 40:return this.popState(),14;case 41:return this.popState(),14;case 42:return this.popState(),14;case 43:return this.popState(),14;case 44:return this.popState(),14;case 45:return this.popState(),14;case 46:return this.popState(),14;case 47:return this.popState(),14;case 48:return this.popState(),14;case 49:return 118;case 50:return 119;case 51:return 120;case 52:return 121;case 53:return 102;case 54:return 108;case 55:return 44;case 56:return 58;case 57:return 42;case 58:return 8;case 59:return 103;case 60:return 112;case 61:return this.popState(),75;case 62:return this.pushState("edgeText"),73;case 63:return 116;case 64:return this.popState(),75;case 65:return this.pushState("thickEdgeText"),73;case 66:return 116;case 67:return this.popState(),75;case 68:return this.pushState("dottedEdgeText"),73;case 69:return 116;case 70:return 75;case 71:return this.popState(),51;case 72:return"TEXT";case 73:return this.pushState("ellipseText"),50;case 74:return this.popState(),53;case 75:return this.pushState("text"),52;case 76:return this.popState(),55;case 77:return this.pushState("text"),54;case 78:return 56;case 79:return this.pushState("text"),65;case 80:return this.popState(),62;case 81:return this.pushState("text"),61;case 82:return this.popState(),47;case 83:return this.pushState("text"),46;case 84:return this.popState(),67;case 85:return this.popState(),69;case 86:return 114;case 87:return this.pushState("trapText"),66;case 88:return this.pushState("trapText"),68;case 89:return 115;case 90:return 65;case 91:return 87;case 92:return"SEP";case 93:return 86;case 94:return 112;case 95:return 108;case 96:return 42;case 97:return 106;case 98:return 111;case 99:return 113;case 100:return this.popState(),60;case 101:return this.pushState("text"),60;case 102:return this.popState(),49;case 103:return this.pushState("text"),48;case 104:return this.popState(),31;case 105:return this.pushState("text"),29;case 106:return this.popState(),64;case 107:return this.pushState("text"),63;case 108:return"TEXT";case 109:return"QUOTE";case 110:return 9;case 111:return 10;case 112:return 11}},rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{callbackargs:{rules:[11,12,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},callbackname:{rules:[8,9,10,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},href:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},click:{rules:[15,18,27,28,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dottedEdgeText:{rules:[15,18,67,69,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},thickEdgeText:{rules:[15,18,64,66,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},edgeText:{rules:[15,18,61,63,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},trapText:{rules:[15,18,70,73,75,77,81,83,84,85,86,87,88,101,103,105,107],inclusive:!1},ellipseText:{rules:[15,18,70,71,72,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},text:{rules:[15,18,70,73,74,75,76,77,80,81,82,83,87,88,100,101,102,103,104,105,106,107,108],inclusive:!1},vertex:{rules:[15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},dir:{rules:[15,18,38,39,40,41,42,43,44,45,46,47,48,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr_multiline:{rules:[5,6,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_descr:{rules:[3,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},acc_title:{rules:[1,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},md_string:{rules:[13,14,15,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},string:{rules:[15,16,17,18,70,73,75,77,81,83,87,88,101,103,105,107],inclusive:!1},INITIAL:{rules:[0,2,4,7,15,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,49,50,51,52,53,54,55,56,57,58,59,60,61,62,64,65,67,68,70,73,75,77,78,79,81,83,87,88,89,90,91,92,93,94,95,96,97,98,99,101,103,105,107,109,110,111,112],inclusive:!0}}};return Od}();Eh.lexer=Zc;function Qh(){this.yy={}}return Qh.prototype=Eh,Eh.Parser=Qh,new Qh}();ipt.parser=ipt;const spt=ipt,lje="flowchart-";let gRt=0,bD=Re(),jl={},Qv=[],wD={},Px=[],OY={},NY={},PY=0,apt=!0,Zw,FY,BY=[];const RY=i=>ei.sanitizeText(i,bD),zF=function(i){const a=Object.keys(jl);for(const f of a)if(jl[f].id===i)return jl[f].domId;return i},pRt=function(i,a,f,g,w,v,b={}){let E,S=i;S!==void 0&&S.trim().length!==0&&(jl[S]===void 0&&(jl[S]={id:S,labelType:"text",domId:lje+S+"-"+gRt,styles:[],classes:[]}),gRt++,a!==void 0?(bD=Re(),E=RY(a.text.trim()),jl[S].labelType=a.type,E[0]==='"'&&E[E.length-1]==='"'&&(E=E.substring(1,E.length-1)),jl[S].text=E):jl[S].text===void 0&&(jl[S].text=i),f!==void 0&&(jl[S].type=f),g!=null&&g.forEach(function(_){jl[S].styles.push(_)}),w!=null&&w.forEach(function(_){jl[S].classes.push(_)}),v!==void 0&&(jl[S].dir=v),jl[S].props===void 0?jl[S].props=b:b!==void 0&&Object.assign(jl[S].props,b))},bRt=function(i,a,f){const v={start:i,end:a,type:void 0,text:"",labelType:"text"};Kt.info("abc78 Got edge...",v);const b=f.text;if(b!==void 0&&(v.text=RY(b.text.trim()),v.text[0]==='"'&&v.text[v.text.length-1]==='"'&&(v.text=v.text.substring(1,v.text.length-1)),v.labelType=b.type),f!==void 0&&(v.type=f.type,v.stroke=f.stroke,v.length=f.length),(v==null?void 0:v.length)>10&&(v.length=10),Qv.length<(bD.maxEdges??500))Kt.info("abc78 pushing edge..."),Qv.push(v);else throw new Error(`Edge limit exceeded. ${Qv.length} edges found, but the limit is ${bD.maxEdges}. + +Initialize mermaid with maxEdges set to a higher number to allow more edges. +You cannot set this config via configuration inside the diagram as it is a secure config. +You have to call mermaid.initialize.`)},wRt=function(i,a,f){Kt.info("addLink (abc78)",i,a,f);let g,w;for(g=0;g=Qv.length)throw new Error(`The index ${f} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${Qv.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);f==="default"?Qv.defaultStyle=a:(uo.isSubstringInArray("fill",a)===-1&&a.push("fill:none"),Qv[f].style=a)})},yRt=function(i,a){i.split(",").forEach(function(f){wD[f]===void 0&&(wD[f]={id:f,styles:[],textStyles:[]}),a!=null&&a.forEach(function(g){if(g.match("color")){const w=g.replace("fill","bgFill").replace("color","fill");wD[f].textStyles.push(w)}wD[f].styles.push(g)})})},xRt=function(i){Zw=i,Zw.match(/.*/)&&(Zw="LR"),Zw.match(/.*v/)&&(Zw="TB"),Zw==="TD"&&(Zw="TB")},jY=function(i,a){i.split(",").forEach(function(f){let g=f;jl[g]!==void 0&&jl[g].classes.push(a),OY[g]!==void 0&&OY[g].classes.push(a)})},hje=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(NY[FY==="gen-1"?zF(f):f]=RY(a))})},fje=function(i,a,f){let g=zF(i);if(Re().securityLevel!=="loose"||a===void 0)return;let w=[];if(typeof f=="string"){w=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let v=0;v")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Tr(this).classed("hover",!1)})};BY.push(DRt);const MRt=function(i="gen-1"){jl={},wD={},Qv=[],BY=[DRt],Px=[],OY={},PY=0,NY={},apt=!0,FY=i,bD=Re(),ag()},IRt=i=>{FY=i||"gen-2"},ORt=function(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"},NRt=function(i,a,f){let g=i.text.trim(),w=f.text;i===f&&f.text.match(/\s/)&&(g=void 0);function v(M){const F={boolean:{},number:{},string:{}},R=[];let B;return{nodeList:M.filter(function(Y){const nt=typeof Y;return Y.stmt&&Y.stmt==="dir"?(B=Y.value,!1):Y.trim()===""?!1:nt in F?F[nt].hasOwnProperty(Y)?!1:F[nt][Y]=!0:R.includes(Y)?!1:R.push(Y)}),dir:B}}let b=[];const{nodeList:E,dir:S}=v(b.concat.apply(b,a));if(b=E,FY==="gen-1")for(let M=0;M2e3)return;if(PRt[qF]=a,Px[a].id===i)return{result:!0,count:0};let g=0,w=1;for(;g=0){const b=FRt(i,v);if(b.result)return{result:!0,count:w+b.count};w=w+b.count}g=g+1}return{result:!1,count:w}},BRt=function(i){return PRt[i]},RRt=function(){qF=-1,Px.length>0&&FRt("none",Px.length-1)},jRt=function(){return Px},$Rt=()=>apt?(apt=!1,!0):!1,gje=i=>{let a=i.trim(),f="arrow_open";switch(a[0]){case"<":f="arrow_point",a=a.slice(1);break;case"x":f="arrow_cross",a=a.slice(1);break;case"o":f="arrow_circle",a=a.slice(1);break}let g="normal";return a.includes("=")&&(g="thick"),a.includes(".")&&(g="dotted"),{type:f,stroke:g}},pje=(i,a)=>{const f=a.length;let g=0;for(let w=0;w{const a=i.trim();let f=a.slice(0,-1),g="arrow_open";switch(a.slice(-1)){case"x":g="arrow_cross",a[0]==="x"&&(g="double_"+g,f=f.slice(1));break;case">":g="arrow_point",a[0]==="<"&&(g="double_"+g,f=f.slice(1));break;case"o":g="arrow_circle",a[0]==="o"&&(g="double_"+g,f=f.slice(1));break}let w="normal",v=f.length-1;f[0]==="="&&(w="thick"),f[0]==="~"&&(w="invisible");let b=pje(".",f);return b&&(w="dotted",v=b),{type:g,stroke:w,length:v}},zRt=(i,a)=>{const f=bje(i);let g;if(a){if(g=gje(a),g.stroke!==f.stroke)return{type:"INVALID",stroke:"INVALID"};if(g.type==="arrow_open")g.type=f.type;else{if(g.type!==f.type)return{type:"INVALID",stroke:"INVALID"};g.type="double_"+g.type}return g.type==="double_arrow"&&(g.type="double_arrow_point"),g.length=f.length,g}return f},qRt=(i,a)=>{let f=!1;return i.forEach(g=>{g.nodes.indexOf(a)>=0&&(f=!0)}),f},HRt=(i,a)=>{const f=[];return i.nodes.forEach((g,w)=>{qRt(a,g)||f.push(i.nodes[w])}),{nodes:f}},VRt={firstGraph:$Rt},A9={defaultConfig:()=>lBt.flowchart,setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,addVertex:pRt,lookUpDomId:zF,addLink:wRt,updateLinkInterpolate:mRt,updateLink:vRt,addClass:yRt,setDirection:xRt,setClass:jY,setTooltip:hje,getTooltip:ERt,setClickEvent:TRt,setLink:kRt,bindFunctions:CRt,getDirection:SRt,getVertices:_Rt,getEdges:ARt,getClasses:LRt,clear:MRt,setGen:IRt,defaultStyle:ORt,addSubGraph:NRt,getDepthFirstPos:BRt,indexNodes:RRt,getSubGraphs:jRt,destructLink:zRt,lex:VRt,exists:qRt,makeUniq:HRt,setDiagramTitle:S2,getDiagramTitle:Zg},wje=Object.freeze(Object.defineProperty({__proto__:null,addClass:yRt,addLink:wRt,addSingleLink:bRt,addSubGraph:NRt,addVertex:pRt,bindFunctions:CRt,clear:MRt,default:A9,defaultStyle:ORt,destructLink:zRt,firstGraph:$Rt,getClasses:LRt,getDepthFirstPos:BRt,getDirection:SRt,getEdges:ARt,getSubGraphs:jRt,getTooltip:ERt,getVertices:_Rt,indexNodes:RRt,lex:VRt,lookUpDomId:zF,setClass:jY,setClickEvent:TRt,setDirection:xRt,setGen:IRt,setLink:kRt,updateLink:vRt,updateLinkInterpolate:mRt},Symbol.toStringTag,{value:"Module"}));var mje="[object Symbol]";function L9(i){return typeof i=="symbol"||e4(i)&&b9(i)==mje}function mD(i,a){for(var f=-1,g=i==null?0:i.length,w=Array(g);++f-1}function A2(i){return p8(i)?wFt(i):xBt(i)}var Fje=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Bje=/^\w*$/;function opt(i,a){if(s1(i))return!1;var f=typeof i;return f=="number"||f=="symbol"||f=="boolean"||i==null||L9(i)?!0:Bje.test(i)||!Fje.test(i)||a!=null&&i in Object(a)}var Rje=500;function jje(i){var a=eD(i,function(g){return f.size===Rje&&f.clear(),g}),f=a.cache;return a}var $je=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,zje=/\\(\\)?/g,qje=jje(function(i){var a=[];return i.charCodeAt(0)===46&&a.push(""),i.replace($je,function(f,g,w,v){a.push(w?v.replace(zje,"$1"):g||f)}),a});const Hje=qje;function JRt(i){return i==null?"":KRt(i)}function zY(i,a){return s1(i)?i:opt(i,a)?[i]:Hje(JRt(i))}var Vje=1/0;function HF(i){if(typeof i=="string"||L9(i))return i;var a=i+"";return a=="0"&&1/i==-Vje?"-0":a}function qY(i,a){a=zY(a,i);for(var f=0,g=a.length;i!=null&&f0&&f(E)?a>1?HY(E,a-1,f,g,w):cpt(w,E):g||(w[w.length]=E)}return w}function vD(i){var a=i==null?0:i.length;return a?HY(i,1):[]}function Kje(i){return xFt(yFt(i,void 0,vD),i+"")}function Wje(i,a,f,g){var w=-1,v=i==null?0:i.length;for(g&&v&&(f=i[++w]);++wE))return!1;var _=v.get(i),M=v.get(a);if(_&&M)return _==a&&M==i;var F=-1,R=!0,B=f&xze?new UF:void 0;for(v.set(i,a),v.set(a,i);++F2?a[2]:void 0;for(w&&DF(a[0],a[1],w)&&(g=1);++f-1?w[v?a[b]:b]:void 0}}var lqe=Math.max;function hqe(i,a,f){var g=i==null?0:i.length;if(!g)return-1;var w=f==null?0:Dje(f);return w<0&&(w=lqe(g+w,0)),QRt(i,k8(a),w)}var fqe=uqe(hqe);const bpt=fqe;function Cjt(i,a){var f=-1,g=p8(i)?Array(i.length):[];return UY(i,function(w,v,b){g[++f]=a(w,v,b)}),g}function u1(i,a){var f=s1(i)?mD:Cjt;return f(i,k8(a))}function dqe(i,a){return i==null?i:wgt(i,ppt(a),y9)}function gqe(i,a){return i&&gpt(i,ppt(a))}function pqe(i,a){return i>a}var bqe=Object.prototype,wqe=bqe.hasOwnProperty;function mqe(i,a){return i!=null&&wqe.call(i,a)}function lo(i,a){return i!=null&&xjt(i,a,mqe)}function vqe(i,a){return mD(a,function(f){return i[f]})}function Bx(i){return i==null?[]:vqe(i,A2(i))}function Tf(i){return i===void 0}function Sjt(i,a){return ia||v&&b&&S&&!E&&!_||g&&b&&S||!f&&S||!w)return 1;if(!g&&!v&&!_&&i=E)return S;var _=f[g];return S*(_=="desc"?-1:1)}}return i.index-a.index}function Cqe(i,a,f){a.length?a=mD(a,function(v){return s1(v)?function(b){return qY(b,v.length===1?v[0]:v)}:v}):a=[x9];var g=-1;a=mD(a,iY(k8));var w=Cjt(i,function(v,b,E){var S=mD(a,function(_){return _(v)});return{criteria:S,index:++g,value:v}});return kqe(w,function(v,b){return Tqe(v,b,f)})}function Sqe(i,a){return xqe(i,a,function(f,g){return kjt(i,g)})}var _qe=Kje(function(i,a){return i==null?{}:Sqe(i,a)});const KF=_qe;var Aqe=Math.ceil,Lqe=Math.max;function Dqe(i,a,f,g){for(var w=-1,v=Lqe(Aqe((a-i)/(f||1)),0),b=Array(v);v--;)b[g?v:++w]=i,i+=f;return b}function Mqe(i){return function(a,f,g){return g&&typeof g!="number"&&DF(a,f,g)&&(f=g=void 0),a=$Y(a),f===void 0?(f=a,a=0):f=$Y(f),g=g===void 0?a1&&DF(i,a[0],a[1])?a=[]:f>2&&DF(a[0],a[1],a[2])&&(a=[a[0]]),Cqe(i,HY(a,1),[])});const YF=Nqe;var Pqe=1/0,Fqe=lD&&1/hpt(new lD([,-0]))[1]==Pqe?function(i){return new lD(i)}:Mje;const Bqe=Fqe;var Rqe=200;function jqe(i,a,f){var g=-1,w=Pje,v=i.length,b=!0,E=[],S=E;if(f)b=!1,w=oqe;else if(v>=Rqe){var _=a?null:Bqe(i);if(_)return hpt(_);b=!1,w=djt,S=new UF}else S=a?[]:E;t:for(;++g1?w.setNode(v,f):w.setNode(v)}),this}setNode(a,f){return lo(this._nodes,a)?(arguments.length>1&&(this._nodes[a]=f),this):(this._nodes[a]=arguments.length>1?f:this._defaultNodeLabelFn(a),this._isCompound&&(this._parent[a]=I9,this._children[a]={},this._children[I9][a]=!0),this._in[a]={},this._preds[a]={},this._out[a]={},this._sucs[a]={},++this._nodeCount,this)}node(a){return this._nodes[a]}hasNode(a){return lo(this._nodes,a)}removeNode(a){var f=this;if(lo(this._nodes,a)){var g=function(w){f.removeEdge(f._edgeObjs[w])};delete this._nodes[a],this._isCompound&&(this._removeFromParentsChildList(a),delete this._parent[a],yr(this.children(a),function(w){f.setParent(w)}),delete this._children[a]),yr(A2(this._in[a]),g),delete this._in[a],delete this._preds[a],yr(A2(this._out[a]),g),delete this._out[a],delete this._sucs[a],--this._nodeCount}return this}setParent(a,f){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(Tf(f))f=I9;else{f+="";for(var g=f;!Tf(g);g=this.parent(g))if(g===a)throw new Error("Setting "+f+" as parent of "+a+" would create a cycle");this.setNode(f)}return this.setNode(a),this._removeFromParentsChildList(a),this._parent[a]=f,this._children[f][a]=!0,this}_removeFromParentsChildList(a){delete this._children[this._parent[a]][a]}parent(a){if(this._isCompound){var f=this._parent[a];if(f!==I9)return f}}children(a){if(Tf(a)&&(a=I9),this._isCompound){var f=this._children[a];if(f)return A2(f)}else{if(a===I9)return this.nodes();if(this.hasNode(a))return[]}}predecessors(a){var f=this._preds[a];if(f)return A2(f)}successors(a){var f=this._sucs[a];if(f)return A2(f)}neighbors(a){var f=this.predecessors(a);if(f)return zqe(f,this.successors(a))}isLeaf(a){var f;return this.isDirected()?f=this.successors(a):f=this.neighbors(a),f.length===0}filterNodes(a){var f=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});f.setGraph(this.graph());var g=this;yr(this._nodes,function(b,E){a(E)&&f.setNode(E,b)}),yr(this._edgeObjs,function(b){f.hasNode(b.v)&&f.hasNode(b.w)&&f.setEdge(b,g.edge(b))});var w={};function v(b){var E=g.parent(b);return E===void 0||f.hasNode(E)?(w[b]=E,E):E in w?w[E]:v(E)}return this._isCompound&&yr(f.nodes(),function(b){f.setParent(b,v(b))}),f}setDefaultEdgeLabel(a){return ZL(a)||(a=sD(a)),this._defaultEdgeLabelFn=a,this}edgeCount(){return this._edgeCount}edges(){return Bx(this._edgeObjs)}setPath(a,f){var g=this,w=arguments;return WF(a,function(v,b){return w.length>1?g.setEdge(v,b,f):g.setEdge(v,b),b}),this}setEdge(){var a,f,g,w,v=!1,b=arguments[0];typeof b=="object"&&b!==null&&"v"in b?(a=b.v,f=b.w,g=b.name,arguments.length===2&&(w=arguments[1],v=!0)):(a=b,f=arguments[1],g=arguments[3],arguments.length>2&&(w=arguments[2],v=!0)),a=""+a,f=""+f,Tf(g)||(g=""+g);var E=XF(this._isDirected,a,f,g);if(lo(this._edgeLabels,E))return v&&(this._edgeLabels[E]=w),this;if(!Tf(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(a),this.setNode(f),this._edgeLabels[E]=v?w:this._defaultEdgeLabelFn(a,f,g);var S=Gqe(this._isDirected,a,f,g);return a=S.v,f=S.w,Object.freeze(S),this._edgeObjs[E]=S,Ajt(this._preds[f],a),Ajt(this._sucs[a],f),this._in[f][E]=S,this._out[a][E]=S,this._edgeCount++,this}edge(a,f,g){var w=arguments.length===1?vpt(this._isDirected,arguments[0]):XF(this._isDirected,a,f,g);return this._edgeLabels[w]}hasEdge(a,f,g){var w=arguments.length===1?vpt(this._isDirected,arguments[0]):XF(this._isDirected,a,f,g);return lo(this._edgeLabels,w)}removeEdge(a,f,g){var w=arguments.length===1?vpt(this._isDirected,arguments[0]):XF(this._isDirected,a,f,g),v=this._edgeObjs[w];return v&&(a=v.v,f=v.w,delete this._edgeLabels[w],delete this._edgeObjs[w],Ljt(this._preds[f],a),Ljt(this._sucs[a],f),delete this._in[f][w],delete this._out[a][w],this._edgeCount--),this}inEdges(a,f){var g=this._in[a];if(g){var w=Bx(g);return f?Fx(w,function(v){return v.v===f}):w}}outEdges(a,f){var g=this._out[a];if(g){var w=Bx(g);return f?Fx(w,function(v){return v.w===f}):w}}nodeEdges(a,f){var g=this.inEdges(a,f);if(g)return g.concat(this.outEdges(a,f))}}l1.prototype._nodeCount=0,l1.prototype._edgeCount=0;function Ajt(i,a){i[a]?i[a]++:i[a]=1}function Ljt(i,a){--i[a]||delete i[a]}function XF(i,a,f,g){var w=""+a,v=""+f;if(!i&&w>v){var b=w;w=v,v=b}return w+_jt+v+_jt+(Tf(g)?Uqe:g)}function Gqe(i,a,f,g){var w=""+a,v=""+f;if(!i&&w>v){var b=w;w=v,v=b}var E={v:w,w:v};return g&&(E.name=g),E}function vpt(i,a){return XF(i,a.v,a.w,a.name)}class Kqe{constructor(){var a={};a._next=a._prev=a,this._sentinel=a}dequeue(){var a=this._sentinel,f=a._prev;if(f!==a)return Djt(f),f}enqueue(a){var f=this._sentinel;a._prev&&a._next&&Djt(a),a._next=f._next,f._next._prev=a,f._next=a,a._prev=f}toString(){for(var a=[],f=this._sentinel,g=f._prev;g!==f;)a.push(JSON.stringify(g,Wqe)),g=g._prev;return"["+a.join(", ")+"]"}}function Djt(i){i._prev._next=i._next,i._next._prev=i._prev,delete i._next,delete i._prev}function Wqe(i,a){if(i!=="_next"&&i!=="_prev")return a}var Yqe=sD(1);function Xqe(i,a){if(i.nodeCount()<=1)return[];var f=Jqe(i,a||Yqe),g=Qqe(f.graph,f.buckets,f.zeroIdx);return vD(u1(g,function(w){return i.outEdges(w.v,w.w)}))}function Qqe(i,a,f){for(var g=[],w=a[a.length-1],v=a[0],b;i.nodeCount();){for(;b=v.dequeue();)ypt(i,a,f,b);for(;b=w.dequeue();)ypt(i,a,f,b);if(i.nodeCount()){for(var E=a.length-2;E>0;--E)if(b=a[E].dequeue(),b){g=g.concat(ypt(i,a,f,b,!0));break}}}return g}function ypt(i,a,f,g,w){var v=w?[]:void 0;return yr(i.inEdges(g.v),function(b){var E=i.edge(b),S=i.node(b.v);w&&v.push({v:b.v,w:b.w}),S.out-=E,xpt(a,f,S)}),yr(i.outEdges(g.v),function(b){var E=i.edge(b),S=b.w,_=i.node(S);_.in-=E,xpt(a,f,_)}),i.removeNode(g.v),v}function Jqe(i,a){var f=new l1,g=0,w=0;yr(i.nodes(),function(E){f.setNode(E,{v:E,in:0,out:0})}),yr(i.edges(),function(E){var S=f.edge(E.v,E.w)||0,_=a(E),M=S+_;f.setEdge(E.v,E.w,M),w=Math.max(w,f.node(E.v).out+=_),g=Math.max(g,f.node(E.w).in+=_)});var v=M9(w+g+3).map(function(){return new Kqe}),b=g+1;return yr(f.nodes(),function(E){xpt(v,b,f.node(E))}),{graph:f,buckets:v,zeroIdx:b}}function xpt(i,a,f){f.out?f.in?i[f.out-f.in+a].enqueue(f):i[i.length-1].enqueue(f):i[0].enqueue(f)}function Zqe(i){var a=i.graph().acyclicer==="greedy"?Xqe(i,f(i)):tHe(i);yr(a,function(g){var w=i.edge(g);i.removeEdge(g),w.forwardName=g.name,w.reversed=!0,i.setEdge(g.w,g.v,w,WY("rev"))});function f(g){return function(w){return g.edge(w).weight}}}function tHe(i){var a=[],f={},g={};function w(v){lo(g,v)||(g[v]=!0,f[v]=!0,yr(i.outEdges(v),function(b){lo(f,b.w)?a.push(b):w(b.w)}),delete f[v])}return yr(i.nodes(),w),a}function eHe(i){yr(i.edges(),function(a){var f=i.edge(a);if(f.reversed){i.removeEdge(a);var g=f.forwardName;delete f.reversed,delete f.forwardName,i.setEdge(a.w,a.v,f,g)}})}function xD(i,a,f,g){var w;do w=WY(g);while(i.hasNode(w));return f.dummy=a,i.setNode(w,f),w}function nHe(i){var a=new l1().setGraph(i.graph());return yr(i.nodes(),function(f){a.setNode(f,i.node(f))}),yr(i.edges(),function(f){var g=a.edge(f.v,f.w)||{weight:0,minlen:1},w=i.edge(f);a.setEdge(f.v,f.w,{weight:g.weight+w.weight,minlen:Math.max(g.minlen,w.minlen)})}),a}function Mjt(i){var a=new l1({multigraph:i.isMultigraph()}).setGraph(i.graph());return yr(i.nodes(),function(f){i.children(f).length||a.setNode(f,i.node(f))}),yr(i.edges(),function(f){a.setEdge(f,i.edge(f))}),a}function Ijt(i,a){var f=i.x,g=i.y,w=a.x-f,v=a.y-g,b=i.width/2,E=i.height/2;if(!w&&!v)throw new Error("Not possible to find intersection inside of the rectangle");var S,_;return Math.abs(v)*b>Math.abs(w)*E?(v<0&&(E=-E),S=E*w/v,_=E):(w<0&&(b=-b),S=b,_=b*v/w),{x:f+S,y:g+_}}function YY(i){var a=u1(M9(Njt(i)+1),function(){return[]});return yr(i.nodes(),function(f){var g=i.node(f),w=g.rank;Tf(w)||(a[w][g.order]=f)}),a}function rHe(i){var a=GF(u1(i.nodes(),function(f){return i.node(f).rank}));yr(i.nodes(),function(f){var g=i.node(f);lo(g,"rank")&&(g.rank-=a)})}function iHe(i){var a=GF(u1(i.nodes(),function(v){return i.node(v).rank})),f=[];yr(i.nodes(),function(v){var b=i.node(v).rank-a;f[b]||(f[b]=[]),f[b].push(v)});var g=0,w=i.graph().nodeRankFactor;yr(f,function(v,b){Tf(v)&&b%w!==0?--g:g&&yr(v,function(E){i.node(E).rank+=g})})}function Ojt(i,a,f,g){var w={width:0,height:0};return arguments.length>=4&&(w.rank=f,w.order=g),xD(i,"border",w,a)}function Njt(i){return D9(u1(i.nodes(),function(a){var f=i.node(a).rank;if(!Tf(f))return f}))}function sHe(i,a){var f={lhs:[],rhs:[]};return yr(i,function(g){a(g)?f.lhs.push(g):f.rhs.push(g)}),f}function aHe(i,a){var f=Ejt();try{return a()}finally{console.log(i+" time: "+(Ejt()-f)+"ms")}}function oHe(i,a){return a()}function cHe(i){function a(f){var g=i.children(f),w=i.node(f);if(g.length&&yr(g,a),lo(w,"minRank")){w.borderLeft=[],w.borderRight=[];for(var v=w.minRank,b=w.maxRank+1;vb.lim&&(E=b,S=!0);var _=Fx(a.edges(),function(M){return S===Gjt(i,i.node(M.v),E)&&S!==Gjt(i,i.node(M.w),E)});return mpt(_,function(M){return QF(a,M)})}function Ujt(i,a,f,g){var w=f.v,v=f.w;i.removeEdge(w,v),i.setEdge(g.v,g.w,{}),Spt(i),Cpt(i,a),EHe(i,a)}function EHe(i,a){var f=bpt(i.nodes(),function(w){return!a.node(w).parent}),g=xHe(i,f);g=g.slice(1),yr(g,function(w){var v=i.node(w).parent,b=a.edge(w,v),E=!1;b||(b=a.edge(v,w),E=!0),a.node(w).rank=a.node(v).rank+(E?b.minlen:-b.minlen)})}function THe(i,a,f){return i.hasEdge(a,f)}function Gjt(i,a,f){return f.low<=a.lim&&a.lim<=f.lim}function CHe(i){switch(i.graph().ranker){case"network-simplex":Kjt(i);break;case"tight-tree":_He(i);break;case"longest-path":SHe(i);break;default:Kjt(i)}}var SHe=Tpt;function _He(i){Tpt(i),Rjt(i)}function Kjt(i){O9(i)}function AHe(i){var a=xD(i,"root",{},"_root"),f=LHe(i),g=D9(Bx(f))-1,w=2*g+1;i.graph().nestingRoot=a,yr(i.edges(),function(b){i.edge(b).minlen*=w});var v=DHe(i)+1;yr(i.children(),function(b){Wjt(i,a,w,v,g,f,b)}),i.graph().nodeRankFactor=w}function Wjt(i,a,f,g,w,v,b){var E=i.children(b);if(!E.length){b!==a&&i.setEdge(a,b,{weight:0,minlen:f});return}var S=Ojt(i,"_bt"),_=Ojt(i,"_bb"),M=i.node(b);i.setParent(S,b),M.borderTop=S,i.setParent(_,b),M.borderBottom=_,yr(E,function(F){Wjt(i,a,f,g,w,v,F);var R=i.node(F),B=R.borderTop?R.borderTop:F,z=R.borderBottom?R.borderBottom:F,Y=R.borderTop?g:2*g,nt=B!==z?1:w-v[b]+1;i.setEdge(S,B,{weight:Y,minlen:nt,nestingEdge:!0}),i.setEdge(z,_,{weight:Y,minlen:nt,nestingEdge:!0})}),i.parent(b)||i.setEdge(a,S,{weight:0,minlen:w+v[b]})}function LHe(i){var a={};function f(g,w){var v=i.children(g);v&&v.length&&yr(v,function(b){f(b,w+1)}),a[g]=w}return yr(i.children(),function(g){f(g,1)}),a}function DHe(i){return WF(i.edges(),function(a,f){return a+i.edge(f).weight},0)}function MHe(i){var a=i.graph();i.removeNode(a.nestingRoot),delete a.nestingRoot,yr(i.edges(),function(f){var g=i.edge(f);g.nestingEdge&&i.removeEdge(f)})}function IHe(i,a,f){var g={},w;yr(f,function(v){for(var b=i.parent(v),E,S;b;){if(E=i.parent(b),E?(S=g[E],g[E]=b):(S=w,w=b),S&&S!==b){a.setEdge(S,b);return}b=E}})}function OHe(i,a,f){var g=NHe(i),w=new l1({compound:!0}).setGraph({root:g}).setDefaultNodeLabel(function(v){return i.node(v)});return yr(i.nodes(),function(v){var b=i.node(v),E=i.parent(v);(b.rank===a||b.minRank<=a&&a<=b.maxRank)&&(w.setNode(v),w.setParent(v,E||g),yr(i[f](v),function(S){var _=S.v===v?S.w:S.v,M=w.edge(_,v),F=Tf(M)?0:M.weight;w.setEdge(_,v,{weight:i.edge(S).weight+F})}),lo(b,"minRank")&&w.setNode(v,{borderLeft:b.borderLeft[a],borderRight:b.borderRight[a]}))}),w}function NHe(i){for(var a;i.hasNode(a=WY("_root")););return a}function PHe(i,a){for(var f=0,g=1;g0;)M%2&&(F+=E[M+1]),M=M-1>>1,E[M]+=_.weight;S+=_.weight*F})),S}function BHe(i){var a={},f=Fx(i.nodes(),function(E){return!i.children(E).length}),g=D9(u1(f,function(E){return i.node(E).rank})),w=u1(M9(g+1),function(){return[]});function v(E){if(!lo(a,E)){a[E]=!0;var S=i.node(E);w[S.rank].push(E),yr(i.successors(E),v)}}var b=YF(f,function(E){return i.node(E).rank});return yr(b,v),w}function RHe(i,a){return u1(a,function(f){var g=i.inEdges(f);if(g.length){var w=WF(g,function(v,b){var E=i.edge(b),S=i.node(b.v);return{sum:v.sum+E.weight*S.order,weight:v.weight+E.weight}},{sum:0,weight:0});return{v:f,barycenter:w.sum/w.weight,weight:w.weight}}else return{v:f}})}function jHe(i,a){var f={};yr(i,function(w,v){var b=f[w.v]={indegree:0,in:[],out:[],vs:[w.v],i:v};Tf(w.barycenter)||(b.barycenter=w.barycenter,b.weight=w.weight)}),yr(a.edges(),function(w){var v=f[w.v],b=f[w.w];!Tf(v)&&!Tf(b)&&(b.indegree++,v.out.push(f[w.w]))});var g=Fx(f,function(w){return!w.indegree});return $He(g)}function $He(i){var a=[];function f(v){return function(b){b.merged||(Tf(b.barycenter)||Tf(v.barycenter)||b.barycenter>=v.barycenter)&&zHe(v,b)}}function g(v){return function(b){b.in.push(v),--b.indegree===0&&i.push(b)}}for(;i.length;){var w=i.pop();a.push(w),yr(w.in.reverse(),f(w)),yr(w.out,g(w))}return u1(Fx(a,function(v){return!v.merged}),function(v){return KF(v,["vs","i","barycenter","weight"])})}function zHe(i,a){var f=0,g=0;i.weight&&(f+=i.barycenter*i.weight,g+=i.weight),a.weight&&(f+=a.barycenter*a.weight,g+=a.weight),i.vs=a.vs.concat(i.vs),i.barycenter=f/g,i.weight=g,i.i=Math.min(a.i,i.i),a.merged=!0}function qHe(i,a){var f=sHe(i,function(M){return lo(M,"barycenter")}),g=f.lhs,w=YF(f.rhs,function(M){return-M.i}),v=[],b=0,E=0,S=0;g.sort(HHe(!!a)),S=Yjt(v,w,S),yr(g,function(M){S+=M.vs.length,v.push(M.vs),b+=M.barycenter*M.weight,E+=M.weight,S=Yjt(v,w,S)});var _={vs:vD(v)};return E&&(_.barycenter=b/E,_.weight=E),_}function Yjt(i,a,f){for(var g;a.length&&(g=GY(a)).i<=f;)a.pop(),i.push(g.vs),f++;return f}function HHe(i){return function(a,f){return a.barycenterf.barycenter?1:i?f.i-a.i:a.i-f.i}}function Xjt(i,a,f,g){var w=i.children(a),v=i.node(a),b=v?v.borderLeft:void 0,E=v?v.borderRight:void 0,S={};b&&(w=Fx(w,function(z){return z!==b&&z!==E}));var _=RHe(i,w);yr(_,function(z){if(i.children(z.v).length){var Y=Xjt(i,z.v,f,g);S[z.v]=Y,lo(Y,"barycenter")&&UHe(z,Y)}});var M=jHe(_,f);VHe(M,S);var F=qHe(M,g);if(b&&(F.vs=vD([b,F.vs,E]),i.predecessors(b).length)){var R=i.node(i.predecessors(b)[0]),B=i.node(i.predecessors(E)[0]);lo(F,"barycenter")||(F.barycenter=0,F.weight=0),F.barycenter=(F.barycenter*F.weight+R.order+B.order)/(F.weight+2),F.weight+=2}return F}function VHe(i,a){yr(i,function(f){f.vs=vD(f.vs.map(function(g){return a[g]?a[g].vs:g}))})}function UHe(i,a){Tf(i.barycenter)?(i.barycenter=a.barycenter,i.weight=a.weight):(i.barycenter=(i.barycenter*i.weight+a.barycenter*a.weight)/(i.weight+a.weight),i.weight+=a.weight)}function GHe(i){var a=Njt(i),f=Qjt(i,M9(1,a+1),"inEdges"),g=Qjt(i,M9(a-1,-1,-1),"outEdges"),w=BHe(i);Jjt(i,w);for(var v=Number.POSITIVE_INFINITY,b,E=0,S=0;S<4;++E,++S){KHe(E%2?f:g,E%4>=2),w=YY(i);var _=PHe(i,w);_b||E>a[S].lim));for(_=S,S=g;(S=i.parent(S))!==_;)v.push(S);return{path:w.concat(v.reverse()),lca:_}}function XHe(i){var a={},f=0;function g(w){var v=f;yr(i.children(w),g),a[w]={low:v,lim:f++}}return yr(i.children(),g),a}function QHe(i,a){var f={};function g(w,v){var b=0,E=0,S=w.length,_=GY(v);return yr(v,function(M,F){var R=ZHe(i,M),B=R?i.node(R).order:S;(R||M===_)&&(yr(v.slice(E,F+1),function(z){yr(i.predecessors(z),function(Y){var nt=i.node(Y),ot=nt.order;(ot_)&&Zjt(f,R,M)})})}function w(v,b){var E=-1,S,_=0;return yr(b,function(M,F){if(i.node(M).dummy==="border"){var R=i.predecessors(M);R.length&&(S=i.node(R[0]).order,g(b,_,F,E,S),_=F,E=S)}g(b,_,b.length,S,v.length)}),b}return WF(a,w),f}function ZHe(i,a){if(i.node(a).dummy)return bpt(i.predecessors(a),function(f){return i.node(f).dummy})}function Zjt(i,a,f){if(a>f){var g=a;a=f,f=g}var w=i[a];w||(i[a]=w={}),w[f]=!0}function tVe(i,a,f){if(a>f){var g=a;a=f,f=g}return lo(i[a],f)}function eVe(i,a,f,g){var w={},v={},b={};return yr(a,function(E){yr(E,function(S,_){w[S]=S,v[S]=S,b[S]=_})}),yr(a,function(E){var S=-1;yr(E,function(_){var M=g(_);if(M.length){M=YF(M,function(Y){return b[Y]});for(var F=(M.length-1)/2,R=Math.floor(F),B=Math.ceil(F);R<=B;++R){var z=M[R];v[_]===_&&S0}function o4(i,a,f){var g=i.x,w=i.y,v=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;a.forEach(function(z){b=Math.min(b,z.x),E=Math.min(E,z.y)});for(var S=g-i.width/2-b,_=w-i.height/2-E,M=0;M1&&v.sort(function(z,Y){var nt=z.x-f.x,ot=z.y-f.y,ft=Math.sqrt(nt*nt+ot*ot),wt=Y.x-f.x,mt=Y.y-f.y,ct=Math.sqrt(wt*wt+mt*mt);return ftMath.abs(w)*E?(v<0&&(E=-E),S=v===0?0:E*w/v,_=E):(w<0&&(b=-b),S=b,_=w===0?0:b*v/w),{x:f+S,y:g+_}}var Rpt={rect:iUe,ellipse:sUe,circle:aUe,diamond:oUe};function rUe(i){Rpt=i}function iUe(i,a,f){var g=i.insert("rect",":first-child").attr("rx",f.rx).attr("ry",f.ry).attr("x",-a.width/2).attr("y",-a.height/2).attr("width",a.width).attr("height",a.height);return f.intersect=function(w){return Bpt(f,w)},g}function sUe(i,a,f){var g=a.width/2,w=a.height/2,v=i.insert("ellipse",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("rx",g).attr("ry",w);return f.intersect=function(b){return s$t(f,g,w,b)},v}function aUe(i,a,f){var g=Math.max(a.width,a.height)/2,w=i.insert("circle",":first-child").attr("x",-a.width/2).attr("y",-a.height/2).attr("r",g);return f.intersect=function(v){return eUe(f,g,v)},w}function oUe(i,a,f){var g=a.width*Math.SQRT2/2,w=a.height*Math.SQRT2/2,v=[{x:0,y:-w},{x:-g,y:0},{x:0,y:w},{x:g,y:0}],b=i.insert("polygon",":first-child").attr("points",v.map(function(E){return E.x+","+E.y}).join(" "));return f.intersect=function(E){return o4(f,v,E)},b}function cUe(){var i=function(a,f){hUe(f);var g=JF(a,"output"),w=JF(g,"clusters"),v=JF(g,"edgePaths"),b=Npt(JF(g,"edgeLabels"),f),E=Fpt(JF(g,"nodes"),f,Rpt);kD(f),tUe(E,f),ZVe(b,f),Ppt(v,f,Dpt);var S=Opt(w,f);JVe(S,f),fUe(f)};return i.createNodes=function(a){return arguments.length?(QVe(a),i):Fpt},i.createClusters=function(a){return arguments.length?(HVe(a),i):Opt},i.createEdgeLabels=function(a){return arguments.length?(VVe(a),i):Npt},i.createEdgePaths=function(a){return arguments.length?(UVe(a),i):Ppt},i.shapes=function(a){return arguments.length?(rUe(a),i):Rpt},i.arrows=function(a){return arguments.length?(FVe(a),i):Dpt},i}var uUe={paddingLeft:10,paddingRight:10,paddingTop:10,paddingBottom:10,rx:0,ry:0,shape:"rect"},lUe={arrowhead:"normal",curve:Kg};function hUe(i){i.nodes().forEach(function(a){var f=i.node(a);!lo(f,"label")&&!i.children(a).length&&(f.label=a),lo(f,"paddingX")&&yD(f,{paddingLeft:f.paddingX,paddingRight:f.paddingX}),lo(f,"paddingY")&&yD(f,{paddingTop:f.paddingY,paddingBottom:f.paddingY}),lo(f,"padding")&&yD(f,{paddingLeft:f.padding,paddingRight:f.padding,paddingTop:f.padding,paddingBottom:f.padding}),yD(f,uUe),yr(["paddingLeft","paddingRight","paddingTop","paddingBottom"],function(g){f[g]=Number(f[g])}),lo(f,"width")&&(f._prevWidth=f.width),lo(f,"height")&&(f._prevHeight=f.height)}),i.edges().forEach(function(a){var f=i.edge(a);lo(f,"label")||(f.label=""),yD(f,lUe)})}function fUe(i){yr(i.nodes(),function(a){var f=i.node(a);lo(f,"_prevWidth")?f.width=f._prevWidth:delete f.width,lo(f,"_prevHeight")?f.height=f._prevHeight:delete f.height,delete f._prevWidth,delete f._prevHeight})}function JF(i,a){var f=i.select("g."+a);return f.empty()&&(f=i.append("g").attr("class",a)),f}function o$t(i,a,f){const g=a.width,w=a.height,v=(g+w)*.9,b=[{x:v/2,y:0},{x:v,y:-v/2},{x:v/2,y:-v},{x:0,y:-v/2}],E=Rx(i,v,v,b);return f.intersect=function(S){return o4(f,b,S)},E}function c$t(i,a,f){const w=a.height,v=w/4,b=a.width+2*v,E=[{x:v,y:0},{x:b-v,y:0},{x:b,y:-w/2},{x:b-v,y:-w},{x:v,y:-w},{x:0,y:-w/2}],S=Rx(i,b,w,E);return f.intersect=function(_){return o4(f,E,_)},S}function u$t(i,a,f){const g=a.width,w=a.height,v=[{x:-w/2,y:0},{x:g,y:0},{x:g,y:-w},{x:-w/2,y:-w},{x:0,y:-w/2}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function l$t(i,a,f){const g=a.width,w=a.height,v=[{x:-2*w/6,y:0},{x:g-w/6,y:0},{x:g+2*w/6,y:-w},{x:w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function h$t(i,a,f){const g=a.width,w=a.height,v=[{x:2*w/6,y:0},{x:g+w/6,y:0},{x:g-2*w/6,y:-w},{x:-w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function f$t(i,a,f){const g=a.width,w=a.height,v=[{x:-2*w/6,y:0},{x:g+2*w/6,y:0},{x:g-w/6,y:-w},{x:w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function d$t(i,a,f){const g=a.width,w=a.height,v=[{x:w/6,y:0},{x:g-w/6,y:0},{x:g+2*w/6,y:-w},{x:-2*w/6,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function g$t(i,a,f){const g=a.width,w=a.height,v=[{x:0,y:0},{x:g+w/2,y:0},{x:g,y:-w/2},{x:g+w/2,y:-w},{x:0,y:-w}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function p$t(i,a,f){const g=a.height,w=a.width+g/4,v=i.insert("rect",":first-child").attr("rx",g/2).attr("ry",g/2).attr("x",-w/2).attr("y",-g/2).attr("width",w).attr("height",g);return f.intersect=function(b){return Bpt(f,b)},v}function b$t(i,a,f){const g=a.width,w=a.height,v=[{x:0,y:0},{x:g,y:0},{x:g,y:-w},{x:0,y:-w},{x:0,y:0},{x:-8,y:0},{x:g+8,y:0},{x:g+8,y:-w},{x:-8,y:-w},{x:-8,y:0}],b=Rx(i,g,w,v);return f.intersect=function(E){return o4(f,v,E)},b}function w$t(i,a,f){const g=a.width,w=g/2,v=w/(2.5+g/50),b=a.height+v,E="M 0,"+v+" a "+w+","+v+" 0,0,0 "+g+" 0 a "+w+","+v+" 0,0,0 "+-g+" 0 l 0,"+b+" a "+w+","+v+" 0,0,0 "+g+" 0 l 0,"+-b,S=i.attr("label-offset-y",v).insert("path",":first-child").attr("d",E).attr("transform","translate("+-g/2+","+-(b/2+v)+")");return f.intersect=function(_){const M=Bpt(f,_),F=M.x-f.x;if(w!=0&&(Math.abs(F)f.height/2-v)){let R=v*v*(1-F*F/(w*w));R!=0&&(R=Math.sqrt(R)),R=v-R,_.y-f.y>0&&(R=-R),M.y+=R}return M},S}function dUe(i){i.shapes().question=o$t,i.shapes().hexagon=c$t,i.shapes().stadium=p$t,i.shapes().subroutine=b$t,i.shapes().cylinder=w$t,i.shapes().rect_left_inv_arrow=u$t,i.shapes().lean_right=l$t,i.shapes().lean_left=h$t,i.shapes().trapezoid=f$t,i.shapes().inv_trapezoid=d$t,i.shapes().rect_right_inv_arrow=g$t}function gUe(i){i({question:o$t}),i({hexagon:c$t}),i({stadium:p$t}),i({subroutine:b$t}),i({cylinder:w$t}),i({rect_left_inv_arrow:u$t}),i({lean_right:l$t}),i({lean_left:h$t}),i({trapezoid:f$t}),i({inv_trapezoid:d$t}),i({rect_right_inv_arrow:g$t})}function Rx(i,a,f,g){return i.insert("polygon",":first-child").attr("points",g.map(function(w){return w.x+","+w.y}).join(" ")).attr("transform","translate("+-a/2+","+f/2+")")}const pUe={addToRender:dUe,addToRenderV2:gUe},m$t={},bUe=function(i){const a=Object.keys(i);for(const f of a)m$t[f]=i[f]},v$t=function(i,a,f,g,w,v){const b=g?g.select(`[id="${f}"]`):Tr(`[id="${f}"]`),E=w||document;Object.keys(i).forEach(function(_){const M=i[_];let F="default";M.classes.length>0&&(F=M.classes.join(" "));const R=C2(M.styles);let B=M.text!==void 0?M.text:M.id,z;if(j1(Re().flowchart.htmlLabels)){const ot={label:B.replace(/fa[blrs]?:fa-[\w-]+/g,ft=>``)};z=Mpt(b,ot).node(),z.parentNode.removeChild(z)}else{const ot=E.createElementNS("http://www.w3.org/2000/svg","text");ot.setAttribute("style",R.labelStyle.replace("color:","fill:"));const ft=B.split(ei.lineBreakRegex);for(const wt of ft){const mt=E.createElementNS("http://www.w3.org/2000/svg","tspan");mt.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),mt.setAttribute("dy","1em"),mt.setAttribute("x","1"),mt.textContent=wt,ot.appendChild(mt)}z=ot}let Y=0,nt="";switch(M.type){case"round":Y=5,nt="rect";break;case"square":nt="rect";break;case"diamond":nt="question";break;case"hexagon":nt="hexagon";break;case"odd":nt="rect_left_inv_arrow";break;case"lean_right":nt="lean_right";break;case"lean_left":nt="lean_left";break;case"trapezoid":nt="trapezoid";break;case"inv_trapezoid":nt="inv_trapezoid";break;case"odd_right":nt="rect_left_inv_arrow";break;case"circle":nt="circle";break;case"ellipse":nt="ellipse";break;case"stadium":nt="stadium";break;case"subroutine":nt="subroutine";break;case"cylinder":nt="cylinder";break;case"group":nt="rect";break;default:nt="rect"}Kt.warn("Adding node",M.id,M.domId),a.setNode(v.db.lookUpDomId(M.id),{labelType:"svg",labelStyle:R.labelStyle,shape:nt,label:z,rx:Y,ry:Y,class:F,style:R.style,id:v.db.lookUpDomId(M.id)})})},y$t=function(i,a,f){let g=0,w,v;if(i.defaultStyle!==void 0){const b=C2(i.defaultStyle);w=b.style,v=b.labelStyle}i.forEach(function(b){g++;const E="L-"+b.start+"-"+b.end,S="LS-"+b.start,_="LE-"+b.end,M={};b.type==="arrow_open"?M.arrowhead="none":M.arrowhead="normal";let F="",R="";if(b.style!==void 0){const B=C2(b.style);F=B.style,R=B.labelStyle}else switch(b.stroke){case"normal":F="fill:none",w!==void 0&&(F=w),v!==void 0&&(R=v);break;case"dotted":F="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":F=" stroke-width: 3.5px;fill:none";break}M.style=F,M.labelStyle=R,b.interpolate!==void 0?M.curve=Xw(b.interpolate,Kg):i.defaultInterpolate!==void 0?M.curve=Xw(i.defaultInterpolate,Kg):M.curve=Xw(m$t.curve,Kg),b.text===void 0?b.style!==void 0&&(M.arrowheadStyle="fill: #333"):(M.arrowheadStyle="fill: #333",M.labelpos="c",j1(Re().flowchart.htmlLabels)?(M.labelType="html",M.label=`${b.text.replace(/fa[blrs]?:fa-[\w-]+/g,B=>``)}`):(M.labelType="text",M.label=b.text.replace(ei.lineBreakRegex,` +`),b.style===void 0&&(M.style=M.style||"stroke: #333; stroke-width: 1.5px;fill:none"),M.labelStyle=M.labelStyle.replace("color:","fill:"))),M.id=E,M.class=S+" "+_,M.minlen=b.length||1,a.setEdge(f.db.lookUpDomId(b.start),f.db.lookUpDomId(b.end),M,g)})},wUe={setConf:bUe,addVertices:v$t,addEdges:y$t,getClasses:function(i,a){return Kt.info("Extracting classes"),a.db.getClasses()},draw:function(i,a,f,g){Kt.info("Drawing flowchart");const{securityLevel:w,flowchart:v}=Re();let b;w==="sandbox"&&(b=Tr("#i"+a));const E=Tr(w==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=w==="sandbox"?b.nodes()[0].contentDocument:document;let _=g.db.getDirection();_===void 0&&(_="TD");const M=v.nodeSpacing||50,F=v.rankSpacing||50,R=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:_,nodesep:M,ranksep:F,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});let B;const z=g.db.getSubGraphs();for(let rt=z.length-1;rt>=0;rt--)B=z[rt],g.db.addVertex(B.id,B.title,"group",void 0,B.classes);const Y=g.db.getVertices();Kt.warn("Get vertices",Y);const nt=g.db.getEdges();let ot=0;for(ot=z.length-1;ot>=0;ot--){B=z[ot],$Ot("cluster").append("text");for(let rt=0;rt{a.forEach(w=>{xUe[w](i,f,g)})},xUe={extension:(i,a,f)=>{Kt.trace("Making markers for ",f),i.append("defs").append("marker").attr("id",f+"_"+a+"-extensionStart").attr("class","marker extension "+a).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-extensionEnd").attr("class","marker extension "+a).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")},composition:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-compositionStart").attr("class","marker composition "+a).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-compositionEnd").attr("class","marker composition "+a).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},aggregation:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-aggregationStart").attr("class","marker aggregation "+a).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-aggregationEnd").attr("class","marker aggregation "+a).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")},dependency:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-dependencyStart").attr("class","marker dependency "+a).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",f+"_"+a+"-dependencyEnd").attr("class","marker dependency "+a).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},lollipop:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-lollipopStart").attr("class","marker lollipop "+a).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),i.append("defs").append("marker").attr("id",f+"_"+a+"-lollipopEnd").attr("class","marker lollipop "+a).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)},point:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-pointEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",f+"_"+a+"-pointStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},circle:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-circleEnd").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),i.append("marker").attr("id",f+"_"+a+"-circleStart").attr("class","marker "+a).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")},cross:(i,a,f)=>{i.append("marker").attr("id",f+"_"+a+"-crossEnd").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),i.append("marker").attr("id",f+"_"+a+"-crossStart").attr("class","marker cross "+a).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")},barb:(i,a,f)=>{i.append("defs").append("marker").attr("id",f+"_"+a+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}},jpt=yUe;function kUe(i,a){a&&i.attr("style",a)}function EUe(i){const a=Tr(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),f=a.append("xhtml:div"),g=i.label,w=i.isNode?"nodeLabel":"edgeLabel";return f.html('"+g+""),kUe(f,i.labelStyle),f.style("display","inline-block"),f.style("white-space","nowrap"),f.attr("xmlns","http://www.w3.org/1999/xhtml"),a.node()}const ab=(i,a,f,g)=>{let w=i||"";if(typeof w=="object"&&(w=w[0]),j1(Re().flowchart.htmlLabels)){w=w.replace(/\\n|\n/g,"
    "),Kt.debug("vertexText"+w);const v={isNode:g,label:IF(w).replace(/fa[blrs]?:fa-[\w-]+/g,E=>``),labelStyle:a.replace("fill:","color:")};return EUe(v)}else{const v=document.createElementNS("http://www.w3.org/2000/svg","text");v.setAttribute("style",a.replace("color:","fill:"));let b=[];typeof w=="string"?b=w.split(/\\n|\n|/gi):Array.isArray(w)?b=w:b=[];for(const E of b){const S=document.createElementNS("http://www.w3.org/2000/svg","tspan");S.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),S.setAttribute("dy","1em"),S.setAttribute("x","0"),f?S.setAttribute("class","title-row"):S.setAttribute("class","row"),S.textContent=E.trim(),v.appendChild(S)}return v}},TUe={};function CUe(i,a){const f=a||TUe,g=typeof f.includeImageAlt=="boolean"?f.includeImageAlt:!0,w=typeof f.includeHtml=="boolean"?f.includeHtml:!0;return x$t(i,g,w)}function x$t(i,a,f){if(SUe(i)){if("value"in i)return i.type==="html"&&!f?"":i.value;if(a&&"alt"in i&&i.alt)return i.alt;if("children"in i)return k$t(i.children,a,f)}return Array.isArray(i)?k$t(i,a,f):""}function k$t(i,a,f){const g=[];let w=-1;for(;++ww?0:w+a:a=a>w?w:a,f=f>0?f:0,g.length<1e4)b=Array.from(g),b.unshift(a,f),i.splice(...b);else for(f&&i.splice(a,f);v0?(c4(i,i.length,0,a),i):a}const E$t={}.hasOwnProperty;function _Ue(i){const a={};let f=-1;for(;++fb))return;const it=a.events.length;let gt=it,Q,dt;for(;gt--;)if(a.events[gt][0]==="exit"&&a.events[gt][1].type==="chunkFlow"){if(Q){dt=a.events[gt][1].end;break}Q=!0}for(ot(g),rt=it;rtwt;){const ct=f[mt];a.containerState=ct[1],ct[0].exit.call(a,i)}f.length=wt}function ft(){w.write([null]),v=void 0,w=void 0,a.containerState._closeFlow=void 0}}function $Ue(i,a,f){return Cl(i,i.attempt(this.parser.constructs.document,a,f),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function C$t(i){if(i===null||ob(i)||PUe(i))return 1;if(NUe(i))return 2}function qpt(i,a,f){const g=[];let w=-1;for(;++w1&&i[f][1].end.offset-i[f][1].start.offset>1?2:1;const F=Object.assign({},i[g][1].end),R=Object.assign({},i[f][1].start);S$t(F,-S),S$t(R,S),b={type:S>1?"strongSequence":"emphasisSequence",start:F,end:Object.assign({},i[g][1].end)},E={type:S>1?"strongSequence":"emphasisSequence",start:Object.assign({},i[f][1].start),end:R},v={type:S>1?"strongText":"emphasisText",start:Object.assign({},i[g][1].end),end:Object.assign({},i[f][1].start)},w={type:S>1?"strong":"emphasis",start:Object.assign({},b.start),end:Object.assign({},E.end)},i[g][1].end=Object.assign({},b.start),i[f][1].start=Object.assign({},E.end),_=[],i[g][1].end.offset-i[g][1].start.offset&&(_=tm(_,[["enter",i[g][1],a],["exit",i[g][1],a]])),_=tm(_,[["enter",w,a],["enter",b,a],["exit",b,a],["enter",v,a]]),_=tm(_,qpt(a.parser.constructs.insideSpan.null,i.slice(g+1,f),a)),_=tm(_,[["exit",v,a],["enter",E,a],["exit",E,a],["exit",w,a]]),i[f][1].end.offset-i[f][1].start.offset?(M=2,_=tm(_,[["enter",i[f][1],a],["exit",i[f][1],a]])):M=0,c4(i,g-1,f-g+3,_),f=g+_.length-M-2;break}}for(f=-1;++f0&&du(rt)?Cl(i,ft,"linePrefix",v+1)(rt):ft(rt)}function ft(rt){return rt===null||$a(rt)?i.check(M$t,Y,mt)(rt):(i.enter("codeFlowValue"),wt(rt))}function wt(rt){return rt===null||$a(rt)?(i.exit("codeFlowValue"),ft(rt)):(i.consume(rt),wt)}function mt(rt){return i.exit("codeFenced"),a(rt)}function ct(rt,it,gt){let Q=0;return dt;function dt(It){return rt.enter("lineEnding"),rt.consume(It),rt.exit("lineEnding"),K}function K(It){return rt.enter("codeFencedFence"),du(It)?Cl(rt,yt,"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(It):yt(It)}function yt(It){return It===E?(rt.enter("codeFencedFenceSequence"),V(It)):gt(It)}function V(It){return It===E?(Q++,rt.consume(It),V):Q>=b?(rt.exit("codeFencedFenceSequence"),du(It)?Cl(rt,Ot,"whitespace")(It):Ot(It)):gt(It)}function Ot(It){return It===null||$a(It)?(rt.exit("codeFencedFence"),it(It)):gt(It)}}}function JUe(i,a,f){const g=this;return w;function w(b){return b===null?f(b):(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),v)}function v(b){return g.parser.lazy[g.now().line]?f(b):a(b)}}const Upt={name:"codeIndented",tokenize:tGe},ZUe={tokenize:eGe,partial:!0};function tGe(i,a,f){const g=this;return w;function w(_){return i.enter("codeIndented"),Cl(i,v,"linePrefix",4+1)(_)}function v(_){const M=g.events[g.events.length-1];return M&&M[1].type==="linePrefix"&&M[2].sliceSerialize(M[1],!0).length>=4?b(_):f(_)}function b(_){return _===null?S(_):$a(_)?i.attempt(ZUe,b,S)(_):(i.enter("codeFlowValue"),E(_))}function E(_){return _===null||$a(_)?(i.exit("codeFlowValue"),b(_)):(i.consume(_),E)}function S(_){return i.exit("codeIndented"),a(_)}}function eGe(i,a,f){const g=this;return w;function w(b){return g.parser.lazy[g.now().line]?f(b):$a(b)?(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),w):Cl(i,v,"linePrefix",4+1)(b)}function v(b){const E=g.events[g.events.length-1];return E&&E[1].type==="linePrefix"&&E[2].sliceSerialize(E[1],!0).length>=4?a(b):$a(b)?w(b):f(b)}}const nGe={name:"codeText",tokenize:sGe,resolve:rGe,previous:iGe};function rGe(i){let a=i.length-4,f=3,g,w;if((i[f][1].type==="lineEnding"||i[f][1].type==="space")&&(i[a][1].type==="lineEnding"||i[a][1].type==="space")){for(g=f;++g=4?a(b):i.interrupt(g.parser.constructs.flow,f,a)(b)}}function N$t(i,a,f,g,w,v,b,E,S){const _=S||Number.POSITIVE_INFINITY;let M=0;return F;function F(ot){return ot===60?(i.enter(g),i.enter(w),i.enter(v),i.consume(ot),i.exit(v),R):ot===null||ot===32||ot===41||$pt(ot)?f(ot):(i.enter(g),i.enter(b),i.enter(E),i.enter("chunkString",{contentType:"string"}),Y(ot))}function R(ot){return ot===62?(i.enter(v),i.consume(ot),i.exit(v),i.exit(w),i.exit(g),a):(i.enter(E),i.enter("chunkString",{contentType:"string"}),B(ot))}function B(ot){return ot===62?(i.exit("chunkString"),i.exit(E),R(ot)):ot===null||ot===60||$a(ot)?f(ot):(i.consume(ot),ot===92?z:B)}function z(ot){return ot===60||ot===62||ot===92?(i.consume(ot),B):B(ot)}function Y(ot){return!M&&(ot===null||ot===41||ob(ot))?(i.exit("chunkString"),i.exit(E),i.exit(b),i.exit(g),a(ot)):M<_&&ot===40?(i.consume(ot),M++,Y):ot===41?(i.consume(ot),M--,Y):ot===null||ot===32||ot===40||$pt(ot)?f(ot):(i.consume(ot),ot===92?nt:Y)}function nt(ot){return ot===40||ot===41||ot===92?(i.consume(ot),Y):Y(ot)}}function P$t(i,a,f,g,w,v){const b=this;let E=0,S;return _;function _(B){return i.enter(g),i.enter(w),i.consume(B),i.exit(w),i.enter(v),M}function M(B){return E>999||B===null||B===91||B===93&&!S||B===94&&!E&&"_hiddenFootnoteSupport"in b.parser.constructs?f(B):B===93?(i.exit(v),i.enter(w),i.consume(B),i.exit(w),i.exit(g),a):$a(B)?(i.enter("lineEnding"),i.consume(B),i.exit("lineEnding"),M):(i.enter("chunkString",{contentType:"string"}),F(B))}function F(B){return B===null||B===91||B===93||$a(B)||E++>999?(i.exit("chunkString"),M(B)):(i.consume(B),S||(S=!du(B)),B===92?R:F)}function R(B){return B===91||B===92||B===93?(i.consume(B),E++,F):F(B)}}function F$t(i,a,f,g,w,v){let b;return E;function E(R){return R===34||R===39||R===40?(i.enter(g),i.enter(w),i.consume(R),i.exit(w),b=R===40?41:R,S):f(R)}function S(R){return R===b?(i.enter(w),i.consume(R),i.exit(w),i.exit(g),a):(i.enter(v),_(R))}function _(R){return R===b?(i.exit(v),S(b)):R===null?f(R):$a(R)?(i.enter("lineEnding"),i.consume(R),i.exit("lineEnding"),Cl(i,_,"linePrefix")):(i.enter("chunkString",{contentType:"string"}),M(R))}function M(R){return R===b||R===null||$a(R)?(i.exit("chunkString"),_(R)):(i.consume(R),R===92?F:M)}function F(R){return R===b||R===92?(i.consume(R),M):M(R)}}function ZF(i,a){let f;return g;function g(w){return $a(w)?(i.enter("lineEnding"),i.consume(w),i.exit("lineEnding"),f=!0,g):du(w)?Cl(i,g,f?"linePrefix":"lineSuffix")(w):a(w)}}function ED(i){return i.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const fGe={name:"definition",tokenize:gGe},dGe={tokenize:pGe,partial:!0};function gGe(i,a,f){const g=this;let w;return v;function v(B){return i.enter("definition"),b(B)}function b(B){return P$t.call(g,i,E,f,"definitionLabel","definitionLabelMarker","definitionLabelString")(B)}function E(B){return w=ED(g.sliceSerialize(g.events[g.events.length-1][1]).slice(1,-1)),B===58?(i.enter("definitionMarker"),i.consume(B),i.exit("definitionMarker"),S):f(B)}function S(B){return ob(B)?ZF(i,_)(B):_(B)}function _(B){return N$t(i,M,f,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(B)}function M(B){return i.attempt(dGe,F,F)(B)}function F(B){return du(B)?Cl(i,R,"whitespace")(B):R(B)}function R(B){return B===null||$a(B)?(i.exit("definition"),g.parser.defined.push(w),a(B)):f(B)}}function pGe(i,a,f){return g;function g(E){return ob(E)?ZF(i,w)(E):f(E)}function w(E){return F$t(i,v,f,"definitionTitle","definitionTitleMarker","definitionTitleString")(E)}function v(E){return du(E)?Cl(i,b,"whitespace")(E):b(E)}function b(E){return E===null||$a(E)?a(E):f(E)}}const bGe={name:"hardBreakEscape",tokenize:wGe};function wGe(i,a,f){return g;function g(v){return i.enter("hardBreakEscape"),i.consume(v),w}function w(v){return $a(v)?(i.exit("hardBreakEscape"),a(v)):f(v)}}const mGe={name:"headingAtx",tokenize:yGe,resolve:vGe};function vGe(i,a){let f=i.length-2,g=3,w,v;return i[g][1].type==="whitespace"&&(g+=2),f-2>g&&i[f][1].type==="whitespace"&&(f-=2),i[f][1].type==="atxHeadingSequence"&&(g===f-1||f-4>g&&i[f-2][1].type==="whitespace")&&(f-=g+1===f?2:4),f>g&&(w={type:"atxHeadingText",start:i[g][1].start,end:i[f][1].end},v={type:"chunkText",start:i[g][1].start,end:i[f][1].end,contentType:"text"},c4(i,g,f-g+1,[["enter",w,a],["enter",v,a],["exit",v,a],["exit",w,a]])),i}function yGe(i,a,f){let g=0;return w;function w(M){return i.enter("atxHeading"),v(M)}function v(M){return i.enter("atxHeadingSequence"),b(M)}function b(M){return M===35&&g++<6?(i.consume(M),b):M===null||ob(M)?(i.exit("atxHeadingSequence"),E(M)):f(M)}function E(M){return M===35?(i.enter("atxHeadingSequence"),S(M)):M===null||$a(M)?(i.exit("atxHeading"),a(M)):du(M)?Cl(i,E,"whitespace")(M):(i.enter("atxHeadingText"),_(M))}function S(M){return M===35?(i.consume(M),S):(i.exit("atxHeadingSequence"),E(M))}function _(M){return M===null||M===35||ob(M)?(i.exit("atxHeadingText"),E(M)):(i.consume(M),_)}}const xGe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],B$t=["pre","script","style","textarea"],kGe={name:"htmlFlow",tokenize:SGe,resolveTo:CGe,concrete:!0},EGe={tokenize:AGe,partial:!0},TGe={tokenize:_Ge,partial:!0};function CGe(i){let a=i.length;for(;a--&&!(i[a][0]==="enter"&&i[a][1].type==="htmlFlow"););return a>1&&i[a-2][1].type==="linePrefix"&&(i[a][1].start=i[a-2][1].start,i[a+1][1].start=i[a-2][1].start,i.splice(a-2,2)),i}function SGe(i,a,f){const g=this;let w,v,b,E,S;return _;function _(Mt){return M(Mt)}function M(Mt){return i.enter("htmlFlow"),i.enter("htmlFlowData"),i.consume(Mt),F}function F(Mt){return Mt===33?(i.consume(Mt),R):Mt===47?(i.consume(Mt),v=!0,Y):Mt===63?(i.consume(Mt),w=3,g.interrupt?a:kt):u4(Mt)?(i.consume(Mt),b=String.fromCharCode(Mt),nt):f(Mt)}function R(Mt){return Mt===45?(i.consume(Mt),w=2,B):Mt===91?(i.consume(Mt),w=5,E=0,z):u4(Mt)?(i.consume(Mt),w=4,g.interrupt?a:kt):f(Mt)}function B(Mt){return Mt===45?(i.consume(Mt),g.interrupt?a:kt):f(Mt)}function z(Mt){const pn="CDATA[";return Mt===pn.charCodeAt(E++)?(i.consume(Mt),E===pn.length?g.interrupt?a:yt:z):f(Mt)}function Y(Mt){return u4(Mt)?(i.consume(Mt),b=String.fromCharCode(Mt),nt):f(Mt)}function nt(Mt){if(Mt===null||Mt===47||Mt===62||ob(Mt)){const pn=Mt===47,Ae=b.toLowerCase();return!pn&&!v&&B$t.includes(Ae)?(w=1,g.interrupt?a(Mt):yt(Mt)):xGe.includes(b.toLowerCase())?(w=6,pn?(i.consume(Mt),ot):g.interrupt?a(Mt):yt(Mt)):(w=7,g.interrupt&&!g.parser.lazy[g.now().line]?f(Mt):v?ft(Mt):wt(Mt))}return Mt===45||Zv(Mt)?(i.consume(Mt),b+=String.fromCharCode(Mt),nt):f(Mt)}function ot(Mt){return Mt===62?(i.consume(Mt),g.interrupt?a:yt):f(Mt)}function ft(Mt){return du(Mt)?(i.consume(Mt),ft):dt(Mt)}function wt(Mt){return Mt===47?(i.consume(Mt),dt):Mt===58||Mt===95||u4(Mt)?(i.consume(Mt),mt):du(Mt)?(i.consume(Mt),wt):dt(Mt)}function mt(Mt){return Mt===45||Mt===46||Mt===58||Mt===95||Zv(Mt)?(i.consume(Mt),mt):ct(Mt)}function ct(Mt){return Mt===61?(i.consume(Mt),rt):du(Mt)?(i.consume(Mt),ct):wt(Mt)}function rt(Mt){return Mt===null||Mt===60||Mt===61||Mt===62||Mt===96?f(Mt):Mt===34||Mt===39?(i.consume(Mt),S=Mt,it):du(Mt)?(i.consume(Mt),rt):gt(Mt)}function it(Mt){return Mt===S?(i.consume(Mt),S=null,Q):Mt===null||$a(Mt)?f(Mt):(i.consume(Mt),it)}function gt(Mt){return Mt===null||Mt===34||Mt===39||Mt===47||Mt===60||Mt===61||Mt===62||Mt===96||ob(Mt)?ct(Mt):(i.consume(Mt),gt)}function Q(Mt){return Mt===47||Mt===62||du(Mt)?wt(Mt):f(Mt)}function dt(Mt){return Mt===62?(i.consume(Mt),K):f(Mt)}function K(Mt){return Mt===null||$a(Mt)?yt(Mt):du(Mt)?(i.consume(Mt),K):f(Mt)}function yt(Mt){return Mt===45&&w===2?(i.consume(Mt),jt):Mt===60&&w===1?(i.consume(Mt),xt):Mt===62&&w===4?(i.consume(Mt),Gt):Mt===63&&w===3?(i.consume(Mt),kt):Mt===93&&w===5?(i.consume(Mt),Ct):$a(Mt)&&(w===6||w===7)?(i.exit("htmlFlowData"),i.check(EGe,Fe,V)(Mt)):Mt===null||$a(Mt)?(i.exit("htmlFlowData"),V(Mt)):(i.consume(Mt),yt)}function V(Mt){return i.check(TGe,Ot,Fe)(Mt)}function Ot(Mt){return i.enter("lineEnding"),i.consume(Mt),i.exit("lineEnding"),It}function It(Mt){return Mt===null||$a(Mt)?V(Mt):(i.enter("htmlFlowData"),yt(Mt))}function jt(Mt){return Mt===45?(i.consume(Mt),kt):yt(Mt)}function xt(Mt){return Mt===47?(i.consume(Mt),b="",Ft):yt(Mt)}function Ft(Mt){if(Mt===62){const pn=b.toLowerCase();return B$t.includes(pn)?(i.consume(Mt),Gt):yt(Mt)}return u4(Mt)&&b.length<8?(i.consume(Mt),b+=String.fromCharCode(Mt),Ft):yt(Mt)}function Ct(Mt){return Mt===93?(i.consume(Mt),kt):yt(Mt)}function kt(Mt){return Mt===62?(i.consume(Mt),Gt):Mt===45&&w===2?(i.consume(Mt),kt):yt(Mt)}function Gt(Mt){return Mt===null||$a(Mt)?(i.exit("htmlFlowData"),Fe(Mt)):(i.consume(Mt),Gt)}function Fe(Mt){return i.exit("htmlFlow"),a(Mt)}}function _Ge(i,a,f){const g=this;return w;function w(b){return $a(b)?(i.enter("lineEnding"),i.consume(b),i.exit("lineEnding"),v):f(b)}function v(b){return g.parser.lazy[g.now().line]?f(b):a(b)}}function AGe(i,a,f){return g;function g(w){return i.enter("lineEnding"),i.consume(w),i.exit("lineEnding"),i.attempt(XY,a,f)}}const LGe={name:"htmlText",tokenize:DGe};function DGe(i,a,f){const g=this;let w,v,b;return E;function E(kt){return i.enter("htmlText"),i.enter("htmlTextData"),i.consume(kt),S}function S(kt){return kt===33?(i.consume(kt),_):kt===47?(i.consume(kt),ct):kt===63?(i.consume(kt),wt):u4(kt)?(i.consume(kt),gt):f(kt)}function _(kt){return kt===45?(i.consume(kt),M):kt===91?(i.consume(kt),v=0,z):u4(kt)?(i.consume(kt),ft):f(kt)}function M(kt){return kt===45?(i.consume(kt),B):f(kt)}function F(kt){return kt===null?f(kt):kt===45?(i.consume(kt),R):$a(kt)?(b=F,xt(kt)):(i.consume(kt),F)}function R(kt){return kt===45?(i.consume(kt),B):F(kt)}function B(kt){return kt===62?jt(kt):kt===45?R(kt):F(kt)}function z(kt){const Gt="CDATA[";return kt===Gt.charCodeAt(v++)?(i.consume(kt),v===Gt.length?Y:z):f(kt)}function Y(kt){return kt===null?f(kt):kt===93?(i.consume(kt),nt):$a(kt)?(b=Y,xt(kt)):(i.consume(kt),Y)}function nt(kt){return kt===93?(i.consume(kt),ot):Y(kt)}function ot(kt){return kt===62?jt(kt):kt===93?(i.consume(kt),ot):Y(kt)}function ft(kt){return kt===null||kt===62?jt(kt):$a(kt)?(b=ft,xt(kt)):(i.consume(kt),ft)}function wt(kt){return kt===null?f(kt):kt===63?(i.consume(kt),mt):$a(kt)?(b=wt,xt(kt)):(i.consume(kt),wt)}function mt(kt){return kt===62?jt(kt):wt(kt)}function ct(kt){return u4(kt)?(i.consume(kt),rt):f(kt)}function rt(kt){return kt===45||Zv(kt)?(i.consume(kt),rt):it(kt)}function it(kt){return $a(kt)?(b=it,xt(kt)):du(kt)?(i.consume(kt),it):jt(kt)}function gt(kt){return kt===45||Zv(kt)?(i.consume(kt),gt):kt===47||kt===62||ob(kt)?Q(kt):f(kt)}function Q(kt){return kt===47?(i.consume(kt),jt):kt===58||kt===95||u4(kt)?(i.consume(kt),dt):$a(kt)?(b=Q,xt(kt)):du(kt)?(i.consume(kt),Q):jt(kt)}function dt(kt){return kt===45||kt===46||kt===58||kt===95||Zv(kt)?(i.consume(kt),dt):K(kt)}function K(kt){return kt===61?(i.consume(kt),yt):$a(kt)?(b=K,xt(kt)):du(kt)?(i.consume(kt),K):Q(kt)}function yt(kt){return kt===null||kt===60||kt===61||kt===62||kt===96?f(kt):kt===34||kt===39?(i.consume(kt),w=kt,V):$a(kt)?(b=yt,xt(kt)):du(kt)?(i.consume(kt),yt):(i.consume(kt),Ot)}function V(kt){return kt===w?(i.consume(kt),w=void 0,It):kt===null?f(kt):$a(kt)?(b=V,xt(kt)):(i.consume(kt),V)}function Ot(kt){return kt===null||kt===34||kt===39||kt===60||kt===61||kt===96?f(kt):kt===47||kt===62||ob(kt)?Q(kt):(i.consume(kt),Ot)}function It(kt){return kt===47||kt===62||ob(kt)?Q(kt):f(kt)}function jt(kt){return kt===62?(i.consume(kt),i.exit("htmlTextData"),i.exit("htmlText"),a):f(kt)}function xt(kt){return i.exit("htmlTextData"),i.enter("lineEnding"),i.consume(kt),i.exit("lineEnding"),Ft}function Ft(kt){return du(kt)?Cl(i,Ct,"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(kt):Ct(kt)}function Ct(kt){return i.enter("htmlTextData"),b(kt)}}const Gpt={name:"labelEnd",tokenize:FGe,resolveTo:PGe,resolveAll:NGe},MGe={tokenize:BGe},IGe={tokenize:RGe},OGe={tokenize:jGe};function NGe(i){let a=-1;for(;++a=3&&(_===null||$a(_))?(i.exit("thematicBreak"),a(_)):f(_)}function S(_){return _===w?(i.consume(_),g++,S):(i.exit("thematicBreakSequence"),du(_)?Cl(i,E,"whitespace")(_):E(_))}}const cb={name:"list",tokenize:WGe,continuation:{tokenize:YGe},exit:QGe},GGe={tokenize:JGe,partial:!0},KGe={tokenize:XGe,partial:!0};function WGe(i,a,f){const g=this,w=g.events[g.events.length-1];let v=w&&w[1].type==="linePrefix"?w[2].sliceSerialize(w[1],!0).length:0,b=0;return E;function E(B){const z=g.containerState.type||(B===42||B===43||B===45?"listUnordered":"listOrdered");if(z==="listUnordered"?!g.containerState.marker||B===g.containerState.marker:zpt(B)){if(g.containerState.type||(g.containerState.type=z,i.enter(z,{_container:!0})),z==="listUnordered")return i.enter("listItemPrefix"),B===42||B===45?i.check(QY,f,_)(B):_(B);if(!g.interrupt||B===49)return i.enter("listItemPrefix"),i.enter("listItemValue"),S(B)}return f(B)}function S(B){return zpt(B)&&++b<10?(i.consume(B),S):(!g.interrupt||b<2)&&(g.containerState.marker?B===g.containerState.marker:B===41||B===46)?(i.exit("listItemValue"),_(B)):f(B)}function _(B){return i.enter("listItemMarker"),i.consume(B),i.exit("listItemMarker"),g.containerState.marker=g.containerState.marker||B,i.check(XY,g.interrupt?f:M,i.attempt(GGe,R,F))}function M(B){return g.containerState.initialBlankLine=!0,v++,R(B)}function F(B){return du(B)?(i.enter("listItemPrefixWhitespace"),i.consume(B),i.exit("listItemPrefixWhitespace"),R):f(B)}function R(B){return g.containerState.size=v+g.sliceSerialize(i.exit("listItemPrefix"),!0).length,a(B)}}function YGe(i,a,f){const g=this;return g.containerState._closeFlow=void 0,i.check(XY,w,v);function w(E){return g.containerState.furtherBlankLines=g.containerState.furtherBlankLines||g.containerState.initialBlankLine,Cl(i,a,"listItemIndent",g.containerState.size+1)(E)}function v(E){return g.containerState.furtherBlankLines||!du(E)?(g.containerState.furtherBlankLines=void 0,g.containerState.initialBlankLine=void 0,b(E)):(g.containerState.furtherBlankLines=void 0,g.containerState.initialBlankLine=void 0,i.attempt(KGe,a,b)(E))}function b(E){return g.containerState._closeFlow=!0,g.interrupt=void 0,Cl(i,i.attempt(cb,a,f),"linePrefix",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(E)}}function XGe(i,a,f){const g=this;return Cl(i,w,"listItemIndent",g.containerState.size+1);function w(v){const b=g.events[g.events.length-1];return b&&b[1].type==="listItemIndent"&&b[2].sliceSerialize(b[1],!0).length===g.containerState.size?a(v):f(v)}}function QGe(i){i.exit(this.containerState.type)}function JGe(i,a,f){const g=this;return Cl(i,w,"listItemPrefixWhitespace",g.parser.constructs.disable.null.includes("codeIndented")?void 0:4+1);function w(v){const b=g.events[g.events.length-1];return!du(v)&&b&&b[1].type==="listItemPrefixWhitespace"?a(v):f(v)}}const R$t={name:"setextUnderline",tokenize:tKe,resolveTo:ZGe};function ZGe(i,a){let f=i.length,g,w,v;for(;f--;)if(i[f][0]==="enter"){if(i[f][1].type==="content"){g=f;break}i[f][1].type==="paragraph"&&(w=f)}else i[f][1].type==="content"&&i.splice(f,1),!v&&i[f][1].type==="definition"&&(v=f);const b={type:"setextHeading",start:Object.assign({},i[w][1].start),end:Object.assign({},i[i.length-1][1].end)};return i[w][1].type="setextHeadingText",v?(i.splice(w,0,["enter",b,a]),i.splice(v+1,0,["exit",i[g][1],a]),i[g][1].end=Object.assign({},i[v][1].end)):i[g][1]=b,i.push(["exit",b,a]),i}function tKe(i,a,f){const g=this;let w;return v;function v(_){let M=g.events.length,F;for(;M--;)if(g.events[M][1].type!=="lineEnding"&&g.events[M][1].type!=="linePrefix"&&g.events[M][1].type!=="content"){F=g.events[M][1].type==="paragraph";break}return!g.parser.lazy[g.now().line]&&(g.interrupt||F)?(i.enter("setextHeadingLine"),w=_,b(_)):f(_)}function b(_){return i.enter("setextHeadingLineSequence"),E(_)}function E(_){return _===w?(i.consume(_),E):(i.exit("setextHeadingLineSequence"),du(_)?Cl(i,S,"lineSuffix")(_):S(_))}function S(_){return _===null||$a(_)?(i.exit("setextHeadingLine"),a(_)):f(_)}}const eKe={tokenize:nKe};function nKe(i){const a=this,f=i.attempt(XY,g,i.attempt(this.parser.constructs.flowInitial,w,Cl(i,i.attempt(this.parser.constructs.flow,w,i.attempt(oGe,w)),"linePrefix")));return f;function g(v){if(v===null){i.consume(v);return}return i.enter("lineEndingBlank"),i.consume(v),i.exit("lineEndingBlank"),a.currentConstruct=void 0,f}function w(v){if(v===null){i.consume(v);return}return i.enter("lineEnding"),i.consume(v),i.exit("lineEnding"),a.currentConstruct=void 0,f}}const rKe={resolveAll:$$t()},iKe=j$t("string"),sKe=j$t("text");function j$t(i){return{tokenize:a,resolveAll:$$t(i==="text"?aKe:void 0)};function a(f){const g=this,w=this.parser.constructs[i],v=f.attempt(w,b,E);return b;function b(M){return _(M)?v(M):E(M)}function E(M){if(M===null){f.consume(M);return}return f.enter("data"),f.consume(M),S}function S(M){return _(M)?(f.exit("data"),v(M)):(f.consume(M),S)}function _(M){if(M===null)return!0;const F=w[M];let R=-1;if(F)for(;++R-1){const E=b[0];typeof E=="string"?b[0]=E.slice(g):b.shift()}v>0&&b.push(i[w].slice(0,v))}return b}function uKe(i,a){let f=-1;const g=[];let w;for(;++f13&&f<32||f>126&&f<160||f>55295&&f<57344||f>64975&&f<65008||(f&65535)===65535||(f&65535)===65534||f>1114111?"�":String.fromCharCode(f)}const gKe=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function pKe(i){return i.replace(gKe,bKe)}function bKe(i,a,f){if(a)return a;if(f.charCodeAt(0)===35){const w=f.charCodeAt(1),v=w===120||w===88;return q$t(f.slice(v?2:1),v?16:10)}return Vpt(f)||i}function JY(i){return!i||typeof i!="object"?"":"position"in i||"type"in i?H$t(i.position):"start"in i||"end"in i?H$t(i):"line"in i||"column"in i?Wpt(i):""}function Wpt(i){return V$t(i&&i.line)+":"+V$t(i&&i.column)}function H$t(i){return Wpt(i&&i.start)+"-"+Wpt(i&&i.end)}function V$t(i){return i&&typeof i=="number"?i:1}const U$t={}.hasOwnProperty,G$t=function(i,a,f){return typeof a!="string"&&(f=a,a=void 0),wKe(f)(dKe(hKe(f).document().write(fKe()(i,a,!0))))};function wKe(i){const a={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:E(ga),autolinkProtocol:K,autolinkEmail:K,atxHeading:E(Br),blockQuote:E(Xt),characterEscape:K,characterReference:K,codeFenced:E(_e),codeFencedFenceInfo:S,codeFencedFenceMeta:S,codeIndented:E(_e,S),codeText:E(xe,S),codeTextData:K,data:K,codeFlowValue:K,definition:E(Mn),definitionDestinationString:S,definitionLabelString:S,definitionTitleString:S,emphasis:E(ce),hardBreakEscape:E(we),hardBreakTrailing:E(we),htmlFlow:E(Fi,S),htmlFlowData:K,htmlText:E(Fi,S),htmlTextData:K,image:E(mi),label:S,link:E(ga),listItem:E(za),listItemValue:z,listOrdered:E(Ss,B),listUnordered:E(Ss),paragraph:E(br),reference:Ae,referenceString:S,resourceDestinationString:S,resourceTitleString:S,setextHeading:E(Br),strong:E(An),thematicBreak:E(Bn)},exit:{atxHeading:M(),atxHeadingSequence:it,autolink:M(),autolinkEmail:Ne,autolinkProtocol:be,blockQuote:M(),characterEscapeValue:yt,characterReferenceMarkerHexadecimal:tn,characterReferenceMarkerNumeric:tn,characterReferenceValue:sn,codeFenced:M(ft),codeFencedFence:ot,codeFencedFenceInfo:Y,codeFencedFenceMeta:nt,codeFlowValue:yt,codeIndented:M(wt),codeText:M(xt),codeTextData:yt,data:yt,definition:M(),definitionDestinationString:rt,definitionLabelString:mt,definitionTitleString:ct,emphasis:M(),hardBreakEscape:M(Ot),hardBreakTrailing:M(Ot),htmlFlow:M(It),htmlFlowData:yt,htmlText:M(jt),htmlTextData:yt,image:M(Ct),label:Gt,labelText:kt,lineEnding:V,link:M(Ft),listItem:M(),listOrdered:M(),listUnordered:M(),paragraph:M(),referenceString:ye,resourceDestinationString:Fe,resourceTitleString:Mt,resource:pn,setextHeading:M(dt),setextHeadingLineSequence:Q,setextHeadingText:gt,strong:M(),thematicBreak:M()}};K$t(a,(i||{}).mdastExtensions||[]);const f={};return g;function g(ke){let pe={type:"root",children:[]};const Je={stack:[pe],tokenStack:[],config:a,enter:_,exit:F,buffer:S,resume:R,setData:v,getData:b},an=[];let xn=-1;for(;++xn0){const qa=Je.tokenStack[Je.tokenStack.length-1];(qa[1]||W$t).call(Je,void 0,qa[0])}for(pe.position={start:T8(ke.length>0?ke[0][1].start:{line:1,column:1,offset:0}),end:T8(ke.length>0?ke[ke.length-2][1].end:{line:1,column:1,offset:0})},xn=-1;++xn{M!==0&&(w++,g.push([])),_.split(" ").forEach(F=>{F&&g[w].push({content:F,type:E})})}):(b.type==="strong"||b.type==="emphasis")&&b.children.forEach(S=>{v(S,b.type)})}return f.forEach(b=>{b.type==="paragraph"&&b.children.forEach(E=>{v(E)})}),g}function xKe(i){const{children:a}=G$t(i);function f(g){return g.type==="text"?g.value.replace(/\n/g,"
    "):g.type==="strong"?`${g.children.map(f).join("")}`:g.type==="emphasis"?`${g.children.map(f).join("")}`:g.type==="paragraph"?`

    ${g.children.map(f).join("")}

    `:`Unsupported markdown: ${g.type}`}return a.map(f).join("")}function kKe(i){return Intl.Segmenter?[...new Intl.Segmenter().segment(i)].map(a=>a.segment):[...i]}function EKe(i,a){const f=kKe(a.content);return Y$t(i,[],f,a.type)}function Y$t(i,a,f,g){if(f.length===0)return[{content:a.join(""),type:g},{content:"",type:g}];const[w,...v]=f,b=[...a,w];return i([{content:b.join(""),type:g}])?Y$t(i,b,v,g):(a.length===0&&w&&(a.push(w),f.shift()),[{content:a.join(""),type:g},{content:f.join(""),type:g}])}function TKe(i,a){if(i.some(({content:f})=>f.includes(` +`)))throw new Error("splitLineToFitWidth does not support newlines in the line");return Ypt(i,a)}function Ypt(i,a,f=[],g=[]){if(i.length===0)return g.length>0&&f.push(g),f.length>0?f:[];let w="";i[0].content===" "&&(w=" ",i.shift());const v=i.shift()??{content:" ",type:"normal"},b=[...g];if(w!==""&&b.push({content:w,type:"normal"}),b.push(v),a(b))return Ypt(i,a,f,b);if(g.length>0)f.push(g),i.unshift(v);else if(v.content){const[E,S]=EKe(a,v);f.push([E]),S.content&&i.unshift(S)}return Ypt(i,a,f)}function CKe(i,a){a&&i.attr("style",a)}function SKe(i,a,f,g,w=!1){const v=i.append("foreignObject"),b=v.append("xhtml:div"),E=a.label,S=a.isNode?"nodeLabel":"edgeLabel";b.html(` + "+E+""),CKe(b,a.labelStyle),b.style("display","table-cell"),b.style("white-space","nowrap"),b.style("max-width",f+"px"),b.attr("xmlns","http://www.w3.org/1999/xhtml"),w&&b.attr("class","labelBkg");let _=b.node().getBoundingClientRect();return _.width===f&&(b.style("display","table"),b.style("white-space","break-spaces"),b.style("width",f+"px"),_=b.node().getBoundingClientRect()),v.style("width",_.width),v.style("height",_.height),v.node()}function Xpt(i,a,f){return i.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",a*f-.1+"em").attr("dy",f+"em")}function _Ke(i,a,f){const g=i.append("text"),w=Xpt(g,1,a);Qpt(w,f);const v=w.node().getComputedTextLength();return g.remove(),v}function AKe(i,a,f){var b;const g=i.append("text"),w=Xpt(g,1,a);Qpt(w,[{content:f,type:"normal"}]);const v=(b=w.node())==null?void 0:b.getBoundingClientRect();return v&&g.remove(),v}function LKe(i,a,f,g=!1){const v=a.append("g"),b=v.insert("rect").attr("class","background"),E=v.append("text").attr("y","-10.1");let S=0;for(const _ of f){const M=R=>_Ke(v,1.1,R)<=i,F=M(_)?[_]:TKe(_,M);for(const R of F){const B=Xpt(E,S,1.1);Qpt(B,R),S++}}if(g){const _=E.node().getBBox(),M=2;return b.attr("x",-M).attr("y",-M).attr("width",_.width+2*M).attr("height",_.height+2*M),v.node()}else return E.node()}function Qpt(i,a){i.text(""),a.forEach((f,g)=>{const w=i.append("tspan").attr("font-style",f.type==="emphasis"?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight",f.type==="strong"?"bold":"normal");g===0?w.text(f.content):w.text(" "+f.content)})}const ZY=(i,a="",{style:f="",isTitle:g=!1,classes:w="",useHtmlLabels:v=!0,isNode:b=!0,width:E=200,addSvgBackground:S=!1}={})=>{if(Kt.info("createText",a,f,g,w,v,b,S),v){const _=xKe(a),M={isNode:b,label:IF(_).replace(/fa[blrs]?:fa-[\w-]+/g,R=>``),labelStyle:f.replace("fill:","color:")};return SKe(i,M,E,w,S)}else{const _=yKe(a);return LKe(E,i,_,S)}},$1=async(i,a,f,g)=>{let w;const v=a.useHtmlLabels||j1(Re().flowchart.htmlLabels);f?w=f:w="node default";const b=i.insert("g").attr("class",w).attr("id",a.domId||a.id),E=b.insert("g").attr("class","label").attr("style",a.labelStyle);let S;a.labelText===void 0?S="":S=typeof a.labelText=="string"?a.labelText:a.labelText[0];const _=E.node();let M;a.labelType==="markdown"?M=ZY(E,Ef(IF(S),Re()),{useHtmlLabels:v,width:a.width||Re().flowchart.wrappingWidth,classes:"markdown-node-label"}):M=_.appendChild(ab(Ef(IF(S),Re()),a.labelStyle,!1,g));let F=M.getBBox();const R=a.padding/2;if(j1(Re().flowchart.htmlLabels)){const B=M.children[0],z=Tr(M),Y=B.getElementsByTagName("img");if(Y){const nt=S.replace(/]*>/g,"").trim()==="";await Promise.all([...Y].map(ot=>new Promise(ft=>{function wt(){if(ot.style.display="flex",ot.style.flexDirection="column",nt){const mt=Re().fontSize?Re().fontSize:window.getComputedStyle(document.body).fontSize,ct=5,rt=parseInt(mt,10)*ct+"px";ot.style.minWidth=rt,ot.style.maxWidth=rt}else ot.style.width="100%";ft(ot)}setTimeout(()=>{ot.complete&&wt()}),ot.addEventListener("error",wt),ot.addEventListener("load",wt)})))}F=B.getBoundingClientRect(),z.attr("width",F.width),z.attr("height",F.height)}return v?E.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"):E.attr("transform","translate(0, "+-F.height/2+")"),a.centerLabel&&E.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),E.insert("rect",":first-child"),{shapeSvg:b,bbox:F,halfPadding:R,label:E}},xh=(i,a)=>{const f=a.node().getBBox();i.width=f.width,i.height=f.height};function l4(i,a,f,g){return i.insert("polygon",":first-child").attr("points",g.map(function(w){return w.x+","+w.y}).join(" ")).attr("class","label-container").attr("transform","translate("+-a/2+","+f/2+")")}let ho={},ty={},X$t={};const DKe=()=>{ty={},X$t={},ho={}},tX=(i,a)=>(Kt.trace("In isDecendant",a," ",i," = ",ty[a].includes(i)),!!ty[a].includes(i)),MKe=(i,a)=>(Kt.info("Decendants of ",a," is ",ty[a]),Kt.info("Edge is ",i),i.v===a||i.w===a?!1:ty[a]?ty[a].includes(i.v)||tX(i.v,a)||tX(i.w,a)||ty[a].includes(i.w):(Kt.debug("Tilt, ",a,",not in decendants"),!1)),Q$t=(i,a,f,g)=>{Kt.warn("Copying children of ",i,"root",g,"data",a.node(i),g);const w=a.children(i)||[];i!==g&&w.push(i),Kt.warn("Copying (nodes) clusterId",i,"nodes",w),w.forEach(v=>{if(a.children(v).length>0)Q$t(v,a,f,g);else{const b=a.node(v);Kt.info("cp ",v," to ",g," with parent ",i),f.setNode(v,b),g!==a.parent(v)&&(Kt.warn("Setting parent",v,a.parent(v)),f.setParent(v,a.parent(v))),i!==g&&v!==i?(Kt.debug("Setting parent",v,i),f.setParent(v,i)):(Kt.info("In copy ",i,"root",g,"data",a.node(i),g),Kt.debug("Not Setting parent for node=",v,"cluster!==rootId",i!==g,"node!==clusterId",v!==i));const E=a.edges(v);Kt.debug("Copying Edges",E),E.forEach(S=>{Kt.info("Edge",S);const _=a.edge(S.v,S.w,S.name);Kt.info("Edge data",_,g);try{MKe(S,g)?(Kt.info("Copying as ",S.v,S.w,_,S.name),f.setEdge(S.v,S.w,_,S.name),Kt.info("newGraph edges ",f.edges(),f.edge(f.edges()[0]))):Kt.info("Skipping copy of edge ",S.v,"-->",S.w," rootId: ",g," clusterId:",i)}catch(M){Kt.error(M)}})}Kt.debug("Removing node",v),a.removeNode(v)})},J$t=(i,a)=>{const f=a.children(i);let g=[...f];for(const w of f)X$t[w]=i,g=[...g,...J$t(w,a)];return g},tB=(i,a)=>{Kt.trace("Searching",i);const f=a.children(i);if(Kt.trace("Searching children of id ",i,f),f.length<1)return Kt.trace("This is a valid node",i),i;for(const g of f){const w=tB(g,a);if(w)return Kt.trace("Found replacement for",i," => ",w),w}},eX=i=>!ho[i]||!ho[i].externalConnections?i:ho[i]?ho[i].id:i,IKe=(i,a)=>{if(!i||a>10){Kt.debug("Opting out, no graph ");return}else Kt.debug("Opting in, graph ");i.nodes().forEach(function(f){i.children(f).length>0&&(Kt.warn("Cluster identified",f," Replacement id in edges: ",tB(f,i)),ty[f]=J$t(f,i),ho[f]={id:tB(f,i),clusterData:i.node(f)})}),i.nodes().forEach(function(f){const g=i.children(f),w=i.edges();g.length>0?(Kt.debug("Cluster identified",f,ty),w.forEach(v=>{if(v.v!==f&&v.w!==f){const b=tX(v.v,f),E=tX(v.w,f);b^E&&(Kt.warn("Edge: ",v," leaves cluster ",f),Kt.warn("Decendants of XXX ",f,": ",ty[f]),ho[f].externalConnections=!0)}})):Kt.debug("Not a cluster ",f,ty)});for(let f of Object.keys(ho)){const g=ho[f].id,w=i.parent(g);w!==f&&ho[w]&&!ho[w].externalConnections&&(ho[f].id=w)}i.edges().forEach(function(f){const g=i.edge(f);Kt.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(f)),Kt.warn("Edge "+f.v+" -> "+f.w+": "+JSON.stringify(i.edge(f)));let w=f.v,v=f.w;if(Kt.warn("Fix XXX",ho,"ids:",f.v,f.w,"Translating: ",ho[f.v]," --- ",ho[f.w]),ho[f.v]&&ho[f.w]&&ho[f.v]===ho[f.w]){Kt.warn("Fixing and trixing link to self - removing XXX",f.v,f.w,f.name),Kt.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=eX(f.v),v=eX(f.w),i.removeEdge(f.v,f.w,f.name);const b=f.w+"---"+f.v;i.setNode(b,{domId:b,id:b,labelStyle:"",labelText:g.label,padding:0,shape:"labelRect",style:""});const E=structuredClone(g),S=structuredClone(g);E.label="",E.arrowTypeEnd="none",S.label="",E.fromCluster=f.v,S.toCluster=f.v,i.setEdge(w,b,E,f.name+"-cyclic-special"),i.setEdge(b,v,S,f.name+"-cyclic-special")}else if(ho[f.v]||ho[f.w]){if(Kt.warn("Fixing and trixing - removing XXX",f.v,f.w,f.name),w=eX(f.v),v=eX(f.w),i.removeEdge(f.v,f.w,f.name),w!==f.v){const b=i.parent(w);ho[b].externalConnections=!0,g.fromCluster=f.v}if(v!==f.w){const b=i.parent(v);ho[b].externalConnections=!0,g.toCluster=f.w}Kt.warn("Fix Replacing with XXX",w,v,f.name),i.setEdge(w,v,g,f.name)}}),Kt.warn("Adjusted Graph",jx(i)),Z$t(i,0),Kt.trace(ho)},Z$t=(i,a)=>{if(Kt.warn("extractor - ",a,jx(i),i.children("D")),a>10){Kt.error("Bailing out");return}let f=i.nodes(),g=!1;for(const w of f){const v=i.children(w);g=g||v.length>0}if(!g){Kt.debug("Done, no node has children",i.nodes());return}Kt.debug("Nodes = ",f,a);for(const w of f)if(Kt.debug("Extracting node",w,ho,ho[w]&&!ho[w].externalConnections,!i.parent(w),i.node(w),i.children("D")," Depth ",a),!ho[w])Kt.debug("Not a cluster",w,a);else if(!ho[w].externalConnections&&i.children(w)&&i.children(w).length>0){Kt.warn("Cluster without external connections, without a parent and with children",w,a);let b=i.graph().rankdir==="TB"?"LR":"TB";ho[w]&&ho[w].clusterData&&ho[w].clusterData.dir&&(b=ho[w].clusterData.dir,Kt.warn("Fixing dir",ho[w].clusterData.dir,b));const E=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:b,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}});Kt.warn("Old graph before copy",jx(i)),Q$t(w,i,E,w),i.setNode(w,{clusterNode:!0,id:w,clusterData:ho[w].clusterData,labelText:ho[w].labelText,graph:E}),Kt.warn("New graph after copy node: (",w,")",jx(E)),Kt.debug("Old graph after copy",jx(i))}else Kt.warn("Cluster ** ",w," **not meeting the criteria !externalConnections:",!ho[w].externalConnections," no parent: ",!i.parent(w)," children ",i.children(w)&&i.children(w).length>0,i.children("D"),a),Kt.debug(ho);f=i.nodes(),Kt.warn("New list of nodes",f);for(const w of f){const v=i.node(w);Kt.warn(" Now next level",w,v),v.clusterNode&&Z$t(v.graph,a+1)}},tzt=(i,a)=>{if(a.length===0)return[];let f=Object.assign(a);return a.forEach(g=>{const w=i.children(g),v=tzt(i,w);f=[...f,...v]}),f},OKe=i=>tzt(i,i.children());function NKe(i,a){return i.intersect(a)}function ezt(i,a,f,g){var w=i.x,v=i.y,b=w-g.x,E=v-g.y,S=Math.sqrt(a*a*E*E+f*f*b*b),_=Math.abs(a*f*b/S);g.x0}function BKe(i,a,f){var g=i.x,w=i.y,v=[],b=Number.POSITIVE_INFINITY,E=Number.POSITIVE_INFINITY;typeof a.forEach=="function"?a.forEach(function(z){b=Math.min(b,z.x),E=Math.min(E,z.y)}):(b=Math.min(b,a.x),E=Math.min(E,a.y));for(var S=g-i.width/2-b,_=w-i.height/2-E,M=0;M1&&v.sort(function(z,Y){var nt=z.x-f.x,ot=z.y-f.y,ft=Math.sqrt(nt*nt+ot*ot),wt=Y.x-f.x,mt=Y.y-f.y,ct=Math.sqrt(wt*wt+mt*mt);return ft{var f=i.x,g=i.y,w=a.x-f,v=a.y-g,b=i.width/2,E=i.height/2,S,_;return Math.abs(v)*b>Math.abs(w)*E?(v<0&&(E=-E),S=v===0?0:E*w/v,_=E):(w<0&&(b=-b),S=b,_=w===0?0:b*v/w),{x:f+S,y:g+_}},Ql={node:NKe,circle:PKe,ellipse:ezt,polygon:BKe,rect:eB},RKe=async(i,a)=>{a.useHtmlLabels||Re().flowchart.htmlLabels||(a.centerLabel=!0);const{shapeSvg:g,bbox:w,halfPadding:v}=await $1(i,a,"node "+a.classes,!0);Kt.info("Classes = ",a.classes);const b=g.insert("rect",":first-child");return b.attr("rx",a.rx).attr("ry",a.ry).attr("x",-w.width/2-v).attr("y",-w.height/2-v).attr("width",w.width+a.padding).attr("height",w.height+a.padding),xh(a,b),a.intersect=function(E){return Ql.rect(a,E)},g},jKe=i=>{const a=new Set;for(const f of i)switch(f){case"x":a.add("right"),a.add("left");break;case"y":a.add("up"),a.add("down");break;default:a.add(f);break}return a},$Ke=(i,a,f)=>{const g=jKe(i),w=2,v=a.height+2*f.padding,b=v/w,E=a.width+2*b+f.padding,S=f.padding/2;return g.has("right")&&g.has("left")&&g.has("up")&&g.has("down")?[{x:0,y:0},{x:b,y:0},{x:E/2,y:2*S},{x:E-b,y:0},{x:E,y:0},{x:E,y:-v/3},{x:E+2*S,y:-v/2},{x:E,y:-2*v/3},{x:E,y:-v},{x:E-b,y:-v},{x:E/2,y:-v-2*S},{x:b,y:-v},{x:0,y:-v},{x:0,y:-2*v/3},{x:-2*S,y:-v/2},{x:0,y:-v/3}]:g.has("right")&&g.has("left")&&g.has("up")?[{x:b,y:0},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:b,y:-v},{x:0,y:-v/2}]:g.has("right")&&g.has("left")&&g.has("down")?[{x:0,y:0},{x:b,y:-v},{x:E-b,y:-v},{x:E,y:0}]:g.has("right")&&g.has("up")&&g.has("down")?[{x:0,y:0},{x:E,y:-b},{x:E,y:-v+b},{x:0,y:-v}]:g.has("left")&&g.has("up")&&g.has("down")?[{x:E,y:0},{x:0,y:-b},{x:0,y:-v+b},{x:E,y:-v}]:g.has("right")&&g.has("left")?[{x:b,y:0},{x:b,y:-S},{x:E-b,y:-S},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:E-b,y:-v+S},{x:b,y:-v+S},{x:b,y:-v},{x:0,y:-v/2}]:g.has("up")&&g.has("down")?[{x:E/2,y:0},{x:0,y:-S},{x:b,y:-S},{x:b,y:-v+S},{x:0,y:-v+S},{x:E/2,y:-v},{x:E,y:-v+S},{x:E-b,y:-v+S},{x:E-b,y:-S},{x:E,y:-S}]:g.has("right")&&g.has("up")?[{x:0,y:0},{x:E,y:-b},{x:0,y:-v}]:g.has("right")&&g.has("down")?[{x:0,y:0},{x:E,y:0},{x:0,y:-v}]:g.has("left")&&g.has("up")?[{x:E,y:0},{x:0,y:-b},{x:E,y:-v}]:g.has("left")&&g.has("down")?[{x:E,y:0},{x:0,y:0},{x:E,y:-v}]:g.has("right")?[{x:b,y:-S},{x:b,y:-S},{x:E-b,y:-S},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:E-b,y:-v+S},{x:b,y:-v+S},{x:b,y:-v+S}]:g.has("left")?[{x:b,y:0},{x:b,y:-S},{x:E-b,y:-S},{x:E-b,y:-v+S},{x:b,y:-v+S},{x:b,y:-v},{x:0,y:-v/2}]:g.has("up")?[{x:b,y:-S},{x:b,y:-v+S},{x:0,y:-v+S},{x:E/2,y:-v},{x:E,y:-v+S},{x:E-b,y:-v+S},{x:E-b,y:-S}]:g.has("down")?[{x:E/2,y:0},{x:0,y:-S},{x:b,y:-S},{x:b,y:-v+S},{x:E-b,y:-v+S},{x:E-b,y:-S},{x:E,y:-S}]:[{x:0,y:0}]},rzt=i=>i?" "+i:"",L2=(i,a)=>`${a||"node default"}${rzt(i.classes)} ${rzt(i.class)}`,izt=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=w+v,E=[{x:b/2,y:0},{x:b,y:-b/2},{x:b/2,y:-b},{x:0,y:-b/2}];Kt.info("Question main (Circle)");const S=l4(f,b,b,E);return S.attr("style",a.style),xh(a,S),a.intersect=function(_){return Kt.warn("Intersect called"),Ql.polygon(a,E,_)},f},zKe=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=28,w=[{x:0,y:g/2},{x:g/2,y:0},{x:0,y:-g/2},{x:-g/2,y:0}];return f.insert("polygon",":first-child").attr("points",w.map(function(b){return b.x+","+b.y}).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),a.width=28,a.height=28,a.intersect=function(b){return Ql.circle(a,14,b)},f},qKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=4,v=g.height+a.padding,b=v/w,E=g.width+2*b+a.padding,S=[{x:b,y:0},{x:E-b,y:0},{x:E,y:-v/2},{x:E-b,y:-v},{x:b,y:-v},{x:0,y:-v/2}],_=l4(f,E,v,S);return _.attr("style",a.style),xh(a,_),a.intersect=function(M){return Ql.polygon(a,S,M)},f},HKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,void 0,!0),w=2,v=g.height+2*a.padding,b=v/w,E=g.width+2*b+a.padding,S=$Ke(a.directions,g,a),_=l4(f,E,v,S);return _.attr("style",a.style),xh(a,_),a.intersect=function(M){return Ql.polygon(a,S,M)},f},VKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-v/2,y:0},{x:w,y:0},{x:w,y:-v},{x:-v/2,y:-v},{x:0,y:-v/2}];return l4(f,w,v,b).attr("style",a.style),a.width=w+v,a.height=v,a.intersect=function(S){return Ql.polygon(a,b,S)},f},UKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-2*v/6,y:0},{x:w-v/6,y:0},{x:w+2*v/6,y:-v},{x:v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},GKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:2*v/6,y:0},{x:w+v/6,y:0},{x:w-2*v/6,y:-v},{x:-v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},KKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:-2*v/6,y:0},{x:w+2*v/6,y:0},{x:w-v/6,y:-v},{x:v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},WKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:v/6,y:0},{x:w-v/6,y:0},{x:w+2*v/6,y:-v},{x:-2*v/6,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},YKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:0,y:0},{x:w+v/2,y:0},{x:w,y:-v/2},{x:w+v/2,y:-v},{x:0,y:-v}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},XKe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=w/2,b=v/(2.5+w/50),E=g.height+b+a.padding,S="M 0,"+b+" a "+v+","+b+" 0,0,0 "+w+" 0 a "+v+","+b+" 0,0,0 "+-w+" 0 l 0,"+E+" a "+v+","+b+" 0,0,0 "+w+" 0 l 0,"+-E,_=f.attr("label-offset-y",b).insert("path",":first-child").attr("style",a.style).attr("d",S).attr("transform","translate("+-w/2+","+-(E/2+b)+")");return xh(a,_),a.intersect=function(M){const F=Ql.rect(a,M),R=F.x-a.x;if(v!=0&&(Math.abs(R)a.height/2-b)){let B=b*b*(1-R*R/(v*v));B!=0&&(B=Math.sqrt(B)),B=b-B,M.y-a.y>0&&(B=-B),F.y+=B}return F},f},QKe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,"node "+a.classes+" "+a.class,!0),v=f.insert("rect",":first-child"),b=a.positioned?a.width:g.width+a.padding,E=a.positioned?a.height:g.height+a.padding,S=a.positioned?-b/2:-g.width/2-w,_=a.positioned?-E/2:-g.height/2-w;if(v.attr("class","basic label-container").attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",S).attr("y",_).attr("width",b).attr("height",E),a.props){const M=new Set(Object.keys(a.props));a.props.borders&&(Jpt(v,a.props.borders,b,E),M.delete("borders")),M.forEach(F=>{Kt.warn(`Unknown node property ${F}`)})}return xh(a,v),a.intersect=function(M){return Ql.rect(a,M)},f},JKe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,"node "+a.classes,!0),v=f.insert("rect",":first-child"),b=a.positioned?a.width:g.width+a.padding,E=a.positioned?a.height:g.height+a.padding,S=a.positioned?-b/2:-g.width/2-w,_=a.positioned?-E/2:-g.height/2-w;if(v.attr("class","basic cluster composite label-container").attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",S).attr("y",_).attr("width",b).attr("height",E),a.props){const M=new Set(Object.keys(a.props));a.props.borders&&(Jpt(v,a.props.borders,b,E),M.delete("borders")),M.forEach(F=>{Kt.warn(`Unknown node property ${F}`)})}return xh(a,v),a.intersect=function(M){return Ql.rect(a,M)},f},ZKe=async(i,a)=>{const{shapeSvg:f}=await $1(i,a,"label",!0);Kt.trace("Classes = ",a.class);const g=f.insert("rect",":first-child"),w=0,v=0;if(g.attr("width",w).attr("height",v),f.attr("class","label edgeLabel"),a.props){const b=new Set(Object.keys(a.props));a.props.borders&&(Jpt(g,a.props.borders,w,v),b.delete("borders")),b.forEach(E=>{Kt.warn(`Unknown node property ${E}`)})}return xh(a,g),a.intersect=function(b){return Ql.rect(a,b)},f};function Jpt(i,a,f,g){const w=[],v=E=>{w.push(E,0)},b=E=>{w.push(0,E)};a.includes("t")?(Kt.debug("add top border"),v(f)):b(f),a.includes("r")?(Kt.debug("add right border"),v(g)):b(g),a.includes("b")?(Kt.debug("add bottom border"),v(f)):b(f),a.includes("l")?(Kt.debug("add left border"),v(g)):b(g),i.attr("stroke-dasharray",w.join(" "))}const tWe=(i,a)=>{let f;a.classes?f="node "+a.classes:f="node default";const g=i.insert("g").attr("class",f).attr("id",a.domId||a.id),w=g.insert("rect",":first-child"),v=g.insert("line"),b=g.insert("g").attr("class","label"),E=a.labelText.flat?a.labelText.flat():a.labelText;let S="";typeof E=="object"?S=E[0]:S=E,Kt.info("Label text abc79",S,E,typeof E=="object");const _=b.node().appendChild(ab(S,a.labelStyle,!0,!0));let M={width:0,height:0};if(j1(Re().flowchart.htmlLabels)){const Y=_.children[0],nt=Tr(_);M=Y.getBoundingClientRect(),nt.attr("width",M.width),nt.attr("height",M.height)}Kt.info("Text 2",E);const F=E.slice(1,E.length);let R=_.getBBox();const B=b.node().appendChild(ab(F.join?F.join("
    "):F,a.labelStyle,!0,!0));if(j1(Re().flowchart.htmlLabels)){const Y=B.children[0],nt=Tr(B);M=Y.getBoundingClientRect(),nt.attr("width",M.width),nt.attr("height",M.height)}const z=a.padding/2;return Tr(B).attr("transform","translate( "+(M.width>R.width?0:(R.width-M.width)/2)+", "+(R.height+z+5)+")"),Tr(_).attr("transform","translate( "+(M.width{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.height+a.padding,v=g.width+w/4+a.padding,b=f.insert("rect",":first-child").attr("style",a.style).attr("rx",w/2).attr("ry",w/2).attr("x",-v/2).attr("y",-w/2).attr("width",v).attr("height",w);return xh(a,b),a.intersect=function(E){return Ql.rect(a,E)},f},nWe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,L2(a,void 0),!0),v=f.insert("circle",":first-child");return v.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w).attr("width",g.width+a.padding).attr("height",g.height+a.padding),Kt.info("Circle main"),xh(a,v),a.intersect=function(b){return Kt.info("Circle intersect",a,g.width/2+w,b),Ql.circle(a,g.width/2+w,b)},f},rWe=async(i,a)=>{const{shapeSvg:f,bbox:g,halfPadding:w}=await $1(i,a,L2(a,void 0),!0),v=5,b=f.insert("g",":first-child"),E=b.insert("circle"),S=b.insert("circle");return b.attr("class",a.class),E.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w+v).attr("width",g.width+a.padding+v*2).attr("height",g.height+a.padding+v*2),S.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("r",g.width/2+w).attr("width",g.width+a.padding).attr("height",g.height+a.padding),Kt.info("DoubleCircle main"),xh(a,E),a.intersect=function(_){return Kt.info("DoubleCircle intersect",a,g.width/2+w+v,_),Ql.circle(a,g.width/2+w+v,_)},f},iWe=async(i,a)=>{const{shapeSvg:f,bbox:g}=await $1(i,a,L2(a,void 0),!0),w=g.width+a.padding,v=g.height+a.padding,b=[{x:0,y:0},{x:w,y:0},{x:w,y:-v},{x:0,y:-v},{x:0,y:0},{x:-8,y:0},{x:w+8,y:0},{x:w+8,y:-v},{x:-8,y:-v},{x:-8,y:0}],E=l4(f,w,v,b);return E.attr("style",a.style),xh(a,E),a.intersect=function(S){return Ql.polygon(a,b,S)},f},sWe=(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=f.insert("circle",":first-child");return g.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),xh(a,g),a.intersect=function(w){return Ql.circle(a,7,w)},f},szt=(i,a,f)=>{const g=i.insert("g").attr("class","node default").attr("id",a.domId||a.id);let w=70,v=10;f==="LR"&&(w=10,v=70);const b=g.append("rect").attr("x",-1*w/2).attr("y",-1*v/2).attr("width",w).attr("height",v).attr("class","fork-join");return xh(a,b),a.height=a.height+a.padding/2,a.width=a.width+a.padding/2,a.intersect=function(E){return Ql.rect(a,E)},g},azt={rhombus:izt,composite:JKe,question:izt,rect:QKe,labelRect:ZKe,rectWithTitle:tWe,choice:zKe,circle:nWe,doublecircle:rWe,stadium:eWe,hexagon:qKe,block_arrow:HKe,rect_left_inv_arrow:VKe,lean_right:UKe,lean_left:GKe,trapezoid:KKe,inv_trapezoid:WKe,rect_right_inv_arrow:YKe,cylinder:XKe,start:sWe,end:(i,a)=>{const f=i.insert("g").attr("class","node default").attr("id",a.domId||a.id),g=f.insert("circle",":first-child"),w=f.insert("circle",":first-child");return w.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),g.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),xh(a,w),a.intersect=function(v){return Ql.circle(a,7,v)},f},note:RKe,subroutine:iWe,fork:szt,join:szt,class_box:(i,a)=>{const f=a.padding/2,g=4,w=8;let v;a.classes?v="node "+a.classes:v="node default";const b=i.insert("g").attr("class",v).attr("id",a.domId||a.id),E=b.insert("rect",":first-child"),S=b.insert("line"),_=b.insert("line");let M=0,F=g;const R=b.insert("g").attr("class","label");let B=0;const z=a.classData.annotations&&a.classData.annotations[0],Y=a.classData.annotations[0]?"«"+a.classData.annotations[0]+"»":"",nt=R.node().appendChild(ab(Y,a.labelStyle,!0,!0));let ot=nt.getBBox();if(j1(Re().flowchart.htmlLabels)){const gt=nt.children[0],Q=Tr(nt);ot=gt.getBoundingClientRect(),Q.attr("width",ot.width),Q.attr("height",ot.height)}a.classData.annotations[0]&&(F+=ot.height+g,M+=ot.width);let ft=a.classData.label;a.classData.type!==void 0&&a.classData.type!==""&&(Re().flowchart.htmlLabels?ft+="<"+a.classData.type+">":ft+="<"+a.classData.type+">");const wt=R.node().appendChild(ab(ft,a.labelStyle,!0,!0));Tr(wt).attr("class","classTitle");let mt=wt.getBBox();if(j1(Re().flowchart.htmlLabels)){const gt=wt.children[0],Q=Tr(wt);mt=gt.getBoundingClientRect(),Q.attr("width",mt.width),Q.attr("height",mt.height)}F+=mt.height+g,mt.width>M&&(M=mt.width);const ct=[];a.classData.members.forEach(gt=>{const Q=gt.getDisplayDetails();let dt=Q.displayText;Re().flowchart.htmlLabels&&(dt=dt.replace(//g,">"));const K=R.node().appendChild(ab(dt,Q.cssStyle?Q.cssStyle:a.labelStyle,!0,!0));let yt=K.getBBox();if(j1(Re().flowchart.htmlLabels)){const V=K.children[0],Ot=Tr(K);yt=V.getBoundingClientRect(),Ot.attr("width",yt.width),Ot.attr("height",yt.height)}yt.width>M&&(M=yt.width),F+=yt.height+g,ct.push(K)}),F+=w;const rt=[];if(a.classData.methods.forEach(gt=>{const Q=gt.getDisplayDetails();let dt=Q.displayText;Re().flowchart.htmlLabels&&(dt=dt.replace(//g,">"));const K=R.node().appendChild(ab(dt,Q.cssStyle?Q.cssStyle:a.labelStyle,!0,!0));let yt=K.getBBox();if(j1(Re().flowchart.htmlLabels)){const V=K.children[0],Ot=Tr(K);yt=V.getBoundingClientRect(),Ot.attr("width",yt.width),Ot.attr("height",yt.height)}yt.width>M&&(M=yt.width),F+=yt.height+g,rt.push(K)}),F+=w,z){let gt=(M-ot.width)/2;Tr(nt).attr("transform","translate( "+(-1*M/2+gt)+", "+-1*F/2+")"),B=ot.height+g}let it=(M-mt.width)/2;return Tr(wt).attr("transform","translate( "+(-1*M/2+it)+", "+(-1*F/2+B)+")"),B+=mt.height+g,S.attr("class","divider").attr("x1",-M/2-f).attr("x2",M/2+f).attr("y1",-F/2-f+w+B).attr("y2",-F/2-f+w+B),B+=w,ct.forEach(gt=>{Tr(gt).attr("transform","translate( "+-M/2+", "+(-1*F/2+B+w/2)+")");const Q=gt==null?void 0:gt.getBBox();B+=((Q==null?void 0:Q.height)??0)+g}),B+=w,_.attr("class","divider").attr("x1",-M/2-f).attr("x2",M/2+f).attr("y1",-F/2-f+w+B).attr("y2",-F/2-f+w+B),B+=w,rt.forEach(gt=>{Tr(gt).attr("transform","translate( "+-M/2+", "+(-1*F/2+B)+")");const Q=gt==null?void 0:gt.getBBox();B+=((Q==null?void 0:Q.height)??0)+g}),E.attr("style",a.style).attr("class","outer title-state").attr("x",-M/2-f).attr("y",-(F/2)-f).attr("width",M+a.padding).attr("height",F+a.padding),xh(a,E),a.intersect=function(gt){return Ql.rect(a,gt)},b}};let TD={};const nX=async(i,a,f)=>{let g,w;if(a.link){let v;Re().securityLevel==="sandbox"?v="_top":a.linkTarget&&(v=a.linkTarget||"_blank"),g=i.insert("svg:a").attr("xlink:href",a.link).attr("target",v),w=await azt[a.shape](g,a,f)}else w=await azt[a.shape](i,a,f),g=w;return a.tooltip&&w.attr("title",a.tooltip),a.class&&w.attr("class","node default "+a.class),g.attr("data-node","true"),g.attr("data-id",a.id),TD[a.id]=g,a.haveCallback&&TD[a.id].attr("class",TD[a.id].attr("class")+" clickable"),g},aWe=(i,a)=>{TD[a.id]=i},oWe=()=>{TD={}},Zpt=i=>{const a=TD[i.id];Kt.trace("Transforming node",i.diff,i,"translate("+(i.x-i.width/2-5)+", "+i.width/2+")");const f=8,g=i.diff||0;return i.clusterNode?a.attr("transform","translate("+(i.x+g-i.width/2)+", "+(i.y-i.height/2-f)+")"):a.attr("transform","translate("+i.x+", "+i.y+")"),g},rX=({flowchart:i})=>{var w,v;const a=((w=i==null?void 0:i.subGraphTitleMargin)==null?void 0:w.top)??0,f=((v=i==null?void 0:i.subGraphTitleMargin)==null?void 0:v.bottom)??0,g=a+f;return{subGraphTitleTopMargin:a,subGraphTitleBottomMargin:f,subGraphTitleTotalMargin:g}},cWe={rect:(i,a)=>{Kt.info("Creating subgraph rect for ",a.id,a);const f=Re(),g=i.insert("g").attr("class","cluster"+(a.class?" "+a.class:"")).attr("id",a.id),w=g.insert("rect",":first-child"),v=j1(f.flowchart.htmlLabels),b=g.insert("g").attr("class","cluster-label"),E=a.labelType==="markdown"?ZY(b,a.labelText,{style:a.labelStyle,useHtmlLabels:v}):b.node().appendChild(ab(a.labelText,a.labelStyle,void 0,!0));let S=E.getBBox();if(j1(f.flowchart.htmlLabels)){const z=E.children[0],Y=Tr(E);S=z.getBoundingClientRect(),Y.attr("width",S.width),Y.attr("height",S.height)}const _=0*a.padding,M=_/2,F=a.width<=S.width+_?S.width+_:a.width;a.width<=S.width+_?a.diff=(S.width-a.width)/2-a.padding/2:a.diff=-a.padding/2,Kt.trace("Data ",a,JSON.stringify(a)),w.attr("style",a.style).attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-F/2).attr("y",a.y-a.height/2-M).attr("width",F).attr("height",a.height+_);const{subGraphTitleTopMargin:R}=rX(f);v?b.attr("transform",`translate(${a.x-S.width/2}, ${a.y-a.height/2+R})`):b.attr("transform",`translate(${a.x}, ${a.y-a.height/2+R})`);const B=w.node().getBBox();return a.width=B.width,a.height=B.height,a.intersect=function(z){return eB(a,z)},g},roundedWithTitle:(i,a)=>{const f=Re(),g=i.insert("g").attr("class",a.classes).attr("id",a.id),w=g.insert("rect",":first-child"),v=g.insert("g").attr("class","cluster-label"),b=g.append("rect"),E=v.node().appendChild(ab(a.labelText,a.labelStyle,void 0,!0));let S=E.getBBox();if(j1(f.flowchart.htmlLabels)){const z=E.children[0],Y=Tr(E);S=z.getBoundingClientRect(),Y.attr("width",S.width),Y.attr("height",S.height)}S=E.getBBox();const _=0*a.padding,M=_/2,F=a.width<=S.width+a.padding?S.width+a.padding:a.width;a.width<=S.width+a.padding?a.diff=(S.width+a.padding*0-a.width)/2:a.diff=-a.padding/2,w.attr("class","outer").attr("x",a.x-F/2-M).attr("y",a.y-a.height/2-M).attr("width",F+_).attr("height",a.height+_),b.attr("class","inner").attr("x",a.x-F/2-M).attr("y",a.y-a.height/2-M+S.height-1).attr("width",F+_).attr("height",a.height+_-S.height-3);const{subGraphTitleTopMargin:R}=rX(f);v.attr("transform",`translate(${a.x-S.width/2}, ${a.y-a.height/2-a.padding/3+(j1(f.flowchart.htmlLabels)?5:3)+R})`);const B=w.node().getBBox();return a.height=B.height,a.intersect=function(z){return eB(a,z)},g},noteGroup:(i,a)=>{const f=i.insert("g").attr("class","note-cluster").attr("id",a.id),g=f.insert("rect",":first-child"),w=0*a.padding,v=w/2;g.attr("rx",a.rx).attr("ry",a.ry).attr("x",a.x-a.width/2-v).attr("y",a.y-a.height/2-v).attr("width",a.width+w).attr("height",a.height+w).attr("fill","none");const b=g.node().getBBox();return a.width=b.width,a.height=b.height,a.intersect=function(E){return eB(a,E)},f},divider:(i,a)=>{const f=i.insert("g").attr("class",a.classes).attr("id",a.id),g=f.insert("rect",":first-child"),w=0*a.padding,v=w/2;g.attr("class","divider").attr("x",a.x-a.width/2-v).attr("y",a.y-a.height/2).attr("width",a.width+w).attr("height",a.height+w);const b=g.node().getBBox();return a.width=b.width,a.height=b.height,a.diff=-a.padding/2,a.intersect=function(E){return eB(a,E)},f}};let ozt={};const uWe=(i,a)=>{Kt.trace("Inserting cluster");const f=a.shape||"rect";ozt[a.id]=cWe[f](i,a)},lWe=()=>{ozt={}},C8={aggregation:18,extension:18,composition:18,dependency:6,lollipop:13.5,arrow_point:5.3};function iX(i,a){if(i===void 0||a===void 0)return{angle:0,deltaX:0,deltaY:0};i=sX(i),a=sX(a);const[f,g]=[i.x,i.y],[w,v]=[a.x,a.y],b=w-f,E=v-g;return{angle:Math.atan(E/b),deltaX:b,deltaY:E}}const sX=i=>Array.isArray(i)?{x:i[0],y:i[1]}:i,czt=i=>({x:function(a,f,g){let w=0;if(f===0&&Object.hasOwn(C8,i.arrowTypeStart)){const{angle:v,deltaX:b}=iX(g[0],g[1]);w=C8[i.arrowTypeStart]*Math.cos(v)*(b>=0?1:-1)}else if(f===g.length-1&&Object.hasOwn(C8,i.arrowTypeEnd)){const{angle:v,deltaX:b}=iX(g[g.length-1],g[g.length-2]);w=C8[i.arrowTypeEnd]*Math.cos(v)*(b>=0?1:-1)}return sX(a).x+w},y:function(a,f,g){let w=0;if(f===0&&Object.hasOwn(C8,i.arrowTypeStart)){const{angle:v,deltaY:b}=iX(g[0],g[1]);w=C8[i.arrowTypeStart]*Math.abs(Math.sin(v))*(b>=0?1:-1)}else if(f===g.length-1&&Object.hasOwn(C8,i.arrowTypeEnd)){const{angle:v,deltaY:b}=iX(g[g.length-1],g[g.length-2]);w=C8[i.arrowTypeEnd]*Math.abs(Math.sin(v))*(b>=0?1:-1)}return sX(a).y+w}}),uzt=(i,a,f,g,w)=>{a.arrowTypeStart&&lzt(i,"start",a.arrowTypeStart,f,g,w),a.arrowTypeEnd&&lzt(i,"end",a.arrowTypeEnd,f,g,w)},hWe={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},lzt=(i,a,f,g,w,v)=>{const b=hWe[f];if(!b){Kt.warn(`Unknown arrow type: ${f}`);return}const E=a==="start"?"Start":"End";i.attr(`marker-${a}`,`url(${g}#${w}_${v}-${b}${E})`)};let aX={},p0={};const fWe=()=>{aX={},p0={}},tbt=(i,a)=>{const f=j1(Re().flowchart.htmlLabels),g=a.labelType==="markdown"?ZY(i,a.label,{style:a.labelStyle,useHtmlLabels:f,addSvgBackground:!0}):ab(a.label,a.labelStyle),w=i.insert("g").attr("class","edgeLabel"),v=w.insert("g").attr("class","label");v.node().appendChild(g);let b=g.getBBox();if(f){const S=g.children[0],_=Tr(g);b=S.getBoundingClientRect(),_.attr("width",b.width),_.attr("height",b.height)}v.attr("transform","translate("+-b.width/2+", "+-b.height/2+")"),aX[a.id]=w,a.width=b.width,a.height=b.height;let E;if(a.startLabelLeft){const S=ab(a.startLabelLeft,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),p0[a.id]||(p0[a.id]={}),p0[a.id].startLeft=_,oX(E,a.startLabelLeft)}if(a.startLabelRight){const S=ab(a.startLabelRight,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=_.node().appendChild(S),M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),p0[a.id]||(p0[a.id]={}),p0[a.id].startRight=_,oX(E,a.startLabelRight)}if(a.endLabelLeft){const S=ab(a.endLabelLeft,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),_.node().appendChild(S),p0[a.id]||(p0[a.id]={}),p0[a.id].endLeft=_,oX(E,a.endLabelLeft)}if(a.endLabelRight){const S=ab(a.endLabelRight,a.labelStyle),_=i.insert("g").attr("class","edgeTerminals"),M=_.insert("g").attr("class","inner");E=M.node().appendChild(S);const F=S.getBBox();M.attr("transform","translate("+-F.width/2+", "+-F.height/2+")"),_.node().appendChild(S),p0[a.id]||(p0[a.id]={}),p0[a.id].endRight=_,oX(E,a.endLabelRight)}return g};function oX(i,a){Re().flowchart.htmlLabels&&i&&(i.style.width=a.length*9+"px",i.style.height="12px")}const hzt=(i,a)=>{Kt.debug("Moving label abc88 ",i.id,i.label,aX[i.id],a);let f=a.updatedPath?a.updatedPath:a.originalPath;const g=Re(),{subGraphTitleTotalMargin:w}=rX(g);if(i.label){const v=aX[i.id];let b=i.x,E=i.y;if(f){const S=uo.calcLabelPosition(f);Kt.debug("Moving label "+i.label+" from (",b,",",E,") to (",S.x,",",S.y,") abc88"),a.updatedPath&&(b=S.x,E=S.y)}v.attr("transform",`translate(${b}, ${E+w/2})`)}if(i.startLabelLeft){const v=p0[i.id].startLeft;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_left",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}if(i.startLabelRight){const v=p0[i.id].startRight;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeStart?10:0,"start_right",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}if(i.endLabelLeft){const v=p0[i.id].endLeft;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_left",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}if(i.endLabelRight){const v=p0[i.id].endRight;let b=i.x,E=i.y;if(f){const S=uo.calcTerminalLabelPosition(i.arrowTypeEnd?10:0,"end_right",f);b=S.x,E=S.y}v.attr("transform",`translate(${b}, ${E})`)}},dWe=(i,a)=>{const f=i.x,g=i.y,w=Math.abs(a.x-f),v=Math.abs(a.y-g),b=i.width/2,E=i.height/2;return w>=b||v>=E},gWe=(i,a,f)=>{Kt.debug(`intersection calc abc89: + outsidePoint: ${JSON.stringify(a)} + insidePoint : ${JSON.stringify(f)} + node : x:${i.x} y:${i.y} w:${i.width} h:${i.height}`);const g=i.x,w=i.y,v=Math.abs(g-f.x),b=i.width/2;let E=f.xMath.abs(g-a.x)*S){let F=f.y{Kt.debug("abc88 cutPathAtIntersect",i,a);let f=[],g=i[0],w=!1;return i.forEach(v=>{if(!dWe(a,v)&&!w){const b=gWe(a,g,v);let E=!1;f.forEach(S=>{E=E||S.x===b.x&&S.y===b.y}),f.some(S=>S.x===b.x&&S.y===b.y)||f.push(b),w=!0}else g=v,w||f.push(v)}),f},dzt=function(i,a,f,g,w,v,b){let E=f.points;Kt.debug("abc88 InsertEdge: edge=",f,"e=",a);let S=!1;const _=v.node(a.v);var M=v.node(a.w);M!=null&&M.intersect&&(_!=null&&_.intersect)&&(E=E.slice(1,f.points.length-1),E.unshift(_.intersect(E[0])),E.push(M.intersect(E[E.length-1]))),f.toCluster&&(Kt.debug("to cluster abc88",g[f.toCluster]),E=fzt(f.points,g[f.toCluster].node),S=!0),f.fromCluster&&(Kt.debug("from cluster abc88",g[f.fromCluster]),E=fzt(E.reverse(),g[f.fromCluster].node).reverse(),S=!0);const F=E.filter(mt=>!Number.isNaN(mt.y));let R=wF;f.curve&&(w==="graph"||w==="flowchart")&&(R=f.curve);const{x:B,y:z}=czt(f),Y=Ax().x(B).y(z).curve(R);let nt;switch(f.thickness){case"normal":nt="edge-thickness-normal";break;case"thick":nt="edge-thickness-thick";break;case"invisible":nt="edge-thickness-thick";break;default:nt=""}switch(f.pattern){case"solid":nt+=" edge-pattern-solid";break;case"dotted":nt+=" edge-pattern-dotted";break;case"dashed":nt+=" edge-pattern-dashed";break}const ot=i.append("path").attr("d",Y(F)).attr("id",f.id).attr("class"," "+nt+(f.classes?" "+f.classes:"")).attr("style",f.style);let ft="";(Re().flowchart.arrowMarkerAbsolute||Re().state.arrowMarkerAbsolute)&&(ft=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,ft=ft.replace(/\(/g,"\\("),ft=ft.replace(/\)/g,"\\)")),uzt(ot,f,ft,b,w);let wt={};return S&&(wt.updatedPath=E),wt.originalPath=f.points,wt},gzt=async(i,a,f,g,w,v)=>{Kt.info("Graph in recursive render: XXX",jx(a),w);const b=a.graph().rankdir;Kt.trace("Dir in recursive render - dir:",b);const E=i.insert("g").attr("class","root");a.nodes()?Kt.info("Recursive render XXX",a.nodes()):Kt.info("No nodes found for",a),a.edges().length>0&&Kt.trace("Recursive edges",a.edge(a.edges()[0]));const S=E.insert("g").attr("class","clusters"),_=E.insert("g").attr("class","edgePaths"),M=E.insert("g").attr("class","edgeLabels"),F=E.insert("g").attr("class","nodes");await Promise.all(a.nodes().map(async function(z){const Y=a.node(z);if(w!==void 0){const nt=JSON.parse(JSON.stringify(w.clusterData));Kt.info("Setting data for cluster XXX (",z,") ",nt,w),a.setNode(w.id,nt),a.parent(z)||(Kt.trace("Setting parent",z,w.id),a.setParent(z,w.id,nt))}if(Kt.info("(Insert) Node XXX"+z+": "+JSON.stringify(a.node(z))),Y&&Y.clusterNode){Kt.info("Cluster identified",z,Y.width,a.node(z));const nt=await gzt(F,Y.graph,f,g,a.node(z),v),ot=nt.elem;xh(Y,ot),Y.diff=nt.diff||0,Kt.info("Node bounds (abc123)",z,Y,Y.width,Y.x,Y.y),aWe(ot,Y),Kt.warn("Recursive render complete ",ot,Y)}else a.children(z).length>0?(Kt.info("Cluster - the non recursive path XXX",z,Y.id,Y,a),Kt.info(tB(Y.id,a)),ho[Y.id]={id:tB(Y.id,a),node:Y}):(Kt.info("Node - the non recursive path",z,Y.id,Y),await nX(F,a.node(z),b))})),a.edges().forEach(function(z){const Y=a.edge(z.v,z.w,z.name);Kt.info("Edge "+z.v+" -> "+z.w+": "+JSON.stringify(z)),Kt.info("Edge "+z.v+" -> "+z.w+": ",z," ",JSON.stringify(a.edge(z))),Kt.info("Fix",ho,"ids:",z.v,z.w,"Translateing: ",ho[z.v],ho[z.w]),tbt(M,Y)}),a.edges().forEach(function(z){Kt.info("Edge "+z.v+" -> "+z.w+": "+JSON.stringify(z))}),Kt.info("#############################################"),Kt.info("### Layout ###"),Kt.info("#############################################"),Kt.info(a),kD(a),Kt.info("Graph after layout:",jx(a));let R=0;const{subGraphTitleTotalMargin:B}=rX(v);return OKe(a).forEach(function(z){const Y=a.node(z);Kt.info("Position "+z+": "+JSON.stringify(a.node(z))),Kt.info("Position "+z+": ("+Y.x,","+Y.y,") width: ",Y.width," height: ",Y.height),Y&&Y.clusterNode?(Y.y+=B,Zpt(Y)):a.children(z).length>0?(Y.height+=B,uWe(S,Y),ho[Y.id].node=Y):(Y.y+=B/2,Zpt(Y))}),a.edges().forEach(function(z){const Y=a.edge(z);Kt.info("Edge "+z.v+" -> "+z.w+": "+JSON.stringify(Y),Y),Y.points.forEach(ot=>ot.y+=B/2);const nt=dzt(_,z,Y,ho,f,a,g);hzt(Y,nt)}),a.nodes().forEach(function(z){const Y=a.node(z);Kt.info(z,Y.type,Y.diff),Y.type==="group"&&(R=Y.diff)}),{elem:E,diff:R}},ebt=async(i,a,f,g,w)=>{jpt(i,f,g,w),oWe(),fWe(),lWe(),DKe(),Kt.warn("Graph at first:",JSON.stringify(jx(a))),IKe(a),Kt.warn("Graph after:",JSON.stringify(jx(a)));const v=Re();await gzt(i,a,g,w,void 0,v)},pzt={},pWe=function(i){const a=Object.keys(i);for(const f of a)pzt[f]=i[f]},bzt=function(i,a,f,g,w,v){const b=g.select(`[id="${f}"]`);Object.keys(i).forEach(function(S){const _=i[S];let M="default";_.classes.length>0&&(M=_.classes.join(" ")),M=M+" flowchart-label";const F=C2(_.styles);let R=_.text!==void 0?_.text:_.id,B;if(Kt.info("vertex",_,_.labelType),_.labelType==="markdown")Kt.info("vertex",_,_.labelType);else if(j1(Re().flowchart.htmlLabels)){const nt={label:R.replace(/fa[blrs]?:fa-[\w-]+/g,ot=>``)};B=Mpt(b,nt).node(),B.parentNode.removeChild(B)}else{const nt=w.createElementNS("http://www.w3.org/2000/svg","text");nt.setAttribute("style",F.labelStyle.replace("color:","fill:"));const ot=R.split(ei.lineBreakRegex);for(const ft of ot){const wt=w.createElementNS("http://www.w3.org/2000/svg","tspan");wt.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),wt.setAttribute("dy","1em"),wt.setAttribute("x","1"),wt.textContent=ft,nt.appendChild(wt)}B=nt}let z=0,Y="";switch(_.type){case"round":z=5,Y="rect";break;case"square":Y="rect";break;case"diamond":Y="question";break;case"hexagon":Y="hexagon";break;case"odd":Y="rect_left_inv_arrow";break;case"lean_right":Y="lean_right";break;case"lean_left":Y="lean_left";break;case"trapezoid":Y="trapezoid";break;case"inv_trapezoid":Y="inv_trapezoid";break;case"odd_right":Y="rect_left_inv_arrow";break;case"circle":Y="circle";break;case"ellipse":Y="ellipse";break;case"stadium":Y="stadium";break;case"subroutine":Y="subroutine";break;case"cylinder":Y="cylinder";break;case"group":Y="rect";break;case"doublecircle":Y="doublecircle";break;default:Y="rect"}a.setNode(_.id,{labelStyle:F.labelStyle,shape:Y,labelText:R,labelType:_.labelType,rx:z,ry:z,class:M,style:F.style,id:_.id,link:_.link,linkTarget:_.linkTarget,tooltip:v.db.getTooltip(_.id)||"",domId:v.db.lookUpDomId(_.id),haveCallback:_.haveCallback,width:_.type==="group"?500:void 0,dir:_.dir,type:_.type,props:_.props,padding:Re().flowchart.padding}),Kt.info("setNode",{labelStyle:F.labelStyle,labelType:_.labelType,shape:Y,labelText:R,rx:z,ry:z,class:M,style:F.style,id:_.id,domId:v.db.lookUpDomId(_.id),width:_.type==="group"?500:void 0,type:_.type,dir:_.dir,props:_.props,padding:Re().flowchart.padding})})},wzt=function(i,a,f){Kt.info("abc78 edges = ",i);let g=0,w={},v,b;if(i.defaultStyle!==void 0){const E=C2(i.defaultStyle);v=E.style,b=E.labelStyle}i.forEach(function(E){g++;const S="L-"+E.start+"-"+E.end;w[S]===void 0?(w[S]=0,Kt.info("abc78 new entry",S,w[S])):(w[S]++,Kt.info("abc78 new entry",S,w[S]));let _=S+"-"+w[S];Kt.info("abc78 new link id to be used is",S,_,w[S]);const M="LS-"+E.start,F="LE-"+E.end,R={style:"",labelStyle:""};switch(R.minlen=E.length||1,E.type==="arrow_open"?R.arrowhead="none":R.arrowhead="normal",R.arrowTypeStart="arrow_open",R.arrowTypeEnd="arrow_open",E.type){case"double_arrow_cross":R.arrowTypeStart="arrow_cross";case"arrow_cross":R.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":R.arrowTypeStart="arrow_point";case"arrow_point":R.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":R.arrowTypeStart="arrow_circle";case"arrow_circle":R.arrowTypeEnd="arrow_circle";break}let B="",z="";switch(E.stroke){case"normal":B="fill:none;",v!==void 0&&(B=v),b!==void 0&&(z=b),R.thickness="normal",R.pattern="solid";break;case"dotted":R.thickness="normal",R.pattern="dotted",R.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":R.thickness="thick",R.pattern="solid",R.style="stroke-width: 3.5px;fill:none;";break;case"invisible":R.thickness="invisible",R.pattern="solid",R.style="stroke-width: 0;fill:none;";break}if(E.style!==void 0){const Y=C2(E.style);B=Y.style,z=Y.labelStyle}R.style=R.style+=B,R.labelStyle=R.labelStyle+=z,E.interpolate!==void 0?R.curve=Xw(E.interpolate,Kg):i.defaultInterpolate!==void 0?R.curve=Xw(i.defaultInterpolate,Kg):R.curve=Xw(pzt.curve,Kg),E.text===void 0?E.style!==void 0&&(R.arrowheadStyle="fill: #333"):(R.arrowheadStyle="fill: #333",R.labelpos="c"),R.labelType=E.labelType,R.label=E.text.replace(ei.lineBreakRegex,` +`),E.style===void 0&&(R.style=R.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),R.labelStyle=R.labelStyle.replace("color:","fill:"),R.id=_,R.classes="flowchart-link "+M+" "+F,a.setEdge(E.start,E.end,R,g)})},nbt={setConf:pWe,addVertices:bzt,addEdges:wzt,getClasses:function(i,a){return a.db.getClasses()},draw:async function(i,a,f,g){Kt.info("Drawing flowchart");let w=g.db.getDirection();w===void 0&&(w="TD");const{securityLevel:v,flowchart:b}=Re(),E=b.nodeSpacing||50,S=b.rankSpacing||50;let _;v==="sandbox"&&(_=Tr("#i"+a));const M=Tr(v==="sandbox"?_.nodes()[0].contentDocument.body:"body"),F=v==="sandbox"?_.nodes()[0].contentDocument:document,R=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:w,nodesep:E,ranksep:S,marginx:0,marginy:0}).setDefaultEdgeLabel(function(){return{}});let B;const z=g.db.getSubGraphs();Kt.info("Subgraphs - ",z);for(let ct=z.length-1;ct>=0;ct--)B=z[ct],Kt.info("Subgraph - ",B),g.db.addVertex(B.id,{text:B.title,type:B.labelType},"group",void 0,B.classes,B.dir);const Y=g.db.getVertices(),nt=g.db.getEdges();Kt.info("Edges",nt);let ot=0;for(ot=z.length-1;ot>=0;ot--){B=z[ot],$Ot("cluster").append("text");for(let ct=0;ct{const f=jPt,g=f(i,"r"),w=f(i,"g"),v=f(i,"b");return g9(g,w,v,a)},mzt=i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span,p { + color: ${i.titleColor}; + } + + .label text,span,p { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${bWe(i.edgeLabelBackground,.5)}; + // background-color: + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span,p { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`,wWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:spt,db:A9,renderer:nbt,styles:mzt,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,wUe.setConf(i.flowchart),A9.clear(),A9.setGen("gen-1")}}},Symbol.toStringTag,{value:"Module"})),mWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:spt,db:A9,renderer:nbt,styles:mzt,init:i=>{i.flowchart||(i.flowchart={}),i.flowchart.arrowMarkerAbsolute=i.arrowMarkerAbsolute,bPe({flowchart:{arrowMarkerAbsolute:i.arrowMarkerAbsolute}}),nbt.setConf(i.flowchart),A9.clear(),A9.setGen("gen-2")}}},Symbol.toStringTag,{value:"Module"}));var rbt=function(){var i=function(gt,Q,dt,K){for(dt=dt||{},K=gt.length;K--;dt[gt[K]]=Q);return dt},a=[6,8,10,20,22,24,26,27,28],f=[1,10],g=[1,11],w=[1,12],v=[1,13],b=[1,14],E=[1,15],S=[1,21],_=[1,22],M=[1,23],F=[1,24],R=[1,25],B=[6,8,10,13,15,18,19,20,22,24,26,27,28,41,42,43,44,45],z=[1,34],Y=[27,28,46,47],nt=[41,42,43,44,45],ot=[17,34],ft=[1,54],wt=[1,53],mt=[17,34,36,38],ct={trace:function(){},yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,":":13,role:14,BLOCK_START:15,attributes:16,BLOCK_STOP:17,SQS:18,SQE:19,title:20,title_value:21,acc_title:22,acc_title_value:23,acc_descr:24,acc_descr_value:25,acc_descr_multiline_value:26,ALPHANUM:27,ENTITY_NAME:28,attribute:29,attributeType:30,attributeName:31,attributeKeyTypeList:32,attributeComment:33,ATTRIBUTE_WORD:34,attributeKeyType:35,COMMA:36,ATTRIBUTE_KEY:37,COMMENT:38,cardinality:39,relType:40,ZERO_OR_ONE:41,ZERO_OR_MORE:42,ONE_OR_MORE:43,ONLY_ONE:44,MD_PARENT:45,NON_IDENTIFYING:46,IDENTIFYING:47,WORD:48,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:":",15:"BLOCK_START",17:"BLOCK_STOP",18:"SQS",19:"SQE",20:"title",21:"title_value",22:"acc_title",23:"acc_title_value",24:"acc_descr",25:"acc_descr_value",26:"acc_descr_multiline_value",27:"ALPHANUM",28:"ENTITY_NAME",34:"ATTRIBUTE_WORD",36:"COMMA",37:"ATTRIBUTE_KEY",38:"COMMENT",41:"ZERO_OR_ONE",42:"ZERO_OR_MORE",43:"ONE_OR_MORE",44:"ONLY_ONE",45:"MD_PARENT",46:"NON_IDENTIFYING",47:"IDENTIFYING",48:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,4],[9,3],[9,1],[9,7],[9,6],[9,4],[9,2],[9,2],[9,2],[9,1],[11,1],[11,1],[16,1],[16,2],[29,2],[29,3],[29,3],[29,4],[30,1],[31,1],[32,1],[32,3],[35,1],[33,1],[12,3],[39,1],[39,1],[39,1],[39,1],[39,1],[40,1],[40,1],[14,1],[14,1],[14,1]],performAction:function(Q,dt,K,yt,V,Ot,It){var jt=Ot.length-1;switch(V){case 1:break;case 2:this.$=[];break;case 3:Ot[jt-1].push(Ot[jt]),this.$=Ot[jt-1];break;case 4:case 5:this.$=Ot[jt];break;case 6:case 7:this.$=[];break;case 8:yt.addEntity(Ot[jt-4]),yt.addEntity(Ot[jt-2]),yt.addRelationship(Ot[jt-4],Ot[jt],Ot[jt-2],Ot[jt-3]);break;case 9:yt.addEntity(Ot[jt-3]),yt.addAttributes(Ot[jt-3],Ot[jt-1]);break;case 10:yt.addEntity(Ot[jt-2]);break;case 11:yt.addEntity(Ot[jt]);break;case 12:yt.addEntity(Ot[jt-6],Ot[jt-4]),yt.addAttributes(Ot[jt-6],Ot[jt-1]);break;case 13:yt.addEntity(Ot[jt-5],Ot[jt-3]);break;case 14:yt.addEntity(Ot[jt-3],Ot[jt-1]);break;case 15:case 16:this.$=Ot[jt].trim(),yt.setAccTitle(this.$);break;case 17:case 18:this.$=Ot[jt].trim(),yt.setAccDescription(this.$);break;case 19:case 43:this.$=Ot[jt];break;case 20:case 41:case 42:this.$=Ot[jt].replace(/"/g,"");break;case 21:case 29:this.$=[Ot[jt]];break;case 22:Ot[jt].push(Ot[jt-1]),this.$=Ot[jt];break;case 23:this.$={attributeType:Ot[jt-1],attributeName:Ot[jt]};break;case 24:this.$={attributeType:Ot[jt-2],attributeName:Ot[jt-1],attributeKeyTypeList:Ot[jt]};break;case 25:this.$={attributeType:Ot[jt-2],attributeName:Ot[jt-1],attributeComment:Ot[jt]};break;case 26:this.$={attributeType:Ot[jt-3],attributeName:Ot[jt-2],attributeKeyTypeList:Ot[jt-1],attributeComment:Ot[jt]};break;case 27:case 28:case 31:this.$=Ot[jt];break;case 30:Ot[jt-2].push(Ot[jt]),this.$=Ot[jt-2];break;case 32:this.$=Ot[jt].replace(/"/g,"");break;case 33:this.$={cardA:Ot[jt],relType:Ot[jt-1],cardB:Ot[jt-2]};break;case 34:this.$=yt.Cardinality.ZERO_OR_ONE;break;case 35:this.$=yt.Cardinality.ZERO_OR_MORE;break;case 36:this.$=yt.Cardinality.ONE_OR_MORE;break;case 37:this.$=yt.Cardinality.ONLY_ONE;break;case 38:this.$=yt.Cardinality.MD_PARENT;break;case 39:this.$=yt.Identification.NON_IDENTIFYING;break;case 40:this.$=yt.Identification.IDENTIFYING;break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,20:f,22:g,24:w,26:v,27:b,28:E},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:16,11:9,20:f,22:g,24:w,26:v,27:b,28:E},i(a,[2,5]),i(a,[2,6]),i(a,[2,11],{12:17,39:20,15:[1,18],18:[1,19],41:S,42:_,43:M,44:F,45:R}),{21:[1,26]},{23:[1,27]},{25:[1,28]},i(a,[2,18]),i(B,[2,19]),i(B,[2,20]),i(a,[2,4]),{11:29,27:b,28:E},{16:30,17:[1,31],29:32,30:33,34:z},{11:35,27:b,28:E},{40:36,46:[1,37],47:[1,38]},i(Y,[2,34]),i(Y,[2,35]),i(Y,[2,36]),i(Y,[2,37]),i(Y,[2,38]),i(a,[2,15]),i(a,[2,16]),i(a,[2,17]),{13:[1,39]},{17:[1,40]},i(a,[2,10]),{16:41,17:[2,21],29:32,30:33,34:z},{31:42,34:[1,43]},{34:[2,27]},{19:[1,44]},{39:45,41:S,42:_,43:M,44:F,45:R},i(nt,[2,39]),i(nt,[2,40]),{14:46,27:[1,49],28:[1,48],48:[1,47]},i(a,[2,9]),{17:[2,22]},i(ot,[2,23],{32:50,33:51,35:52,37:ft,38:wt}),i([17,34,37,38],[2,28]),i(a,[2,14],{15:[1,55]}),i([27,28],[2,33]),i(a,[2,8]),i(a,[2,41]),i(a,[2,42]),i(a,[2,43]),i(ot,[2,24],{33:56,36:[1,57],38:wt}),i(ot,[2,25]),i(mt,[2,29]),i(ot,[2,32]),i(mt,[2,31]),{16:58,17:[1,59],29:32,30:33,34:z},i(ot,[2,26]),{35:60,37:ft},{17:[1,61]},i(a,[2,13]),i(mt,[2,30]),i(a,[2,12])],defaultActions:{34:[2,27],41:[2,22]},parseError:function(Q,dt){if(dt.recoverable)this.trace(Q);else{var K=new Error(Q);throw K.hash=dt,K}},parse:function(Q){var dt=this,K=[0],yt=[],V=[null],Ot=[],It=this.table,jt="",xt=0,Ft=0,Ct=2,kt=1,Gt=Ot.slice.call(arguments,1),Fe=Object.create(this.lexer),Mt={yy:{}};for(var pn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,pn)&&(Mt.yy[pn]=this.yy[pn]);Fe.setInput(Q,Mt.yy),Mt.yy.lexer=Fe,Mt.yy.parser=this,typeof Fe.yylloc>"u"&&(Fe.yylloc={});var Ae=Fe.yylloc;Ot.push(Ae);var ye=Fe.options&&Fe.options.ranges;typeof Mt.yy.parseError=="function"?this.parseError=Mt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function tn(){var Fi;return Fi=yt.pop()||Fe.lex()||kt,typeof Fi!="number"&&(Fi instanceof Array&&(yt=Fi,Fi=yt.pop()),Fi=dt.symbols_[Fi]||Fi),Fi}for(var sn,be,Ne,Xt,_e={},xe,Mn,ce,Br;;){if(be=K[K.length-1],this.defaultActions[be]?Ne=this.defaultActions[be]:((sn===null||typeof sn>"u")&&(sn=tn()),Ne=It[be]&&It[be][sn]),typeof Ne>"u"||!Ne.length||!Ne[0]){var we="";Br=[];for(xe in It[be])this.terminals_[xe]&&xe>Ct&&Br.push("'"+this.terminals_[xe]+"'");Fe.showPosition?we="Parse error on line "+(xt+1)+`: +`+Fe.showPosition()+` +Expecting `+Br.join(", ")+", got '"+(this.terminals_[sn]||sn)+"'":we="Parse error on line "+(xt+1)+": Unexpected "+(sn==kt?"end of input":"'"+(this.terminals_[sn]||sn)+"'"),this.parseError(we,{text:Fe.match,token:this.terminals_[sn]||sn,line:Fe.yylineno,loc:Ae,expected:Br})}if(Ne[0]instanceof Array&&Ne.length>1)throw new Error("Parse Error: multiple actions possible at state: "+be+", token: "+sn);switch(Ne[0]){case 1:K.push(sn),V.push(Fe.yytext),Ot.push(Fe.yylloc),K.push(Ne[1]),sn=null,Ft=Fe.yyleng,jt=Fe.yytext,xt=Fe.yylineno,Ae=Fe.yylloc;break;case 2:if(Mn=this.productions_[Ne[1]][1],_e.$=V[V.length-Mn],_e._$={first_line:Ot[Ot.length-(Mn||1)].first_line,last_line:Ot[Ot.length-1].last_line,first_column:Ot[Ot.length-(Mn||1)].first_column,last_column:Ot[Ot.length-1].last_column},ye&&(_e._$.range=[Ot[Ot.length-(Mn||1)].range[0],Ot[Ot.length-1].range[1]]),Xt=this.performAction.apply(_e,[jt,Ft,xt,Mt.yy,Ne[1],V,Ot].concat(Gt)),typeof Xt<"u")return Xt;Mn&&(K=K.slice(0,-1*Mn*2),V=V.slice(0,-1*Mn),Ot=Ot.slice(0,-1*Mn)),K.push(this.productions_[Ne[1]][0]),V.push(_e.$),Ot.push(_e._$),ce=It[K[K.length-2]][K[K.length-1]],K.push(ce);break;case 3:return!0}}return!0}},rt=function(){var gt={EOF:1,parseError:function(dt,K){if(this.yy.parser)this.yy.parser.parseError(dt,K);else throw new Error(dt)},setInput:function(Q,dt){return this.yy=dt||this.yy||{},this._input=Q,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Q=this._input[0];this.yytext+=Q,this.yyleng++,this.offset++,this.match+=Q,this.matched+=Q;var dt=Q.match(/(?:\r\n?|\n).*/g);return dt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Q},unput:function(Q){var dt=Q.length,K=Q.split(/(?:\r\n?|\n)/g);this._input=Q+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-dt),this.offset-=dt;var yt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),K.length-1&&(this.yylineno-=K.length-1);var V=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:K?(K.length===yt.length?this.yylloc.first_column:0)+yt[yt.length-K.length].length-K[0].length:this.yylloc.first_column-dt},this.options.ranges&&(this.yylloc.range=[V[0],V[0]+this.yyleng-dt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Q){this.unput(this.match.slice(Q))},pastInput:function(){var Q=this.matched.substr(0,this.matched.length-this.match.length);return(Q.length>20?"...":"")+Q.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Q=this.match;return Q.length<20&&(Q+=this._input.substr(0,20-Q.length)),(Q.substr(0,20)+(Q.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Q=this.pastInput(),dt=new Array(Q.length+1).join("-");return Q+this.upcomingInput()+` +`+dt+"^"},test_match:function(Q,dt){var K,yt,V;if(this.options.backtrack_lexer&&(V={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(V.yylloc.range=this.yylloc.range.slice(0))),yt=Q[0].match(/(?:\r\n?|\n).*/g),yt&&(this.yylineno+=yt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:yt?yt[yt.length-1].length-yt[yt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Q[0].length},this.yytext+=Q[0],this.match+=Q[0],this.matches=Q,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Q[0].length),this.matched+=Q[0],K=this.performAction.call(this,this.yy,this,dt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),K)return K;if(this._backtrack){for(var Ot in V)this[Ot]=V[Ot];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Q,dt,K,yt;this._more||(this.yytext="",this.match="");for(var V=this._currentRules(),Ot=0;Otdt[0].length)){if(dt=K,yt=Ot,this.options.backtrack_lexer){if(Q=this.test_match(K,V[Ot]),Q!==!1)return Q;if(this._backtrack){dt=!1;continue}else return!1}else if(!this.options.flex)break}return dt?(Q=this.test_match(dt,V[yt]),Q!==!1?Q:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var dt=this.next();return dt||this.lex()},begin:function(dt){this.conditionStack.push(dt)},popState:function(){var dt=this.conditionStack.length-1;return dt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(dt){return dt=this.conditionStack.length-1-Math.abs(dt||0),dt>=0?this.conditionStack[dt]:"INITIAL"},pushState:function(dt){this.begin(dt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(dt,K,yt,V){switch(yt){case 0:return this.begin("acc_title"),22;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),24;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 10;case 8:break;case 9:return 8;case 10:return 28;case 11:return 48;case 12:return 4;case 13:return this.begin("block"),15;case 14:return 36;case 15:break;case 16:return 37;case 17:return 34;case 18:return 34;case 19:return 38;case 20:break;case 21:return this.popState(),17;case 22:return K.yytext[0];case 23:return 18;case 24:return 19;case 25:return 41;case 26:return 43;case 27:return 43;case 28:return 43;case 29:return 41;case 30:return 41;case 31:return 42;case 32:return 42;case 33:return 42;case 34:return 42;case 35:return 42;case 36:return 43;case 37:return 42;case 38:return 43;case 39:return 44;case 40:return 44;case 41:return 44;case 42:return 44;case 43:return 41;case 44:return 42;case 45:return 43;case 46:return 45;case 47:return 46;case 48:return 47;case 49:return 47;case 50:return 46;case 51:return 46;case 52:return 46;case 53:return 27;case 54:return K.yytext[0];case 55:return 6}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:,)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:(.*?)[~](.*?)*[~])/i,/^(?:[\*A-Za-z_][A-Za-z0-9\-_\[\]\(\)]*)/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:[A-Za-z_][A-Za-z0-9\-_]*)/i,/^(?:.)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[14,15,16,17,18,19,20,21,22],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55],inclusive:!0}}};return gt}();ct.lexer=rt;function it(){this.yy={}}return it.prototype=ct,ct.Parser=it,new it}();rbt.parser=rbt;const vWe=rbt;let S8={},ibt=[];const yWe={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},xWe={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},vzt=function(i,a=void 0){return S8[i]===void 0?(S8[i]={attributes:[],alias:a},Kt.info("Added new entity :",i)):S8[i]&&!S8[i].alias&&a&&(S8[i].alias=a,Kt.info(`Add alias '${a}' to entity '${i}'`)),S8[i]},kWe={Cardinality:yWe,Identification:xWe,getConfig:()=>Re().er,addEntity:vzt,addAttributes:function(i,a){let f=vzt(i),g;for(g=a.length-1;g>=0;g--)f.attributes.push(a[g]),Kt.debug("Added attribute ",a[g].attributeName)},getEntities:()=>S8,addRelationship:function(i,a,f,g){let w={entityA:i,roleA:a,entityB:f,relSpec:g};ibt.push(w),Kt.debug("Added new relationship :",w)},getRelationships:()=>ibt,clear:function(){S8={},ibt=[],ag()},setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,setDiagramTitle:S2,getDiagramTitle:Zg},ey={ONLY_ONE_START:"ONLY_ONE_START",ONLY_ONE_END:"ONLY_ONE_END",ZERO_OR_ONE_START:"ZERO_OR_ONE_START",ZERO_OR_ONE_END:"ZERO_OR_ONE_END",ONE_OR_MORE_START:"ONE_OR_MORE_START",ONE_OR_MORE_END:"ONE_OR_MORE_END",ZERO_OR_MORE_START:"ZERO_OR_MORE_START",ZERO_OR_MORE_END:"ZERO_OR_MORE_END",MD_PARENT_END:"MD_PARENT_END",MD_PARENT_START:"MD_PARENT_START"},ny={ERMarkers:ey,insertMarkers:function(i,a){let f;i.append("defs").append("marker").attr("id",ey.MD_PARENT_START).attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",ey.MD_PARENT_END).attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id",ey.ONLY_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18 M15,0 L15,18"),i.append("defs").append("marker").attr("id",ey.ONLY_ONE_END).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,0 L3,18 M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_ONE_START).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M9,0 L9,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_ONE_END).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,0 L21,18"),i.append("defs").append("marker").attr("id",ey.ONE_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),i.append("defs").append("marker").attr("id",ey.ONE_OR_MORE_END).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_MORE_START).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18"),f=i.append("defs").append("marker").attr("id",ey.ZERO_OR_MORE_END).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto"),f.append("circle").attr("stroke",a.stroke).attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),f.append("path").attr("stroke",a.stroke).attr("fill","none").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")}},EWe=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function TWe(i){return typeof i=="string"&&EWe.test(i)}const b0=[];for(let i=0;i<256;++i)b0.push((i+256).toString(16).slice(1));function CWe(i,a=0){return(b0[i[a+0]]+b0[i[a+1]]+b0[i[a+2]]+b0[i[a+3]]+"-"+b0[i[a+4]]+b0[i[a+5]]+"-"+b0[i[a+6]]+b0[i[a+7]]+"-"+b0[i[a+8]]+b0[i[a+9]]+"-"+b0[i[a+10]]+b0[i[a+11]]+b0[i[a+12]]+b0[i[a+13]]+b0[i[a+14]]+b0[i[a+15]]).toLowerCase()}function SWe(i){if(!TWe(i))throw TypeError("Invalid UUID");let a;const f=new Uint8Array(16);return f[0]=(a=parseInt(i.slice(0,8),16))>>>24,f[1]=a>>>16&255,f[2]=a>>>8&255,f[3]=a&255,f[4]=(a=parseInt(i.slice(9,13),16))>>>8,f[5]=a&255,f[6]=(a=parseInt(i.slice(14,18),16))>>>8,f[7]=a&255,f[8]=(a=parseInt(i.slice(19,23),16))>>>8,f[9]=a&255,f[10]=(a=parseInt(i.slice(24,36),16))/1099511627776&255,f[11]=a/4294967296&255,f[12]=a>>>24&255,f[13]=a>>>16&255,f[14]=a>>>8&255,f[15]=a&255,f}function _We(i){i=unescape(encodeURIComponent(i));const a=[];for(let f=0;f>>32-a}function IWe(i){const a=[1518500249,1859775393,2400959708,3395469782],f=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof i=="string"){const b=unescape(encodeURIComponent(i));i=[];for(let E=0;E>>0;R=F,F=M,M=sbt(_,30)>>>0,_=S,S=Y}f[0]=f[0]+S>>>0,f[1]=f[1]+_>>>0,f[2]=f[2]+M>>>0,f[3]=f[3]+F>>>0,f[4]=f[4]+R>>>0}return[f[0]>>24&255,f[0]>>16&255,f[0]>>8&255,f[0]&255,f[1]>>24&255,f[1]>>16&255,f[1]>>8&255,f[1]&255,f[2]>>24&255,f[2]>>16&255,f[2]>>8&255,f[2]&255,f[3]>>24&255,f[3]>>16&255,f[3]>>8&255,f[3]&255,f[4]>>24&255,f[4]>>16&255,f[4]>>8&255,f[4]&255]}const OWe=DWe("v5",80,IWe),NWe=/[^\dA-Za-z](\W)*/g;let z1={},nB=new Map;const PWe=function(i){const a=Object.keys(i);for(const f of a)z1[f]=i[f]},FWe=(i,a,f)=>{const g=z1.entityPadding/3,w=z1.entityPadding/3,v=z1.fontSize*.85,b=a.node().getBBox(),E=[];let S=!1,_=!1,M=0,F=0,R=0,B=0,z=b.height+g*2,Y=1;f.forEach(wt=>{wt.attributeKeyTypeList!==void 0&&wt.attributeKeyTypeList.length>0&&(S=!0),wt.attributeComment!==void 0&&(_=!0)}),f.forEach(wt=>{const mt=`${a.node().id}-attr-${Y}`;let ct=0;const rt=kF(wt.attributeType),it=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-type`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(rt),gt=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-name`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(wt.attributeName),Q={};Q.tn=it,Q.nn=gt;const dt=it.node().getBBox(),K=gt.node().getBBox();if(M=Math.max(M,dt.width),F=Math.max(F,K.width),ct=Math.max(dt.height,K.height),S){const yt=wt.attributeKeyTypeList!==void 0?wt.attributeKeyTypeList.join(","):"",V=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-key`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(yt);Q.kn=V;const Ot=V.node().getBBox();R=Math.max(R,Ot.width),ct=Math.max(ct,Ot.height)}if(_){const yt=i.append("text").classed("er entityLabel",!0).attr("id",`${mt}-comment`).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","left").style("font-family",Re().fontFamily).style("font-size",v+"px").text(wt.attributeComment||"");Q.cn=yt;const V=yt.node().getBBox();B=Math.max(B,V.width),ct=Math.max(ct,V.height)}Q.height=ct,E.push(Q),z+=ct+g*2,Y+=1});let nt=4;S&&(nt+=2),_&&(nt+=2);const ot=M+F+R+B,ft={width:Math.max(z1.minEntityWidth,Math.max(b.width+z1.entityPadding*2,ot+w*nt)),height:f.length>0?z:Math.max(z1.minEntityHeight,b.height+z1.entityPadding*2)};if(f.length>0){const wt=Math.max(0,(ft.width-ot-w*nt)/(nt/2));a.attr("transform","translate("+ft.width/2+","+(g+b.height/2)+")");let mt=b.height+g*2,ct="attributeBoxOdd";E.forEach(rt=>{const it=mt+g+rt.height/2;rt.tn.attr("transform","translate("+w+","+it+")");const gt=i.insert("rect","#"+rt.tn.node().id).classed(`er ${ct}`,!0).attr("x",0).attr("y",mt).attr("width",M+w*2+wt).attr("height",rt.height+g*2),Q=parseFloat(gt.attr("x"))+parseFloat(gt.attr("width"));rt.nn.attr("transform","translate("+(Q+w)+","+it+")");const dt=i.insert("rect","#"+rt.nn.node().id).classed(`er ${ct}`,!0).attr("x",Q).attr("y",mt).attr("width",F+w*2+wt).attr("height",rt.height+g*2);let K=parseFloat(dt.attr("x"))+parseFloat(dt.attr("width"));if(S){rt.kn.attr("transform","translate("+(K+w)+","+it+")");const yt=i.insert("rect","#"+rt.kn.node().id).classed(`er ${ct}`,!0).attr("x",K).attr("y",mt).attr("width",R+w*2+wt).attr("height",rt.height+g*2);K=parseFloat(yt.attr("x"))+parseFloat(yt.attr("width"))}_&&(rt.cn.attr("transform","translate("+(K+w)+","+it+")"),i.insert("rect","#"+rt.cn.node().id).classed(`er ${ct}`,"true").attr("x",K).attr("y",mt).attr("width",B+w*2+wt).attr("height",rt.height+g*2)),mt+=rt.height+g*2,ct=ct==="attributeBoxOdd"?"attributeBoxEven":"attributeBoxOdd"})}else ft.height=Math.max(z1.minEntityHeight,z),a.attr("transform","translate("+ft.width/2+","+ft.height/2+")");return ft},BWe=function(i,a,f){const g=Object.keys(a);let w;return g.forEach(function(v){const b=HWe(v,"entity");nB.set(v,b);const E=i.append("g").attr("id",b);w=w===void 0?b:w;const S="text-"+b,_=E.append("text").classed("er entityLabel",!0).attr("id",S).attr("x",0).attr("y",0).style("dominant-baseline","middle").style("text-anchor","middle").style("font-family",Re().fontFamily).style("font-size",z1.fontSize+"px").text(a[v].alias??v),{width:M,height:F}=FWe(E,_,a[v].attributes),B=E.insert("rect","#"+S).classed("er entityBox",!0).attr("x",0).attr("y",0).attr("width",M).attr("height",F).node().getBBox();f.setNode(b,{width:B.width,height:B.height,shape:"rect",id:b})}),w},RWe=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )")})},yzt=function(i){return(i.entityA+i.roleA+i.entityB).replace(/\s/g,"")},jWe=function(i,a){return i.forEach(function(f){a.setEdge(nB.get(f.entityA),nB.get(f.entityB),{relationship:f},yzt(f))}),i};let xzt=0;const $We=function(i,a,f,g,w){xzt++;const v=f.edge(nB.get(a.entityA),nB.get(a.entityB),yzt(a)),b=Ax().x(function(z){return z.x}).y(function(z){return z.y}).curve(wF),E=i.insert("path","#"+g).classed("er relationshipLine",!0).attr("d",b(v.points)).style("stroke",z1.stroke).style("fill","none");a.relSpec.relType===w.db.Identification.NON_IDENTIFYING&&E.attr("stroke-dasharray","8,8");let S="";switch(z1.arrowMarkerAbsolute&&(S=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,S=S.replace(/\(/g,"\\("),S=S.replace(/\)/g,"\\)")),a.relSpec.cardA){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ZERO_OR_ONE_END+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ZERO_OR_MORE_END+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ONE_OR_MORE_END+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.ONLY_ONE_END+")");break;case w.db.Cardinality.MD_PARENT:E.attr("marker-end","url("+S+"#"+ny.ERMarkers.MD_PARENT_END+")");break}switch(a.relSpec.cardB){case w.db.Cardinality.ZERO_OR_ONE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ZERO_OR_ONE_START+")");break;case w.db.Cardinality.ZERO_OR_MORE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ZERO_OR_MORE_START+")");break;case w.db.Cardinality.ONE_OR_MORE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ONE_OR_MORE_START+")");break;case w.db.Cardinality.ONLY_ONE:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.ONLY_ONE_START+")");break;case w.db.Cardinality.MD_PARENT:E.attr("marker-start","url("+S+"#"+ny.ERMarkers.MD_PARENT_START+")");break}const _=E.node().getTotalLength(),M=E.node().getPointAtLength(_*.5),F="rel"+xzt,B=i.append("text").classed("er relationshipLabel",!0).attr("id",F).attr("x",M.x).attr("y",M.y).style("text-anchor","middle").style("dominant-baseline","middle").style("font-family",Re().fontFamily).style("font-size",z1.fontSize+"px").text(a.roleA).node().getBBox();i.insert("rect","#"+F).classed("er relationshipLabelBox",!0).attr("x",M.x-B.width/2).attr("y",M.y-B.height/2).attr("width",B.width).attr("height",B.height)},zWe=function(i,a,f,g){z1=Re().er,Kt.info("Drawing ER diagram");const w=Re().securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const E=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);ny.insertMarkers(E,z1);let S;S=new l1({multigraph:!0,directed:!0,compound:!1}).setGraph({rankdir:z1.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});const _=BWe(E,g.db.getEntities(),S),M=jWe(g.db.getRelationships(),S);kD(S),RWe(E,S),M.forEach(function(Y){$We(E,Y,S,_,g)});const F=z1.diagramPadding;uo.insertTitle(E,"entityTitleText",z1.titleTopMargin,g.db.getDiagramTitle());const R=E.node().getBBox(),B=R.width+F*2,z=R.height+F*2;sg(E,z,B,z1.useMaxWidth),E.attr("viewBox",`${R.x-F} ${R.y-F} ${B} ${z}`)},qWe="28e9f9db-3c8d-5aa5-9faf-44286ae5937c";function HWe(i="",a=""){const f=i.replace(NWe,"");return`${kzt(a)}${kzt(f)}${OWe(i,qWe)}`}function kzt(i=""){return i.length>0?`${i}-`:""}const VWe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:vWe,db:kWe,renderer:{setConf:PWe,draw:zWe},styles:i=>` + .entityBox { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxOdd { + fill: ${i.attributeBackgroundColorOdd}; + stroke: ${i.nodeBorder}; + } + + .attributeBoxEven { + fill: ${i.attributeBackgroundColorEven}; + stroke: ${i.nodeBorder}; + } + + .relationshipLabelBox { + fill: ${i.tertiaryColor}; + opacity: 0.7; + background-color: ${i.tertiaryColor}; + rect { + opacity: 0.5; + } + } + + .relationshipLine { + stroke: ${i.lineColor}; + } + + .entityTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + #MD_PARENT_START { + fill: #f5f5f5 !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; + } + #MD_PARENT_END { + fill: #f5f5f5 !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; + } + +`}},Symbol.toStringTag,{value:"Module"}));var abt=function(){var i=function(ct,rt,it,gt){for(it=it||{},gt=ct.length;gt--;it[ct[gt]]=rt);return it},a=[1,3],f=[1,6],g=[1,4],w=[1,5],v=[2,5],b=[1,12],E=[5,7,13,19,21,23,24,26,28,31,37,40,47],S=[7,13,19,21,23,24,26,28,31,37,40],_=[7,12,13,19,21,23,24,26,28,31,37,40],M=[7,13,47],F=[1,42],R=[1,41],B=[7,13,29,32,35,38,47],z=[1,55],Y=[1,56],nt=[1,57],ot=[7,13,32,35,42,47],ft={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,GG:5,document:6,EOF:7,":":8,DIR:9,options:10,body:11,OPT:12,NL:13,line:14,statement:15,commitStatement:16,mergeStatement:17,cherryPickStatement:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,section:24,branchStatement:25,CHECKOUT:26,ref:27,BRANCH:28,ORDER:29,NUM:30,CHERRY_PICK:31,COMMIT_ID:32,STR:33,PARENT_COMMIT:34,COMMIT_TAG:35,EMPTYSTR:36,MERGE:37,COMMIT_TYPE:38,commitType:39,COMMIT:40,commit_arg:41,COMMIT_MSG:42,NORMAL:43,REVERSE:44,HIGHLIGHT:45,ID:46,";":47,$accept:0,$end:1},terminals_:{2:"error",5:"GG",7:"EOF",8:":",9:"DIR",12:"OPT",13:"NL",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"section",26:"CHECKOUT",28:"BRANCH",29:"ORDER",30:"NUM",31:"CHERRY_PICK",32:"COMMIT_ID",33:"STR",34:"PARENT_COMMIT",35:"COMMIT_TAG",36:"EMPTYSTR",37:"MERGE",38:"COMMIT_TYPE",40:"COMMIT",42:"COMMIT_MSG",43:"NORMAL",44:"REVERSE",45:"HIGHLIGHT",46:"ID",47:";"},productions_:[0,[3,2],[3,3],[3,4],[3,5],[6,0],[6,2],[10,2],[10,1],[11,0],[11,2],[14,2],[14,1],[15,1],[15,1],[15,1],[15,2],[15,2],[15,1],[15,1],[15,1],[15,2],[25,2],[25,4],[18,3],[18,5],[18,5],[18,7],[18,7],[18,5],[18,5],[18,5],[18,7],[18,7],[18,7],[18,7],[17,2],[17,4],[17,4],[17,4],[17,6],[17,6],[17,6],[17,6],[17,6],[17,6],[17,8],[17,8],[17,8],[17,8],[17,8],[17,8],[16,2],[16,3],[16,3],[16,5],[16,5],[16,3],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,3],[16,5],[16,5],[16,5],[16,5],[16,5],[16,5],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,7],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[16,9],[41,0],[41,1],[39,1],[39,1],[39,1],[27,1],[27,1],[4,1],[4,1],[4,1]],performAction:function(rt,it,gt,Q,dt,K,yt){var V=K.length-1;switch(dt){case 2:return K[V];case 3:return K[V-1];case 4:return Q.setDirection(K[V-3]),K[V-1];case 6:Q.setOptions(K[V-1]),this.$=K[V];break;case 7:K[V-1]+=K[V],this.$=K[V-1];break;case 9:this.$=[];break;case 10:K[V-1].push(K[V]),this.$=K[V-1];break;case 11:this.$=K[V-1];break;case 16:this.$=K[V].trim(),Q.setAccTitle(this.$);break;case 17:case 18:this.$=K[V].trim(),Q.setAccDescription(this.$);break;case 19:Q.addSection(K[V].substr(8)),this.$=K[V].substr(8);break;case 21:Q.checkout(K[V]);break;case 22:Q.branch(K[V]);break;case 23:Q.branch(K[V-2],K[V]);break;case 24:Q.cherryPick(K[V],"",void 0);break;case 25:Q.cherryPick(K[V-2],"",void 0,K[V]);break;case 26:Q.cherryPick(K[V-2],"",K[V]);break;case 27:Q.cherryPick(K[V-4],"",K[V],K[V-2]);break;case 28:Q.cherryPick(K[V-4],"",K[V-2],K[V]);break;case 29:Q.cherryPick(K[V],"",K[V-2]);break;case 30:Q.cherryPick(K[V],"","");break;case 31:Q.cherryPick(K[V-2],"","");break;case 32:Q.cherryPick(K[V-4],"","",K[V-2]);break;case 33:Q.cherryPick(K[V-4],"","",K[V]);break;case 34:Q.cherryPick(K[V-2],"",K[V-4],K[V]);break;case 35:Q.cherryPick(K[V-2],"","",K[V]);break;case 36:Q.merge(K[V],"","","");break;case 37:Q.merge(K[V-2],K[V],"","");break;case 38:Q.merge(K[V-2],"",K[V],"");break;case 39:Q.merge(K[V-2],"","",K[V]);break;case 40:Q.merge(K[V-4],K[V],"",K[V-2]);break;case 41:Q.merge(K[V-4],"",K[V],K[V-2]);break;case 42:Q.merge(K[V-4],"",K[V-2],K[V]);break;case 43:Q.merge(K[V-4],K[V-2],K[V],"");break;case 44:Q.merge(K[V-4],K[V-2],"",K[V]);break;case 45:Q.merge(K[V-4],K[V],K[V-2],"");break;case 46:Q.merge(K[V-6],K[V-4],K[V-2],K[V]);break;case 47:Q.merge(K[V-6],K[V],K[V-4],K[V-2]);break;case 48:Q.merge(K[V-6],K[V-4],K[V],K[V-2]);break;case 49:Q.merge(K[V-6],K[V-2],K[V-4],K[V]);break;case 50:Q.merge(K[V-6],K[V],K[V-2],K[V-4]);break;case 51:Q.merge(K[V-6],K[V-2],K[V],K[V-4]);break;case 52:Q.commit(K[V]);break;case 53:Q.commit("","",Q.commitType.NORMAL,K[V]);break;case 54:Q.commit("","",K[V],"");break;case 55:Q.commit("","",K[V],K[V-2]);break;case 56:Q.commit("","",K[V-2],K[V]);break;case 57:Q.commit("",K[V],Q.commitType.NORMAL,"");break;case 58:Q.commit("",K[V-2],Q.commitType.NORMAL,K[V]);break;case 59:Q.commit("",K[V],Q.commitType.NORMAL,K[V-2]);break;case 60:Q.commit("",K[V-2],K[V],"");break;case 61:Q.commit("",K[V],K[V-2],"");break;case 62:Q.commit("",K[V-4],K[V-2],K[V]);break;case 63:Q.commit("",K[V-4],K[V],K[V-2]);break;case 64:Q.commit("",K[V-2],K[V-4],K[V]);break;case 65:Q.commit("",K[V],K[V-4],K[V-2]);break;case 66:Q.commit("",K[V],K[V-2],K[V-4]);break;case 67:Q.commit("",K[V-2],K[V],K[V-4]);break;case 68:Q.commit(K[V],"",Q.commitType.NORMAL,"");break;case 69:Q.commit(K[V],"",Q.commitType.NORMAL,K[V-2]);break;case 70:Q.commit(K[V-2],"",Q.commitType.NORMAL,K[V]);break;case 71:Q.commit(K[V-2],"",K[V],"");break;case 72:Q.commit(K[V],"",K[V-2],"");break;case 73:Q.commit(K[V],K[V-2],Q.commitType.NORMAL,"");break;case 74:Q.commit(K[V-2],K[V],Q.commitType.NORMAL,"");break;case 75:Q.commit(K[V-4],"",K[V-2],K[V]);break;case 76:Q.commit(K[V-4],"",K[V],K[V-2]);break;case 77:Q.commit(K[V-2],"",K[V-4],K[V]);break;case 78:Q.commit(K[V],"",K[V-4],K[V-2]);break;case 79:Q.commit(K[V],"",K[V-2],K[V-4]);break;case 80:Q.commit(K[V-2],"",K[V],K[V-4]);break;case 81:Q.commit(K[V-4],K[V],K[V-2],"");break;case 82:Q.commit(K[V-4],K[V-2],K[V],"");break;case 83:Q.commit(K[V-2],K[V],K[V-4],"");break;case 84:Q.commit(K[V],K[V-2],K[V-4],"");break;case 85:Q.commit(K[V],K[V-4],K[V-2],"");break;case 86:Q.commit(K[V-2],K[V-4],K[V],"");break;case 87:Q.commit(K[V-4],K[V],Q.commitType.NORMAL,K[V-2]);break;case 88:Q.commit(K[V-4],K[V-2],Q.commitType.NORMAL,K[V]);break;case 89:Q.commit(K[V-2],K[V],Q.commitType.NORMAL,K[V-4]);break;case 90:Q.commit(K[V],K[V-2],Q.commitType.NORMAL,K[V-4]);break;case 91:Q.commit(K[V],K[V-4],Q.commitType.NORMAL,K[V-2]);break;case 92:Q.commit(K[V-2],K[V-4],Q.commitType.NORMAL,K[V]);break;case 93:Q.commit(K[V-6],K[V-4],K[V-2],K[V]);break;case 94:Q.commit(K[V-6],K[V-4],K[V],K[V-2]);break;case 95:Q.commit(K[V-6],K[V-2],K[V-4],K[V]);break;case 96:Q.commit(K[V-6],K[V],K[V-4],K[V-2]);break;case 97:Q.commit(K[V-6],K[V-2],K[V],K[V-4]);break;case 98:Q.commit(K[V-6],K[V],K[V-2],K[V-4]);break;case 99:Q.commit(K[V-4],K[V-6],K[V-2],K[V]);break;case 100:Q.commit(K[V-4],K[V-6],K[V],K[V-2]);break;case 101:Q.commit(K[V-2],K[V-6],K[V-4],K[V]);break;case 102:Q.commit(K[V],K[V-6],K[V-4],K[V-2]);break;case 103:Q.commit(K[V-2],K[V-6],K[V],K[V-4]);break;case 104:Q.commit(K[V],K[V-6],K[V-2],K[V-4]);break;case 105:Q.commit(K[V],K[V-4],K[V-2],K[V-6]);break;case 106:Q.commit(K[V-2],K[V-4],K[V],K[V-6]);break;case 107:Q.commit(K[V],K[V-2],K[V-4],K[V-6]);break;case 108:Q.commit(K[V-2],K[V],K[V-4],K[V-6]);break;case 109:Q.commit(K[V-4],K[V-2],K[V],K[V-6]);break;case 110:Q.commit(K[V-4],K[V],K[V-2],K[V-6]);break;case 111:Q.commit(K[V-2],K[V-4],K[V-6],K[V]);break;case 112:Q.commit(K[V],K[V-4],K[V-6],K[V-2]);break;case 113:Q.commit(K[V-2],K[V],K[V-6],K[V-4]);break;case 114:Q.commit(K[V],K[V-2],K[V-6],K[V-4]);break;case 115:Q.commit(K[V-4],K[V-2],K[V-6],K[V]);break;case 116:Q.commit(K[V-4],K[V],K[V-6],K[V-2]);break;case 117:this.$="";break;case 118:this.$=K[V];break;case 119:this.$=Q.commitType.NORMAL;break;case 120:this.$=Q.commitType.REVERSE;break;case 121:this.$=Q.commitType.HIGHLIGHT;break}},table:[{3:1,4:2,5:a,7:f,13:g,47:w},{1:[3]},{3:7,4:2,5:a,7:f,13:g,47:w},{6:8,7:v,8:[1,9],9:[1,10],10:11,13:b},i(E,[2,124]),i(E,[2,125]),i(E,[2,126]),{1:[2,1]},{7:[1,13]},{6:14,7:v,10:11,13:b},{8:[1,15]},i(S,[2,9],{11:16,12:[1,17]}),i(_,[2,8]),{1:[2,2]},{7:[1,18]},{6:19,7:v,10:11,13:b},{7:[2,6],13:[1,22],14:20,15:21,16:23,17:24,18:25,19:[1,26],21:[1,27],23:[1,28],24:[1,29],25:30,26:[1,31],28:[1,35],31:[1,34],37:[1,33],40:[1,32]},i(_,[2,7]),{1:[2,3]},{7:[1,36]},i(S,[2,10]),{4:37,7:f,13:g,47:w},i(S,[2,12]),i(M,[2,13]),i(M,[2,14]),i(M,[2,15]),{20:[1,38]},{22:[1,39]},i(M,[2,18]),i(M,[2,19]),i(M,[2,20]),{27:40,33:F,46:R},i(M,[2,117],{41:43,32:[1,46],33:[1,48],35:[1,44],38:[1,45],42:[1,47]}),{27:49,33:F,46:R},{32:[1,50],35:[1,51]},{27:52,33:F,46:R},{1:[2,4]},i(S,[2,11]),i(M,[2,16]),i(M,[2,17]),i(M,[2,21]),i(B,[2,122]),i(B,[2,123]),i(M,[2,52]),{33:[1,53]},{39:54,43:z,44:Y,45:nt},{33:[1,58]},{33:[1,59]},i(M,[2,118]),i(M,[2,36],{32:[1,60],35:[1,62],38:[1,61]}),{33:[1,63]},{33:[1,64],36:[1,65]},i(M,[2,22],{29:[1,66]}),i(M,[2,53],{32:[1,68],38:[1,67],42:[1,69]}),i(M,[2,54],{32:[1,71],35:[1,70],42:[1,72]}),i(ot,[2,119]),i(ot,[2,120]),i(ot,[2,121]),i(M,[2,57],{35:[1,73],38:[1,74],42:[1,75]}),i(M,[2,68],{32:[1,78],35:[1,76],38:[1,77]}),{33:[1,79]},{39:80,43:z,44:Y,45:nt},{33:[1,81]},i(M,[2,24],{34:[1,82],35:[1,83]}),{32:[1,84]},{32:[1,85]},{30:[1,86]},{39:87,43:z,44:Y,45:nt},{33:[1,88]},{33:[1,89]},{33:[1,90]},{33:[1,91]},{33:[1,92]},{33:[1,93]},{39:94,43:z,44:Y,45:nt},{33:[1,95]},{33:[1,96]},{39:97,43:z,44:Y,45:nt},{33:[1,98]},i(M,[2,37],{35:[1,100],38:[1,99]}),i(M,[2,38],{32:[1,102],35:[1,101]}),i(M,[2,39],{32:[1,103],38:[1,104]}),{33:[1,105]},{33:[1,106],36:[1,107]},{33:[1,108]},{33:[1,109]},i(M,[2,23]),i(M,[2,55],{32:[1,110],42:[1,111]}),i(M,[2,59],{38:[1,112],42:[1,113]}),i(M,[2,69],{32:[1,115],38:[1,114]}),i(M,[2,56],{32:[1,116],42:[1,117]}),i(M,[2,61],{35:[1,118],42:[1,119]}),i(M,[2,72],{32:[1,121],35:[1,120]}),i(M,[2,58],{38:[1,122],42:[1,123]}),i(M,[2,60],{35:[1,124],42:[1,125]}),i(M,[2,73],{35:[1,127],38:[1,126]}),i(M,[2,70],{32:[1,129],38:[1,128]}),i(M,[2,71],{32:[1,131],35:[1,130]}),i(M,[2,74],{35:[1,133],38:[1,132]}),{39:134,43:z,44:Y,45:nt},{33:[1,135]},{33:[1,136]},{33:[1,137]},{33:[1,138]},{39:139,43:z,44:Y,45:nt},i(M,[2,25],{35:[1,140]}),i(M,[2,26],{34:[1,141]}),i(M,[2,31],{34:[1,142]}),i(M,[2,29],{34:[1,143]}),i(M,[2,30],{34:[1,144]}),{33:[1,145]},{33:[1,146]},{39:147,43:z,44:Y,45:nt},{33:[1,148]},{39:149,43:z,44:Y,45:nt},{33:[1,150]},{33:[1,151]},{33:[1,152]},{33:[1,153]},{33:[1,154]},{33:[1,155]},{33:[1,156]},{39:157,43:z,44:Y,45:nt},{33:[1,158]},{33:[1,159]},{33:[1,160]},{39:161,43:z,44:Y,45:nt},{33:[1,162]},{39:163,43:z,44:Y,45:nt},{33:[1,164]},{33:[1,165]},{33:[1,166]},{39:167,43:z,44:Y,45:nt},{33:[1,168]},i(M,[2,43],{35:[1,169]}),i(M,[2,44],{38:[1,170]}),i(M,[2,42],{32:[1,171]}),i(M,[2,45],{35:[1,172]}),i(M,[2,40],{38:[1,173]}),i(M,[2,41],{32:[1,174]}),{33:[1,175],36:[1,176]},{33:[1,177]},{33:[1,178]},{33:[1,179]},{33:[1,180]},i(M,[2,66],{42:[1,181]}),i(M,[2,79],{32:[1,182]}),i(M,[2,67],{42:[1,183]}),i(M,[2,90],{38:[1,184]}),i(M,[2,80],{32:[1,185]}),i(M,[2,89],{38:[1,186]}),i(M,[2,65],{42:[1,187]}),i(M,[2,78],{32:[1,188]}),i(M,[2,64],{42:[1,189]}),i(M,[2,84],{35:[1,190]}),i(M,[2,77],{32:[1,191]}),i(M,[2,83],{35:[1,192]}),i(M,[2,63],{42:[1,193]}),i(M,[2,91],{38:[1,194]}),i(M,[2,62],{42:[1,195]}),i(M,[2,85],{35:[1,196]}),i(M,[2,86],{35:[1,197]}),i(M,[2,92],{38:[1,198]}),i(M,[2,76],{32:[1,199]}),i(M,[2,87],{38:[1,200]}),i(M,[2,75],{32:[1,201]}),i(M,[2,81],{35:[1,202]}),i(M,[2,82],{35:[1,203]}),i(M,[2,88],{38:[1,204]}),{33:[1,205]},{39:206,43:z,44:Y,45:nt},{33:[1,207]},{33:[1,208]},{39:209,43:z,44:Y,45:nt},{33:[1,210]},i(M,[2,27]),i(M,[2,32]),i(M,[2,28]),i(M,[2,33]),i(M,[2,34]),i(M,[2,35]),{33:[1,211]},{33:[1,212]},{33:[1,213]},{39:214,43:z,44:Y,45:nt},{33:[1,215]},{39:216,43:z,44:Y,45:nt},{33:[1,217]},{33:[1,218]},{33:[1,219]},{33:[1,220]},{33:[1,221]},{33:[1,222]},{33:[1,223]},{39:224,43:z,44:Y,45:nt},{33:[1,225]},{33:[1,226]},{33:[1,227]},{39:228,43:z,44:Y,45:nt},{33:[1,229]},{39:230,43:z,44:Y,45:nt},{33:[1,231]},{33:[1,232]},{33:[1,233]},{39:234,43:z,44:Y,45:nt},i(M,[2,46]),i(M,[2,48]),i(M,[2,47]),i(M,[2,49]),i(M,[2,51]),i(M,[2,50]),i(M,[2,107]),i(M,[2,108]),i(M,[2,105]),i(M,[2,106]),i(M,[2,110]),i(M,[2,109]),i(M,[2,114]),i(M,[2,113]),i(M,[2,112]),i(M,[2,111]),i(M,[2,116]),i(M,[2,115]),i(M,[2,104]),i(M,[2,103]),i(M,[2,102]),i(M,[2,101]),i(M,[2,99]),i(M,[2,100]),i(M,[2,98]),i(M,[2,97]),i(M,[2,96]),i(M,[2,95]),i(M,[2,93]),i(M,[2,94])],defaultActions:{7:[2,1],13:[2,2],18:[2,3],36:[2,4]},parseError:function(rt,it){if(it.recoverable)this.trace(rt);else{var gt=new Error(rt);throw gt.hash=it,gt}},parse:function(rt){var it=this,gt=[0],Q=[],dt=[null],K=[],yt=this.table,V="",Ot=0,It=0,jt=2,xt=1,Ft=K.slice.call(arguments,1),Ct=Object.create(this.lexer),kt={yy:{}};for(var Gt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Gt)&&(kt.yy[Gt]=this.yy[Gt]);Ct.setInput(rt,kt.yy),kt.yy.lexer=Ct,kt.yy.parser=this,typeof Ct.yylloc>"u"&&(Ct.yylloc={});var Fe=Ct.yylloc;K.push(Fe);var Mt=Ct.options&&Ct.options.ranges;typeof kt.yy.parseError=="function"?this.parseError=kt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pn(){var ce;return ce=Q.pop()||Ct.lex()||xt,typeof ce!="number"&&(ce instanceof Array&&(Q=ce,ce=Q.pop()),ce=it.symbols_[ce]||ce),ce}for(var Ae,ye,tn,sn,be={},Ne,Xt,_e,xe;;){if(ye=gt[gt.length-1],this.defaultActions[ye]?tn=this.defaultActions[ye]:((Ae===null||typeof Ae>"u")&&(Ae=pn()),tn=yt[ye]&&yt[ye][Ae]),typeof tn>"u"||!tn.length||!tn[0]){var Mn="";xe=[];for(Ne in yt[ye])this.terminals_[Ne]&&Ne>jt&&xe.push("'"+this.terminals_[Ne]+"'");Ct.showPosition?Mn="Parse error on line "+(Ot+1)+`: +`+Ct.showPosition()+` +Expecting `+xe.join(", ")+", got '"+(this.terminals_[Ae]||Ae)+"'":Mn="Parse error on line "+(Ot+1)+": Unexpected "+(Ae==xt?"end of input":"'"+(this.terminals_[Ae]||Ae)+"'"),this.parseError(Mn,{text:Ct.match,token:this.terminals_[Ae]||Ae,line:Ct.yylineno,loc:Fe,expected:xe})}if(tn[0]instanceof Array&&tn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+ye+", token: "+Ae);switch(tn[0]){case 1:gt.push(Ae),dt.push(Ct.yytext),K.push(Ct.yylloc),gt.push(tn[1]),Ae=null,It=Ct.yyleng,V=Ct.yytext,Ot=Ct.yylineno,Fe=Ct.yylloc;break;case 2:if(Xt=this.productions_[tn[1]][1],be.$=dt[dt.length-Xt],be._$={first_line:K[K.length-(Xt||1)].first_line,last_line:K[K.length-1].last_line,first_column:K[K.length-(Xt||1)].first_column,last_column:K[K.length-1].last_column},Mt&&(be._$.range=[K[K.length-(Xt||1)].range[0],K[K.length-1].range[1]]),sn=this.performAction.apply(be,[V,It,Ot,kt.yy,tn[1],dt,K].concat(Ft)),typeof sn<"u")return sn;Xt&&(gt=gt.slice(0,-1*Xt*2),dt=dt.slice(0,-1*Xt),K=K.slice(0,-1*Xt)),gt.push(this.productions_[tn[1]][0]),dt.push(be.$),K.push(be._$),_e=yt[gt[gt.length-2]][gt[gt.length-1]],gt.push(_e);break;case 3:return!0}}return!0}},wt=function(){var ct={EOF:1,parseError:function(it,gt){if(this.yy.parser)this.yy.parser.parseError(it,gt);else throw new Error(it)},setInput:function(rt,it){return this.yy=it||this.yy||{},this._input=rt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var rt=this._input[0];this.yytext+=rt,this.yyleng++,this.offset++,this.match+=rt,this.matched+=rt;var it=rt.match(/(?:\r\n?|\n).*/g);return it?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),rt},unput:function(rt){var it=rt.length,gt=rt.split(/(?:\r\n?|\n)/g);this._input=rt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-it),this.offset-=it;var Q=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),gt.length-1&&(this.yylineno-=gt.length-1);var dt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:gt?(gt.length===Q.length?this.yylloc.first_column:0)+Q[Q.length-gt.length].length-gt[0].length:this.yylloc.first_column-it},this.options.ranges&&(this.yylloc.range=[dt[0],dt[0]+this.yyleng-it]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(rt){this.unput(this.match.slice(rt))},pastInput:function(){var rt=this.matched.substr(0,this.matched.length-this.match.length);return(rt.length>20?"...":"")+rt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var rt=this.match;return rt.length<20&&(rt+=this._input.substr(0,20-rt.length)),(rt.substr(0,20)+(rt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var rt=this.pastInput(),it=new Array(rt.length+1).join("-");return rt+this.upcomingInput()+` +`+it+"^"},test_match:function(rt,it){var gt,Q,dt;if(this.options.backtrack_lexer&&(dt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(dt.yylloc.range=this.yylloc.range.slice(0))),Q=rt[0].match(/(?:\r\n?|\n).*/g),Q&&(this.yylineno+=Q.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Q?Q[Q.length-1].length-Q[Q.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+rt[0].length},this.yytext+=rt[0],this.match+=rt[0],this.matches=rt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(rt[0].length),this.matched+=rt[0],gt=this.performAction.call(this,this.yy,this,it,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),gt)return gt;if(this._backtrack){for(var K in dt)this[K]=dt[K];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var rt,it,gt,Q;this._more||(this.yytext="",this.match="");for(var dt=this._currentRules(),K=0;Kit[0].length)){if(it=gt,Q=K,this.options.backtrack_lexer){if(rt=this.test_match(gt,dt[K]),rt!==!1)return rt;if(this._backtrack){it=!1;continue}else return!1}else if(!this.options.flex)break}return it?(rt=this.test_match(it,dt[Q]),rt!==!1?rt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var it=this.next();return it||this.lex()},begin:function(it){this.conditionStack.push(it)},popState:function(){var it=this.conditionStack.length-1;return it>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(it){return it=this.conditionStack.length-1-Math.abs(it||0),it>=0?this.conditionStack[it]:"INITIAL"},pushState:function(it){this.begin(it)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(it,gt,Q,dt){switch(Q){case 0:return this.begin("acc_title"),19;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),21;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 13;case 8:break;case 9:break;case 10:return 5;case 11:return 40;case 12:return 32;case 13:return 38;case 14:return 42;case 15:return 43;case 16:return 44;case 17:return 45;case 18:return 35;case 19:return 28;case 20:return 29;case 21:return 37;case 22:return 31;case 23:return 34;case 24:return 26;case 25:return 9;case 26:return 9;case 27:return 8;case 28:return"CARET";case 29:this.begin("options");break;case 30:this.popState();break;case 31:return 12;case 32:return 36;case 33:this.begin("string");break;case 34:this.popState();break;case 35:return 33;case 36:return 30;case 37:return 46;case 38:return 7}},rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:gitGraph\b)/i,/^(?:commit(?=\s|$))/i,/^(?:id:)/i,/^(?:type:)/i,/^(?:msg:)/i,/^(?:NORMAL\b)/i,/^(?:REVERSE\b)/i,/^(?:HIGHLIGHT\b)/i,/^(?:tag:)/i,/^(?:branch(?=\s|$))/i,/^(?:order:)/i,/^(?:merge(?=\s|$))/i,/^(?:cherry-pick(?=\s|$))/i,/^(?:parent:)/i,/^(?:checkout(?=\s|$))/i,/^(?:LR\b)/i,/^(?:TB\b)/i,/^(?::)/i,/^(?:\^)/i,/^(?:options\r?\n)/i,/^(?:[ \r\n\t]+end\b)/i,/^(?:[\s\S]+(?=[ \r\n\t]+end))/i,/^(?:["]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[0-9]+(?=\s|$))/i,/^(?:\w([-\./\w]*[-\w])?)/i,/^(?:$)/i,/^(?:\s+)/i],conditions:{acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},options:{rules:[30,31],inclusive:!1},string:{rules:[34,35],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,36,37,38,39],inclusive:!0}}};return ct}();ft.lexer=wt;function mt(){this.yy={}}return mt.prototype=ft,ft.Parser=mt,new mt}();abt.parser=abt;const UWe=abt;let cX=Re().gitGraph.mainBranchName,GWe=Re().gitGraph.mainBranchOrder,q1={},np=null,rB={};rB[cX]={name:cX,order:GWe};let h1={};h1[cX]=np;let Dd=cX,Ezt="LR",N9=0;function obt(){return AFt({length:7})}function KWe(i,a){const f=Object.create(null);return i.reduce((g,w)=>{const v=a(w);return f[v]||(f[v]=!0,g.push(w)),g},[])}const WWe=function(i){Ezt=i};let Tzt={};const YWe=function(i){Kt.debug("options str",i),i=i&&i.trim(),i=i||"{}";try{Tzt=JSON.parse(i)}catch(a){Kt.error("error while parsing gitGraph options",a.message)}},XWe=function(){return Tzt},QWe=function(i,a,f,g){Kt.debug("Entering commit:",i,a,f,g),a=ei.sanitizeText(a,Re()),i=ei.sanitizeText(i,Re()),g=ei.sanitizeText(g,Re());const w={id:a||N9+"-"+obt(),message:i,seq:N9++,type:f||CD.NORMAL,tag:g||"",parents:np==null?[]:[np.id],branch:Dd};np=w,q1[w.id]=w,h1[Dd]=w.id,Kt.debug("in pushCommit "+w.id)},JWe=function(i,a){if(i=ei.sanitizeText(i,Re()),h1[i]===void 0)h1[i]=np!=null?np.id:null,rB[i]={name:i,order:a?parseInt(a,10):null},Czt(i),Kt.debug("in createBranch");else{let f=new Error('Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout '+i+'")');throw f.hash={text:"branch "+i,token:"branch "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"checkout '+i+'"']},f}},ZWe=function(i,a,f,g){i=ei.sanitizeText(i,Re()),a=ei.sanitizeText(a,Re());const w=q1[h1[Dd]],v=q1[h1[i]];if(Dd===i){let E=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(w===void 0||!w){let E=new Error('Incorrect usage of "merge". Current branch ('+Dd+")has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["commit"]},E}else if(h1[i]===void 0){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") does not exist");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch "+i]},E}else if(v===void 0||!v){let E=new Error('Incorrect usage of "merge". Branch to be merged ('+i+") has no commits");throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"commit"']},E}else if(w===v){let E=new Error('Incorrect usage of "merge". Both branches have same head');throw E.hash={text:"merge "+i,token:"merge "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["branch abc"]},E}else if(a&&q1[a]!==void 0){let E=new Error('Incorrect usage of "merge". Commit with id:'+a+" already exists, use different custom Id");throw E.hash={text:"merge "+i+a+f+g,token:"merge "+i+a+f+g,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["merge "+i+" "+a+"_UNIQUE "+f+" "+g]},E}const b={id:a||N9+"-"+obt(),message:"merged branch "+i+" into "+Dd,seq:N9++,parents:[np==null?null:np.id,h1[i]],branch:Dd,type:CD.MERGE,customType:f,customId:!!a,tag:g||""};np=b,q1[b.id]=b,h1[Dd]=b.id,Kt.debug(h1),Kt.debug("in mergeBranch")},tYe=function(i,a,f,g){if(Kt.debug("Entering cherryPick:",i,a,f),i=ei.sanitizeText(i,Re()),a=ei.sanitizeText(a,Re()),f=ei.sanitizeText(f,Re()),g=ei.sanitizeText(g,Re()),!i||q1[i]===void 0){let b=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw b.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},b}let w=q1[i],v=w.branch;if(g&&!(Array.isArray(w.parents)&&w.parents.includes(g)))throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.");if(w.type===CD.MERGE&&!g)throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.");if(!a||q1[a]===void 0){if(v===Dd){let S=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw S.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},S}const b=q1[h1[Dd]];if(b===void 0||!b){let S=new Error('Incorrect usage of "cherry-pick". Current branch ('+Dd+")has no commits");throw S.hash={text:"cherryPick "+i+" "+a,token:"cherryPick "+i+" "+a,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["cherry-pick abc"]},S}const E={id:N9+"-"+obt(),message:"cherry-picked "+w+" into "+Dd,seq:N9++,parents:[np==null?null:np.id,w.id],branch:Dd,type:CD.CHERRY_PICK,tag:f??`cherry-pick:${w.id}${w.type===CD.MERGE?`|parent:${g}`:""}`};np=E,q1[E.id]=E,h1[Dd]=E.id,Kt.debug(h1),Kt.debug("in cherryPick")}},Czt=function(i){if(i=ei.sanitizeText(i,Re()),h1[i]===void 0){let a=new Error('Trying to checkout branch which is not yet created. (Help try using "branch '+i+'")');throw a.hash={text:"checkout "+i,token:"checkout "+i,line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:['"branch '+i+'"']},a}else{Dd=i;const a=h1[Dd];np=q1[a]}};function Szt(i,a,f){const g=i.indexOf(a);g===-1?i.push(f):i.splice(g,1,f)}function _zt(i){const a=i.reduce((w,v)=>w.seq>v.seq?w:v,i[0]);let f="";i.forEach(function(w){w===a?f+=" *":f+=" |"});const g=[f,a.id,a.seq];for(let w in h1)h1[w]===a.id&&g.push(w);if(Kt.debug(g.join(" ")),a.parents&&a.parents.length==2){const w=q1[a.parents[0]];Szt(i,a,w),i.push(q1[a.parents[1]])}else{if(a.parents.length==0)return;{const w=q1[a.parents];Szt(i,a,w)}}i=KWe(i,w=>w.id),_zt(i)}const eYe=function(){Kt.debug(q1);const i=Azt()[0];_zt([i])},nYe=function(){q1={},np=null;let i=Re().gitGraph.mainBranchName,a=Re().gitGraph.mainBranchOrder;h1={},h1[i]=null,rB={},rB[i]={name:i,order:a},Dd=i,N9=0,ag()},rYe=function(){return Object.values(rB).map((a,f)=>a.order!==null?a:{...a,order:parseFloat(`0.${f}`,10)}).sort((a,f)=>a.order-f.order).map(({name:a})=>({name:a}))},iYe=function(){return h1},sYe=function(){return q1},Azt=function(){const i=Object.keys(q1).map(function(a){return q1[a]});return i.forEach(function(a){Kt.debug(a.id)}),i.sort((a,f)=>a.seq-f.seq),i},aYe=function(){return Dd},oYe=function(){return Ezt},cYe=function(){return np},CD={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},uYe={getConfig:()=>Re().gitGraph,setDirection:WWe,setOptions:YWe,getOptions:XWe,commit:QWe,branch:JWe,merge:ZWe,cherryPick:tYe,checkout:Czt,prettyPrint:eYe,clear:nYe,getBranchesAsObjArray:rYe,getBranches:iYe,getCommits:sYe,getCommitsArray:Azt,getCurrentBranch:aYe,getDirection:oYe,getHead:cYe,setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,setDiagramTitle:S2,getDiagramTitle:Zg,commitType:CD};let iB={};const D2={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},P9=8;let Cf={},$x={},uX=[],sB=0,f1="LR";const lYe=()=>{Cf={},$x={},iB={},sB=0,uX=[],f1="LR"},Lzt=i=>{const a=document.createElementNS("http://www.w3.org/2000/svg","text");let f=[];typeof i=="string"?f=i.split(/\\n|\n|/gi):Array.isArray(i)?f=i:f=[];for(const g of f){const w=document.createElementNS("http://www.w3.org/2000/svg","tspan");w.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),w.setAttribute("dy","1em"),w.setAttribute("x","0"),w.setAttribute("class","row"),w.textContent=g.trim(),a.appendChild(w)}return a},hYe=i=>{let a="",f=0;return i.forEach(g=>{const w=f1==="TB"?$x[g].y:$x[g].x;w>=f&&(a=g,f=w)}),a||void 0},Dzt=(i,a,f)=>{const g=Re().gitGraph,w=i.append("g").attr("class","commit-bullets"),v=i.append("g").attr("class","commit-labels");let b=0;f1==="TB"&&(b=30);const S=Object.keys(a).sort((R,B)=>a[R].seq-a[B].seq),_=g.parallelCommits,M=10,F=40;S.forEach(R=>{const B=a[R];if(_)if(B.parents.length){const ot=hYe(B.parents);b=f1==="TB"?$x[ot].y+F:$x[ot].x+F}else b=0,f1==="TB"&&(b=30);const z=b+M,Y=f1==="TB"?z:Cf[B.branch].pos,nt=f1==="TB"?Cf[B.branch].pos:z;if(f){let ot,ft=B.customType!==void 0&&B.customType!==""?B.customType:B.type;switch(ft){case D2.NORMAL:ot="commit-normal";break;case D2.REVERSE:ot="commit-reverse";break;case D2.HIGHLIGHT:ot="commit-highlight";break;case D2.MERGE:ot="commit-merge";break;case D2.CHERRY_PICK:ot="commit-cherry-pick";break;default:ot="commit-normal"}if(ft===D2.HIGHLIGHT){const wt=w.append("rect");wt.attr("x",nt-10),wt.attr("y",Y-10),wt.attr("height",20),wt.attr("width",20),wt.attr("class",`commit ${B.id} commit-highlight${Cf[B.branch].index%P9} ${ot}-outer`),w.append("rect").attr("x",nt-6).attr("y",Y-6).attr("height",12).attr("width",12).attr("class",`commit ${B.id} commit${Cf[B.branch].index%P9} ${ot}-inner`)}else if(ft===D2.CHERRY_PICK)w.append("circle").attr("cx",nt).attr("cy",Y).attr("r",10).attr("class",`commit ${B.id} ${ot}`),w.append("circle").attr("cx",nt-3).attr("cy",Y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${ot}`),w.append("circle").attr("cx",nt+3).attr("cy",Y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${B.id} ${ot}`),w.append("line").attr("x1",nt+3).attr("y1",Y+1).attr("x2",nt).attr("y2",Y-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${ot}`),w.append("line").attr("x1",nt-3).attr("y1",Y+1).attr("x2",nt).attr("y2",Y-5).attr("stroke","#fff").attr("class",`commit ${B.id} ${ot}`);else{const wt=w.append("circle");if(wt.attr("cx",nt),wt.attr("cy",Y),wt.attr("r",B.type===D2.MERGE?9:10),wt.attr("class",`commit ${B.id} commit${Cf[B.branch].index%P9}`),ft===D2.MERGE){const mt=w.append("circle");mt.attr("cx",nt),mt.attr("cy",Y),mt.attr("r",6),mt.attr("class",`commit ${ot} ${B.id} commit${Cf[B.branch].index%P9}`)}ft===D2.REVERSE&&w.append("path").attr("d",`M ${nt-5},${Y-5}L${nt+5},${Y+5}M${nt-5},${Y+5}L${nt+5},${Y-5}`).attr("class",`commit ${ot} ${B.id} commit${Cf[B.branch].index%P9}`)}}if(f1==="TB"?$x[B.id]={x:nt,y:z}:$x[B.id]={x:z,y:Y},f){if(B.type!==D2.CHERRY_PICK&&(B.customId&&B.type===D2.MERGE||B.type!==D2.MERGE)&&g.showCommitLabel){const wt=v.append("g"),mt=wt.insert("rect").attr("class","commit-label-bkg"),ct=wt.append("text").attr("x",b).attr("y",Y+25).attr("class","commit-label").text(B.id);let rt=ct.node().getBBox();if(mt.attr("x",z-rt.width/2-2).attr("y",Y+13.5).attr("width",rt.width+2*2).attr("height",rt.height+2*2),f1==="TB"&&(mt.attr("x",nt-(rt.width+4*4+5)).attr("y",Y-12),ct.attr("x",nt-(rt.width+4*4)).attr("y",Y+rt.height-12)),f1!=="TB"&&ct.attr("x",z-rt.width/2),g.rotateCommitLabel)if(f1==="TB")ct.attr("transform","rotate(-45, "+nt+", "+Y+")"),mt.attr("transform","rotate(-45, "+nt+", "+Y+")");else{let it=-7.5-(rt.width+10)/25*9.5,gt=10+rt.width/25*8.5;wt.attr("transform","translate("+it+", "+gt+") rotate(-45, "+b+", "+Y+")")}}if(B.tag){const wt=v.insert("polygon"),mt=v.append("circle"),ct=v.append("text").attr("y",Y-16).attr("class","tag-label").text(B.tag);let rt=ct.node().getBBox();ct.attr("x",z-rt.width/2);const it=rt.height/2,gt=Y-19.2;wt.attr("class","tag-label-bkg").attr("points",` + ${b-rt.width/2-4/2},${gt+2} + ${b-rt.width/2-4/2},${gt-2} + ${z-rt.width/2-4},${gt-it-2} + ${z+rt.width/2+4},${gt-it-2} + ${z+rt.width/2+4},${gt+it+2} + ${z-rt.width/2-4},${gt+it+2}`),mt.attr("cx",b-rt.width/2+4/2).attr("cy",gt).attr("r",1.5).attr("class","tag-hole"),f1==="TB"&&(wt.attr("class","tag-label-bkg").attr("points",` + ${nt},${b+2} + ${nt},${b-2} + ${nt+M},${b-it-2} + ${nt+M+rt.width+4},${b-it-2} + ${nt+M+rt.width+4},${b+it+2} + ${nt+M},${b+it+2}`).attr("transform","translate(12,12) rotate(45, "+nt+","+b+")"),mt.attr("cx",nt+4/2).attr("cy",b).attr("transform","translate(12,12) rotate(45, "+nt+","+b+")"),ct.attr("x",nt+5).attr("y",b+3).attr("transform","translate(14,14) rotate(45, "+nt+","+b+")"))}}b+=F+M,b>sB&&(sB=b)})},fYe=(i,a,f,g,w)=>{const b=(f1==="TB"?f.x_.branch===b,S=_=>_.seq>i.seq&&_.seqS(_)&&E(_))},aB=(i,a,f=0)=>{const g=i+Math.abs(i-a)/2;if(f>5)return g;if(uX.every(b=>Math.abs(b-g)>=10))return uX.push(g),g;const v=Math.abs(i-a);return aB(i,a-v/5,f+1)},dYe=(i,a,f,g)=>{const w=$x[a.id],v=$x[f.id],b=fYe(a,f,w,v,g);let E="",S="",_=0,M=0,F=Cf[f.branch].index,R;if(b){E="A 10 10, 0, 0, 0,",S="A 10 10, 0, 0, 1,",_=10,M=10;const B=w.yv.x&&(E="A 20 20, 0, 0, 0,",S="A 20 20, 0, 0, 1,",_=20,M=20,F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${w.x} ${v.y-_} ${S} ${w.x-M} ${v.y} L ${v.x} ${v.y}`),w.x===v.x&&(F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${w.x+_} ${w.y} ${E} ${w.x+M} ${v.y+_} L ${v.x} ${v.y}`)):(w.yv.y&&(E="A 20 20, 0, 0, 0,",_=20,M=20,F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${v.x-_} ${w.y} ${E} ${v.x} ${w.y-M} L ${v.x} ${v.y}`),w.y===v.y&&(F=Cf[a.branch].index,R=`M ${w.x} ${w.y} L ${w.x} ${v.y-_} ${E} ${w.x+M} ${v.y} L ${v.x} ${v.y}`));i.append("path").attr("d",R).attr("class","arrow arrow"+F%P9)},gYe=(i,a)=>{const f=i.append("g").attr("class","commit-arrows");Object.keys(a).forEach(g=>{const w=a[g];w.parents&&w.parents.length>0&&w.parents.forEach(v=>{dYe(f,a[v],w,a)})})},pYe=(i,a)=>{const f=Re().gitGraph,g=i.append("g");a.forEach((w,v)=>{const b=v%P9,E=Cf[w.name].pos,S=g.append("line");S.attr("x1",0),S.attr("y1",E),S.attr("x2",sB),S.attr("y2",E),S.attr("class","branch branch"+b),f1==="TB"&&(S.attr("y1",30),S.attr("x1",E),S.attr("y2",sB),S.attr("x2",E)),uX.push(E);let _=w.name;const M=Lzt(_),F=g.insert("rect"),B=g.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+b);B.node().appendChild(M);let z=M.getBBox();F.attr("class","branchLabelBkg label"+b).attr("rx",4).attr("ry",4).attr("x",-z.width-4-(f.rotateCommitLabel===!0?30:0)).attr("y",-z.height/2+8).attr("width",z.width+18).attr("height",z.height+4),B.attr("transform","translate("+(-z.width-14-(f.rotateCommitLabel===!0?30:0))+", "+(E-z.height/2-1)+")"),f1==="TB"&&(F.attr("x",E-z.width/2-10).attr("y",0),B.attr("transform","translate("+(E-z.width/2-5)+", 0)")),f1!=="TB"&&F.attr("transform","translate(-19, "+(E-z.height/2)+")")})},bYe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:UWe,db:uYe,renderer:{draw:function(i,a,f,g){lYe();const w=Re(),v=w.gitGraph;Kt.debug("in gitgraph renderer",i+` +`,"id:",a,f),iB=g.db.getCommits();const b=g.db.getBranchesAsObjArray();f1=g.db.getDirection();const E=Tr(`[id="${a}"]`);let S=0;b.forEach((_,M)=>{const F=Lzt(_.name),R=E.append("g"),B=R.insert("g").attr("class","branchLabel"),z=B.insert("g").attr("class","label branch-label");z.node().appendChild(F);let Y=F.getBBox();Cf[_.name]={pos:S,index:M},S+=50+(v.rotateCommitLabel?40:0)+(f1==="TB"?Y.width/2:0),z.remove(),B.remove(),R.remove()}),Dzt(E,iB,!1),v.showBranches&&pYe(E,b),gYe(E,iB),Dzt(E,iB,!0),uo.insertTitle(E,"gitTitleText",v.titleTopMargin,g.db.getDiagramTitle()),hBt(void 0,E,v.diagramPadding,v.useMaxWidth??w.useMaxWidth)}},styles:i=>` + .commit-id, + .commit-msg, + .branch-label { + fill: lightgrey; + color: lightgrey; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + } + ${[0,1,2,3,4,5,6,7].map(a=>` + .branch-label${a} { fill: ${i["gitBranchLabel"+a]}; } + .commit${a} { stroke: ${i["git"+a]}; fill: ${i["git"+a]}; } + .commit-highlight${a} { stroke: ${i["gitInv"+a]}; fill: ${i["gitInv"+a]}; } + .label${a} { fill: ${i["git"+a]}; } + .arrow${a} { stroke: ${i["git"+a]}; } + `).join(` +`)} + + .branch { + stroke-width: 1; + stroke: ${i.lineColor}; + stroke-dasharray: 2; + } + .commit-label { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelColor};} + .commit-label-bkg { font-size: ${i.commitLabelFontSize}; fill: ${i.commitLabelBackground}; opacity: 0.5; } + .tag-label { font-size: ${i.tagLabelFontSize}; fill: ${i.tagLabelColor};} + .tag-label-bkg { fill: ${i.tagLabelBackground}; stroke: ${i.tagLabelBorder}; } + .tag-hole { fill: ${i.textColor}; } + + .commit-merge { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + .commit-reverse { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + stroke-width: 3; + } + .commit-highlight-outer { + } + .commit-highlight-inner { + stroke: ${i.primaryColor}; + fill: ${i.primaryColor}; + } + + .arrow { stroke-width: 8; stroke-linecap: round; fill: none} + .gitTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`}},Symbol.toStringTag,{value:"Module"}));var cbt=function(){var i=function(K,yt,V,Ot){for(V=V||{},Ot=K.length;Ot--;V[K[Ot]]=yt);return V},a=[6,8,10,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,32,33,35,37],f=[1,25],g=[1,26],w=[1,27],v=[1,28],b=[1,29],E=[1,30],S=[1,31],_=[1,9],M=[1,10],F=[1,11],R=[1,12],B=[1,13],z=[1,14],Y=[1,15],nt=[1,16],ot=[1,18],ft=[1,19],wt=[1,20],mt=[1,21],ct=[1,22],rt=[1,24],it=[1,32],gt={trace:function(){},yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,dateFormat:19,inclusiveEndDates:20,topAxis:21,axisFormat:22,tickInterval:23,excludes:24,includes:25,todayMarker:26,title:27,acc_title:28,acc_title_value:29,acc_descr:30,acc_descr_value:31,acc_descr_multiline_value:32,section:33,clickStatement:34,taskTxt:35,taskData:36,click:37,callbackname:38,callbackargs:39,href:40,clickStatementDebug:41,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",19:"dateFormat",20:"inclusiveEndDates",21:"topAxis",22:"axisFormat",23:"tickInterval",24:"excludes",25:"includes",26:"todayMarker",27:"title",28:"acc_title",29:"acc_title_value",30:"acc_descr",31:"acc_descr_value",32:"acc_descr_multiline_value",33:"section",35:"taskTxt",36:"taskData",37:"click",38:"callbackname",39:"callbackargs",40:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[34,2],[34,3],[34,3],[34,4],[34,3],[34,4],[34,2],[41,2],[41,3],[41,3],[41,4],[41,3],[41,4],[41,2]],performAction:function(yt,V,Ot,It,jt,xt,Ft){var Ct=xt.length-1;switch(jt){case 1:return xt[Ct-1];case 2:this.$=[];break;case 3:xt[Ct-1].push(xt[Ct]),this.$=xt[Ct-1];break;case 4:case 5:this.$=xt[Ct];break;case 6:case 7:this.$=[];break;case 8:It.setWeekday("monday");break;case 9:It.setWeekday("tuesday");break;case 10:It.setWeekday("wednesday");break;case 11:It.setWeekday("thursday");break;case 12:It.setWeekday("friday");break;case 13:It.setWeekday("saturday");break;case 14:It.setWeekday("sunday");break;case 15:It.setDateFormat(xt[Ct].substr(11)),this.$=xt[Ct].substr(11);break;case 16:It.enableInclusiveEndDates(),this.$=xt[Ct].substr(18);break;case 17:It.TopAxis(),this.$=xt[Ct].substr(8);break;case 18:It.setAxisFormat(xt[Ct].substr(11)),this.$=xt[Ct].substr(11);break;case 19:It.setTickInterval(xt[Ct].substr(13)),this.$=xt[Ct].substr(13);break;case 20:It.setExcludes(xt[Ct].substr(9)),this.$=xt[Ct].substr(9);break;case 21:It.setIncludes(xt[Ct].substr(9)),this.$=xt[Ct].substr(9);break;case 22:It.setTodayMarker(xt[Ct].substr(12)),this.$=xt[Ct].substr(12);break;case 24:It.setDiagramTitle(xt[Ct].substr(6)),this.$=xt[Ct].substr(6);break;case 25:this.$=xt[Ct].trim(),It.setAccTitle(this.$);break;case 26:case 27:this.$=xt[Ct].trim(),It.setAccDescription(this.$);break;case 28:It.addSection(xt[Ct].substr(8)),this.$=xt[Ct].substr(8);break;case 30:It.addTask(xt[Ct-1],xt[Ct]),this.$="task";break;case 31:this.$=xt[Ct-1],It.setClickEvent(xt[Ct-1],xt[Ct],null);break;case 32:this.$=xt[Ct-2],It.setClickEvent(xt[Ct-2],xt[Ct-1],xt[Ct]);break;case 33:this.$=xt[Ct-2],It.setClickEvent(xt[Ct-2],xt[Ct-1],null),It.setLink(xt[Ct-2],xt[Ct]);break;case 34:this.$=xt[Ct-3],It.setClickEvent(xt[Ct-3],xt[Ct-2],xt[Ct-1]),It.setLink(xt[Ct-3],xt[Ct]);break;case 35:this.$=xt[Ct-2],It.setClickEvent(xt[Ct-2],xt[Ct],null),It.setLink(xt[Ct-2],xt[Ct-1]);break;case 36:this.$=xt[Ct-3],It.setClickEvent(xt[Ct-3],xt[Ct-1],xt[Ct]),It.setLink(xt[Ct-3],xt[Ct-2]);break;case 37:this.$=xt[Ct-1],It.setLink(xt[Ct-1],xt[Ct]);break;case 38:case 44:this.$=xt[Ct-1]+" "+xt[Ct];break;case 39:case 40:case 42:this.$=xt[Ct-2]+" "+xt[Ct-1]+" "+xt[Ct];break;case 41:case 43:this.$=xt[Ct-3]+" "+xt[Ct-2]+" "+xt[Ct-1]+" "+xt[Ct];break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:f,13:g,14:w,15:v,16:b,17:E,18:S,19:_,20:M,21:F,22:R,23:B,24:z,25:Y,26:nt,27:ot,28:ft,30:wt,32:mt,33:ct,34:23,35:rt,37:it},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:33,11:17,12:f,13:g,14:w,15:v,16:b,17:E,18:S,19:_,20:M,21:F,22:R,23:B,24:z,25:Y,26:nt,27:ot,28:ft,30:wt,32:mt,33:ct,34:23,35:rt,37:it},i(a,[2,5]),i(a,[2,6]),i(a,[2,15]),i(a,[2,16]),i(a,[2,17]),i(a,[2,18]),i(a,[2,19]),i(a,[2,20]),i(a,[2,21]),i(a,[2,22]),i(a,[2,23]),i(a,[2,24]),{29:[1,34]},{31:[1,35]},i(a,[2,27]),i(a,[2,28]),i(a,[2,29]),{36:[1,36]},i(a,[2,8]),i(a,[2,9]),i(a,[2,10]),i(a,[2,11]),i(a,[2,12]),i(a,[2,13]),i(a,[2,14]),{38:[1,37],40:[1,38]},i(a,[2,4]),i(a,[2,25]),i(a,[2,26]),i(a,[2,30]),i(a,[2,31],{39:[1,39],40:[1,40]}),i(a,[2,37],{38:[1,41]}),i(a,[2,32],{40:[1,42]}),i(a,[2,33]),i(a,[2,35],{39:[1,43]}),i(a,[2,34]),i(a,[2,36])],defaultActions:{},parseError:function(yt,V){if(V.recoverable)this.trace(yt);else{var Ot=new Error(yt);throw Ot.hash=V,Ot}},parse:function(yt){var V=this,Ot=[0],It=[],jt=[null],xt=[],Ft=this.table,Ct="",kt=0,Gt=0,Fe=2,Mt=1,pn=xt.slice.call(arguments,1),Ae=Object.create(this.lexer),ye={yy:{}};for(var tn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,tn)&&(ye.yy[tn]=this.yy[tn]);Ae.setInput(yt,ye.yy),ye.yy.lexer=Ae,ye.yy.parser=this,typeof Ae.yylloc>"u"&&(Ae.yylloc={});var sn=Ae.yylloc;xt.push(sn);var be=Ae.options&&Ae.options.ranges;typeof ye.yy.parseError=="function"?this.parseError=ye.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ne(){var Ss;return Ss=It.pop()||Ae.lex()||Mt,typeof Ss!="number"&&(Ss instanceof Array&&(It=Ss,Ss=It.pop()),Ss=V.symbols_[Ss]||Ss),Ss}for(var Xt,_e,xe,Mn,ce={},Br,we,Fi,mi;;){if(_e=Ot[Ot.length-1],this.defaultActions[_e]?xe=this.defaultActions[_e]:((Xt===null||typeof Xt>"u")&&(Xt=Ne()),xe=Ft[_e]&&Ft[_e][Xt]),typeof xe>"u"||!xe.length||!xe[0]){var ga="";mi=[];for(Br in Ft[_e])this.terminals_[Br]&&Br>Fe&&mi.push("'"+this.terminals_[Br]+"'");Ae.showPosition?ga="Parse error on line "+(kt+1)+`: +`+Ae.showPosition()+` +Expecting `+mi.join(", ")+", got '"+(this.terminals_[Xt]||Xt)+"'":ga="Parse error on line "+(kt+1)+": Unexpected "+(Xt==Mt?"end of input":"'"+(this.terminals_[Xt]||Xt)+"'"),this.parseError(ga,{text:Ae.match,token:this.terminals_[Xt]||Xt,line:Ae.yylineno,loc:sn,expected:mi})}if(xe[0]instanceof Array&&xe.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_e+", token: "+Xt);switch(xe[0]){case 1:Ot.push(Xt),jt.push(Ae.yytext),xt.push(Ae.yylloc),Ot.push(xe[1]),Xt=null,Gt=Ae.yyleng,Ct=Ae.yytext,kt=Ae.yylineno,sn=Ae.yylloc;break;case 2:if(we=this.productions_[xe[1]][1],ce.$=jt[jt.length-we],ce._$={first_line:xt[xt.length-(we||1)].first_line,last_line:xt[xt.length-1].last_line,first_column:xt[xt.length-(we||1)].first_column,last_column:xt[xt.length-1].last_column},be&&(ce._$.range=[xt[xt.length-(we||1)].range[0],xt[xt.length-1].range[1]]),Mn=this.performAction.apply(ce,[Ct,Gt,kt,ye.yy,xe[1],jt,xt].concat(pn)),typeof Mn<"u")return Mn;we&&(Ot=Ot.slice(0,-1*we*2),jt=jt.slice(0,-1*we),xt=xt.slice(0,-1*we)),Ot.push(this.productions_[xe[1]][0]),jt.push(ce.$),xt.push(ce._$),Fi=Ft[Ot[Ot.length-2]][Ot[Ot.length-1]],Ot.push(Fi);break;case 3:return!0}}return!0}},Q=function(){var K={EOF:1,parseError:function(V,Ot){if(this.yy.parser)this.yy.parser.parseError(V,Ot);else throw new Error(V)},setInput:function(yt,V){return this.yy=V||this.yy||{},this._input=yt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var yt=this._input[0];this.yytext+=yt,this.yyleng++,this.offset++,this.match+=yt,this.matched+=yt;var V=yt.match(/(?:\r\n?|\n).*/g);return V?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),yt},unput:function(yt){var V=yt.length,Ot=yt.split(/(?:\r\n?|\n)/g);this._input=yt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-V),this.offset-=V;var It=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ot.length-1&&(this.yylineno-=Ot.length-1);var jt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ot?(Ot.length===It.length?this.yylloc.first_column:0)+It[It.length-Ot.length].length-Ot[0].length:this.yylloc.first_column-V},this.options.ranges&&(this.yylloc.range=[jt[0],jt[0]+this.yyleng-V]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(yt){this.unput(this.match.slice(yt))},pastInput:function(){var yt=this.matched.substr(0,this.matched.length-this.match.length);return(yt.length>20?"...":"")+yt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var yt=this.match;return yt.length<20&&(yt+=this._input.substr(0,20-yt.length)),(yt.substr(0,20)+(yt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var yt=this.pastInput(),V=new Array(yt.length+1).join("-");return yt+this.upcomingInput()+` +`+V+"^"},test_match:function(yt,V){var Ot,It,jt;if(this.options.backtrack_lexer&&(jt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(jt.yylloc.range=this.yylloc.range.slice(0))),It=yt[0].match(/(?:\r\n?|\n).*/g),It&&(this.yylineno+=It.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:It?It[It.length-1].length-It[It.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+yt[0].length},this.yytext+=yt[0],this.match+=yt[0],this.matches=yt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(yt[0].length),this.matched+=yt[0],Ot=this.performAction.call(this,this.yy,this,V,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ot)return Ot;if(this._backtrack){for(var xt in jt)this[xt]=jt[xt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var yt,V,Ot,It;this._more||(this.yytext="",this.match="");for(var jt=this._currentRules(),xt=0;xtV[0].length)){if(V=Ot,It=xt,this.options.backtrack_lexer){if(yt=this.test_match(Ot,jt[xt]),yt!==!1)return yt;if(this._backtrack){V=!1;continue}else return!1}else if(!this.options.flex)break}return V?(yt=this.test_match(V,jt[It]),yt!==!1?yt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var V=this.next();return V||this.lex()},begin:function(V){this.conditionStack.push(V)},popState:function(){var V=this.conditionStack.length-1;return V>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(V){return V=this.conditionStack.length-1-Math.abs(V||0),V>=0?this.conditionStack[V]:"INITIAL"},pushState:function(V){this.begin(V)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(V,Ot,It,jt){switch(It){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),28;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),30;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:break;case 9:break;case 10:break;case 11:return 10;case 12:break;case 13:break;case 14:this.begin("href");break;case 15:this.popState();break;case 16:return 40;case 17:this.begin("callbackname");break;case 18:this.popState();break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 38;case 21:this.popState();break;case 22:return 39;case 23:this.begin("click");break;case 24:this.popState();break;case 25:return 37;case 26:return 4;case 27:return 19;case 28:return 20;case 29:return 21;case 30:return 22;case 31:return 23;case 32:return 25;case 33:return 24;case 34:return 26;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return"date";case 43:return 27;case 44:return"accDescription";case 45:return 33;case 46:return 35;case 47:return 36;case 48:return":";case 49:return 6;case 50:return"INVALID"}},rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],inclusive:!0}}};return K}();gt.lexer=Q;function dt(){this.yy={}}return dt.prototype=gt,gt.Parser=dt,new dt}();cbt.parser=cbt;const wYe=cbt;var Mzt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){var f="day";return function(g,w,v){var b=function(_){return _.add(4-_.isoWeekday(),f)},E=w.prototype;E.isoWeekYear=function(){return b(this).year()},E.isoWeek=function(_){if(!this.$utils().u(_))return this.add(7*(_-this.isoWeek()),f);var M,F,R,B,z=b(this),Y=(M=this.isoWeekYear(),F=this.$u,R=(F?v.utc:v)().year(M).startOf("year"),B=4-R.isoWeekday(),R.isoWeekday()>4&&(B+=7),R.add(B,f));return z.diff(Y,"week")+1},E.isoWeekday=function(_){return this.$utils().u(_)?this.day()||7:this.day(this.day()%7?_:_-7)};var S=E.startOf;E.startOf=function(_,M){var F=this.$utils(),R=!!F.u(M)||M;return F.p(_)==="isoweek"?R?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):S.bind(this)(_,M)}}})})(Mzt);var mYe=Mzt.exports;const vYe=e9(mYe);var Izt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){var f={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},g=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,w=/\d\d/,v=/\d\d?/,b=/\d*[^-_:/,()\s\d]+/,E={},S=function(Y){return(Y=+Y)+(Y>68?1900:2e3)},_=function(Y){return function(nt){this[Y]=+nt}},M=[/[+-]\d\d:?(\d\d)?|Z/,function(Y){(this.zone||(this.zone={})).offset=function(nt){if(!nt||nt==="Z")return 0;var ot=nt.match(/([+-]|\d\d)/g),ft=60*ot[1]+(+ot[2]||0);return ft===0?0:ot[0]==="+"?-ft:ft}(Y)}],F=function(Y){var nt=E[Y];return nt&&(nt.indexOf?nt:nt.s.concat(nt.f))},R=function(Y,nt){var ot,ft=E.meridiem;if(ft){for(var wt=1;wt<=24;wt+=1)if(Y.indexOf(ft(wt,0,nt))>-1){ot=wt>12;break}}else ot=Y===(nt?"pm":"PM");return ot},B={A:[b,function(Y){this.afternoon=R(Y,!1)}],a:[b,function(Y){this.afternoon=R(Y,!0)}],S:[/\d/,function(Y){this.milliseconds=100*+Y}],SS:[w,function(Y){this.milliseconds=10*+Y}],SSS:[/\d{3}/,function(Y){this.milliseconds=+Y}],s:[v,_("seconds")],ss:[v,_("seconds")],m:[v,_("minutes")],mm:[v,_("minutes")],H:[v,_("hours")],h:[v,_("hours")],HH:[v,_("hours")],hh:[v,_("hours")],D:[v,_("day")],DD:[w,_("day")],Do:[b,function(Y){var nt=E.ordinal,ot=Y.match(/\d+/);if(this.day=ot[0],nt)for(var ft=1;ft<=31;ft+=1)nt(ft).replace(/\[|\]/g,"")===Y&&(this.day=ft)}],M:[v,_("month")],MM:[w,_("month")],MMM:[b,function(Y){var nt=F("months"),ot=(F("monthsShort")||nt.map(function(ft){return ft.slice(0,3)})).indexOf(Y)+1;if(ot<1)throw new Error;this.month=ot%12||ot}],MMMM:[b,function(Y){var nt=F("months").indexOf(Y)+1;if(nt<1)throw new Error;this.month=nt%12||nt}],Y:[/[+-]?\d+/,_("year")],YY:[w,function(Y){this.year=S(Y)}],YYYY:[/\d{4}/,_("year")],Z:M,ZZ:M};function z(Y){var nt,ot;nt=Y,ot=E&&E.formats;for(var ft=(Y=nt.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(Q,dt,K){var yt=K&&K.toUpperCase();return dt||ot[K]||f[K]||ot[yt].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(V,Ot,It){return Ot||It.slice(1)})})).match(g),wt=ft.length,mt=0;mt-1)return new Date((xt==="X"?1e3:1)*jt);var Ct=z(xt)(jt),kt=Ct.year,Gt=Ct.month,Fe=Ct.day,Mt=Ct.hours,pn=Ct.minutes,Ae=Ct.seconds,ye=Ct.milliseconds,tn=Ct.zone,sn=new Date,be=Fe||(kt||Gt?1:sn.getDate()),Ne=kt||sn.getFullYear(),Xt=0;kt&&!Gt||(Xt=Gt>0?Gt-1:sn.getMonth());var _e=Mt||0,xe=pn||0,Mn=Ae||0,ce=ye||0;return tn?new Date(Date.UTC(Ne,Xt,be,_e,xe,Mn,ce+60*tn.offset*1e3)):Ft?new Date(Date.UTC(Ne,Xt,be,_e,xe,Mn,ce)):new Date(Ne,Xt,be,_e,xe,Mn,ce)}catch{return new Date("")}}(ct,gt,rt),this.init(),yt&&yt!==!0&&(this.$L=this.locale(yt).$L),K&&ct!=this.format(gt)&&(this.$d=new Date("")),E={}}else if(gt instanceof Array)for(var V=gt.length,Ot=1;Ot<=V;Ot+=1){it[1]=gt[Ot-1];var It=ot.apply(this,it);if(It.isValid()){this.$d=It.$d,this.$L=It.$L,this.init();break}Ot===V&&(this.$d=new Date(""))}else wt.call(this,mt)}}})})(Izt);var yYe=Izt.exports;const xYe=e9(yYe);var Ozt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){return function(f,g){var w=g.prototype,v=w.format;w.format=function(b){var E=this,S=this.$locale();if(!this.isValid())return v.bind(this)(b);var _=this.$utils(),M=(b||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(F){switch(F){case"Q":return Math.ceil((E.$M+1)/3);case"Do":return S.ordinal(E.$D);case"gggg":return E.weekYear();case"GGGG":return E.isoWeekYear();case"wo":return S.ordinal(E.week(),"W");case"w":case"ww":return _.s(E.week(),F==="w"?1:2,"0");case"W":case"WW":return _.s(E.isoWeek(),F==="W"?1:2,"0");case"k":case"kk":return _.s(String(E.$H===0?24:E.$H),F==="k"?1:2,"0");case"X":return Math.floor(E.$d.getTime()/1e3);case"x":return E.$d.getTime();case"z":return"["+E.offsetName()+"]";case"zzz":return"["+E.offsetName("long")+"]";default:return F}});return v.bind(this)(M)}}})})(Ozt);var kYe=Ozt.exports;const EYe=e9(kYe);tg.extend(vYe),tg.extend(xYe),tg.extend(EYe);let h4="",ubt="",lbt,hbt="",oB=[],cB=[],fbt={},dbt=[],lX=[],SD="",gbt="";const Nzt=["active","done","crit","milestone"];let pbt=[],uB=!1,bbt=!1,wbt="sunday",mbt=0;const TYe=function(){dbt=[],lX=[],SD="",pbt=[],hX=0,ybt=void 0,fX=void 0,H1=[],h4="",ubt="",gbt="",lbt=void 0,hbt="",oB=[],cB=[],uB=!1,bbt=!1,mbt=0,fbt={},ag(),wbt="sunday"},CYe=function(i){ubt=i},SYe=function(){return ubt},_Ye=function(i){lbt=i},AYe=function(){return lbt},LYe=function(i){hbt=i},DYe=function(){return hbt},MYe=function(i){h4=i},IYe=function(){uB=!0},OYe=function(){return uB},NYe=function(){bbt=!0},PYe=function(){return bbt},FYe=function(i){gbt=i},BYe=function(){return gbt},RYe=function(){return h4},jYe=function(i){oB=i.toLowerCase().split(/[\s,]+/)},$Ye=function(){return oB},zYe=function(i){cB=i.toLowerCase().split(/[\s,]+/)},qYe=function(){return cB},HYe=function(){return fbt},VYe=function(i){SD=i,dbt.push(i)},UYe=function(){return dbt},GYe=function(){let i=$zt();const a=10;let f=0;for(;!i&&f=6&&f.includes("weekends")||f.includes(i.format("dddd").toLowerCase())?!0:f.includes(i.format(a.trim()))},KYe=function(i){wbt=i},WYe=function(){return wbt},Fzt=function(i,a,f,g){if(!f.length||i.manualEndTime)return;let w;i.startTime instanceof Date?w=tg(i.startTime):w=tg(i.startTime,a,!0),w=w.add(1,"d");let v;i.endTime instanceof Date?v=tg(i.endTime):v=tg(i.endTime,a,!0);const[b,E]=YYe(w,v,a,f,g);i.endTime=b.toDate(),i.renderEndTime=E},YYe=function(i,a,f,g,w){let v=!1,b=null;for(;i<=a;)v||(b=a.toDate()),v=Pzt(i,f,g,w),v&&(a=a.add(1,"d")),i=i.add(1,"d");return[a,b]},vbt=function(i,a,f){f=f.trim();const w=/^after\s+([\d\w- ]+)/.exec(f.trim());if(w!==null){let b=null;if(w[1].split(" ").forEach(function(E){let S=AD(E);S!==void 0&&(b?S.endTime>b.endTime&&(b=S):b=S)}),b)return b.endTime;{const E=new Date;return E.setHours(0,0,0,0),E}}let v=tg(f,a.trim(),!0);if(v.isValid())return v.toDate();{Kt.debug("Invalid date:"+f),Kt.debug("With date format:"+a.trim());const b=new Date(f);if(b===void 0||isNaN(b.getTime())||b.getFullYear()<-1e4||b.getFullYear()>1e4)throw new Error("Invalid date:"+f);return b}},Bzt=function(i){const a=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(i.trim());return a!==null?[Number.parseFloat(a[1]),a[2]]:[NaN,"ms"]},Rzt=function(i,a,f,g=!1){f=f.trim();let w=tg(f,a.trim(),!0);if(w.isValid())return g&&(w=w.add(1,"d")),w.toDate();let v=tg(i);const[b,E]=Bzt(f);if(!Number.isNaN(b)){const S=v.add(b,E);S.isValid()&&(v=S)}return v.toDate()};let hX=0;const _D=function(i){return i===void 0?(hX=hX+1,"task"+hX):i},XYe=function(i,a){let f;a.substr(0,1)===":"?f=a.substr(1,a.length):f=a;const g=f.split(","),w={};Hzt(g,w,Nzt);for(let b=0;b{window.open(f,"_self")}),fbt[g]=f)}),zzt(i,"clickable")},zzt=function(i,a){i.split(",").forEach(function(f){let g=AD(f);g!==void 0&&g.classes.push(a)})},eXe=function(i,a,f){if(Re().securityLevel!=="loose"||a===void 0)return;let g=[];if(typeof f=="string"){g=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let v=0;v{uo.runFunc(a,...g)})},qzt=function(i,a){pbt.push(function(){const f=document.querySelector(`[id="${i}"]`);f!==null&&f.addEventListener("click",function(){a()})},function(){const f=document.querySelector(`[id="${i}-text"]`);f!==null&&f.addEventListener("click",function(){a()})})},nXe={getConfig:()=>Re().gantt,clear:TYe,setDateFormat:MYe,getDateFormat:RYe,enableInclusiveEndDates:IYe,endDatesAreInclusive:OYe,enableTopAxis:NYe,topAxisEnabled:PYe,setAxisFormat:CYe,getAxisFormat:SYe,setTickInterval:_Ye,getTickInterval:AYe,setTodayMarker:LYe,getTodayMarker:DYe,setAccTitle:og,getAccTitle:Xg,setDiagramTitle:S2,getDiagramTitle:Zg,setDisplayMode:FYe,getDisplayMode:BYe,setAccDescription:Qg,getAccDescription:Jg,addSection:VYe,getSections:UYe,getTasks:GYe,addTask:JYe,findTaskById:AD,addTaskOrg:ZYe,setIncludes:jYe,getIncludes:$Ye,setExcludes:zYe,getExcludes:qYe,setClickEvent:function(i,a,f){i.split(",").forEach(function(g){eXe(g,a,f)}),zzt(i,"clickable")},setLink:tXe,getLinks:HYe,bindFunctions:function(i){pbt.forEach(function(a){a(i)})},parseDuration:Bzt,isInvalidDate:Pzt,setWeekday:KYe,getWeekday:WYe};function Hzt(i,a,f){let g=!0;for(;g;)g=!1,f.forEach(function(w){const v="^\\s*"+w+"\\s*$",b=new RegExp(v);i[0].match(b)&&(a[w]=!0,i.shift(1),g=!0)})}const rXe=function(){Kt.debug("Something is calling, setConf, remove the call")},Vzt={monday:hF,tuesday:NNt,wednesday:PNt,thursday:l9,friday:FNt,saturday:BNt,sunday:lF},iXe=(i,a)=>{let f=[...i].map(()=>-1/0),g=[...i].sort((v,b)=>v.startTime-b.startTime||v.order-b.order),w=0;for(const v of g)for(let b=0;b=f[b]){f[b]=v.endTime,v.order=b+a,b>w&&(w=b);break}return w};let zx;const sXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:wYe,db:nXe,renderer:{setConf:rXe,draw:function(i,a,f,g){const w=Re().gantt,v=Re().securityLevel;let b;v==="sandbox"&&(b=Tr("#i"+a));const E=Tr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=v==="sandbox"?b.nodes()[0].contentDocument:document,_=S.getElementById(a);zx=_.parentElement.offsetWidth,zx===void 0&&(zx=1200),w.useWidth!==void 0&&(zx=w.useWidth);const M=g.db.getTasks();let F=[];for(const gt of M)F.push(gt.type);F=it(F);const R={};let B=2*w.topPadding;if(g.db.getDisplayMode()==="compact"||w.displayMode==="compact"){const gt={};for(const dt of M)gt[dt.section]===void 0?gt[dt.section]=[dt]:gt[dt.section].push(dt);let Q=0;for(const dt of Object.keys(gt)){const K=iXe(gt[dt],Q)+1;Q+=K,B+=K*(w.barHeight+w.barGap),R[dt]=K}}else{B+=M.length*(w.barHeight+w.barGap);for(const gt of F)R[gt]=M.filter(Q=>Q.type===gt).length}_.setAttribute("viewBox","0 0 "+zx+" "+B);const z=E.select(`[id="${a}"]`),Y=eDe().domain([B9e(M,function(gt){return gt.startTime}),F9e(M,function(gt){return gt.endTime})]).rangeRound([0,zx-w.leftPadding-w.rightPadding]);function nt(gt,Q){const dt=gt.startTime,K=Q.startTime;let yt=0;return dt>K?yt=1:dtkt.order))].map(kt=>gt.find(Gt=>Gt.order===kt));z.append("g").selectAll("rect").data(jt).enter().append("rect").attr("x",0).attr("y",function(kt,Gt){return Gt=kt.order,Gt*Q+dt-2}).attr("width",function(){return Ot-w.rightPadding/2}).attr("height",Q).attr("class",function(kt){for(const[Gt,Fe]of F.entries())if(kt.type===Fe)return"section section"+Gt%w.numberSectionStyles;return"section section0"});const xt=z.append("g").selectAll("rect").data(gt).enter(),Ft=g.db.getLinks();if(xt.append("rect").attr("id",function(kt){return kt.id}).attr("rx",3).attr("ry",3).attr("x",function(kt){return kt.milestone?Y(kt.startTime)+K+.5*(Y(kt.endTime)-Y(kt.startTime))-.5*yt:Y(kt.startTime)+K}).attr("y",function(kt,Gt){return Gt=kt.order,Gt*Q+dt}).attr("width",function(kt){return kt.milestone?yt:Y(kt.renderEndTime||kt.endTime)-Y(kt.startTime)}).attr("height",yt).attr("transform-origin",function(kt,Gt){return Gt=kt.order,(Y(kt.startTime)+K+.5*(Y(kt.endTime)-Y(kt.startTime))).toString()+"px "+(Gt*Q+dt+.5*yt).toString()+"px"}).attr("class",function(kt){const Gt="task";let Fe="";kt.classes.length>0&&(Fe=kt.classes.join(" "));let Mt=0;for(const[Ae,ye]of F.entries())kt.type===ye&&(Mt=Ae%w.numberSectionStyles);let pn="";return kt.active?kt.crit?pn+=" activeCrit":pn=" active":kt.done?kt.crit?pn=" doneCrit":pn=" done":kt.crit&&(pn+=" crit"),pn.length===0&&(pn=" task"),kt.milestone&&(pn=" milestone "+pn),pn+=Mt,pn+=" "+Fe,Gt+pn}),xt.append("text").attr("id",function(kt){return kt.id+"-text"}).text(function(kt){return kt.task}).attr("font-size",w.fontSize).attr("x",function(kt){let Gt=Y(kt.startTime),Fe=Y(kt.renderEndTime||kt.endTime);kt.milestone&&(Gt+=.5*(Y(kt.endTime)-Y(kt.startTime))-.5*yt),kt.milestone&&(Fe=Gt+yt);const Mt=this.getBBox().width;return Mt>Fe-Gt?Fe+Mt+1.5*w.leftPadding>Ot?Gt+K-5:Fe+K+5:(Fe-Gt)/2+Gt+K}).attr("y",function(kt,Gt){return Gt=kt.order,Gt*Q+w.barHeight/2+(w.fontSize/2-2)+dt}).attr("text-height",yt).attr("class",function(kt){const Gt=Y(kt.startTime);let Fe=Y(kt.endTime);kt.milestone&&(Fe=Gt+yt);const Mt=this.getBBox().width;let pn="";kt.classes.length>0&&(pn=kt.classes.join(" "));let Ae=0;for(const[tn,sn]of F.entries())kt.type===sn&&(Ae=tn%w.numberSectionStyles);let ye="";return kt.active&&(kt.crit?ye="activeCritText"+Ae:ye="activeText"+Ae),kt.done?kt.crit?ye=ye+" doneCritText"+Ae:ye=ye+" doneText"+Ae:kt.crit&&(ye=ye+" critText"+Ae),kt.milestone&&(ye+=" milestoneText"),Mt>Fe-Gt?Fe+Mt+1.5*w.leftPadding>Ot?pn+" taskTextOutsideLeft taskTextOutside"+Ae+" "+ye:pn+" taskTextOutsideRight taskTextOutside"+Ae+" "+ye+" width-"+Mt:pn+" taskText taskText"+Ae+" "+ye+" width-"+Mt}),Re().securityLevel==="sandbox"){let kt;kt=Tr("#i"+a);const Gt=kt.nodes()[0].contentDocument;xt.filter(function(Fe){return Ft[Fe.id]!==void 0}).each(function(Fe){var Mt=Gt.querySelector("#"+Fe.id),pn=Gt.querySelector("#"+Fe.id+"-text");const Ae=Mt.parentNode;var ye=Gt.createElement("a");ye.setAttribute("xlink:href",Ft[Fe.id]),ye.setAttribute("target","_top"),Ae.appendChild(ye),ye.appendChild(Mt),ye.appendChild(pn)})}}function wt(gt,Q,dt,K,yt,V,Ot,It){if(Ot.length===0&&It.length===0)return;let jt,xt;for(const{startTime:Mt,endTime:pn}of V)(jt===void 0||Mtxt)&&(xt=pn);if(!jt||!xt)return;if(tg(xt).diff(tg(jt),"year")>5){Kt.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");return}const Ft=g.db.getDateFormat(),Ct=[];let kt=null,Gt=tg(jt);for(;Gt.valueOf()<=xt;)g.db.isInvalidDate(Gt,Ft,Ot,It)?kt?kt.end=Gt:kt={start:Gt,end:Gt}:kt&&(Ct.push(kt),kt=null),Gt=Gt.add(1,"d");z.append("g").selectAll("rect").data(Ct).enter().append("rect").attr("id",function(Mt){return"exclude-"+Mt.start.format("YYYY-MM-DD")}).attr("x",function(Mt){return Y(Mt.start)+dt}).attr("y",w.gridLineStartPadding).attr("width",function(Mt){const pn=Mt.end.add(1,"day");return Y(pn)-Y(Mt.start)}).attr("height",yt-Q-w.gridLineStartPadding).attr("transform-origin",function(Mt,pn){return(Y(Mt.start)+dt+.5*(Y(Mt.end)-Y(Mt.start))).toString()+"px "+(pn*gt+.5*yt).toString()+"px"}).attr("class","exclude-range")}function mt(gt,Q,dt,K){let yt=G9e(Y).tickSize(-K+Q+w.gridLineStartPadding).tickFormat(DW(g.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));const Ot=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(g.db.getTickInterval()||w.tickInterval);if(Ot!==null){const It=Ot[1],jt=Ot[2],xt=g.db.getWeekday()||w.weekday;switch(jt){case"millisecond":yt.ticks(UL.every(It));break;case"second":yt.ticks(f8.every(It));break;case"minute":yt.ticks(cF.every(It));break;case"hour":yt.ticks(uF.every(It));break;case"day":yt.ticks(c9.every(It));break;case"week":yt.ticks(Vzt[xt].every(It));break;case"month":yt.ticks(fF.every(It));break}}if(z.append("g").attr("class","grid").attr("transform","translate("+gt+", "+(K-50)+")").call(yt).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),g.db.topAxisEnabled()||w.topAxis){let It=U9e(Y).tickSize(-K+Q+w.gridLineStartPadding).tickFormat(DW(g.db.getAxisFormat()||w.axisFormat||"%Y-%m-%d"));if(Ot!==null){const jt=Ot[1],xt=Ot[2],Ft=g.db.getWeekday()||w.weekday;switch(xt){case"millisecond":It.ticks(UL.every(jt));break;case"second":It.ticks(f8.every(jt));break;case"minute":It.ticks(cF.every(jt));break;case"hour":It.ticks(uF.every(jt));break;case"day":It.ticks(c9.every(jt));break;case"week":It.ticks(Vzt[Ft].every(jt));break;case"month":It.ticks(fF.every(jt));break}}z.append("g").attr("class","grid").attr("transform","translate("+gt+", "+Q+")").call(It).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function ct(gt,Q){let dt=0;const K=Object.keys(R).map(yt=>[yt,R[yt]]);z.append("g").selectAll("text").data(K).enter().append(function(yt){const V=yt[0].split(ei.lineBreakRegex),Ot=-(V.length-1)/2,It=S.createElementNS("http://www.w3.org/2000/svg","text");It.setAttribute("dy",Ot+"em");for(const[jt,xt]of V.entries()){const Ft=S.createElementNS("http://www.w3.org/2000/svg","tspan");Ft.setAttribute("alignment-baseline","central"),Ft.setAttribute("x","10"),jt>0&&Ft.setAttribute("dy","1em"),Ft.textContent=xt,It.appendChild(Ft)}return It}).attr("x",10).attr("y",function(yt,V){if(V>0)for(let Ot=0;Ot` + .mermaid-main-font { + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .exclude-range { + fill: ${i.excludeBkgColor}; + } + + .section { + stroke: none; + opacity: 0.2; + } + + .section0 { + fill: ${i.sectionBkgColor}; + } + + .section2 { + fill: ${i.sectionBkgColor2}; + } + + .section1, + .section3 { + fill: ${i.altSectionBkgColor}; + opacity: 0.2; + } + + .sectionTitle0 { + fill: ${i.titleColor}; + } + + .sectionTitle1 { + fill: ${i.titleColor}; + } + + .sectionTitle2 { + fill: ${i.titleColor}; + } + + .sectionTitle3 { + fill: ${i.titleColor}; + } + + .sectionTitle { + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + + /* Grid and axis */ + + .grid .tick { + stroke: ${i.gridColor}; + opacity: 0.8; + shape-rendering: crispEdges; + } + + .grid .tick text { + font-family: ${i.fontFamily}; + fill: ${i.textColor}; + } + + .grid path { + stroke-width: 0; + } + + + /* Today line */ + + .today { + fill: none; + stroke: ${i.todayLineColor}; + stroke-width: 2px; + } + + + /* Task styling */ + + /* Default task */ + + .task { + stroke-width: 2; + } + + .taskText { + text-anchor: middle; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideRight { + fill: ${i.taskTextDarkColor}; + text-anchor: start; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } + + .taskTextOutsideLeft { + fill: ${i.taskTextDarkColor}; + text-anchor: end; + } + + + /* Special case clickable */ + + .task.clickable { + cursor: pointer; + } + + .taskText.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideLeft.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + .taskTextOutsideRight.clickable { + cursor: pointer; + fill: ${i.taskTextClickableColor} !important; + font-weight: bold; + } + + + /* Specific task settings for the sections*/ + + .taskText0, + .taskText1, + .taskText2, + .taskText3 { + fill: ${i.taskTextColor}; + } + + .task0, + .task1, + .task2, + .task3 { + fill: ${i.taskBkgColor}; + stroke: ${i.taskBorderColor}; + } + + .taskTextOutside0, + .taskTextOutside2 + { + fill: ${i.taskTextOutsideColor}; + } + + .taskTextOutside1, + .taskTextOutside3 { + fill: ${i.taskTextOutsideColor}; + } + + + /* Active task */ + + .active0, + .active1, + .active2, + .active3 { + fill: ${i.activeTaskBkgColor}; + stroke: ${i.activeTaskBorderColor}; + } + + .activeText0, + .activeText1, + .activeText2, + .activeText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Completed task */ + + .done0, + .done1, + .done2, + .done3 { + stroke: ${i.doneTaskBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + } + + .doneText0, + .doneText1, + .doneText2, + .doneText3 { + fill: ${i.taskTextDarkColor} !important; + } + + + /* Tasks on the critical line */ + + .crit0, + .crit1, + .crit2, + .crit3 { + stroke: ${i.critBorderColor}; + fill: ${i.critBkgColor}; + stroke-width: 2; + } + + .activeCrit0, + .activeCrit1, + .activeCrit2, + .activeCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.activeTaskBkgColor}; + stroke-width: 2; + } + + .doneCrit0, + .doneCrit1, + .doneCrit2, + .doneCrit3 { + stroke: ${i.critBorderColor}; + fill: ${i.doneTaskBkgColor}; + stroke-width: 2; + cursor: pointer; + shape-rendering: crispEdges; + } + + .milestone { + transform: rotate(45deg) scale(0.8,0.8); + } + + .milestoneText { + font-style: italic; + } + .doneCritText0, + .doneCritText1, + .doneCritText2, + .doneCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .activeCritText0, + .activeCritText1, + .activeCritText2, + .activeCritText3 { + fill: ${i.taskTextDarkColor} !important; + } + + .titleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.titleColor||i.textColor}; + font-family: var(--mermaid-font-family, "trebuchet ms", verdana, arial, sans-serif); + } +`}},Symbol.toStringTag,{value:"Module"}));var xbt=function(){var i=function(v,b,E,S){for(E=E||{},S=v.length;S--;E[v[S]]=b);return E},a=[6,9,10],f={trace:function(){},yy:{},symbols_:{error:2,start:3,info:4,document:5,EOF:6,line:7,statement:8,NL:9,showInfo:10,$accept:0,$end:1},terminals_:{2:"error",4:"info",6:"EOF",9:"NL",10:"showInfo"},productions_:[0,[3,3],[5,0],[5,2],[7,1],[7,1],[8,1]],performAction:function(b,E,S,_,M,F,R){switch(F.length-1,M){case 1:return _;case 4:break;case 6:_.setInfo(!0);break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:6,9:[1,7],10:[1,8]},{1:[2,1]},i(a,[2,3]),i(a,[2,4]),i(a,[2,5]),i(a,[2,6])],defaultActions:{4:[2,1]},parseError:function(b,E){if(E.recoverable)this.trace(b);else{var S=new Error(b);throw S.hash=E,S}},parse:function(b){var E=this,S=[0],_=[],M=[null],F=[],R=this.table,B="",z=0,Y=0,nt=2,ot=1,ft=F.slice.call(arguments,1),wt=Object.create(this.lexer),mt={yy:{}};for(var ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,ct)&&(mt.yy[ct]=this.yy[ct]);wt.setInput(b,mt.yy),mt.yy.lexer=wt,mt.yy.parser=this,typeof wt.yylloc>"u"&&(wt.yylloc={});var rt=wt.yylloc;F.push(rt);var it=wt.options&&wt.options.ranges;typeof mt.yy.parseError=="function"?this.parseError=mt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function gt(){var Ct;return Ct=_.pop()||wt.lex()||ot,typeof Ct!="number"&&(Ct instanceof Array&&(_=Ct,Ct=_.pop()),Ct=E.symbols_[Ct]||Ct),Ct}for(var Q,dt,K,yt,V={},Ot,It,jt,xt;;){if(dt=S[S.length-1],this.defaultActions[dt]?K=this.defaultActions[dt]:((Q===null||typeof Q>"u")&&(Q=gt()),K=R[dt]&&R[dt][Q]),typeof K>"u"||!K.length||!K[0]){var Ft="";xt=[];for(Ot in R[dt])this.terminals_[Ot]&&Ot>nt&&xt.push("'"+this.terminals_[Ot]+"'");wt.showPosition?Ft="Parse error on line "+(z+1)+`: +`+wt.showPosition()+` +Expecting `+xt.join(", ")+", got '"+(this.terminals_[Q]||Q)+"'":Ft="Parse error on line "+(z+1)+": Unexpected "+(Q==ot?"end of input":"'"+(this.terminals_[Q]||Q)+"'"),this.parseError(Ft,{text:wt.match,token:this.terminals_[Q]||Q,line:wt.yylineno,loc:rt,expected:xt})}if(K[0]instanceof Array&&K.length>1)throw new Error("Parse Error: multiple actions possible at state: "+dt+", token: "+Q);switch(K[0]){case 1:S.push(Q),M.push(wt.yytext),F.push(wt.yylloc),S.push(K[1]),Q=null,Y=wt.yyleng,B=wt.yytext,z=wt.yylineno,rt=wt.yylloc;break;case 2:if(It=this.productions_[K[1]][1],V.$=M[M.length-It],V._$={first_line:F[F.length-(It||1)].first_line,last_line:F[F.length-1].last_line,first_column:F[F.length-(It||1)].first_column,last_column:F[F.length-1].last_column},it&&(V._$.range=[F[F.length-(It||1)].range[0],F[F.length-1].range[1]]),yt=this.performAction.apply(V,[B,Y,z,mt.yy,K[1],M,F].concat(ft)),typeof yt<"u")return yt;It&&(S=S.slice(0,-1*It*2),M=M.slice(0,-1*It),F=F.slice(0,-1*It)),S.push(this.productions_[K[1]][0]),M.push(V.$),F.push(V._$),jt=R[S[S.length-2]][S[S.length-1]],S.push(jt);break;case 3:return!0}}return!0}},g=function(){var v={EOF:1,parseError:function(E,S){if(this.yy.parser)this.yy.parser.parseError(E,S);else throw new Error(E)},setInput:function(b,E){return this.yy=E||this.yy||{},this._input=b,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var b=this._input[0];this.yytext+=b,this.yyleng++,this.offset++,this.match+=b,this.matched+=b;var E=b.match(/(?:\r\n?|\n).*/g);return E?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),b},unput:function(b){var E=b.length,S=b.split(/(?:\r\n?|\n)/g);this._input=b+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-E),this.offset-=E;var _=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),S.length-1&&(this.yylineno-=S.length-1);var M=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:S?(S.length===_.length?this.yylloc.first_column:0)+_[_.length-S.length].length-S[0].length:this.yylloc.first_column-E},this.options.ranges&&(this.yylloc.range=[M[0],M[0]+this.yyleng-E]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(b){this.unput(this.match.slice(b))},pastInput:function(){var b=this.matched.substr(0,this.matched.length-this.match.length);return(b.length>20?"...":"")+b.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var b=this.match;return b.length<20&&(b+=this._input.substr(0,20-b.length)),(b.substr(0,20)+(b.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var b=this.pastInput(),E=new Array(b.length+1).join("-");return b+this.upcomingInput()+` +`+E+"^"},test_match:function(b,E){var S,_,M;if(this.options.backtrack_lexer&&(M={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(M.yylloc.range=this.yylloc.range.slice(0))),_=b[0].match(/(?:\r\n?|\n).*/g),_&&(this.yylineno+=_.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:_?_[_.length-1].length-_[_.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],S=this.performAction.call(this,this.yy,this,E,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),S)return S;if(this._backtrack){for(var F in M)this[F]=M[F];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var b,E,S,_;this._more||(this.yytext="",this.match="");for(var M=this._currentRules(),F=0;FE[0].length)){if(E=S,_=F,this.options.backtrack_lexer){if(b=this.test_match(S,M[F]),b!==!1)return b;if(this._backtrack){E=!1;continue}else return!1}else if(!this.options.flex)break}return E?(b=this.test_match(E,M[_]),b!==!1?b:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var E=this.next();return E||this.lex()},begin:function(E){this.conditionStack.push(E)},popState:function(){var E=this.conditionStack.length-1;return E>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(E){return E=this.conditionStack.length-1-Math.abs(E||0),E>=0?this.conditionStack[E]:"INITIAL"},pushState:function(E){this.begin(E)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(E,S,_,M){switch(_){case 0:return 4;case 1:return 9;case 2:return"space";case 3:return 10;case 4:return 6;case 5:return"TXT"}},rules:[/^(?:info\b)/i,/^(?:[\s\n\r]+)/i,/^(?:[\s]+)/i,/^(?:showInfo\b)/i,/^(?:$)/i,/^(?:.)/i],conditions:{INITIAL:{rules:[0,1,2,3,4,5],inclusive:!0}}};return v}();f.lexer=g;function w(){this.yy={}}return w.prototype=f,f.Parser=w,new w}();xbt.parser=xbt;const aXe=xbt,Uzt={info:!1};let kbt=Uzt.info;const oXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:aXe,db:{clear:()=>{kbt=Uzt.info},setInfo:i=>{kbt=i},getInfo:()=>kbt},renderer:{draw:(i,a,f)=>{Kt.debug(`rendering info diagram +`+i);const g=FF(a);sg(g,100,400,!0),g.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${f}`)}}}},Symbol.toStringTag,{value:"Module"}));var Ebt=function(){var i=function(wt,mt,ct,rt){for(ct=ct||{},rt=wt.length;rt--;ct[wt[rt]]=mt);return ct},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[1,10,12,14,16,18,19,20,21,22],b=[2,4],E=[1,5,10,12,14,16,18,19,20,21,22],S=[20,21,22],_=[2,7],M=[1,12],F=[1,13],R=[1,14],B=[1,15],z=[1,16],Y=[1,17],nt={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,PIE:5,document:6,showData:7,line:8,statement:9,txt:10,value:11,title:12,title_value:13,acc_title:14,acc_title_value:15,acc_descr:16,acc_descr_value:17,acc_descr_multiline_value:18,section:19,NEWLINE:20,";":21,EOF:22,$accept:0,$end:1},terminals_:{2:"error",5:"PIE",7:"showData",10:"txt",11:"value",12:"title",13:"title_value",14:"acc_title",15:"acc_title_value",16:"acc_descr",17:"acc_descr_value",18:"acc_descr_multiline_value",19:"section",20:"NEWLINE",21:";",22:"EOF"},productions_:[0,[3,2],[3,2],[3,3],[6,0],[6,2],[8,2],[9,0],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[4,1],[4,1],[4,1]],performAction:function(mt,ct,rt,it,gt,Q,dt){var K=Q.length-1;switch(gt){case 3:it.setShowData(!0);break;case 6:this.$=Q[K-1];break;case 8:it.addSection(Q[K-1],it.cleanupValue(Q[K]));break;case 9:this.$=Q[K].trim(),it.setDiagramTitle(this.$);break;case 10:this.$=Q[K].trim(),it.setAccTitle(this.$);break;case 11:case 12:this.$=Q[K].trim(),it.setAccDescription(this.$);break;case 13:it.addSection(Q[K].substr(8)),this.$=Q[K].substr(8);break}},table:[{3:1,4:2,5:a,20:f,21:g,22:w},{1:[3]},{3:7,4:2,5:a,20:f,21:g,22:w},i(v,b,{6:8,7:[1,9]}),i(E,[2,14]),i(E,[2,15]),i(E,[2,16]),{1:[2,1]},i(S,_,{8:10,9:11,1:[2,2],10:M,12:F,14:R,16:B,18:z,19:Y}),i(v,b,{6:18}),i(v,[2,5]),{4:19,20:f,21:g,22:w},{11:[1,20]},{13:[1,21]},{15:[1,22]},{17:[1,23]},i(S,[2,12]),i(S,[2,13]),i(S,_,{8:10,9:11,1:[2,3],10:M,12:F,14:R,16:B,18:z,19:Y}),i(v,[2,6]),i(S,[2,8]),i(S,[2,9]),i(S,[2,10]),i(S,[2,11])],defaultActions:{7:[2,1]},parseError:function(mt,ct){if(ct.recoverable)this.trace(mt);else{var rt=new Error(mt);throw rt.hash=ct,rt}},parse:function(mt){var ct=this,rt=[0],it=[],gt=[null],Q=[],dt=this.table,K="",yt=0,V=0,Ot=2,It=1,jt=Q.slice.call(arguments,1),xt=Object.create(this.lexer),Ft={yy:{}};for(var Ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ct)&&(Ft.yy[Ct]=this.yy[Ct]);xt.setInput(mt,Ft.yy),Ft.yy.lexer=xt,Ft.yy.parser=this,typeof xt.yylloc>"u"&&(xt.yylloc={});var kt=xt.yylloc;Q.push(kt);var Gt=xt.options&&xt.options.ranges;typeof Ft.yy.parseError=="function"?this.parseError=Ft.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(){var xe;return xe=it.pop()||xt.lex()||It,typeof xe!="number"&&(xe instanceof Array&&(it=xe,xe=it.pop()),xe=ct.symbols_[xe]||xe),xe}for(var Mt,pn,Ae,ye,tn={},sn,be,Ne,Xt;;){if(pn=rt[rt.length-1],this.defaultActions[pn]?Ae=this.defaultActions[pn]:((Mt===null||typeof Mt>"u")&&(Mt=Fe()),Ae=dt[pn]&&dt[pn][Mt]),typeof Ae>"u"||!Ae.length||!Ae[0]){var _e="";Xt=[];for(sn in dt[pn])this.terminals_[sn]&&sn>Ot&&Xt.push("'"+this.terminals_[sn]+"'");xt.showPosition?_e="Parse error on line "+(yt+1)+`: +`+xt.showPosition()+` +Expecting `+Xt.join(", ")+", got '"+(this.terminals_[Mt]||Mt)+"'":_e="Parse error on line "+(yt+1)+": Unexpected "+(Mt==It?"end of input":"'"+(this.terminals_[Mt]||Mt)+"'"),this.parseError(_e,{text:xt.match,token:this.terminals_[Mt]||Mt,line:xt.yylineno,loc:kt,expected:Xt})}if(Ae[0]instanceof Array&&Ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+pn+", token: "+Mt);switch(Ae[0]){case 1:rt.push(Mt),gt.push(xt.yytext),Q.push(xt.yylloc),rt.push(Ae[1]),Mt=null,V=xt.yyleng,K=xt.yytext,yt=xt.yylineno,kt=xt.yylloc;break;case 2:if(be=this.productions_[Ae[1]][1],tn.$=gt[gt.length-be],tn._$={first_line:Q[Q.length-(be||1)].first_line,last_line:Q[Q.length-1].last_line,first_column:Q[Q.length-(be||1)].first_column,last_column:Q[Q.length-1].last_column},Gt&&(tn._$.range=[Q[Q.length-(be||1)].range[0],Q[Q.length-1].range[1]]),ye=this.performAction.apply(tn,[K,V,yt,Ft.yy,Ae[1],gt,Q].concat(jt)),typeof ye<"u")return ye;be&&(rt=rt.slice(0,-1*be*2),gt=gt.slice(0,-1*be),Q=Q.slice(0,-1*be)),rt.push(this.productions_[Ae[1]][0]),gt.push(tn.$),Q.push(tn._$),Ne=dt[rt[rt.length-2]][rt[rt.length-1]],rt.push(Ne);break;case 3:return!0}}return!0}},ot=function(){var wt={EOF:1,parseError:function(ct,rt){if(this.yy.parser)this.yy.parser.parseError(ct,rt);else throw new Error(ct)},setInput:function(mt,ct){return this.yy=ct||this.yy||{},this._input=mt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var mt=this._input[0];this.yytext+=mt,this.yyleng++,this.offset++,this.match+=mt,this.matched+=mt;var ct=mt.match(/(?:\r\n?|\n).*/g);return ct?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),mt},unput:function(mt){var ct=mt.length,rt=mt.split(/(?:\r\n?|\n)/g);this._input=mt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ct),this.offset-=ct;var it=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),rt.length-1&&(this.yylineno-=rt.length-1);var gt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:rt?(rt.length===it.length?this.yylloc.first_column:0)+it[it.length-rt.length].length-rt[0].length:this.yylloc.first_column-ct},this.options.ranges&&(this.yylloc.range=[gt[0],gt[0]+this.yyleng-ct]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(mt){this.unput(this.match.slice(mt))},pastInput:function(){var mt=this.matched.substr(0,this.matched.length-this.match.length);return(mt.length>20?"...":"")+mt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var mt=this.match;return mt.length<20&&(mt+=this._input.substr(0,20-mt.length)),(mt.substr(0,20)+(mt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var mt=this.pastInput(),ct=new Array(mt.length+1).join("-");return mt+this.upcomingInput()+` +`+ct+"^"},test_match:function(mt,ct){var rt,it,gt;if(this.options.backtrack_lexer&&(gt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(gt.yylloc.range=this.yylloc.range.slice(0))),it=mt[0].match(/(?:\r\n?|\n).*/g),it&&(this.yylineno+=it.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:it?it[it.length-1].length-it[it.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+mt[0].length},this.yytext+=mt[0],this.match+=mt[0],this.matches=mt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(mt[0].length),this.matched+=mt[0],rt=this.performAction.call(this,this.yy,this,ct,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),rt)return rt;if(this._backtrack){for(var Q in gt)this[Q]=gt[Q];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var mt,ct,rt,it;this._more||(this.yytext="",this.match="");for(var gt=this._currentRules(),Q=0;Qct[0].length)){if(ct=rt,it=Q,this.options.backtrack_lexer){if(mt=this.test_match(rt,gt[Q]),mt!==!1)return mt;if(this._backtrack){ct=!1;continue}else return!1}else if(!this.options.flex)break}return ct?(mt=this.test_match(ct,gt[it]),mt!==!1?mt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ct=this.next();return ct||this.lex()},begin:function(ct){this.conditionStack.push(ct)},popState:function(){var ct=this.conditionStack.length-1;return ct>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ct){return ct=this.conditionStack.length-1-Math.abs(ct||0),ct>=0?this.conditionStack[ct]:"INITIAL"},pushState:function(ct){this.begin(ct)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(ct,rt,it,gt){switch(it){case 0:break;case 1:break;case 2:return 20;case 3:break;case 4:break;case 5:return this.begin("title"),12;case 6:return this.popState(),"title_value";case 7:return this.begin("acc_title"),14;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),16;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:this.begin("string");break;case 15:this.popState();break;case 16:return"txt";case 17:return 5;case 18:return 7;case 19:return"value";case 20:return 22}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:[\s]+)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:pie\b)/i,/^(?:showData\b)/i,/^(?::[\s]*[\d]+(?:\.[\d]+)?)/i,/^(?:$)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[6],inclusive:!1},string:{rules:[15,16],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,7,9,11,14,17,18,19,20],inclusive:!0}}};return wt}();nt.lexer=ot;function ft(){this.yy={}}return ft.prototype=nt,nt.Parser=ft,new ft}();Ebt.parser=Ebt;const cXe=Ebt,Gzt=Bl.pie,dX={sections:{},showData:!1,config:Gzt};let gX=dX.sections,Tbt=dX.showData;const uXe=structuredClone(Gzt),lXe={getConfig:()=>structuredClone(uXe),clear:()=>{gX=structuredClone(dX.sections),Tbt=dX.showData,ag()},setDiagramTitle:S2,getDiagramTitle:Zg,setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,addSection:(i,a)=>{i=Ef(i,Re()),gX[i]===void 0&&(gX[i]=a,Kt.debug(`added new section: ${i}, with value: ${a}`))},getSections:()=>gX,cleanupValue:i=>(i.substring(0,1)===":"&&(i=i.substring(1).trim()),Number(i.trim())),setShowData:i=>{Tbt=i},getShowData:()=>Tbt},hXe=i=>` + .pieCircle{ + stroke: ${i.pieStrokeColor}; + stroke-width : ${i.pieStrokeWidth}; + opacity : ${i.pieOpacity}; + } + .pieOuterCircle{ + stroke: ${i.pieOuterStrokeColor}; + stroke-width: ${i.pieOuterStrokeWidth}; + fill: none; + } + .pieTitleText { + text-anchor: middle; + font-size: ${i.pieTitleTextSize}; + fill: ${i.pieTitleTextColor}; + font-family: ${i.fontFamily}; + } + .slice { + font-family: ${i.fontFamily}; + fill: ${i.pieSectionTextColor}; + font-size:${i.pieSectionTextSize}; + // fill: white; + } + .legend text { + fill: ${i.pieLegendTextColor}; + font-family: ${i.fontFamily}; + font-size: ${i.pieLegendTextSize}; + } +`,fXe=i=>{const a=Object.entries(i).map(g=>({label:g[0],value:g[1]})).sort((g,w)=>w.value-g.value);return pDe().value(g=>g.value)(a)},dXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:cXe,db:lXe,renderer:{draw:(i,a,f,g)=>{Kt.debug(`rendering pie chart +`+i);const w=g.db,v=Re(),b=MF(w.getConfig(),v.pie),E=40,S=18,_=4,M=450,F=M,R=FF(a),B=R.append("g"),z=w.getSections();B.attr("transform","translate("+F/2+","+M/2+")");const{themeVariables:Y}=v;let[nt]=k9(Y.pieOuterStrokeWidth);nt??(nt=2);const ot=b.textPosition,ft=Math.min(F,M)/2-E,wt=YL().innerRadius(0).outerRadius(ft),mt=YL().innerRadius(ft*ot).outerRadius(ft*ot);B.append("circle").attr("cx",0).attr("cy",0).attr("r",ft+nt/2).attr("class","pieOuterCircle");const ct=fXe(z),rt=[Y.pie1,Y.pie2,Y.pie3,Y.pie4,Y.pie5,Y.pie6,Y.pie7,Y.pie8,Y.pie9,Y.pie10,Y.pie11,Y.pie12],it=oF(rt);B.selectAll("mySlices").data(ct).enter().append("path").attr("d",wt).attr("fill",yt=>it(yt.data.label)).attr("class","pieCircle");let gt=0;Object.keys(z).forEach(yt=>{gt+=z[yt]}),B.selectAll("mySlices").data(ct).enter().append("text").text(yt=>(yt.data.value/gt*100).toFixed(0)+"%").attr("transform",yt=>"translate("+mt.centroid(yt)+")").style("text-anchor","middle").attr("class","slice"),B.append("text").text(w.getDiagramTitle()).attr("x",0).attr("y",-(M-50)/2).attr("class","pieTitleText");const Q=B.selectAll(".legend").data(it.domain()).enter().append("g").attr("class","legend").attr("transform",(yt,V)=>{const Ot=S+_,It=Ot*it.domain().length/2,jt=12*S,xt=V*Ot-It;return"translate("+jt+","+xt+")"});Q.append("rect").attr("width",S).attr("height",S).style("fill",it).style("stroke",it),Q.data(ct).append("text").attr("x",S+_).attr("y",S-_).text(yt=>{const{label:V,value:Ot}=yt.data;return w.getShowData()?`${V} [${Ot}]`:V});const dt=Math.max(...Q.selectAll("text").nodes().map(yt=>(yt==null?void 0:yt.getBoundingClientRect().width)??0)),K=F+E+S+_+dt;R.attr("viewBox",`0 0 ${K} ${M}`),sg(R,M,K,b.useMaxWidth)}},styles:hXe}},Symbol.toStringTag,{value:"Module"}));var Cbt=function(){var i=function(Ae,ye,tn,sn){for(tn=tn||{},sn=Ae.length;sn--;tn[Ae[sn]]=ye);return tn},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[1,7],b=[1,5,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],E=[1,5,6,13,15,17,19,20,25,27,28,29,30,31,32,33,34,37,38,40,41,42,43,44,45,46,47,48,49,50],S=[32,33,34],_=[2,7],M=[1,13],F=[1,17],R=[1,18],B=[1,19],z=[1,20],Y=[1,21],nt=[1,22],ot=[1,23],ft=[1,24],wt=[1,25],mt=[1,26],ct=[1,27],rt=[1,30],it=[1,31],gt=[1,32],Q=[1,33],dt=[1,34],K=[1,35],yt=[1,36],V=[1,37],Ot=[1,38],It=[1,39],jt=[1,40],xt=[1,41],Ft=[1,42],Ct=[1,57],kt=[1,58],Gt=[5,22,26,32,33,34,40,41,42,43,44,45,46,47,48,49,50,51],Fe={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,SPACE:5,QUADRANT:6,document:7,line:8,statement:9,axisDetails:10,quadrantDetails:11,points:12,title:13,title_value:14,acc_title:15,acc_title_value:16,acc_descr:17,acc_descr_value:18,acc_descr_multiline_value:19,section:20,text:21,point_start:22,point_x:23,point_y:24,"X-AXIS":25,"AXIS-TEXT-DELIMITER":26,"Y-AXIS":27,QUADRANT_1:28,QUADRANT_2:29,QUADRANT_3:30,QUADRANT_4:31,NEWLINE:32,SEMI:33,EOF:34,alphaNumToken:35,textNoTagsToken:36,STR:37,MD_STR:38,alphaNum:39,PUNCTUATION:40,AMP:41,NUM:42,ALPHA:43,COMMA:44,PLUS:45,EQUALS:46,MULT:47,DOT:48,BRKT:49,UNDERSCORE:50,MINUS:51,$accept:0,$end:1},terminals_:{2:"error",5:"SPACE",6:"QUADRANT",13:"title",14:"title_value",15:"acc_title",16:"acc_title_value",17:"acc_descr",18:"acc_descr_value",19:"acc_descr_multiline_value",20:"section",22:"point_start",23:"point_x",24:"point_y",25:"X-AXIS",26:"AXIS-TEXT-DELIMITER",27:"Y-AXIS",28:"QUADRANT_1",29:"QUADRANT_2",30:"QUADRANT_3",31:"QUADRANT_4",32:"NEWLINE",33:"SEMI",34:"EOF",37:"STR",38:"MD_STR",40:"PUNCTUATION",41:"AMP",42:"NUM",43:"ALPHA",44:"COMMA",45:"PLUS",46:"EQUALS",47:"MULT",48:"DOT",49:"BRKT",50:"UNDERSCORE",51:"MINUS"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[9,0],[9,2],[9,1],[9,1],[9,1],[9,2],[9,2],[9,2],[9,1],[9,1],[12,4],[10,4],[10,3],[10,2],[10,4],[10,3],[10,2],[11,2],[11,2],[11,2],[11,2],[4,1],[4,1],[4,1],[21,1],[21,2],[21,1],[21,1],[39,1],[39,2],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[36,1],[36,1],[36,1]],performAction:function(ye,tn,sn,be,Ne,Xt,_e){var xe=Xt.length-1;switch(Ne){case 12:this.$=Xt[xe].trim(),be.setDiagramTitle(this.$);break;case 13:this.$=Xt[xe].trim(),be.setAccTitle(this.$);break;case 14:case 15:this.$=Xt[xe].trim(),be.setAccDescription(this.$);break;case 16:be.addSection(Xt[xe].substr(8)),this.$=Xt[xe].substr(8);break;case 17:be.addPoint(Xt[xe-3],Xt[xe-1],Xt[xe]);break;case 18:be.setXAxisLeftText(Xt[xe-2]),be.setXAxisRightText(Xt[xe]);break;case 19:Xt[xe-1].text+=" ⟶ ",be.setXAxisLeftText(Xt[xe-1]);break;case 20:be.setXAxisLeftText(Xt[xe]);break;case 21:be.setYAxisBottomText(Xt[xe-2]),be.setYAxisTopText(Xt[xe]);break;case 22:Xt[xe-1].text+=" ⟶ ",be.setYAxisBottomText(Xt[xe-1]);break;case 23:be.setYAxisBottomText(Xt[xe]);break;case 24:be.setQuadrant1Text(Xt[xe]);break;case 25:be.setQuadrant2Text(Xt[xe]);break;case 26:be.setQuadrant3Text(Xt[xe]);break;case 27:be.setQuadrant4Text(Xt[xe]);break;case 31:this.$={text:Xt[xe],type:"text"};break;case 32:this.$={text:Xt[xe-1].text+""+Xt[xe],type:Xt[xe-1].type};break;case 33:this.$={text:Xt[xe],type:"text"};break;case 34:this.$={text:Xt[xe],type:"markdown"};break;case 35:this.$=Xt[xe];break;case 36:this.$=Xt[xe-1]+""+Xt[xe];break}},table:[{3:1,4:2,5:a,6:f,32:g,33:w,34:v},{1:[3]},{3:8,4:2,5:a,6:f,32:g,33:w,34:v},{3:9,4:2,5:a,6:f,32:g,33:w,34:v},i(b,[2,4],{7:10}),i(E,[2,28]),i(E,[2,29]),i(E,[2,30]),{1:[2,1]},{1:[2,2]},i(S,_,{8:11,9:12,10:14,11:15,12:16,21:28,35:29,1:[2,3],5:M,13:F,15:R,17:B,19:z,20:Y,25:nt,27:ot,28:ft,29:wt,30:mt,31:ct,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),i(b,[2,5]),{4:43,32:g,33:w,34:v},i(S,_,{10:14,11:15,12:16,21:28,35:29,9:44,5:M,13:F,15:R,17:B,19:z,20:Y,25:nt,27:ot,28:ft,29:wt,30:mt,31:ct,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),i(S,[2,9]),i(S,[2,10]),i(S,[2,11]),{14:[1,45]},{16:[1,46]},{18:[1,47]},i(S,[2,15]),i(S,[2,16]),{21:48,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:49,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:50,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:51,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:52,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{21:53,35:29,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft},{5:Ct,22:[1,54],35:56,36:55,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt},i(Gt,[2,31]),i(Gt,[2,33]),i(Gt,[2,34]),i(Gt,[2,37]),i(Gt,[2,38]),i(Gt,[2,39]),i(Gt,[2,40]),i(Gt,[2,41]),i(Gt,[2,42]),i(Gt,[2,43]),i(Gt,[2,44]),i(Gt,[2,45]),i(Gt,[2,46]),i(Gt,[2,47]),i(b,[2,6]),i(S,[2,8]),i(S,[2,12]),i(S,[2,13]),i(S,[2,14]),i(S,[2,20],{36:55,35:56,5:Ct,26:[1,59],40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,23],{36:55,35:56,5:Ct,26:[1,60],40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,24],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,25],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,26],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,27],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),{23:[1,61]},i(Gt,[2,32]),i(Gt,[2,48]),i(Gt,[2,49]),i(Gt,[2,50]),i(S,[2,19],{35:29,21:62,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),i(S,[2,22],{35:29,21:63,37:rt,38:it,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft}),{24:[1,64]},i(S,[2,18],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,21],{36:55,35:56,5:Ct,40:gt,41:Q,42:dt,43:K,44:yt,45:V,46:Ot,47:It,48:jt,49:xt,50:Ft,51:kt}),i(S,[2,17])],defaultActions:{8:[2,1],9:[2,2]},parseError:function(ye,tn){if(tn.recoverable)this.trace(ye);else{var sn=new Error(ye);throw sn.hash=tn,sn}},parse:function(ye){var tn=this,sn=[0],be=[],Ne=[null],Xt=[],_e=this.table,xe="",Mn=0,ce=0,Br=2,we=1,Fi=Xt.slice.call(arguments,1),mi=Object.create(this.lexer),ga={yy:{}};for(var Ss in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ss)&&(ga.yy[Ss]=this.yy[Ss]);mi.setInput(ye,ga.yy),ga.yy.lexer=mi,ga.yy.parser=this,typeof mi.yylloc>"u"&&(mi.yylloc={});var za=mi.yylloc;Xt.push(za);var br=mi.options&&mi.options.ranges;typeof ga.yy.parseError=="function"?this.parseError=ga.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function An(){var va;return va=be.pop()||mi.lex()||we,typeof va!="number"&&(va instanceof Array&&(be=va,va=be.pop()),va=tn.symbols_[va]||va),va}for(var Nn,Bn,ke,pe,Je={},an,xn,qa,xo;;){if(Bn=sn[sn.length-1],this.defaultActions[Bn]?ke=this.defaultActions[Bn]:((Nn===null||typeof Nn>"u")&&(Nn=An()),ke=_e[Bn]&&_e[Bn][Nn]),typeof ke>"u"||!ke.length||!ke[0]){var ko="";xo=[];for(an in _e[Bn])this.terminals_[an]&&an>Br&&xo.push("'"+this.terminals_[an]+"'");mi.showPosition?ko="Parse error on line "+(Mn+1)+`: +`+mi.showPosition()+` +Expecting `+xo.join(", ")+", got '"+(this.terminals_[Nn]||Nn)+"'":ko="Parse error on line "+(Mn+1)+": Unexpected "+(Nn==we?"end of input":"'"+(this.terminals_[Nn]||Nn)+"'"),this.parseError(ko,{text:mi.match,token:this.terminals_[Nn]||Nn,line:mi.yylineno,loc:za,expected:xo})}if(ke[0]instanceof Array&&ke.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bn+", token: "+Nn);switch(ke[0]){case 1:sn.push(Nn),Ne.push(mi.yytext),Xt.push(mi.yylloc),sn.push(ke[1]),Nn=null,ce=mi.yyleng,xe=mi.yytext,Mn=mi.yylineno,za=mi.yylloc;break;case 2:if(xn=this.productions_[ke[1]][1],Je.$=Ne[Ne.length-xn],Je._$={first_line:Xt[Xt.length-(xn||1)].first_line,last_line:Xt[Xt.length-1].last_line,first_column:Xt[Xt.length-(xn||1)].first_column,last_column:Xt[Xt.length-1].last_column},br&&(Je._$.range=[Xt[Xt.length-(xn||1)].range[0],Xt[Xt.length-1].range[1]]),pe=this.performAction.apply(Je,[xe,ce,Mn,ga.yy,ke[1],Ne,Xt].concat(Fi)),typeof pe<"u")return pe;xn&&(sn=sn.slice(0,-1*xn*2),Ne=Ne.slice(0,-1*xn),Xt=Xt.slice(0,-1*xn)),sn.push(this.productions_[ke[1]][0]),Ne.push(Je.$),Xt.push(Je._$),qa=_e[sn[sn.length-2]][sn[sn.length-1]],sn.push(qa);break;case 3:return!0}}return!0}},Mt=function(){var Ae={EOF:1,parseError:function(tn,sn){if(this.yy.parser)this.yy.parser.parseError(tn,sn);else throw new Error(tn)},setInput:function(ye,tn){return this.yy=tn||this.yy||{},this._input=ye,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ye=this._input[0];this.yytext+=ye,this.yyleng++,this.offset++,this.match+=ye,this.matched+=ye;var tn=ye.match(/(?:\r\n?|\n).*/g);return tn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ye},unput:function(ye){var tn=ye.length,sn=ye.split(/(?:\r\n?|\n)/g);this._input=ye+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-tn),this.offset-=tn;var be=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),sn.length-1&&(this.yylineno-=sn.length-1);var Ne=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:sn?(sn.length===be.length?this.yylloc.first_column:0)+be[be.length-sn.length].length-sn[0].length:this.yylloc.first_column-tn},this.options.ranges&&(this.yylloc.range=[Ne[0],Ne[0]+this.yyleng-tn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ye){this.unput(this.match.slice(ye))},pastInput:function(){var ye=this.matched.substr(0,this.matched.length-this.match.length);return(ye.length>20?"...":"")+ye.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ye=this.match;return ye.length<20&&(ye+=this._input.substr(0,20-ye.length)),(ye.substr(0,20)+(ye.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ye=this.pastInput(),tn=new Array(ye.length+1).join("-");return ye+this.upcomingInput()+` +`+tn+"^"},test_match:function(ye,tn){var sn,be,Ne;if(this.options.backtrack_lexer&&(Ne={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ne.yylloc.range=this.yylloc.range.slice(0))),be=ye[0].match(/(?:\r\n?|\n).*/g),be&&(this.yylineno+=be.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:be?be[be.length-1].length-be[be.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ye[0].length},this.yytext+=ye[0],this.match+=ye[0],this.matches=ye,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ye[0].length),this.matched+=ye[0],sn=this.performAction.call(this,this.yy,this,tn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),sn)return sn;if(this._backtrack){for(var Xt in Ne)this[Xt]=Ne[Xt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ye,tn,sn,be;this._more||(this.yytext="",this.match="");for(var Ne=this._currentRules(),Xt=0;Xttn[0].length)){if(tn=sn,be=Xt,this.options.backtrack_lexer){if(ye=this.test_match(sn,Ne[Xt]),ye!==!1)return ye;if(this._backtrack){tn=!1;continue}else return!1}else if(!this.options.flex)break}return tn?(ye=this.test_match(tn,Ne[be]),ye!==!1?ye:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var tn=this.next();return tn||this.lex()},begin:function(tn){this.conditionStack.push(tn)},popState:function(){var tn=this.conditionStack.length-1;return tn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(tn){return tn=this.conditionStack.length-1-Math.abs(tn||0),tn>=0?this.conditionStack[tn]:"INITIAL"},pushState:function(tn){this.begin(tn)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(tn,sn,be,Ne){switch(be){case 0:break;case 1:break;case 2:return 32;case 3:break;case 4:return this.begin("title"),13;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),15;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),17;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 25;case 14:return 27;case 15:return 26;case 16:return 28;case 17:return 29;case 18:return 30;case 19:return 31;case 20:this.begin("md_string");break;case 21:return"MD_STR";case 22:this.popState();break;case 23:this.begin("string");break;case 24:this.popState();break;case 25:return"STR";case 26:return this.begin("point_start"),22;case 27:return this.begin("point_x"),23;case 28:this.popState();break;case 29:this.popState(),this.begin("point_y");break;case 30:return this.popState(),24;case 31:return 6;case 32:return 43;case 33:return"COLON";case 34:return 45;case 35:return 44;case 36:return 46;case 37:return 46;case 38:return 47;case 39:return 49;case 40:return 50;case 41:return 48;case 42:return 41;case 43:return 51;case 44:return 42;case 45:return 5;case 46:return 33;case 47:return 40;case 48:return 34}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{point_y:{rules:[30],inclusive:!1},point_x:{rules:[29],inclusive:!1},point_start:{rules:[27,28],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[21,22],inclusive:!1},string:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,23,26,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],inclusive:!0}}};return Ae}();Fe.lexer=Mt;function pn(){this.yy={}}return pn.prototype=Fe,Fe.Parser=pn,new pn}();Cbt.parser=Cbt;const gXe=Cbt,rp=dgt();class pXe{constructor(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var a,f,g,w,v,b,E,S,_,M,F,R,B,z,Y,nt,ot,ft;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:((a=Bl.quadrantChart)==null?void 0:a.chartWidth)||500,chartWidth:((f=Bl.quadrantChart)==null?void 0:f.chartHeight)||500,titlePadding:((g=Bl.quadrantChart)==null?void 0:g.titlePadding)||10,titleFontSize:((w=Bl.quadrantChart)==null?void 0:w.titleFontSize)||20,quadrantPadding:((v=Bl.quadrantChart)==null?void 0:v.quadrantPadding)||5,xAxisLabelPadding:((b=Bl.quadrantChart)==null?void 0:b.xAxisLabelPadding)||5,yAxisLabelPadding:((E=Bl.quadrantChart)==null?void 0:E.yAxisLabelPadding)||5,xAxisLabelFontSize:((S=Bl.quadrantChart)==null?void 0:S.xAxisLabelFontSize)||16,yAxisLabelFontSize:((_=Bl.quadrantChart)==null?void 0:_.yAxisLabelFontSize)||16,quadrantLabelFontSize:((M=Bl.quadrantChart)==null?void 0:M.quadrantLabelFontSize)||16,quadrantTextTopPadding:((F=Bl.quadrantChart)==null?void 0:F.quadrantTextTopPadding)||5,pointTextPadding:((R=Bl.quadrantChart)==null?void 0:R.pointTextPadding)||5,pointLabelFontSize:((B=Bl.quadrantChart)==null?void 0:B.pointLabelFontSize)||12,pointRadius:((z=Bl.quadrantChart)==null?void 0:z.pointRadius)||5,xAxisPosition:((Y=Bl.quadrantChart)==null?void 0:Y.xAxisPosition)||"top",yAxisPosition:((nt=Bl.quadrantChart)==null?void 0:nt.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:((ot=Bl.quadrantChart)==null?void 0:ot.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:((ft=Bl.quadrantChart)==null?void 0:ft.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:rp.quadrant1Fill,quadrant2Fill:rp.quadrant2Fill,quadrant3Fill:rp.quadrant3Fill,quadrant4Fill:rp.quadrant4Fill,quadrant1TextFill:rp.quadrant1TextFill,quadrant2TextFill:rp.quadrant2TextFill,quadrant3TextFill:rp.quadrant3TextFill,quadrant4TextFill:rp.quadrant4TextFill,quadrantPointFill:rp.quadrantPointFill,quadrantPointTextFill:rp.quadrantPointTextFill,quadrantXAxisTextFill:rp.quadrantXAxisTextFill,quadrantYAxisTextFill:rp.quadrantYAxisTextFill,quadrantTitleFill:rp.quadrantTitleFill,quadrantInternalBorderStrokeFill:rp.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:rp.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),Kt.info("clear called")}setData(a){this.data={...this.data,...a}}addPoints(a){this.data.points=[...a,...this.data.points]}setConfig(a){Kt.trace("setConfig called with: ",a),this.config={...this.config,...a}}setThemeConfig(a){Kt.trace("setThemeConfig called with: ",a),this.themeConfig={...this.themeConfig,...a}}calculateSpace(a,f,g,w){const v=this.config.xAxisLabelPadding*2+this.config.xAxisLabelFontSize,b={top:a==="top"&&f?v:0,bottom:a==="bottom"&&f?v:0},E=this.config.yAxisLabelPadding*2+this.config.yAxisLabelFontSize,S={left:this.config.yAxisPosition==="left"&&g?E:0,right:this.config.yAxisPosition==="right"&&g?E:0},_=this.config.titleFontSize+this.config.titlePadding*2,M={top:w?_:0},F=this.config.quadrantPadding+S.left,R=this.config.quadrantPadding+b.top+M.top,B=this.config.chartWidth-this.config.quadrantPadding*2-S.left-S.right,z=this.config.chartHeight-this.config.quadrantPadding*2-b.top-b.bottom-M.top,Y=B/2,nt=z/2;return{xAxisSpace:b,yAxisSpace:S,titleSpace:M,quadrantSpace:{quadrantLeft:F,quadrantTop:R,quadrantWidth:B,quadrantHalfWidth:Y,quadrantHeight:z,quadrantHalfHeight:nt}}}getAxisLabels(a,f,g,w){const{quadrantSpace:v,titleSpace:b}=w,{quadrantHalfHeight:E,quadrantHeight:S,quadrantLeft:_,quadrantHalfWidth:M,quadrantTop:F,quadrantWidth:R}=v,B=!!this.data.xAxisRightText,z=!!this.data.yAxisTopText,Y=[];return this.data.xAxisLeftText&&f&&Y.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:_+(B?M/2:0),y:a==="top"?this.config.xAxisLabelPadding+b.top:this.config.xAxisLabelPadding+F+S+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:B?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&f&&Y.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:_+M+(B?M/2:0),y:a==="top"?this.config.xAxisLabelPadding+b.top:this.config.xAxisLabelPadding+F+S+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:B?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&g&&Y.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+_+R+this.config.quadrantPadding,y:F+S-(z?E/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:z?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&g&&Y.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:this.config.yAxisPosition==="left"?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+_+R+this.config.quadrantPadding,y:F+E-(z?E/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:z?"center":"left",horizontalPos:"top",rotation:-90}),Y}getQuadrants(a){const{quadrantSpace:f}=a,{quadrantHalfHeight:g,quadrantLeft:w,quadrantHalfWidth:v,quadrantTop:b}=f,E=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w+v,y:b,width:v,height:g,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w,y:b,width:v,height:g,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w,y:b+g,width:v,height:g,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:w+v,y:b+g,width:v,height:g,fill:this.themeConfig.quadrant4Fill}];for(const S of E)S.text.x=S.x+S.width/2,this.data.points.length===0?(S.text.y=S.y+S.height/2,S.text.horizontalPos="middle"):(S.text.y=S.y+this.config.quadrantTextTopPadding,S.text.horizontalPos="top");return E}getQuadrantPoints(a){const{quadrantSpace:f}=a,{quadrantHeight:g,quadrantLeft:w,quadrantTop:v,quadrantWidth:b}=f,E=VL().domain([0,1]).range([w,b+w]),S=VL().domain([0,1]).range([g+v,v]);return this.data.points.map(M=>({x:E(M.x),y:S(M.y),fill:this.themeConfig.quadrantPointFill,radius:this.config.pointRadius,text:{text:M.text,fill:this.themeConfig.quadrantPointTextFill,x:E(M.x),y:S(M.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0}}))}getBorders(a){const f=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:g}=a,{quadrantHalfHeight:w,quadrantHeight:v,quadrantLeft:b,quadrantHalfWidth:E,quadrantTop:S,quadrantWidth:_}=g;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b-f,y1:S,x2:b+_+f,y2:S},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b+_,y1:S+f,x2:b+_,y2:S+v-f},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b-f,y1:S+v,x2:b+_+f,y2:S+v},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:b,y1:S+f,x2:b,y2:S+v-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:b+E,y1:S+f,x2:b+E,y2:S+v-f},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:b+f,y1:S+w,x2:b+_-f,y2:S+w}]}getTitle(a){if(a)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const a=this.config.showXAxis&&!!(this.data.xAxisLeftText||this.data.xAxisRightText),f=this.config.showYAxis&&!!(this.data.yAxisTopText||this.data.yAxisBottomText),g=this.config.showTitle&&!!this.data.titleText,w=this.data.points.length>0?"bottom":this.config.xAxisPosition,v=this.calculateSpace(w,a,f,g);return{points:this.getQuadrantPoints(v),quadrants:this.getQuadrants(v),axisLabels:this.getAxisLabels(w,a,f,v),borderLines:this.getBorders(v),title:this.getTitle(g)}}}const bXe=Re();function qx(i){return Ef(i.trim(),bXe)}const ug=new pXe;function wXe(i){ug.setData({quadrant1Text:qx(i.text)})}function mXe(i){ug.setData({quadrant2Text:qx(i.text)})}function vXe(i){ug.setData({quadrant3Text:qx(i.text)})}function yXe(i){ug.setData({quadrant4Text:qx(i.text)})}function xXe(i){ug.setData({xAxisLeftText:qx(i.text)})}function kXe(i){ug.setData({xAxisRightText:qx(i.text)})}function EXe(i){ug.setData({yAxisTopText:qx(i.text)})}function TXe(i){ug.setData({yAxisBottomText:qx(i.text)})}function CXe(i,a,f){ug.addPoints([{x:a,y:f,text:qx(i.text)}])}function SXe(i){ug.setConfig({chartWidth:i})}function _Xe(i){ug.setConfig({chartHeight:i})}function AXe(){const i=Re(),{themeVariables:a,quadrantChart:f}=i;return f&&ug.setConfig(f),ug.setThemeConfig({quadrant1Fill:a.quadrant1Fill,quadrant2Fill:a.quadrant2Fill,quadrant3Fill:a.quadrant3Fill,quadrant4Fill:a.quadrant4Fill,quadrant1TextFill:a.quadrant1TextFill,quadrant2TextFill:a.quadrant2TextFill,quadrant3TextFill:a.quadrant3TextFill,quadrant4TextFill:a.quadrant4TextFill,quadrantPointFill:a.quadrantPointFill,quadrantPointTextFill:a.quadrantPointTextFill,quadrantXAxisTextFill:a.quadrantXAxisTextFill,quadrantYAxisTextFill:a.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:a.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:a.quadrantInternalBorderStrokeFill,quadrantTitleFill:a.quadrantTitleFill}),ug.setData({titleText:Zg()}),ug.build()}const LXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:gXe,db:{setWidth:SXe,setHeight:_Xe,setQuadrant1Text:wXe,setQuadrant2Text:mXe,setQuadrant3Text:vXe,setQuadrant4Text:yXe,setXAxisLeftText:xXe,setXAxisRightText:kXe,setYAxisTopText:EXe,setYAxisBottomText:TXe,addPoint:CXe,getQuadrantData:AXe,clear:function(){ug.clear(),ag()},setAccTitle:og,getAccTitle:Xg,setDiagramTitle:S2,getDiagramTitle:Zg,getAccDescription:Jg,setAccDescription:Qg},renderer:{draw:(i,a,f,g)=>{var gt,Q,dt;function w(K){return K==="top"?"hanging":"middle"}function v(K){return K==="left"?"start":"middle"}function b(K){return`translate(${K.x}, ${K.y}) rotate(${K.rotation||0})`}const E=Re();Kt.debug(`Rendering quadrant chart +`+i);const S=E.securityLevel;let _;S==="sandbox"&&(_=Tr("#i"+a));const F=Tr(S==="sandbox"?_.nodes()[0].contentDocument.body:"body").select(`[id="${a}"]`),R=F.append("g").attr("class","main"),B=((gt=E.quadrantChart)==null?void 0:gt.chartWidth)||500,z=((Q=E.quadrantChart)==null?void 0:Q.chartHeight)||500;sg(F,z,B,((dt=E.quadrantChart)==null?void 0:dt.useMaxWidth)||!0),F.attr("viewBox","0 0 "+B+" "+z),g.db.setHeight(z),g.db.setWidth(B);const Y=g.db.getQuadrantData(),nt=R.append("g").attr("class","quadrants"),ot=R.append("g").attr("class","border"),ft=R.append("g").attr("class","data-points"),wt=R.append("g").attr("class","labels"),mt=R.append("g").attr("class","title");Y.title&&mt.append("text").attr("x",0).attr("y",0).attr("fill",Y.title.fill).attr("font-size",Y.title.fontSize).attr("dominant-baseline",w(Y.title.horizontalPos)).attr("text-anchor",v(Y.title.verticalPos)).attr("transform",b(Y.title)).text(Y.title.text),Y.borderLines&&ot.selectAll("line").data(Y.borderLines).enter().append("line").attr("x1",K=>K.x1).attr("y1",K=>K.y1).attr("x2",K=>K.x2).attr("y2",K=>K.y2).style("stroke",K=>K.strokeFill).style("stroke-width",K=>K.strokeWidth);const ct=nt.selectAll("g.quadrant").data(Y.quadrants).enter().append("g").attr("class","quadrant");ct.append("rect").attr("x",K=>K.x).attr("y",K=>K.y).attr("width",K=>K.width).attr("height",K=>K.height).attr("fill",K=>K.fill),ct.append("text").attr("x",0).attr("y",0).attr("fill",K=>K.text.fill).attr("font-size",K=>K.text.fontSize).attr("dominant-baseline",K=>w(K.text.horizontalPos)).attr("text-anchor",K=>v(K.text.verticalPos)).attr("transform",K=>b(K.text)).text(K=>K.text.text),wt.selectAll("g.label").data(Y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(K=>K.text).attr("fill",K=>K.fill).attr("font-size",K=>K.fontSize).attr("dominant-baseline",K=>w(K.horizontalPos)).attr("text-anchor",K=>v(K.verticalPos)).attr("transform",K=>b(K));const it=ft.selectAll("g.data-point").data(Y.points).enter().append("g").attr("class","data-point");it.append("circle").attr("cx",K=>K.x).attr("cy",K=>K.y).attr("r",K=>K.radius).attr("fill",K=>K.fill),it.append("text").attr("x",0).attr("y",0).text(K=>K.text.text).attr("fill",K=>K.text.fill).attr("font-size",K=>K.text.fontSize).attr("dominant-baseline",K=>w(K.text.horizontalPos)).attr("text-anchor",K=>v(K.text.verticalPos)).attr("transform",K=>b(K.text))}},styles:()=>""}},Symbol.toStringTag,{value:"Module"}));var Sbt=function(){var i=function(It,jt,xt,Ft){for(xt=xt||{},Ft=It.length;Ft--;xt[It[Ft]]=jt);return xt},a=[1,10,12,14,16,18,19,21,23],f=[2,6],g=[1,3],w=[1,5],v=[1,6],b=[1,7],E=[1,5,10,12,14,16,18,19,21,23,34,35,36],S=[1,25],_=[1,26],M=[1,28],F=[1,29],R=[1,30],B=[1,31],z=[1,32],Y=[1,33],nt=[1,34],ot=[1,35],ft=[1,36],wt=[1,37],mt=[1,43],ct=[1,42],rt=[1,47],it=[1,50],gt=[1,10,12,14,16,18,19,21,23,34,35,36],Q=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],dt=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],K=[1,64],yt={trace:function(){},yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:function(jt,xt,Ft,Ct,kt,Gt,Fe){var Mt=Gt.length-1;switch(kt){case 5:Ct.setOrientation(Gt[Mt]);break;case 9:Ct.setDiagramTitle(Gt[Mt].text.trim());break;case 12:Ct.setLineData({text:"",type:"text"},Gt[Mt]);break;case 13:Ct.setLineData(Gt[Mt-1],Gt[Mt]);break;case 14:Ct.setBarData({text:"",type:"text"},Gt[Mt]);break;case 15:Ct.setBarData(Gt[Mt-1],Gt[Mt]);break;case 16:this.$=Gt[Mt].trim(),Ct.setAccTitle(this.$);break;case 17:case 18:this.$=Gt[Mt].trim(),Ct.setAccDescription(this.$);break;case 19:this.$=Gt[Mt-1];break;case 20:this.$=[Number(Gt[Mt-2]),...Gt[Mt]];break;case 21:this.$=[Number(Gt[Mt])];break;case 22:Ct.setXAxisTitle(Gt[Mt]);break;case 23:Ct.setXAxisTitle(Gt[Mt-1]);break;case 24:Ct.setXAxisTitle({type:"text",text:""});break;case 25:Ct.setXAxisBand(Gt[Mt]);break;case 26:Ct.setXAxisRangeData(Number(Gt[Mt-2]),Number(Gt[Mt]));break;case 27:this.$=Gt[Mt-1];break;case 28:this.$=[Gt[Mt-2],...Gt[Mt]];break;case 29:this.$=[Gt[Mt]];break;case 30:Ct.setYAxisTitle(Gt[Mt]);break;case 31:Ct.setYAxisTitle(Gt[Mt-1]);break;case 32:Ct.setYAxisTitle({type:"text",text:""});break;case 33:Ct.setYAxisRangeData(Number(Gt[Mt-2]),Number(Gt[Mt]));break;case 37:this.$={text:Gt[Mt],type:"text"};break;case 38:this.$={text:Gt[Mt],type:"text"};break;case 39:this.$={text:Gt[Mt],type:"markdown"};break;case 40:this.$=Gt[Mt];break;case 41:this.$=Gt[Mt-1]+""+Gt[Mt];break}},table:[i(a,f,{3:1,4:2,7:4,5:g,34:w,35:v,36:b}),{1:[3]},i(a,f,{4:2,7:4,3:8,5:g,34:w,35:v,36:b}),i(a,f,{4:2,7:4,6:9,3:10,5:g,8:[1,11],34:w,35:v,36:b}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},i(E,[2,34]),i(E,[2,35]),i(E,[2,36]),{1:[2,1]},i(a,f,{4:2,7:4,3:21,5:g,34:w,35:v,36:b}),{1:[2,3]},i(E,[2,5]),i(a,[2,7],{4:22,34:w,35:v,36:b}),{11:23,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:39,13:38,24:mt,27:ct,29:40,30:41,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:45,15:44,27:rt,33:46,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:49,17:48,24:it,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{11:52,17:51,24:it,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},{20:[1,53]},{22:[1,54]},i(gt,[2,18]),{1:[2,2]},i(gt,[2,8]),i(gt,[2,9]),i(Q,[2,37],{40:55,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt}),i(Q,[2,38]),i(Q,[2,39]),i(dt,[2,40]),i(dt,[2,42]),i(dt,[2,43]),i(dt,[2,44]),i(dt,[2,45]),i(dt,[2,46]),i(dt,[2,47]),i(dt,[2,48]),i(dt,[2,49]),i(dt,[2,50]),i(dt,[2,51]),i(gt,[2,10]),i(gt,[2,22],{30:41,29:56,24:mt,27:ct}),i(gt,[2,24]),i(gt,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},i(gt,[2,11]),i(gt,[2,30],{33:60,27:rt}),i(gt,[2,32]),{31:[1,61]},i(gt,[2,12]),{17:62,24:it},{25:63,27:K},i(gt,[2,14]),{17:65,24:it},i(gt,[2,16]),i(gt,[2,17]),i(dt,[2,41]),i(gt,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},i(gt,[2,31]),{27:[1,69]},i(gt,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},i(gt,[2,15]),i(gt,[2,26]),i(gt,[2,27]),{11:59,32:72,37:24,38:S,39:_,40:27,41:M,42:F,43:R,44:B,45:z,46:Y,47:nt,48:ot,49:ft,50:wt},i(gt,[2,33]),i(gt,[2,19]),{25:73,27:K},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:function(jt,xt){if(xt.recoverable)this.trace(jt);else{var Ft=new Error(jt);throw Ft.hash=xt,Ft}},parse:function(jt){var xt=this,Ft=[0],Ct=[],kt=[null],Gt=[],Fe=this.table,Mt="",pn=0,Ae=0,ye=2,tn=1,sn=Gt.slice.call(arguments,1),be=Object.create(this.lexer),Ne={yy:{}};for(var Xt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Xt)&&(Ne.yy[Xt]=this.yy[Xt]);be.setInput(jt,Ne.yy),Ne.yy.lexer=be,Ne.yy.parser=this,typeof be.yylloc>"u"&&(be.yylloc={});var _e=be.yylloc;Gt.push(_e);var xe=be.options&&be.options.ranges;typeof Ne.yy.parseError=="function"?this.parseError=Ne.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Mn(){var Nn;return Nn=Ct.pop()||be.lex()||tn,typeof Nn!="number"&&(Nn instanceof Array&&(Ct=Nn,Nn=Ct.pop()),Nn=xt.symbols_[Nn]||Nn),Nn}for(var ce,Br,we,Fi,mi={},ga,Ss,za,br;;){if(Br=Ft[Ft.length-1],this.defaultActions[Br]?we=this.defaultActions[Br]:((ce===null||typeof ce>"u")&&(ce=Mn()),we=Fe[Br]&&Fe[Br][ce]),typeof we>"u"||!we.length||!we[0]){var An="";br=[];for(ga in Fe[Br])this.terminals_[ga]&&ga>ye&&br.push("'"+this.terminals_[ga]+"'");be.showPosition?An="Parse error on line "+(pn+1)+`: +`+be.showPosition()+` +Expecting `+br.join(", ")+", got '"+(this.terminals_[ce]||ce)+"'":An="Parse error on line "+(pn+1)+": Unexpected "+(ce==tn?"end of input":"'"+(this.terminals_[ce]||ce)+"'"),this.parseError(An,{text:be.match,token:this.terminals_[ce]||ce,line:be.yylineno,loc:_e,expected:br})}if(we[0]instanceof Array&&we.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Br+", token: "+ce);switch(we[0]){case 1:Ft.push(ce),kt.push(be.yytext),Gt.push(be.yylloc),Ft.push(we[1]),ce=null,Ae=be.yyleng,Mt=be.yytext,pn=be.yylineno,_e=be.yylloc;break;case 2:if(Ss=this.productions_[we[1]][1],mi.$=kt[kt.length-Ss],mi._$={first_line:Gt[Gt.length-(Ss||1)].first_line,last_line:Gt[Gt.length-1].last_line,first_column:Gt[Gt.length-(Ss||1)].first_column,last_column:Gt[Gt.length-1].last_column},xe&&(mi._$.range=[Gt[Gt.length-(Ss||1)].range[0],Gt[Gt.length-1].range[1]]),Fi=this.performAction.apply(mi,[Mt,Ae,pn,Ne.yy,we[1],kt,Gt].concat(sn)),typeof Fi<"u")return Fi;Ss&&(Ft=Ft.slice(0,-1*Ss*2),kt=kt.slice(0,-1*Ss),Gt=Gt.slice(0,-1*Ss)),Ft.push(this.productions_[we[1]][0]),kt.push(mi.$),Gt.push(mi._$),za=Fe[Ft[Ft.length-2]][Ft[Ft.length-1]],Ft.push(za);break;case 3:return!0}}return!0}},V=function(){var It={EOF:1,parseError:function(xt,Ft){if(this.yy.parser)this.yy.parser.parseError(xt,Ft);else throw new Error(xt)},setInput:function(jt,xt){return this.yy=xt||this.yy||{},this._input=jt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var jt=this._input[0];this.yytext+=jt,this.yyleng++,this.offset++,this.match+=jt,this.matched+=jt;var xt=jt.match(/(?:\r\n?|\n).*/g);return xt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),jt},unput:function(jt){var xt=jt.length,Ft=jt.split(/(?:\r\n?|\n)/g);this._input=jt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-xt),this.offset-=xt;var Ct=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Ft.length-1&&(this.yylineno-=Ft.length-1);var kt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Ft?(Ft.length===Ct.length?this.yylloc.first_column:0)+Ct[Ct.length-Ft.length].length-Ft[0].length:this.yylloc.first_column-xt},this.options.ranges&&(this.yylloc.range=[kt[0],kt[0]+this.yyleng-xt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(jt){this.unput(this.match.slice(jt))},pastInput:function(){var jt=this.matched.substr(0,this.matched.length-this.match.length);return(jt.length>20?"...":"")+jt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var jt=this.match;return jt.length<20&&(jt+=this._input.substr(0,20-jt.length)),(jt.substr(0,20)+(jt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var jt=this.pastInput(),xt=new Array(jt.length+1).join("-");return jt+this.upcomingInput()+` +`+xt+"^"},test_match:function(jt,xt){var Ft,Ct,kt;if(this.options.backtrack_lexer&&(kt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(kt.yylloc.range=this.yylloc.range.slice(0))),Ct=jt[0].match(/(?:\r\n?|\n).*/g),Ct&&(this.yylineno+=Ct.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Ct?Ct[Ct.length-1].length-Ct[Ct.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+jt[0].length},this.yytext+=jt[0],this.match+=jt[0],this.matches=jt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(jt[0].length),this.matched+=jt[0],Ft=this.performAction.call(this,this.yy,this,xt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Ft)return Ft;if(this._backtrack){for(var Gt in kt)this[Gt]=kt[Gt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var jt,xt,Ft,Ct;this._more||(this.yytext="",this.match="");for(var kt=this._currentRules(),Gt=0;Gtxt[0].length)){if(xt=Ft,Ct=Gt,this.options.backtrack_lexer){if(jt=this.test_match(Ft,kt[Gt]),jt!==!1)return jt;if(this._backtrack){xt=!1;continue}else return!1}else if(!this.options.flex)break}return xt?(jt=this.test_match(xt,kt[Ct]),jt!==!1?jt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var xt=this.next();return xt||this.lex()},begin:function(xt){this.conditionStack.push(xt)},popState:function(){var xt=this.conditionStack.length-1;return xt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(xt){return xt=this.conditionStack.length-1-Math.abs(xt||0),xt>=0?this.conditionStack[xt]:"INITIAL"},pushState:function(xt){this.begin(xt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(xt,Ft,Ct,kt){switch(Ct){case 0:break;case 1:break;case 2:return this.popState(),34;case 3:return this.popState(),34;case 4:return 34;case 5:break;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 5;case 15:return 8;case 16:return this.pushState("axis_data"),"X_AXIS";case 17:return this.pushState("axis_data"),"Y_AXIS";case 18:return this.pushState("axis_band_data"),24;case 19:return 31;case 20:return this.pushState("data"),16;case 21:return this.pushState("data"),18;case 22:return this.pushState("data_inner"),24;case 23:return 27;case 24:return this.popState(),26;case 25:this.popState();break;case 26:this.pushState("string");break;case 27:this.popState();break;case 28:return"STR";case 29:return 24;case 30:return 26;case 31:return 43;case 32:return"COLON";case 33:return 44;case 34:return 28;case 35:return 45;case 36:return 46;case 37:return 48;case 38:return 50;case 39:return 47;case 40:return 41;case 41:return 49;case 42:return 42;case 43:break;case 44:return 35;case 45:return 36}},rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,20,21,22,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,23,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[27,28],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,20,21,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],inclusive:!0}}};return It}();yt.lexer=V;function Ot(){this.yy={}}return Ot.prototype=yt,yt.Parser=Ot,new Ot}();Sbt.parser=Sbt;const DXe=Sbt;function Kzt(i){return i.type==="bar"}function Wzt(i){return i.type==="band"}function lB(i){return i.type==="linear"}class Yzt{constructor(a){this.parentGroup=a}getMaxDimension(a,f){if(!this.parentGroup)return{width:a.reduce((v,b)=>Math.max(b.length,v),0)*f,height:f};const g={width:0,height:0},w=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",f);for(const v of a){const b=AKe(w,1,v),E=b?b.width:v.length*f,S=b?b.height:f;g.width=Math.max(g.width,E),g.height=Math.max(g.height,S)}return w.remove(),g}}const Xzt=.7,Qzt=.2;class Jzt{constructor(a,f,g,w){this.axisConfig=a,this.title=f,this.textDimensionCalculator=g,this.axisThemeConfig=w,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}setRange(a){this.range=a,this.axisPosition==="left"||this.axisPosition==="right"?this.boundingRect.height=a[1]-a[0]:this.boundingRect.width=a[1]-a[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(a){this.axisPosition=a,this.setRange(this.range)}getTickDistance(){const a=this.getRange();return Math.abs(a[0]-a[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map(a=>a.toString()),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){Xzt*this.getTickDistance()>this.outerPadding*2&&(this.outerPadding=Math.floor(Xzt*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(a){let f=a.height;if(this.axisConfig.showAxisLine&&f>this.axisConfig.axisLineWidth&&(f-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const g=this.getLabelDimension(),w=Qzt*a.width;this.outerPadding=Math.min(g.width/2,w);const v=g.height+this.axisConfig.labelPadding*2;this.labelTextHeight=g.height,v<=f&&(f-=v,this.showLabel=!0)}if(this.axisConfig.showTick&&f>=this.axisConfig.tickLength&&(this.showTick=!0,f-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const g=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),w=g.height+this.axisConfig.titlePadding*2;this.titleTextHeight=g.height,w<=f&&(f-=w,this.showTitle=!0)}this.boundingRect.width=a.width,this.boundingRect.height=a.height-f}calculateSpaceIfDrawnVertical(a){let f=a.width;if(this.axisConfig.showAxisLine&&f>this.axisConfig.axisLineWidth&&(f-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const g=this.getLabelDimension(),w=Qzt*a.height;this.outerPadding=Math.min(g.height/2,w);const v=g.width+this.axisConfig.labelPadding*2;v<=f&&(f-=v,this.showLabel=!0)}if(this.axisConfig.showTick&&f>=this.axisConfig.tickLength&&(this.showTick=!0,f-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const g=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),w=g.height+this.axisConfig.titlePadding*2;this.titleTextHeight=g.height,w<=f&&(f-=w,this.showTitle=!0)}this.boundingRect.width=a.width-f,this.boundingRect.height=a.height}calculateSpace(a){return this.axisPosition==="left"||this.axisPosition==="right"?this.calculateSpaceIfDrawnVertical(a):this.calculateSpaceIfDrawnHorizontally(a),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}getDrawableElementsForLeftAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${f},${this.boundingRect.y} L ${f},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(f),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"}))}),this.showTick){const f=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);a.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${f},${this.getScaleValue(g)} L ${f-this.axisConfig.tickLength},${this.getScaleValue(g)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),a}getDrawableElementsForBottomAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.y+this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${f} L ${this.boundingRect.x+this.boundingRect.width},${f}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.getScaleValue(f),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const f=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);a.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${this.getScaleValue(g)},${f} L ${this.getScaleValue(g)},${f+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),a}getDrawableElementsForTopAxis(){const a=[];if(this.showAxisLine){const f=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;a.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${f} L ${this.boundingRect.x+this.boundingRect.width},${f}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&a.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map(f=>({text:f.toString(),x:this.getScaleValue(f),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+this.axisConfig.titlePadding*2:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}))}),this.showTick){const f=this.boundingRect.y;a.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map(g=>({path:`M ${this.getScaleValue(g)},${f+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(g)},${f+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth}))})}return this.showTitle&&a.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),a}getDrawableElements(){if(this.axisPosition==="left")return this.getDrawableElementsForLeftAxis();if(this.axisPosition==="right")throw Error("Drawing of right axis is not implemented");return this.axisPosition==="bottom"?this.getDrawableElementsForBottomAxis():this.axisPosition==="top"?this.getDrawableElementsForTopAxis():[]}}class MXe extends Jzt{constructor(a,f,g,w,v){super(a,w,v,f),this.categories=g,this.scale=V0t().domain(this.categories).range(this.getRange())}setRange(a){super.setRange(a)}recalculateScale(){this.scale=V0t().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),Kt.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(a){return this.scale(a)||this.getRange()[0]}}class IXe extends Jzt{constructor(a,f,g,w,v){super(a,w,v,f),this.domain=g,this.scale=VL().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const a=[...this.domain];this.axisPosition==="left"&&a.reverse(),this.scale=VL().domain(a).range(this.getRange())}getScaleValue(a){return this.scale(a)}}function Zzt(i,a,f,g){const w=new Yzt(g);return Wzt(i)?new MXe(a,f,i.categories,i.title,w):new IXe(a,f,[i.min,i.max],i.title,w)}class OXe{constructor(a,f,g,w){this.textDimensionCalculator=a,this.chartConfig=f,this.chartData=g,this.chartThemeConfig=w,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}calculateSpace(a){const f=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),g=Math.max(f.width,a.width),w=f.height+2*this.chartConfig.titlePadding;return f.width<=g&&f.height<=w&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=g,this.boundingRect.height=w,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const a=[];return this.showChartTitle&&a.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),a}}function NXe(i,a,f,g){const w=new Yzt(g);return new OXe(w,i,a,f)}class PXe{constructor(a,f,g,w,v){this.plotData=a,this.xAxis=f,this.yAxis=g,this.orientation=w,this.plotIndex=v}getDrawableElement(){const a=this.plotData.data.map(g=>[this.xAxis.getScaleValue(g[0]),this.yAxis.getScaleValue(g[1])]);let f;return this.orientation==="horizontal"?f=Ax().y(g=>g[0]).x(g=>g[1])(a):f=Ax().x(g=>g[0]).y(g=>g[1])(a),f?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:f,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}}class FXe{constructor(a,f,g,w,v,b){this.barData=a,this.boundingRect=f,this.xAxis=g,this.yAxis=w,this.orientation=v,this.plotIndex=b}getDrawableElement(){const a=this.barData.data.map(v=>[this.xAxis.getScaleValue(v[0]),this.yAxis.getScaleValue(v[1])]),f=.05,g=Math.min(this.xAxis.getAxisOuterPadding()*2,this.xAxis.getTickDistance())*(1-f),w=g/2;return this.orientation==="horizontal"?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:a.map(v=>({x:this.boundingRect.x,y:v[0]-w,height:g,width:v[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:a.map(v=>({x:v[0]-w,y:v[1],width:g,height:this.boundingRect.y+this.boundingRect.height-v[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill}))}]}}class BXe{constructor(a,f,g){this.chartConfig=a,this.chartData=f,this.chartThemeConfig=g,this.boundingRect={x:0,y:0,width:0,height:0}}setAxes(a,f){this.xAxis=a,this.yAxis=f}setBoundingBoxXY(a){this.boundingRect.x=a.x,this.boundingRect.y=a.y}calculateSpace(a){return this.boundingRect.width=a.width,this.boundingRect.height=a.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!(this.xAxis&&this.yAxis))throw Error("Axes must be passed to render Plots");const a=[];for(const[f,g]of this.chartData.plots.entries())switch(g.type){case"line":{const w=new PXe(g,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,f);a.push(...w.getDrawableElement())}break;case"bar":{const w=new FXe(g,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,f);a.push(...w.getDrawableElement())}break}return a}}function RXe(i,a,f){return new BXe(i,a,f)}class jXe{constructor(a,f,g,w){this.chartConfig=a,this.chartData=f,this.componentStore={title:NXe(a,f,g,w),plot:RXe(a,f,g),xAxis:Zzt(f.xAxis,a.xAxis,{titleColor:g.xAxisTitleColor,labelColor:g.xAxisLabelColor,tickColor:g.xAxisTickColor,axisLineColor:g.xAxisLineColor},w),yAxis:Zzt(f.yAxis,a.yAxis,{titleColor:g.yAxisTitleColor,labelColor:g.yAxisLabelColor,tickColor:g.yAxisTickColor,axisLineColor:g.yAxisLineColor},w)}}calculateVerticalSpace(){let a=this.chartConfig.width,f=this.chartConfig.height,g=0,w=0,v=Math.floor(a*this.chartConfig.plotReservedSpacePercent/100),b=Math.floor(f*this.chartConfig.plotReservedSpacePercent/100),E=this.componentStore.plot.calculateSpace({width:v,height:b});a-=E.width,f-=E.height,E=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:f}),w=E.height,f-=E.height,this.componentStore.xAxis.setAxisPosition("bottom"),E=this.componentStore.xAxis.calculateSpace({width:a,height:f}),f-=E.height,this.componentStore.yAxis.setAxisPosition("left"),E=this.componentStore.yAxis.calculateSpace({width:a,height:f}),g=E.width,a-=E.width,a>0&&(v+=a,a=0),f>0&&(b+=f,f=0),this.componentStore.plot.calculateSpace({width:v,height:b}),this.componentStore.plot.setBoundingBoxXY({x:g,y:w}),this.componentStore.xAxis.setRange([g,g+v]),this.componentStore.xAxis.setBoundingBoxXY({x:g,y:w+b}),this.componentStore.yAxis.setRange([w,w+b]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:w}),this.chartData.plots.some(S=>Kzt(S))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizonatalSpace(){let a=this.chartConfig.width,f=this.chartConfig.height,g=0,w=0,v=0,b=Math.floor(a*this.chartConfig.plotReservedSpacePercent/100),E=Math.floor(f*this.chartConfig.plotReservedSpacePercent/100),S=this.componentStore.plot.calculateSpace({width:b,height:E});a-=S.width,f-=S.height,S=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:f}),g=S.height,f-=S.height,this.componentStore.xAxis.setAxisPosition("left"),S=this.componentStore.xAxis.calculateSpace({width:a,height:f}),a-=S.width,w=S.width,this.componentStore.yAxis.setAxisPosition("top"),S=this.componentStore.yAxis.calculateSpace({width:a,height:f}),f-=S.height,v=g+S.height,a>0&&(b+=a,a=0),f>0&&(E+=f,f=0),this.componentStore.plot.calculateSpace({width:b,height:E}),this.componentStore.plot.setBoundingBoxXY({x:w,y:v}),this.componentStore.yAxis.setRange([w,w+b]),this.componentStore.yAxis.setBoundingBoxXY({x:w,y:g}),this.componentStore.xAxis.setRange([v,v+E]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:v}),this.chartData.plots.some(_=>Kzt(_))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){this.chartConfig.chartOrientation==="horizontal"?this.calculateHorizonatalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const a=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const f of Object.values(this.componentStore))a.push(...f.getDrawableElements());return a}}class $Xe{static build(a,f,g,w){return new jXe(a,f,g,w).getDrawableElement()}}let hB=0,tqt,fB=nqt(),dB=eqt(),Pu=rqt(),_bt=dB.plotColorPalette.split(",").map(i=>i.trim()),pX=!1,Abt=!1;function eqt(){const i=dgt(),a=o1();return MF(i.xyChart,a.themeVariables.xyChart)}function nqt(){const i=o1();return MF(Bl.xyChart,i.xyChart)}function rqt(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function Lbt(i){const a=o1();return Ef(i.trim(),a)}function zXe(i){tqt=i}function qXe(i){i==="horizontal"?fB.chartOrientation="horizontal":fB.chartOrientation="vertical"}function HXe(i){Pu.xAxis.title=Lbt(i.text)}function iqt(i,a){Pu.xAxis={type:"linear",title:Pu.xAxis.title,min:i,max:a},pX=!0}function VXe(i){Pu.xAxis={type:"band",title:Pu.xAxis.title,categories:i.map(a=>Lbt(a.text))},pX=!0}function UXe(i){Pu.yAxis.title=Lbt(i.text)}function GXe(i,a){Pu.yAxis={type:"linear",title:Pu.yAxis.title,min:i,max:a},Abt=!0}function KXe(i){const a=Math.min(...i),f=Math.max(...i),g=lB(Pu.yAxis)?Pu.yAxis.min:1/0,w=lB(Pu.yAxis)?Pu.yAxis.max:-1/0;Pu.yAxis={type:"linear",title:Pu.yAxis.title,min:Math.min(g,a),max:Math.max(w,f)}}function sqt(i){let a=[];if(i.length===0)return a;if(!pX){const f=lB(Pu.xAxis)?Pu.xAxis.min:1/0,g=lB(Pu.xAxis)?Pu.xAxis.max:-1/0;iqt(Math.min(f,1),Math.max(g,i.length))}if(Abt||KXe(i),Wzt(Pu.xAxis)&&(a=Pu.xAxis.categories.map((f,g)=>[f,i[g]])),lB(Pu.xAxis)){const f=Pu.xAxis.min,g=Pu.xAxis.max,w=(g-f+1)/i.length,v=[];for(let b=f;b<=g;b+=w)v.push(`${b}`);a=v.map((b,E)=>[b,i[E]])}return a}function aqt(i){return _bt[i===0?0:i%_bt.length]}function WXe(i,a){const f=sqt(a);Pu.plots.push({type:"line",strokeFill:aqt(hB),strokeWidth:2,data:f}),hB++}function YXe(i,a){const f=sqt(a);Pu.plots.push({type:"bar",fill:aqt(hB),data:f}),hB++}function XXe(){if(Pu.plots.length===0)throw Error("No Plot to render, please provide a plot with some data");return Pu.title=Zg(),$Xe.build(fB,Pu,dB,tqt)}function QXe(){return dB}function JXe(){return fB}const ZXe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:DXe,db:{getDrawableElem:XXe,clear:function(){ag(),hB=0,fB=nqt(),Pu=rqt(),dB=eqt(),_bt=dB.plotColorPalette.split(",").map(i=>i.trim()),pX=!1,Abt=!1},setAccTitle:og,getAccTitle:Xg,setDiagramTitle:S2,getDiagramTitle:Zg,getAccDescription:Jg,setAccDescription:Qg,setOrientation:qXe,setXAxisTitle:HXe,setXAxisRangeData:iqt,setXAxisBand:VXe,setYAxisTitle:UXe,setYAxisRangeData:GXe,setLineData:WXe,setBarData:YXe,setTmpSVGG:zXe,getChartThemeConfig:QXe,getChartConfig:JXe},renderer:{draw:(i,a,f,g)=>{const w=g.db,v=w.getChartThemeConfig(),b=w.getChartConfig();function E(nt){return nt==="top"?"text-before-edge":"middle"}function S(nt){return nt==="left"?"start":nt==="right"?"end":"middle"}function _(nt){return`translate(${nt.x}, ${nt.y}) rotate(${nt.rotation||0})`}Kt.debug(`Rendering xychart chart +`+i);const M=FF(a),F=M.append("g").attr("class","main"),R=F.append("rect").attr("width",b.width).attr("height",b.height).attr("class","background");sg(M,b.height,b.width,!0),M.attr("viewBox",`0 0 ${b.width} ${b.height}`),R.attr("fill",v.backgroundColor),w.setTmpSVGG(M.append("g").attr("class","mermaid-tmp-group"));const B=w.getDrawableElem(),z={};function Y(nt){let ot=F,ft="";for(const[wt]of nt.entries()){let mt=F;wt>0&&z[ft]&&(mt=z[ft]),ft+=nt[wt],ot=z[ft],ot||(ot=z[ft]=mt.append("g").attr("class",nt[wt]))}return ot}for(const nt of B){if(nt.data.length===0)continue;const ot=Y(nt.groupTexts);switch(nt.type){case"rect":ot.selectAll("rect").data(nt.data).enter().append("rect").attr("x",ft=>ft.x).attr("y",ft=>ft.y).attr("width",ft=>ft.width).attr("height",ft=>ft.height).attr("fill",ft=>ft.fill).attr("stroke",ft=>ft.strokeFill).attr("stroke-width",ft=>ft.strokeWidth);break;case"text":ot.selectAll("text").data(nt.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",ft=>ft.fill).attr("font-size",ft=>ft.fontSize).attr("dominant-baseline",ft=>E(ft.verticalPos)).attr("text-anchor",ft=>S(ft.horizontalPos)).attr("transform",ft=>_(ft)).text(ft=>ft.text);break;case"path":ot.selectAll("path").data(nt.data).enter().append("path").attr("d",ft=>ft.path).attr("fill",ft=>ft.fill?ft.fill:"none").attr("stroke",ft=>ft.strokeFill).attr("stroke-width",ft=>ft.strokeWidth);break}}}}}},Symbol.toStringTag,{value:"Module"}));var Dbt=function(){var i=function(Ae,ye,tn,sn){for(tn=tn||{},sn=Ae.length;sn--;tn[Ae[sn]]=ye);return tn},a=[1,3],f=[1,4],g=[1,5],w=[1,6],v=[5,6,8,9,11,13,31,32,33,34,35,36,44,62,63],b=[1,18],E=[2,7],S=[1,22],_=[1,23],M=[1,24],F=[1,25],R=[1,26],B=[1,27],z=[1,20],Y=[1,28],nt=[1,29],ot=[62,63],ft=[5,8,9,11,13,31,32,33,34,35,36,44,51,53,62,63],wt=[1,47],mt=[1,48],ct=[1,49],rt=[1,50],it=[1,51],gt=[1,52],Q=[1,53],dt=[53,54],K=[1,64],yt=[1,60],V=[1,61],Ot=[1,62],It=[1,63],jt=[1,65],xt=[1,69],Ft=[1,70],Ct=[1,67],kt=[1,68],Gt=[5,8,9,11,13,31,32,33,34,35,36,44,62,63],Fe={trace:function(){},yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,requirementType:17,requirementName:18,STRUCT_START:19,requirementBody:20,ID:21,COLONSEP:22,id:23,TEXT:24,text:25,RISK:26,riskLevel:27,VERIFYMTHD:28,verifyType:29,STRUCT_STOP:30,REQUIREMENT:31,FUNCTIONAL_REQUIREMENT:32,INTERFACE_REQUIREMENT:33,PERFORMANCE_REQUIREMENT:34,PHYSICAL_REQUIREMENT:35,DESIGN_CONSTRAINT:36,LOW_RISK:37,MED_RISK:38,HIGH_RISK:39,VERIFY_ANALYSIS:40,VERIFY_DEMONSTRATION:41,VERIFY_INSPECTION:42,VERIFY_TEST:43,ELEMENT:44,elementName:45,elementBody:46,TYPE:47,type:48,DOCREF:49,ref:50,END_ARROW_L:51,relationship:52,LINE:53,END_ARROW_R:54,CONTAINS:55,COPIES:56,DERIVES:57,SATISFIES:58,VERIFIES:59,REFINES:60,TRACES:61,unqString:62,qString:63,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",19:"STRUCT_START",21:"ID",22:"COLONSEP",24:"TEXT",26:"RISK",28:"VERIFYMTHD",30:"STRUCT_STOP",31:"REQUIREMENT",32:"FUNCTIONAL_REQUIREMENT",33:"INTERFACE_REQUIREMENT",34:"PERFORMANCE_REQUIREMENT",35:"PHYSICAL_REQUIREMENT",36:"DESIGN_CONSTRAINT",37:"LOW_RISK",38:"MED_RISK",39:"HIGH_RISK",40:"VERIFY_ANALYSIS",41:"VERIFY_DEMONSTRATION",42:"VERIFY_INSPECTION",43:"VERIFY_TEST",44:"ELEMENT",47:"TYPE",49:"DOCREF",51:"END_ARROW_L",53:"LINE",54:"END_ARROW_R",55:"CONTAINS",56:"COPIES",57:"DERIVES",58:"SATISFIES",59:"VERIFIES",60:"REFINES",61:"TRACES",62:"unqString",63:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[14,5],[20,5],[20,5],[20,5],[20,5],[20,2],[20,1],[17,1],[17,1],[17,1],[17,1],[17,1],[17,1],[27,1],[27,1],[27,1],[29,1],[29,1],[29,1],[29,1],[15,5],[46,5],[46,5],[46,2],[46,1],[16,5],[16,5],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[52,1],[18,1],[18,1],[23,1],[23,1],[25,1],[25,1],[45,1],[45,1],[48,1],[48,1],[50,1],[50,1]],performAction:function(ye,tn,sn,be,Ne,Xt,_e){var xe=Xt.length-1;switch(Ne){case 4:this.$=Xt[xe].trim(),be.setAccTitle(this.$);break;case 5:case 6:this.$=Xt[xe].trim(),be.setAccDescription(this.$);break;case 7:this.$=[];break;case 13:be.addRequirement(Xt[xe-3],Xt[xe-4]);break;case 14:be.setNewReqId(Xt[xe-2]);break;case 15:be.setNewReqText(Xt[xe-2]);break;case 16:be.setNewReqRisk(Xt[xe-2]);break;case 17:be.setNewReqVerifyMethod(Xt[xe-2]);break;case 20:this.$=be.RequirementType.REQUIREMENT;break;case 21:this.$=be.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 22:this.$=be.RequirementType.INTERFACE_REQUIREMENT;break;case 23:this.$=be.RequirementType.PERFORMANCE_REQUIREMENT;break;case 24:this.$=be.RequirementType.PHYSICAL_REQUIREMENT;break;case 25:this.$=be.RequirementType.DESIGN_CONSTRAINT;break;case 26:this.$=be.RiskLevel.LOW_RISK;break;case 27:this.$=be.RiskLevel.MED_RISK;break;case 28:this.$=be.RiskLevel.HIGH_RISK;break;case 29:this.$=be.VerifyType.VERIFY_ANALYSIS;break;case 30:this.$=be.VerifyType.VERIFY_DEMONSTRATION;break;case 31:this.$=be.VerifyType.VERIFY_INSPECTION;break;case 32:this.$=be.VerifyType.VERIFY_TEST;break;case 33:be.addElement(Xt[xe-3]);break;case 34:be.setNewElementType(Xt[xe-2]);break;case 35:be.setNewElementDocRef(Xt[xe-2]);break;case 38:be.addRelationship(Xt[xe-2],Xt[xe],Xt[xe-4]);break;case 39:be.addRelationship(Xt[xe-2],Xt[xe-4],Xt[xe]);break;case 40:this.$=be.Relationships.CONTAINS;break;case 41:this.$=be.Relationships.COPIES;break;case 42:this.$=be.Relationships.DERIVES;break;case 43:this.$=be.Relationships.SATISFIES;break;case 44:this.$=be.Relationships.VERIFIES;break;case 45:this.$=be.Relationships.REFINES;break;case 46:this.$=be.Relationships.TRACES;break}},table:[{3:1,4:2,6:a,9:f,11:g,13:w},{1:[3]},{3:8,4:2,5:[1,7],6:a,9:f,11:g,13:w},{5:[1,9]},{10:[1,10]},{12:[1,11]},i(v,[2,6]),{3:12,4:2,6:a,9:f,11:g,13:w},{1:[2,2]},{4:17,5:b,7:13,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},i(v,[2,4]),i(v,[2,5]),{1:[2,1]},{8:[1,30]},{4:17,5:b,7:31,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:32,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:33,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:34,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{4:17,5:b,7:35,8:E,9:f,11:g,13:w,14:14,15:15,16:16,17:19,23:21,31:S,32:_,33:M,34:F,35:R,36:B,44:z,62:Y,63:nt},{18:36,62:[1,37],63:[1,38]},{45:39,62:[1,40],63:[1,41]},{51:[1,42],53:[1,43]},i(ot,[2,20]),i(ot,[2,21]),i(ot,[2,22]),i(ot,[2,23]),i(ot,[2,24]),i(ot,[2,25]),i(ft,[2,49]),i(ft,[2,50]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{19:[1,44]},{19:[2,47]},{19:[2,48]},{19:[1,45]},{19:[2,53]},{19:[2,54]},{52:46,55:wt,56:mt,57:ct,58:rt,59:it,60:gt,61:Q},{52:54,55:wt,56:mt,57:ct,58:rt,59:it,60:gt,61:Q},{5:[1,55]},{5:[1,56]},{53:[1,57]},i(dt,[2,40]),i(dt,[2,41]),i(dt,[2,42]),i(dt,[2,43]),i(dt,[2,44]),i(dt,[2,45]),i(dt,[2,46]),{54:[1,58]},{5:K,20:59,21:yt,24:V,26:Ot,28:It,30:jt},{5:xt,30:Ft,46:66,47:Ct,49:kt},{23:71,62:Y,63:nt},{23:72,62:Y,63:nt},i(Gt,[2,13]),{22:[1,73]},{22:[1,74]},{22:[1,75]},{22:[1,76]},{5:K,20:77,21:yt,24:V,26:Ot,28:It,30:jt},i(Gt,[2,19]),i(Gt,[2,33]),{22:[1,78]},{22:[1,79]},{5:xt,30:Ft,46:80,47:Ct,49:kt},i(Gt,[2,37]),i(Gt,[2,38]),i(Gt,[2,39]),{23:81,62:Y,63:nt},{25:82,62:[1,83],63:[1,84]},{27:85,37:[1,86],38:[1,87],39:[1,88]},{29:89,40:[1,90],41:[1,91],42:[1,92],43:[1,93]},i(Gt,[2,18]),{48:94,62:[1,95],63:[1,96]},{50:97,62:[1,98],63:[1,99]},i(Gt,[2,36]),{5:[1,100]},{5:[1,101]},{5:[2,51]},{5:[2,52]},{5:[1,102]},{5:[2,26]},{5:[2,27]},{5:[2,28]},{5:[1,103]},{5:[2,29]},{5:[2,30]},{5:[2,31]},{5:[2,32]},{5:[1,104]},{5:[2,55]},{5:[2,56]},{5:[1,105]},{5:[2,57]},{5:[2,58]},{5:K,20:106,21:yt,24:V,26:Ot,28:It,30:jt},{5:K,20:107,21:yt,24:V,26:Ot,28:It,30:jt},{5:K,20:108,21:yt,24:V,26:Ot,28:It,30:jt},{5:K,20:109,21:yt,24:V,26:Ot,28:It,30:jt},{5:xt,30:Ft,46:110,47:Ct,49:kt},{5:xt,30:Ft,46:111,47:Ct,49:kt},i(Gt,[2,14]),i(Gt,[2,15]),i(Gt,[2,16]),i(Gt,[2,17]),i(Gt,[2,34]),i(Gt,[2,35])],defaultActions:{8:[2,2],12:[2,1],30:[2,3],31:[2,8],32:[2,9],33:[2,10],34:[2,11],35:[2,12],37:[2,47],38:[2,48],40:[2,53],41:[2,54],83:[2,51],84:[2,52],86:[2,26],87:[2,27],88:[2,28],90:[2,29],91:[2,30],92:[2,31],93:[2,32],95:[2,55],96:[2,56],98:[2,57],99:[2,58]},parseError:function(ye,tn){if(tn.recoverable)this.trace(ye);else{var sn=new Error(ye);throw sn.hash=tn,sn}},parse:function(ye){var tn=this,sn=[0],be=[],Ne=[null],Xt=[],_e=this.table,xe="",Mn=0,ce=0,Br=2,we=1,Fi=Xt.slice.call(arguments,1),mi=Object.create(this.lexer),ga={yy:{}};for(var Ss in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ss)&&(ga.yy[Ss]=this.yy[Ss]);mi.setInput(ye,ga.yy),ga.yy.lexer=mi,ga.yy.parser=this,typeof mi.yylloc>"u"&&(mi.yylloc={});var za=mi.yylloc;Xt.push(za);var br=mi.options&&mi.options.ranges;typeof ga.yy.parseError=="function"?this.parseError=ga.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function An(){var va;return va=be.pop()||mi.lex()||we,typeof va!="number"&&(va instanceof Array&&(be=va,va=be.pop()),va=tn.symbols_[va]||va),va}for(var Nn,Bn,ke,pe,Je={},an,xn,qa,xo;;){if(Bn=sn[sn.length-1],this.defaultActions[Bn]?ke=this.defaultActions[Bn]:((Nn===null||typeof Nn>"u")&&(Nn=An()),ke=_e[Bn]&&_e[Bn][Nn]),typeof ke>"u"||!ke.length||!ke[0]){var ko="";xo=[];for(an in _e[Bn])this.terminals_[an]&&an>Br&&xo.push("'"+this.terminals_[an]+"'");mi.showPosition?ko="Parse error on line "+(Mn+1)+`: +`+mi.showPosition()+` +Expecting `+xo.join(", ")+", got '"+(this.terminals_[Nn]||Nn)+"'":ko="Parse error on line "+(Mn+1)+": Unexpected "+(Nn==we?"end of input":"'"+(this.terminals_[Nn]||Nn)+"'"),this.parseError(ko,{text:mi.match,token:this.terminals_[Nn]||Nn,line:mi.yylineno,loc:za,expected:xo})}if(ke[0]instanceof Array&&ke.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Bn+", token: "+Nn);switch(ke[0]){case 1:sn.push(Nn),Ne.push(mi.yytext),Xt.push(mi.yylloc),sn.push(ke[1]),Nn=null,ce=mi.yyleng,xe=mi.yytext,Mn=mi.yylineno,za=mi.yylloc;break;case 2:if(xn=this.productions_[ke[1]][1],Je.$=Ne[Ne.length-xn],Je._$={first_line:Xt[Xt.length-(xn||1)].first_line,last_line:Xt[Xt.length-1].last_line,first_column:Xt[Xt.length-(xn||1)].first_column,last_column:Xt[Xt.length-1].last_column},br&&(Je._$.range=[Xt[Xt.length-(xn||1)].range[0],Xt[Xt.length-1].range[1]]),pe=this.performAction.apply(Je,[xe,ce,Mn,ga.yy,ke[1],Ne,Xt].concat(Fi)),typeof pe<"u")return pe;xn&&(sn=sn.slice(0,-1*xn*2),Ne=Ne.slice(0,-1*xn),Xt=Xt.slice(0,-1*xn)),sn.push(this.productions_[ke[1]][0]),Ne.push(Je.$),Xt.push(Je._$),qa=_e[sn[sn.length-2]][sn[sn.length-1]],sn.push(qa);break;case 3:return!0}}return!0}},Mt=function(){var Ae={EOF:1,parseError:function(tn,sn){if(this.yy.parser)this.yy.parser.parseError(tn,sn);else throw new Error(tn)},setInput:function(ye,tn){return this.yy=tn||this.yy||{},this._input=ye,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ye=this._input[0];this.yytext+=ye,this.yyleng++,this.offset++,this.match+=ye,this.matched+=ye;var tn=ye.match(/(?:\r\n?|\n).*/g);return tn?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ye},unput:function(ye){var tn=ye.length,sn=ye.split(/(?:\r\n?|\n)/g);this._input=ye+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-tn),this.offset-=tn;var be=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),sn.length-1&&(this.yylineno-=sn.length-1);var Ne=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:sn?(sn.length===be.length?this.yylloc.first_column:0)+be[be.length-sn.length].length-sn[0].length:this.yylloc.first_column-tn},this.options.ranges&&(this.yylloc.range=[Ne[0],Ne[0]+this.yyleng-tn]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ye){this.unput(this.match.slice(ye))},pastInput:function(){var ye=this.matched.substr(0,this.matched.length-this.match.length);return(ye.length>20?"...":"")+ye.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ye=this.match;return ye.length<20&&(ye+=this._input.substr(0,20-ye.length)),(ye.substr(0,20)+(ye.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ye=this.pastInput(),tn=new Array(ye.length+1).join("-");return ye+this.upcomingInput()+` +`+tn+"^"},test_match:function(ye,tn){var sn,be,Ne;if(this.options.backtrack_lexer&&(Ne={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Ne.yylloc.range=this.yylloc.range.slice(0))),be=ye[0].match(/(?:\r\n?|\n).*/g),be&&(this.yylineno+=be.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:be?be[be.length-1].length-be[be.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ye[0].length},this.yytext+=ye[0],this.match+=ye[0],this.matches=ye,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ye[0].length),this.matched+=ye[0],sn=this.performAction.call(this,this.yy,this,tn,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),sn)return sn;if(this._backtrack){for(var Xt in Ne)this[Xt]=Ne[Xt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ye,tn,sn,be;this._more||(this.yytext="",this.match="");for(var Ne=this._currentRules(),Xt=0;Xttn[0].length)){if(tn=sn,be=Xt,this.options.backtrack_lexer){if(ye=this.test_match(sn,Ne[Xt]),ye!==!1)return ye;if(this._backtrack){tn=!1;continue}else return!1}else if(!this.options.flex)break}return tn?(ye=this.test_match(tn,Ne[be]),ye!==!1?ye:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var tn=this.next();return tn||this.lex()},begin:function(tn){this.conditionStack.push(tn)},popState:function(){var tn=this.conditionStack.length-1;return tn>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(tn){return tn=this.conditionStack.length-1-Math.abs(tn||0),tn>=0?this.conditionStack[tn]:"INITIAL"},pushState:function(tn){this.begin(tn)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(tn,sn,be,Ne){switch(be){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 5;case 9:break;case 10:break;case 11:break;case 12:return 8;case 13:return 6;case 14:return 19;case 15:return 30;case 16:return 22;case 17:return 21;case 18:return 24;case 19:return 26;case 20:return 28;case 21:return 31;case 22:return 32;case 23:return 33;case 24:return 34;case 25:return 35;case 26:return 36;case 27:return 37;case 28:return 38;case 29:return 39;case 30:return 40;case 31:return 41;case 32:return 42;case 33:return 43;case 34:return 44;case 35:return 55;case 36:return 56;case 37:return 57;case 38:return 58;case 39:return 59;case 40:return 60;case 41:return 61;case 42:return 47;case 43:return 49;case 44:return 51;case 45:return 54;case 46:return 53;case 47:this.begin("string");break;case 48:this.popState();break;case 49:return"qString";case 50:return sn.yytext=sn.yytext.trim(),62}},rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^\r\n\{\<\>\-\=]*)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},unqString:{rules:[],inclusive:!1},token:{rules:[],inclusive:!1},string:{rules:[48,49],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,50],inclusive:!0}}};return Ae}();Fe.lexer=Mt;function pn(){this.yy={}}return pn.prototype=Fe,Fe.Parser=pn,new pn}();Dbt.parser=Dbt;const tQe=Dbt;let Mbt=[],ub={},gB={},_8={},pB={};const eQe={RequirementType:{REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},RiskLevel:{LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},VerifyType:{VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},Relationships:{CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},getConfig:()=>Re().req,addRequirement:(i,a)=>(gB[i]===void 0&&(gB[i]={name:i,type:a,id:ub.id,text:ub.text,risk:ub.risk,verifyMethod:ub.verifyMethod}),ub={},gB[i]),getRequirements:()=>gB,setNewReqId:i=>{ub!==void 0&&(ub.id=i)},setNewReqText:i=>{ub!==void 0&&(ub.text=i)},setNewReqRisk:i=>{ub!==void 0&&(ub.risk=i)},setNewReqVerifyMethod:i=>{ub!==void 0&&(ub.verifyMethod=i)},setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,addElement:i=>(pB[i]===void 0&&(pB[i]={name:i,type:_8.type,docRef:_8.docRef},Kt.info("Added new requirement: ",i)),_8={},pB[i]),getElements:()=>pB,setNewElementType:i=>{_8!==void 0&&(_8.type=i)},setNewElementDocRef:i=>{_8!==void 0&&(_8.docRef=i)},addRelationship:(i,a,f)=>{Mbt.push({type:i,src:a,dst:f})},getRelationships:()=>Mbt,clear:()=>{Mbt=[],ub={},gB={},_8={},pB={},ag()}},nQe=i=>` + + marker { + fill: ${i.relationColor}; + stroke: ${i.relationColor}; + } + + marker.cross { + stroke: ${i.lineColor}; + } + + svg { + font-family: ${i.fontFamily}; + font-size: ${i.fontSize}; + } + + .reqBox { + fill: ${i.requirementBackground}; + fill-opacity: 1.0; + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${i.requirementTextColor}; + } + .reqLabelBox { + fill: ${i.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${i.requirementBorderColor}; + stroke-width: ${i.requirementBorderSize}; + } + .relationshipLine { + stroke: ${i.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${i.relationLabelColor}; + } + +`,Ibt={CONTAINS:"contains",ARROW:"arrow"},oqt={ReqMarkers:Ibt,insertLineEndings:(i,a)=>{let f=i.append("defs").append("marker").attr("id",Ibt.CONTAINS+"_line_ending").attr("refX",0).attr("refY",a.line_height/2).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("g");f.append("circle").attr("cx",a.line_height/2).attr("cy",a.line_height/2).attr("r",a.line_height/2).attr("fill","none"),f.append("line").attr("x1",0).attr("x2",a.line_height).attr("y1",a.line_height/2).attr("y2",a.line_height/2).attr("stroke-width",1),f.append("line").attr("y1",0).attr("y2",a.line_height).attr("x1",a.line_height/2).attr("x2",a.line_height/2).attr("stroke-width",1),i.append("defs").append("marker").attr("id",Ibt.ARROW+"_line_ending").attr("refX",a.line_height).attr("refY",.5*a.line_height).attr("markerWidth",a.line_height).attr("markerHeight",a.line_height).attr("orient","auto").append("path").attr("d",`M0,0 + L${a.line_height},${a.line_height/2} + M${a.line_height},${a.line_height/2} + L0,${a.line_height}`).attr("stroke-width",1)}};let Xh={},cqt=0;const uqt=(i,a)=>i.insert("rect","#"+a).attr("class","req reqBox").attr("x",0).attr("y",0).attr("width",Xh.rect_min_width+"px").attr("height",Xh.rect_min_height+"px"),lqt=(i,a,f)=>{let g=Xh.rect_min_width/2,w=i.append("text").attr("class","req reqLabel reqTitle").attr("id",a).attr("x",g).attr("y",Xh.rect_padding).attr("dominant-baseline","hanging"),v=0;f.forEach(_=>{v==0?w.append("tspan").attr("text-anchor","middle").attr("x",Xh.rect_min_width/2).attr("dy",0).text(_):w.append("tspan").attr("text-anchor","middle").attr("x",Xh.rect_min_width/2).attr("dy",Xh.line_height*.75).text(_),v++});let b=1.5*Xh.rect_padding,E=v*Xh.line_height*.75,S=b+E;return i.append("line").attr("class","req-title-line").attr("x1","0").attr("x2",Xh.rect_min_width).attr("y1",S).attr("y2",S),{titleNode:w,y:S}},hqt=(i,a,f,g)=>{let w=i.append("text").attr("class","req reqLabel").attr("id",a).attr("x",Xh.rect_padding).attr("y",g).attr("dominant-baseline","hanging"),v=0;const b=30;let E=[];return f.forEach(S=>{let _=S.length;for(;_>b&&v<3;){let M=S.substring(0,b);S=S.substring(b,S.length),_=S.length,E[E.length]=M,v++}if(v==3){let M=E[E.length-1];E[E.length-1]=M.substring(0,M.length-4)+"..."}else E[E.length]=S;v=0}),E.forEach(S=>{w.append("tspan").attr("x",Xh.rect_padding).attr("dy",Xh.line_height).text(S)}),w},rQe=(i,a,f,g)=>{const w=a.node().getTotalLength(),v=a.node().getPointAtLength(w*.5),b="rel"+cqt;cqt++;const S=i.append("text").attr("class","req relationshipLabel").attr("id",b).attr("x",v.x).attr("y",v.y).attr("text-anchor","middle").attr("dominant-baseline","middle").text(g).node().getBBox();i.insert("rect","#"+b).attr("class","req reqLabelBox").attr("x",v.x-S.width/2).attr("y",v.y-S.height/2).attr("width",S.width).attr("height",S.height).attr("fill","white").attr("fill-opacity","85%")},iQe=function(i,a,f,g,w){const v=f.edge(LD(a.src),LD(a.dst)),b=Ax().x(function(S){return S.x}).y(function(S){return S.y}),E=i.insert("path","#"+g).attr("class","er relationshipLine").attr("d",b(v.points)).attr("fill","none");a.type==w.db.Relationships.CONTAINS?E.attr("marker-start","url("+ei.getUrl(Xh.arrowMarkerAbsolute)+"#"+a.type+"_line_ending)"):(E.attr("stroke-dasharray","10,7"),E.attr("marker-end","url("+ei.getUrl(Xh.arrowMarkerAbsolute)+"#"+oqt.ReqMarkers.ARROW+"_line_ending)")),rQe(i,E,Xh,`<<${a.type}>>`)},sQe=(i,a,f)=>{Object.keys(i).forEach(g=>{let w=i[g];g=LD(g),Kt.info("Added new requirement: ",g);const v=f.append("g").attr("id",g),b="req-"+g,E=uqt(v,b);let S=lqt(v,g+"_title",[`<<${w.type}>>`,`${w.name}`]);hqt(v,g+"_body",[`Id: ${w.id}`,`Text: ${w.text}`,`Risk: ${w.risk}`,`Verification: ${w.verifyMethod}`],S.y);const _=E.node().getBBox();a.setNode(g,{width:_.width,height:_.height,shape:"rect",id:g})})},aQe=(i,a,f)=>{Object.keys(i).forEach(g=>{let w=i[g];const v=LD(g),b=f.append("g").attr("id",v),E="element-"+v,S=uqt(b,E);let _=lqt(b,E+"_title",["<>",`${g}`]);hqt(b,E+"_body",[`Type: ${w.type||"Not Specified"}`,`Doc Ref: ${w.docRef||"None"}`],_.y);const M=S.node().getBBox();a.setNode(v,{width:M.width,height:M.height,shape:"rect",id:v})})},oQe=(i,a)=>(i.forEach(function(f){let g=LD(f.src),w=LD(f.dst);a.setEdge(g,w,{relationship:f})}),i),cQe=function(i,a){a.nodes().forEach(function(f){f!==void 0&&a.node(f)!==void 0&&(i.select("#"+f),i.select("#"+f).attr("transform","translate("+(a.node(f).x-a.node(f).width/2)+","+(a.node(f).y-a.node(f).height/2)+" )"))})},LD=i=>i.replace(/\s/g,"").replace(/\./g,"_"),uQe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:tQe,db:eQe,renderer:{draw:(i,a,f,g)=>{Xh=Re().requirement;const w=Xh.securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const E=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body").select(`[id='${a}']`);oqt.insertLineEndings(E,Xh);const S=new l1({multigraph:!1,compound:!1,directed:!0}).setGraph({rankdir:Xh.layoutDirection,marginx:20,marginy:20,nodesep:100,edgesep:100,ranksep:100}).setDefaultEdgeLabel(function(){return{}});let _=g.db.getRequirements(),M=g.db.getElements(),F=g.db.getRelationships();sQe(_,S,E),aQe(M,S,E),oQe(F,S),kD(S),cQe(E,S),F.forEach(function(nt){iQe(E,nt,S,a,g)});const R=Xh.rect_padding,B=E.node().getBBox(),z=B.width+R*2,Y=B.height+R*2;sg(E,Y,z,Xh.useMaxWidth),E.attr("viewBox",`${B.x-R} ${B.y-R} ${z} ${Y}`)}},styles:nQe}},Symbol.toStringTag,{value:"Module"}));var Obt=function(){var i=function(be,Ne,Xt,_e){for(Xt=Xt||{},_e=be.length;_e--;Xt[be[_e]]=Ne);return Xt},a=[1,2],f=[1,3],g=[1,4],w=[2,4],v=[1,9],b=[1,11],E=[1,13],S=[1,14],_=[1,16],M=[1,17],F=[1,18],R=[1,24],B=[1,25],z=[1,26],Y=[1,27],nt=[1,28],ot=[1,29],ft=[1,30],wt=[1,31],mt=[1,32],ct=[1,33],rt=[1,34],it=[1,35],gt=[1,36],Q=[1,37],dt=[1,38],K=[1,39],yt=[1,41],V=[1,42],Ot=[1,43],It=[1,44],jt=[1,45],xt=[1,46],Ft=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,54,59,60,61,62,70],Ct=[4,5,16,50,52,53],kt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],Gt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,54,59,60,61,62,70],Fe=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,54,59,60,61,62,70],Mt=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,54,59,60,61,62,70],pn=[68,69,70],Ae=[1,120],ye={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,note:54,placement:55,text2:56,over:57,actor_pair:58,links:59,link:60,properties:61,details:62,spaceList:63,",":64,left_of:65,right_of:66,signaltype:67,"+":68,"-":69,ACTOR:70,SOLID_OPEN_ARROW:71,DOTTED_OPEN_ARROW:72,SOLID_ARROW:73,DOTTED_ARROW:74,SOLID_CROSS:75,DOTTED_CROSS:76,SOLID_POINT:77,DOTTED_POINT:78,TXT:79,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",54:"note",57:"over",59:"links",60:"link",61:"properties",62:"details",64:",",65:"left_of",66:"right_of",68:"+",69:"-",70:"ACTOR",71:"SOLID_OPEN_ARROW",72:"DOTTED_OPEN_ARROW",73:"SOLID_ARROW",74:"DOTTED_ARROW",75:"SOLID_CROSS",76:"DOTTED_CROSS",77:"SOLID_POINT",78:"DOTTED_POINT",79:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[63,2],[63,1],[58,3],[58,1],[55,1],[55,1],[17,5],[17,5],[17,4],[22,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[67,1],[56,1]],performAction:function(Ne,Xt,_e,xe,Mn,ce,Br){var we=ce.length-1;switch(Mn){case 3:return xe.apply(ce[we]),ce[we];case 4:case 9:this.$=[];break;case 5:case 10:ce[we-1].push(ce[we]),this.$=ce[we-1];break;case 6:case 7:case 11:case 12:this.$=ce[we];break;case 8:case 13:this.$=[];break;case 15:ce[we].type="createParticipant",this.$=ce[we];break;case 16:ce[we-1].unshift({type:"boxStart",boxData:xe.parseBoxData(ce[we-2])}),ce[we-1].push({type:"boxEnd",boxText:ce[we-2]}),this.$=ce[we-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(ce[we-2]),sequenceIndexStep:Number(ce[we-1]),sequenceVisible:!0,signalType:xe.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(ce[we-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:xe.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:xe.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:xe.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:xe.LINETYPE.ACTIVE_START,actor:ce[we-1]};break;case 23:this.$={type:"activeEnd",signalType:xe.LINETYPE.ACTIVE_END,actor:ce[we-1]};break;case 29:xe.setDiagramTitle(ce[we].substring(6)),this.$=ce[we].substring(6);break;case 30:xe.setDiagramTitle(ce[we].substring(7)),this.$=ce[we].substring(7);break;case 31:this.$=ce[we].trim(),xe.setAccTitle(this.$);break;case 32:case 33:this.$=ce[we].trim(),xe.setAccDescription(this.$);break;case 34:ce[we-1].unshift({type:"loopStart",loopText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.LOOP_START}),ce[we-1].push({type:"loopEnd",loopText:ce[we-2],signalType:xe.LINETYPE.LOOP_END}),this.$=ce[we-1];break;case 35:ce[we-1].unshift({type:"rectStart",color:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.RECT_START}),ce[we-1].push({type:"rectEnd",color:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.RECT_END}),this.$=ce[we-1];break;case 36:ce[we-1].unshift({type:"optStart",optText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.OPT_START}),ce[we-1].push({type:"optEnd",optText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.OPT_END}),this.$=ce[we-1];break;case 37:ce[we-1].unshift({type:"altStart",altText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.ALT_START}),ce[we-1].push({type:"altEnd",signalType:xe.LINETYPE.ALT_END}),this.$=ce[we-1];break;case 38:ce[we-1].unshift({type:"parStart",parText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.PAR_START}),ce[we-1].push({type:"parEnd",signalType:xe.LINETYPE.PAR_END}),this.$=ce[we-1];break;case 39:ce[we-1].unshift({type:"parStart",parText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.PAR_OVER_START}),ce[we-1].push({type:"parEnd",signalType:xe.LINETYPE.PAR_END}),this.$=ce[we-1];break;case 40:ce[we-1].unshift({type:"criticalStart",criticalText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.CRITICAL_START}),ce[we-1].push({type:"criticalEnd",signalType:xe.LINETYPE.CRITICAL_END}),this.$=ce[we-1];break;case 41:ce[we-1].unshift({type:"breakStart",breakText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.BREAK_START}),ce[we-1].push({type:"breakEnd",optText:xe.parseMessage(ce[we-2]),signalType:xe.LINETYPE.BREAK_END}),this.$=ce[we-1];break;case 43:this.$=ce[we-3].concat([{type:"option",optionText:xe.parseMessage(ce[we-1]),signalType:xe.LINETYPE.CRITICAL_OPTION},ce[we]]);break;case 45:this.$=ce[we-3].concat([{type:"and",parText:xe.parseMessage(ce[we-1]),signalType:xe.LINETYPE.PAR_AND},ce[we]]);break;case 47:this.$=ce[we-3].concat([{type:"else",altText:xe.parseMessage(ce[we-1]),signalType:xe.LINETYPE.ALT_ELSE},ce[we]]);break;case 48:ce[we-3].draw="participant",ce[we-3].type="addParticipant",ce[we-3].description=xe.parseMessage(ce[we-1]),this.$=ce[we-3];break;case 49:ce[we-1].draw="participant",ce[we-1].type="addParticipant",this.$=ce[we-1];break;case 50:ce[we-3].draw="actor",ce[we-3].type="addParticipant",ce[we-3].description=xe.parseMessage(ce[we-1]),this.$=ce[we-3];break;case 51:ce[we-1].draw="actor",ce[we-1].type="addParticipant",this.$=ce[we-1];break;case 52:ce[we-1].type="destroyParticipant",this.$=ce[we-1];break;case 53:this.$=[ce[we-1],{type:"addNote",placement:ce[we-2],actor:ce[we-1].actor,text:ce[we]}];break;case 54:ce[we-2]=[].concat(ce[we-1],ce[we-1]).slice(0,2),ce[we-2][0]=ce[we-2][0].actor,ce[we-2][1]=ce[we-2][1].actor,this.$=[ce[we-1],{type:"addNote",placement:xe.PLACEMENT.OVER,actor:ce[we-2].slice(0,2),text:ce[we]}];break;case 55:this.$=[ce[we-1],{type:"addLinks",actor:ce[we-1].actor,text:ce[we]}];break;case 56:this.$=[ce[we-1],{type:"addALink",actor:ce[we-1].actor,text:ce[we]}];break;case 57:this.$=[ce[we-1],{type:"addProperties",actor:ce[we-1].actor,text:ce[we]}];break;case 58:this.$=[ce[we-1],{type:"addDetails",actor:ce[we-1].actor,text:ce[we]}];break;case 61:this.$=[ce[we-2],ce[we]];break;case 62:this.$=ce[we];break;case 63:this.$=xe.PLACEMENT.LEFTOF;break;case 64:this.$=xe.PLACEMENT.RIGHTOF;break;case 65:this.$=[ce[we-4],ce[we-1],{type:"addMessage",from:ce[we-4].actor,to:ce[we-1].actor,signalType:ce[we-3],msg:ce[we],activate:!0},{type:"activeStart",signalType:xe.LINETYPE.ACTIVE_START,actor:ce[we-1]}];break;case 66:this.$=[ce[we-4],ce[we-1],{type:"addMessage",from:ce[we-4].actor,to:ce[we-1].actor,signalType:ce[we-3],msg:ce[we]},{type:"activeEnd",signalType:xe.LINETYPE.ACTIVE_END,actor:ce[we-4]}];break;case 67:this.$=[ce[we-3],ce[we-1],{type:"addMessage",from:ce[we-3].actor,to:ce[we-1].actor,signalType:ce[we-2],msg:ce[we]}];break;case 68:this.$={type:"addParticipant",actor:ce[we]};break;case 69:this.$=xe.LINETYPE.SOLID_OPEN;break;case 70:this.$=xe.LINETYPE.DOTTED_OPEN;break;case 71:this.$=xe.LINETYPE.SOLID;break;case 72:this.$=xe.LINETYPE.DOTTED;break;case 73:this.$=xe.LINETYPE.SOLID_CROSS;break;case 74:this.$=xe.LINETYPE.DOTTED_CROSS;break;case 75:this.$=xe.LINETYPE.SOLID_POINT;break;case 76:this.$=xe.LINETYPE.DOTTED_POINT;break;case 77:this.$=xe.parseMessage(ce[we].trim().substring(1));break}},table:[{3:1,4:a,5:f,6:g},{1:[3]},{3:5,4:a,5:f,6:g},{3:6,4:a,5:f,6:g},i([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,54,59,60,61,62,70],w,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:v,5:b,8:8,9:10,12:12,13:E,14:S,17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},i(Ft,[2,5]),{9:47,12:12,13:E,14:S,17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},i(Ft,[2,7]),i(Ft,[2,8]),i(Ft,[2,14]),{12:48,50:Q,52:dt,53:K},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,70:xt},{22:55,70:xt},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},i(Ft,[2,29]),i(Ft,[2,30]),{32:[1,61]},{34:[1,62]},i(Ft,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,70:xt},{22:72,70:xt},{22:73,70:xt},{67:74,71:[1,75],72:[1,76],73:[1,77],74:[1,78],75:[1,79],76:[1,80],77:[1,81],78:[1,82]},{55:83,57:[1,84],65:[1,85],66:[1,86]},{22:87,70:xt},{22:88,70:xt},{22:89,70:xt},{22:90,70:xt},i([5,51,64,71,72,73,74,75,76,77,78,79],[2,68]),i(Ft,[2,6]),i(Ft,[2,15]),i(Ct,[2,9],{10:91}),i(Ft,[2,17]),{5:[1,93],19:[1,92]},{5:[1,94]},i(Ft,[2,21]),{5:[1,95]},{5:[1,96]},i(Ft,[2,24]),i(Ft,[2,25]),i(Ft,[2,26]),i(Ft,[2,27]),i(Ft,[2,28]),i(Ft,[2,31]),i(Ft,[2,32]),i(kt,w,{7:97}),i(kt,w,{7:98}),i(kt,w,{7:99}),i(Gt,w,{40:100,7:101}),i(Fe,w,{42:102,7:103}),i(Fe,w,{7:103,42:104}),i(Mt,w,{45:105,7:106}),i(kt,w,{7:107}),{5:[1,109],51:[1,108]},{5:[1,111],51:[1,110]},{5:[1,112]},{22:115,68:[1,113],69:[1,114],70:xt},i(pn,[2,69]),i(pn,[2,70]),i(pn,[2,71]),i(pn,[2,72]),i(pn,[2,73]),i(pn,[2,74]),i(pn,[2,75]),i(pn,[2,76]),{22:116,70:xt},{22:118,58:117,70:xt},{70:[2,63]},{70:[2,64]},{56:119,79:Ae},{56:121,79:Ae},{56:122,79:Ae},{56:123,79:Ae},{4:[1,126],5:[1,128],11:125,12:127,16:[1,124],50:Q,52:dt,53:K},{5:[1,129]},i(Ft,[2,19]),i(Ft,[2,20]),i(Ft,[2,22]),i(Ft,[2,23]),{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,130],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,131],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,132],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{16:[1,133]},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[2,46],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,49:[1,134],50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{16:[1,135]},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[2,44],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,48:[1,136],50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{16:[1,137]},{16:[1,138]},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[2,42],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,47:[1,139],50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{4:v,5:b,8:8,9:10,12:12,13:E,14:S,16:[1,140],17:15,18:_,21:M,22:40,23:F,24:19,25:20,26:21,27:22,28:23,29:R,30:B,31:z,33:Y,35:nt,36:ot,37:ft,38:wt,39:mt,41:ct,43:rt,44:it,46:gt,50:Q,52:dt,53:K,54:yt,59:V,60:Ot,61:It,62:jt,70:xt},{15:[1,141]},i(Ft,[2,49]),{15:[1,142]},i(Ft,[2,51]),i(Ft,[2,52]),{22:143,70:xt},{22:144,70:xt},{56:145,79:Ae},{56:146,79:Ae},{56:147,79:Ae},{64:[1,148],79:[2,62]},{5:[2,55]},{5:[2,77]},{5:[2,56]},{5:[2,57]},{5:[2,58]},i(Ft,[2,16]),i(Ct,[2,10]),{12:149,50:Q,52:dt,53:K},i(Ct,[2,12]),i(Ct,[2,13]),i(Ft,[2,18]),i(Ft,[2,34]),i(Ft,[2,35]),i(Ft,[2,36]),i(Ft,[2,37]),{15:[1,150]},i(Ft,[2,38]),{15:[1,151]},i(Ft,[2,39]),i(Ft,[2,40]),{15:[1,152]},i(Ft,[2,41]),{5:[1,153]},{5:[1,154]},{56:155,79:Ae},{56:156,79:Ae},{5:[2,67]},{5:[2,53]},{5:[2,54]},{22:157,70:xt},i(Ct,[2,11]),i(Gt,w,{7:101,40:158}),i(Fe,w,{7:103,42:159}),i(Mt,w,{7:106,45:160}),i(Ft,[2,48]),i(Ft,[2,50]),{5:[2,65]},{5:[2,66]},{79:[2,61]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],85:[2,63],86:[2,64],119:[2,55],120:[2,77],121:[2,56],122:[2,57],123:[2,58],145:[2,67],146:[2,53],147:[2,54],155:[2,65],156:[2,66],157:[2,61],158:[2,47],159:[2,45],160:[2,43]},parseError:function(Ne,Xt){if(Xt.recoverable)this.trace(Ne);else{var _e=new Error(Ne);throw _e.hash=Xt,_e}},parse:function(Ne){var Xt=this,_e=[0],xe=[],Mn=[null],ce=[],Br=this.table,we="",Fi=0,mi=0,ga=2,Ss=1,za=ce.slice.call(arguments,1),br=Object.create(this.lexer),An={yy:{}};for(var Nn in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Nn)&&(An.yy[Nn]=this.yy[Nn]);br.setInput(Ne,An.yy),An.yy.lexer=br,An.yy.parser=this,typeof br.yylloc>"u"&&(br.yylloc={});var Bn=br.yylloc;ce.push(Bn);var ke=br.options&&br.options.ranges;typeof An.yy.parseError=="function"?this.parseError=An.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function pe(){var Zs;return Zs=xe.pop()||br.lex()||Ss,typeof Zs!="number"&&(Zs instanceof Array&&(xe=Zs,Zs=xe.pop()),Zs=Xt.symbols_[Zs]||Zs),Zs}for(var Je,an,xn,qa,xo={},ko,va,Ha,ds;;){if(an=_e[_e.length-1],this.defaultActions[an]?xn=this.defaultActions[an]:((Je===null||typeof Je>"u")&&(Je=pe()),xn=Br[an]&&Br[an][Je]),typeof xn>"u"||!xn.length||!xn[0]){var Fu="";ds=[];for(ko in Br[an])this.terminals_[ko]&&ko>ga&&ds.push("'"+this.terminals_[ko]+"'");br.showPosition?Fu="Parse error on line "+(Fi+1)+`: +`+br.showPosition()+` +Expecting `+ds.join(", ")+", got '"+(this.terminals_[Je]||Je)+"'":Fu="Parse error on line "+(Fi+1)+": Unexpected "+(Je==Ss?"end of input":"'"+(this.terminals_[Je]||Je)+"'"),this.parseError(Fu,{text:br.match,token:this.terminals_[Je]||Je,line:br.yylineno,loc:Bn,expected:ds})}if(xn[0]instanceof Array&&xn.length>1)throw new Error("Parse Error: multiple actions possible at state: "+an+", token: "+Je);switch(xn[0]){case 1:_e.push(Je),Mn.push(br.yytext),ce.push(br.yylloc),_e.push(xn[1]),Je=null,mi=br.yyleng,we=br.yytext,Fi=br.yylineno,Bn=br.yylloc;break;case 2:if(va=this.productions_[xn[1]][1],xo.$=Mn[Mn.length-va],xo._$={first_line:ce[ce.length-(va||1)].first_line,last_line:ce[ce.length-1].last_line,first_column:ce[ce.length-(va||1)].first_column,last_column:ce[ce.length-1].last_column},ke&&(xo._$.range=[ce[ce.length-(va||1)].range[0],ce[ce.length-1].range[1]]),qa=this.performAction.apply(xo,[we,mi,Fi,An.yy,xn[1],Mn,ce].concat(za)),typeof qa<"u")return qa;va&&(_e=_e.slice(0,-1*va*2),Mn=Mn.slice(0,-1*va),ce=ce.slice(0,-1*va)),_e.push(this.productions_[xn[1]][0]),Mn.push(xo.$),ce.push(xo._$),Ha=Br[_e[_e.length-2]][_e[_e.length-1]],_e.push(Ha);break;case 3:return!0}}return!0}},tn=function(){var be={EOF:1,parseError:function(Xt,_e){if(this.yy.parser)this.yy.parser.parseError(Xt,_e);else throw new Error(Xt)},setInput:function(Ne,Xt){return this.yy=Xt||this.yy||{},this._input=Ne,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Ne=this._input[0];this.yytext+=Ne,this.yyleng++,this.offset++,this.match+=Ne,this.matched+=Ne;var Xt=Ne.match(/(?:\r\n?|\n).*/g);return Xt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ne},unput:function(Ne){var Xt=Ne.length,_e=Ne.split(/(?:\r\n?|\n)/g);this._input=Ne+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Xt),this.offset-=Xt;var xe=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),_e.length-1&&(this.yylineno-=_e.length-1);var Mn=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:_e?(_e.length===xe.length?this.yylloc.first_column:0)+xe[xe.length-_e.length].length-_e[0].length:this.yylloc.first_column-Xt},this.options.ranges&&(this.yylloc.range=[Mn[0],Mn[0]+this.yyleng-Xt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Ne){this.unput(this.match.slice(Ne))},pastInput:function(){var Ne=this.matched.substr(0,this.matched.length-this.match.length);return(Ne.length>20?"...":"")+Ne.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Ne=this.match;return Ne.length<20&&(Ne+=this._input.substr(0,20-Ne.length)),(Ne.substr(0,20)+(Ne.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Ne=this.pastInput(),Xt=new Array(Ne.length+1).join("-");return Ne+this.upcomingInput()+` +`+Xt+"^"},test_match:function(Ne,Xt){var _e,xe,Mn;if(this.options.backtrack_lexer&&(Mn={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Mn.yylloc.range=this.yylloc.range.slice(0))),xe=Ne[0].match(/(?:\r\n?|\n).*/g),xe&&(this.yylineno+=xe.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:xe?xe[xe.length-1].length-xe[xe.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ne[0].length},this.yytext+=Ne[0],this.match+=Ne[0],this.matches=Ne,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ne[0].length),this.matched+=Ne[0],_e=this.performAction.call(this,this.yy,this,Xt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),_e)return _e;if(this._backtrack){for(var ce in Mn)this[ce]=Mn[ce];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ne,Xt,_e,xe;this._more||(this.yytext="",this.match="");for(var Mn=this._currentRules(),ce=0;ceXt[0].length)){if(Xt=_e,xe=ce,this.options.backtrack_lexer){if(Ne=this.test_match(_e,Mn[ce]),Ne!==!1)return Ne;if(this._backtrack){Xt=!1;continue}else return!1}else if(!this.options.flex)break}return Xt?(Ne=this.test_match(Xt,Mn[xe]),Ne!==!1?Ne:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Xt=this.next();return Xt||this.lex()},begin:function(Xt){this.conditionStack.push(Xt)},popState:function(){var Xt=this.conditionStack.length-1;return Xt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Xt){return Xt=this.conditionStack.length-1-Math.abs(Xt||0),Xt>=0?this.conditionStack[Xt]:"INITIAL"},pushState:function(Xt){this.begin(Xt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Xt,_e,xe,Mn){switch(xe){case 0:return 5;case 1:break;case 2:break;case 3:break;case 4:break;case 5:break;case 6:return 19;case 7:return this.begin("LINE"),14;case 8:return this.begin("ID"),50;case 9:return this.begin("ID"),52;case 10:return 13;case 11:return this.begin("ID"),53;case 12:return _e.yytext=_e.yytext.trim(),this.begin("ALIAS"),70;case 13:return this.popState(),this.popState(),this.begin("LINE"),51;case 14:return this.popState(),this.popState(),5;case 15:return this.begin("LINE"),36;case 16:return this.begin("LINE"),37;case 17:return this.begin("LINE"),38;case 18:return this.begin("LINE"),39;case 19:return this.begin("LINE"),49;case 20:return this.begin("LINE"),41;case 21:return this.begin("LINE"),43;case 22:return this.begin("LINE"),48;case 23:return this.begin("LINE"),44;case 24:return this.begin("LINE"),47;case 25:return this.begin("LINE"),46;case 26:return this.popState(),15;case 27:return 16;case 28:return 65;case 29:return 66;case 30:return 59;case 31:return 60;case 32:return 61;case 33:return 62;case 34:return 57;case 35:return 54;case 36:return this.begin("ID"),21;case 37:return this.begin("ID"),23;case 38:return 29;case 39:return 30;case 40:return this.begin("acc_title"),31;case 41:return this.popState(),"acc_title_value";case 42:return this.begin("acc_descr"),33;case 43:return this.popState(),"acc_descr_value";case 44:this.begin("acc_descr_multiline");break;case 45:this.popState();break;case 46:return"acc_descr_multiline_value";case 47:return 6;case 48:return 18;case 49:return 20;case 50:return 64;case 51:return 5;case 52:return _e.yytext=_e.yytext.trim(),70;case 53:return 73;case 54:return 74;case 55:return 71;case 56:return 72;case 57:return 75;case 58:return 76;case 59:return 77;case 60:return 78;case 61:return 79;case 62:return 68;case 63:return 69;case 64:return 5;case 65:return"INVALID"}},rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^\->:\n,;]+?([\-]*[^\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^\+\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]+)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[45,46],inclusive:!1},acc_descr:{rules:[43],inclusive:!1},acc_title:{rules:[41],inclusive:!1},ID:{rules:[2,3,12],inclusive:!1},ALIAS:{rules:[2,3,13,14],inclusive:!1},LINE:{rules:[2,3,26],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,7,8,9,10,11,15,16,17,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35,36,37,38,39,40,42,44,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65],inclusive:!0}}};return be}();ye.lexer=tn;function sn(){this.yy={}}return sn.prototype=ye,ye.Parser=sn,new sn}();Obt.parser=Obt;const lQe=Obt;class hQe{constructor(a){this.init=a,this.records=this.init()}reset(){this.records=this.init()}}const ws=new hQe(()=>({prevActor:void 0,actors:{},createdActors:{},destroyedActors:{},boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0})),fQe=function(i){ws.records.boxes.push({name:i.text,wrap:i.wrap===void 0&&F9()||!!i.wrap,fill:i.color,actorKeys:[]}),ws.records.currentBox=ws.records.boxes.slice(-1)[0]},Nbt=function(i,a,f,g){let w=ws.records.currentBox;const v=ws.records.actors[i];if(v){if(ws.records.currentBox&&v.box&&ws.records.currentBox!==v.box)throw new Error("A same participant should only be defined in one Box: "+v.name+" can't be in '"+v.box.name+"' and in '"+ws.records.currentBox.name+"' at the same time.");if(w=v.box?v.box:ws.records.currentBox,v.box=w,v&&a===v.name&&f==null)return}(f==null||f.text==null)&&(f={text:a,wrap:null,type:g}),(g==null||f.text==null)&&(f={text:a,wrap:null,type:g}),ws.records.actors[i]={box:w,name:a,description:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap,prevActor:ws.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:g||"participant"},ws.records.prevActor&&ws.records.actors[ws.records.prevActor]&&(ws.records.actors[ws.records.prevActor].nextActor=i),ws.records.currentBox&&ws.records.currentBox.actorKeys.push(i),ws.records.prevActor=i},dQe=i=>{let a,f=0;for(a=0;a>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},b}return ws.records.messages.push({from:i,to:a,message:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap,type:g,activate:w}),!0},pQe=function(){return ws.records.boxes.length>0},bQe=function(){return ws.records.boxes.some(i=>i.name)},wQe=function(){return ws.records.messages},mQe=function(){return ws.records.boxes},vQe=function(){return ws.records.actors},yQe=function(){return ws.records.createdActors},xQe=function(){return ws.records.destroyedActors},bB=function(i){return ws.records.actors[i]},kQe=function(){return Object.keys(ws.records.actors)},EQe=function(){ws.records.sequenceNumbersEnabled=!0},TQe=function(){ws.records.sequenceNumbersEnabled=!1},CQe=()=>ws.records.sequenceNumbersEnabled,SQe=function(i){ws.records.wrapEnabled=i},F9=()=>ws.records.wrapEnabled!==void 0?ws.records.wrapEnabled:Re().sequence.wrap,_Qe=function(){ws.reset(),ag()},AQe=function(i){const a=i.trim(),f={text:a.replace(/^:?(?:no)?wrap:/,"").trim(),wrap:a.match(/^:?wrap:/)!==null?!0:a.match(/^:?nowrap:/)!==null?!1:void 0};return Kt.debug("parseMessage:",f),f},LQe=function(i){const a=i.match(/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/);let f=a!=null&&a[1]?a[1].trim():"transparent",g=a!=null&&a[2]?a[2].trim():void 0;if(window&&window.CSS)window.CSS.supports("color",f)||(f="transparent",g=i.trim());else{const w=new Option().style;w.color=f,w.color!==f&&(f="transparent",g=i.trim())}return{color:f,text:g!==void 0?Ef(g.replace(/^:?(?:no)?wrap:/,""),Re()):void 0,wrap:g!==void 0?g.match(/^:?wrap:/)!==null?!0:g.match(/^:?nowrap:/)!==null?!1:void 0:void 0}},wB={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32},DQe={FILLED:0,OPEN:1},MQe={LEFTOF:0,RIGHTOF:1,OVER:2},fqt=function(i,a,f){const g={actor:i,placement:a,message:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap},w=[].concat(i,i);ws.records.notes.push(g),ws.records.messages.push({from:w[0],to:w[1],message:f.text,wrap:f.wrap===void 0&&F9()||!!f.wrap,type:wB.NOTE,placement:a})},dqt=function(i,a){const f=bB(i);try{let g=Ef(a.text,Re());g=g.replace(/&/g,"&"),g=g.replace(/=/g,"=");const w=JSON.parse(g);Pbt(f,w)}catch(g){Kt.error("error while parsing actor link text",g)}},IQe=function(i,a){const f=bB(i);try{const b={};let E=Ef(a.text,Re());var g=E.indexOf("@");E=E.replace(/&/g,"&"),E=E.replace(/=/g,"=");var w=E.slice(0,g-1).trim(),v=E.slice(g+1).trim();b[w]=v,Pbt(f,b)}catch(b){Kt.error("error while parsing actor link text",b)}};function Pbt(i,a){if(i.links==null)i.links=a;else for(let f in a)i.links[f]=a[f]}const gqt=function(i,a){const f=bB(i);try{let g=Ef(a.text,Re());const w=JSON.parse(g);pqt(f,w)}catch(g){Kt.error("error while parsing actor properties text",g)}};function pqt(i,a){if(i.properties==null)i.properties=a;else for(let f in a)i.properties[f]=a[f]}function OQe(){ws.records.currentBox=void 0}const bqt=function(i,a){const f=bB(i),g=document.getElementById(a.text);try{const w=g.innerHTML,v=JSON.parse(w);v.properties&&pqt(f,v.properties),v.links&&Pbt(f,v.links)}catch(w){Kt.error("error while parsing actor details text",w)}},NQe=function(i,a){if(i!==void 0&&i.properties!==void 0)return i.properties[a]},wqt=function(i){if(Array.isArray(i))i.forEach(function(a){wqt(a)});else switch(i.type){case"sequenceIndex":ws.records.messages.push({from:void 0,to:void 0,message:{start:i.sequenceIndex,step:i.sequenceIndexStep,visible:i.sequenceVisible},wrap:!1,type:i.signalType});break;case"addParticipant":Nbt(i.actor,i.actor,i.description,i.draw);break;case"createParticipant":if(ws.records.actors[i.actor])throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");ws.records.lastCreated=i.actor,Nbt(i.actor,i.actor,i.description,i.draw),ws.records.createdActors[i.actor]=ws.records.messages.length;break;case"destroyParticipant":ws.records.lastDestroyed=i.actor,ws.records.destroyedActors[i.actor]=ws.records.messages.length;break;case"activeStart":Sf(i.actor,void 0,void 0,i.signalType);break;case"activeEnd":Sf(i.actor,void 0,void 0,i.signalType);break;case"addNote":fqt(i.actor,i.placement,i.text);break;case"addLinks":dqt(i.actor,i.text);break;case"addALink":IQe(i.actor,i.text);break;case"addProperties":gqt(i.actor,i.text);break;case"addDetails":bqt(i.actor,i.text);break;case"addMessage":if(ws.records.lastCreated){if(i.to!==ws.records.lastCreated)throw new Error("The created participant "+ws.records.lastCreated+" does not have an associated creating message after its declaration. Please check the sequence diagram.");ws.records.lastCreated=void 0}else if(ws.records.lastDestroyed){if(i.to!==ws.records.lastDestroyed&&i.from!==ws.records.lastDestroyed)throw new Error("The destroyed participant "+ws.records.lastDestroyed+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");ws.records.lastDestroyed=void 0}Sf(i.from,i.to,i.msg,i.signalType,i.activate);break;case"boxStart":fQe(i.boxData);break;case"boxEnd":OQe();break;case"loopStart":Sf(void 0,void 0,i.loopText,i.signalType);break;case"loopEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"rectStart":Sf(void 0,void 0,i.color,i.signalType);break;case"rectEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"optStart":Sf(void 0,void 0,i.optText,i.signalType);break;case"optEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"altStart":Sf(void 0,void 0,i.altText,i.signalType);break;case"else":Sf(void 0,void 0,i.altText,i.signalType);break;case"altEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"setAccTitle":og(i.text);break;case"parStart":Sf(void 0,void 0,i.parText,i.signalType);break;case"and":Sf(void 0,void 0,i.parText,i.signalType);break;case"parEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"criticalStart":Sf(void 0,void 0,i.criticalText,i.signalType);break;case"option":Sf(void 0,void 0,i.optionText,i.signalType);break;case"criticalEnd":Sf(void 0,void 0,void 0,i.signalType);break;case"breakStart":Sf(void 0,void 0,i.breakText,i.signalType);break;case"breakEnd":Sf(void 0,void 0,void 0,i.signalType);break}},mqt={addActor:Nbt,addMessage:gQe,addSignal:Sf,addLinks:dqt,addDetails:bqt,addProperties:gqt,autoWrap:F9,setWrap:SQe,enableSequenceNumbers:EQe,disableSequenceNumbers:TQe,showSequenceNumbers:CQe,getMessages:wQe,getActors:vQe,getCreatedActors:yQe,getDestroyedActors:xQe,getActor:bB,getActorKeys:kQe,getActorProperty:NQe,getAccTitle:Xg,getBoxes:mQe,getDiagramTitle:Zg,setDiagramTitle:S2,getConfig:()=>Re().sequence,clear:_Qe,parseMessage:AQe,parseBoxData:LQe,LINETYPE:wB,ARROWTYPE:DQe,PLACEMENT:MQe,addNote:fqt,setAccTitle:og,apply:wqt,setAccDescription:Qg,getAccDescription:Jg,hasAtLeastOneBox:pQe,hasAtLeastOneBoxWithTitle:bQe},PQe=i=>`.actor { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + + text.actor > tspan { + fill: ${i.actorTextColor}; + stroke: none; + } + + .actor-line { + stroke: ${i.actorLineColor}; + } + + .messageLine0 { + stroke-width: 1.5; + stroke-dasharray: none; + stroke: ${i.signalColor}; + } + + .messageLine1 { + stroke-width: 1.5; + stroke-dasharray: 2, 2; + stroke: ${i.signalColor}; + } + + #arrowhead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .sequenceNumber { + fill: ${i.sequenceNumberColor}; + } + + #sequencenumber { + fill: ${i.signalColor}; + } + + #crosshead path { + fill: ${i.signalColor}; + stroke: ${i.signalColor}; + } + + .messageText { + fill: ${i.signalTextColor}; + stroke: none; + } + + .labelBox { + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBkgColor}; + } + + .labelText, .labelText > tspan { + fill: ${i.labelTextColor}; + stroke: none; + } + + .loopText, .loopText > tspan { + fill: ${i.loopTextColor}; + stroke: none; + } + + .loopLine { + stroke-width: 2px; + stroke-dasharray: 2, 2; + stroke: ${i.labelBoxBorderColor}; + fill: ${i.labelBoxBorderColor}; + } + + .note { + //stroke: #decc93; + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + } + + .noteText, .noteText > tspan { + fill: ${i.noteTextColor}; + stroke: none; + } + + .activation0 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation1 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .activation2 { + fill: ${i.activationBkgColor}; + stroke: ${i.activationBorderColor}; + } + + .actorPopupMenu { + position: absolute; + } + + .actorPopupMenuPanel { + position: absolute; + fill: ${i.actorBkg}; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4)); +} + .actor-man line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + } + .actor-man circle, line { + stroke: ${i.actorBorder}; + fill: ${i.actorBkg}; + stroke-width: 2px; + } +`,B9=18*2,vqt="actor-top",yqt="actor-bottom",Fbt=function(i,a){return LY(i,a)},FQe=function(i,a,f,g,w){if(a.links===void 0||a.links===null||Object.keys(a.links).length===0)return{height:0,width:0};const v=a.links,b=a.actorCnt,E=a.rectData;var S="none";w&&(S="block !important");const _=i.append("g");_.attr("id","actor"+b+"_popup"),_.attr("class","actorPopupMenu"),_.attr("display",S);var M="";E.class!==void 0&&(M=" "+E.class);let F=E.width>f?E.width:f;const R=_.append("rect");if(R.attr("class","actorPopupMenuPanel"+M),R.attr("x",E.x),R.attr("y",E.height),R.attr("fill",E.fill),R.attr("stroke",E.stroke),R.attr("width",F),R.attr("height",E.height),R.attr("rx",E.rx),R.attr("ry",E.ry),v!=null){var B=20;for(let nt in v){var z=_.append("a"),Y=h8(v[nt]);z.attr("xlink:href",Y),z.attr("target","_blank"),ZQe(g)(nt,z,E.x+10,E.height+B,F,20,{class:"actor"},g),B+=30}}return R.attr("height",B),{height:E.height+B,width:F}},BQe=function(i){return"var pu = document.getElementById('"+i+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"},DD=function(i,a){let f=0,g=0;const w=a.text.split(ei.lineBreakRegex),[v,b]=k9(a.fontSize);let E=[],S=0,_=()=>a.y;if(a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0)switch(a.valign){case"top":case"start":_=()=>Math.round(a.y+a.textMargin);break;case"middle":case"center":_=()=>Math.round(a.y+(f+g+a.textMargin)/2);break;case"bottom":case"end":_=()=>Math.round(a.y+(f+g+2*a.textMargin)-a.textMargin);break}if(a.anchor!==void 0&&a.textMargin!==void 0&&a.width!==void 0)switch(a.anchor){case"left":case"start":a.x=Math.round(a.x+a.textMargin),a.anchor="start",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"middle":case"center":a.x=Math.round(a.x+a.width/2),a.anchor="middle",a.dominantBaseline="middle",a.alignmentBaseline="middle";break;case"right":case"end":a.x=Math.round(a.x+a.width-a.textMargin),a.anchor="end",a.dominantBaseline="middle",a.alignmentBaseline="middle";break}for(let[M,F]of w.entries()){a.textMargin!==void 0&&a.textMargin===0&&v!==void 0&&(S=M*v);const R=i.append("text");R.attr("x",a.x),R.attr("y",_()),a.anchor!==void 0&&R.attr("text-anchor",a.anchor).attr("dominant-baseline",a.dominantBaseline).attr("alignment-baseline",a.alignmentBaseline),a.fontFamily!==void 0&&R.style("font-family",a.fontFamily),b!==void 0&&R.style("font-size",b),a.fontWeight!==void 0&&R.style("font-weight",a.fontWeight),a.fill!==void 0&&R.attr("fill",a.fill),a.class!==void 0&&R.attr("class",a.class),a.dy!==void 0?R.attr("dy",a.dy):S!==0&&R.attr("dy",S);const B=F||kFt;if(a.tspan){const z=R.append("tspan");z.attr("x",a.x),a.fill!==void 0&&z.attr("fill",a.fill),z.text(B)}else R.text(B);a.valign!==void 0&&a.textMargin!==void 0&&a.textMargin>0&&(g+=(R._groups||R)[0][0].getBBox().height,f=g),E.push(R)}return E},xqt=function(i,a){function f(w,v,b,E,S){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-S)+" "+(w+b-S*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");return g.attr("points",f(a.x,a.y,a.width,a.height,7)),g.attr("class","labelBox"),a.y=a.y+a.height/2,DD(i,a),g};let f4=-1;const kqt=(i,a,f,g)=>{i.select&&f.forEach(w=>{const v=a[w],b=i.select("#actor"+v.actorCnt);!g.mirrorActors&&v.stopy?b.attr("y2",v.stopy+v.height/2):g.mirrorActors&&b.attr("y2",v.stopy)})},RQe=function(i,a,f,g){const w=g?a.stopy:a.starty,v=a.x+a.width/2,b=w+5,E=i.append("g").lower();var S=E;g||(f4++,Object.keys(a.links||{}).length&&!f.forceMenus&&S.attr("onclick",BQe(`actor${f4}_popup`)).attr("cursor","pointer"),S.append("line").attr("id","actor"+f4).attr("x1",v).attr("y1",b).attr("x2",v).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),S=E.append("g"),a.actorCnt=f4,a.links!=null&&S.attr("id","root-"+f4));const _=_9();var M="actor";a.properties!=null&&a.properties.class?M=a.properties.class:_.fill="#eaeaea",g?M+=` ${yqt}`:M+=` ${vqt}`,_.x=a.x,_.y=w,_.width=a.width,_.height=a.height,_.class=M,_.rx=3,_.ry=3;const F=Fbt(S,_);if(a.rectData=_,a.properties!=null&&a.properties.icon){const B=a.properties.icon.trim();B.charAt(0)==="@"?KRe(S,_.x+_.width-20,_.y+10,B.substr(1)):GRe(S,_.x+_.width-20,_.y+10,B)}Bbt(f)(a.description,S,_.x,_.y,_.width,_.height,{class:"actor"},f);let R=a.height;if(F.node){const B=F.node().getBBox();a.height=B.height,R=B.height}return R},jQe=function(i,a,f,g){const w=g?a.stopy:a.starty,v=a.x+a.width/2,b=w+80;i.lower(),g||(f4++,i.append("line").attr("id","actor"+f4).attr("x1",v).attr("y1",b).attr("x2",v).attr("y2",2e3).attr("class","actor-line").attr("class","200").attr("stroke-width","0.5px").attr("stroke","#999"),a.actorCnt=f4);const E=i.append("g");let S="actor-man";g?S+=` ${yqt}`:S+=` ${vqt}`,E.attr("class",S);const _=_9();_.x=a.x,_.y=w,_.fill="#eaeaea",_.width=a.width,_.height=a.height,_.class="actor",_.rx=3,_.ry=3,E.append("line").attr("id","actor-man-torso"+f4).attr("x1",v).attr("y1",w+25).attr("x2",v).attr("y2",w+45),E.append("line").attr("id","actor-man-arms"+f4).attr("x1",v-B9/2).attr("y1",w+33).attr("x2",v+B9/2).attr("y2",w+33),E.append("line").attr("x1",v-B9/2).attr("y1",w+60).attr("x2",v).attr("y2",w+45),E.append("line").attr("x1",v).attr("y1",w+45).attr("x2",v+B9/2-2).attr("y2",w+60);const M=E.append("circle");M.attr("cx",a.x+a.width/2),M.attr("cy",w+10),M.attr("r",15),M.attr("width",a.width),M.attr("height",a.height);const F=E.node().getBBox();return a.height=F.height,Bbt(f)(a.description,E,_.x,_.y+35,_.width,_.height,{class:"actor"},f),a.height},$Qe=function(i,a,f,g){switch(a.type){case"actor":return jQe(i,a,f,g);case"participant":return RQe(i,a,f,g)}},zQe=function(i,a,f){const w=i.append("g");Eqt(w,a),a.name&&Bbt(f)(a.name,w,a.x,a.y+(a.textMaxHeight||0)/2,a.width,0,{class:"text"},f),w.lower()},qQe=function(i){return i.append("g")},HQe=function(i,a,f,g,w){const v=_9(),b=a.anchored;v.x=a.startx,v.y=a.starty,v.class="activation"+w%3,v.width=a.stopx-a.startx,v.height=f-a.starty,Fbt(b,v)},VQe=function(i,a,f,g){const{boxMargin:w,boxTextMargin:v,labelBoxHeight:b,labelBoxWidth:E,messageFontFamily:S,messageFontSize:_,messageFontWeight:M}=g,F=i.append("g"),R=function(Y,nt,ot,ft){return F.append("line").attr("x1",Y).attr("y1",nt).attr("x2",ot).attr("y2",ft).attr("class","loopLine")};R(a.startx,a.starty,a.stopx,a.starty),R(a.stopx,a.starty,a.stopx,a.stopy),R(a.startx,a.stopy,a.stopx,a.stopy),R(a.startx,a.starty,a.startx,a.stopy),a.sections!==void 0&&a.sections.forEach(function(Y){R(a.startx,Y.y,a.stopx,Y.y).style("stroke-dasharray","3, 3")});let B=tpt();B.text=f,B.x=a.startx,B.y=a.starty,B.fontFamily=S,B.fontSize=_,B.fontWeight=M,B.anchor="middle",B.valign="middle",B.tspan=!1,B.width=E||50,B.height=b||20,B.textMargin=v,B.class="labelText",xqt(F,B),B=Tqt(),B.text=a.title,B.x=a.startx+E/2+(a.stopx-a.startx)/2,B.y=a.starty+w+v,B.anchor="middle",B.valign="middle",B.textMargin=v,B.class="loopText",B.fontFamily=S,B.fontSize=_,B.fontWeight=M,B.wrap=!0;let z=DD(F,B);return a.sectionTitles!==void 0&&a.sectionTitles.forEach(function(Y,nt){if(Y.message){B.text=Y.message,B.x=a.startx+(a.stopx-a.startx)/2,B.y=a.sections[nt].y+w+v,B.class="loopText",B.anchor="middle",B.valign="middle",B.tspan=!1,B.fontFamily=S,B.fontSize=_,B.fontWeight=M,B.wrap=a.wrap,z=DD(F,B);let ot=Math.round(z.map(ft=>(ft._groups||ft)[0][0].getBBox().height).reduce((ft,wt)=>ft+wt));a.sections[nt].height+=ot-(w+v)}}),a.height=Math.round(a.stopy-a.starty),F},Eqt=function(i,a){sRt(i,a)},UQe=function(i){i.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")},GQe=function(i){i.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")},KQe=function(i){i.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")},WQe=function(i){i.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")},YQe=function(i){i.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},XQe=function(i){i.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)},QQe=function(i){i.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")},Tqt=function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}},JQe=function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}},Bbt=function(){function i(w,v,b,E,S,_,M){const F=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("text-anchor","middle").text(w);g(F,M)}function a(w,v,b,E,S,_,M,F){const{actorFontSize:R,actorFontFamily:B,actorFontWeight:z}=F,[Y,nt]=k9(R),ot=w.split(ei.lineBreakRegex);for(let ft=0;fti.height||0))+(this.loops.length===0?0:this.loops.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.messages.length===0?0:this.messages.map(i=>i.height||0).reduce((i,a)=>i+a))+(this.notes.length===0?0:this.notes.map(i=>i.height||0).reduce((i,a)=>i+a))},clear:function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]},addBox:function(i){this.boxes.push(i)},addActor:function(i){this.actors.push(i)},addLoop:function(i){this.loops.push(i)},addMessage:function(i){this.messages.push(i)},addNote:function(i){this.notes.push(i)},lastActor:function(){return this.actors[this.actors.length-1]},lastLoop:function(){return this.loops[this.loops.length-1]},lastMessage:function(){return this.messages[this.messages.length-1]},lastNote:function(){return this.notes[this.notes.length-1]},actors:[],boxes:[],loops:[],messages:[],notes:[]},init:function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,Sqt(Re())},updateVal:function(i,a,f,g){i[a]===void 0?i[a]=f:i[a]=g(f,i[a])},updateBounds:function(i,a,f,g){const w=this;let v=0;function b(E){return function(_){v++;const M=w.sequenceItems.length-v+1;w.updateVal(_,"starty",a-M*bn.boxMargin,Math.min),w.updateVal(_,"stopy",g+M*bn.boxMargin,Math.max),w.updateVal(Wr.data,"startx",i-M*bn.boxMargin,Math.min),w.updateVal(Wr.data,"stopx",f+M*bn.boxMargin,Math.max),E!=="activation"&&(w.updateVal(_,"startx",i-M*bn.boxMargin,Math.min),w.updateVal(_,"stopx",f+M*bn.boxMargin,Math.max),w.updateVal(Wr.data,"starty",a-M*bn.boxMargin,Math.min),w.updateVal(Wr.data,"stopy",g+M*bn.boxMargin,Math.max))}}this.sequenceItems.forEach(b()),this.activations.forEach(b("activation"))},insert:function(i,a,f,g){const w=ei.getMin(i,f),v=ei.getMax(i,f),b=ei.getMin(a,g),E=ei.getMax(a,g);this.updateVal(Wr.data,"startx",w,Math.min),this.updateVal(Wr.data,"starty",b,Math.min),this.updateVal(Wr.data,"stopx",v,Math.max),this.updateVal(Wr.data,"stopy",E,Math.max),this.updateBounds(w,b,v,E)},newActivation:function(i,a,f){const g=f[i.from.actor],w=bX(i.from.actor).length||0,v=g.x+g.width/2+(w-1)*bn.activationWidth/2;this.activations.push({startx:v,starty:this.verticalPos+2,stopx:v+bn.activationWidth,stopy:void 0,actor:i.from.actor,anchored:_f.anchorElement(a)})},endActivation:function(i){const a=this.activations.map(function(f){return f.actor}).lastIndexOf(i.from.actor);return this.activations.splice(a,1)[0]},createLoop:function(i={message:void 0,wrap:!1,width:void 0},a){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:i.message,wrap:i.wrap,width:i.width,height:0,fill:a}},newLoop:function(i={message:void 0,wrap:!1,width:void 0},a){this.sequenceItems.push(this.createLoop(i,a))},endLoop:function(){return this.sequenceItems.pop()},isLoopOverlap:function(){return this.sequenceItems.length?this.sequenceItems[this.sequenceItems.length-1].overlap:!1},addSectionToLoop:function(i){const a=this.sequenceItems.pop();a.sections=a.sections||[],a.sectionTitles=a.sectionTitles||[],a.sections.push({y:Wr.getVerticalPos(),height:0}),a.sectionTitles.push(i),this.sequenceItems.push(a)},saveVerticalPos:function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)},resetVerticalPos:function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=ei.getMax(this.data.stopy,this.verticalPos)},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return{bounds:this.data,models:this.models}}},tJe=function(i,a){Wr.bumpVerticalPos(bn.boxMargin),a.height=bn.boxMargin,a.starty=Wr.getVerticalPos();const f=_9();f.x=a.startx,f.y=a.starty,f.width=a.width||bn.width,f.class="note";const g=i.append("g"),w=_f.drawRect(g,f),v=tpt();v.x=a.startx,v.y=a.starty,v.width=f.width,v.dy="1em",v.text=a.message,v.class="noteText",v.fontFamily=bn.noteFontFamily,v.fontSize=bn.noteFontSize,v.fontWeight=bn.noteFontWeight,v.anchor=bn.noteAlign,v.textMargin=bn.noteMargin,v.valign="center";const b=DD(g,v),E=Math.round(b.map(S=>(S._groups||S)[0][0].getBBox().height).reduce((S,_)=>S+_));w.attr("height",E+2*bn.noteMargin),a.height+=E+2*bn.noteMargin,Wr.bumpVerticalPos(E+2*bn.noteMargin),a.stopy=a.starty+E+2*bn.noteMargin,a.stopx=a.startx+f.width,Wr.insert(a.startx,a.starty,a.stopx,a.stopy),Wr.models.addNote(a)},R9=i=>({fontFamily:i.messageFontFamily,fontSize:i.messageFontSize,fontWeight:i.messageFontWeight}),MD=i=>({fontFamily:i.noteFontFamily,fontSize:i.noteFontSize,fontWeight:i.noteFontWeight}),Rbt=i=>({fontFamily:i.actorFontFamily,fontSize:i.actorFontSize,fontWeight:i.actorFontWeight});function eJe(i,a){Wr.bumpVerticalPos(10);const{startx:f,stopx:g,message:w}=a,v=ei.splitBreaks(w).length,b=uo.calculateTextDimensions(w,R9(bn)),E=b.height/v;a.height+=E,Wr.bumpVerticalPos(E);let S,_=b.height-10;const M=b.width;if(f===g){S=Wr.getVerticalPos()+_,bn.rightAngles||(_+=bn.boxMargin,S=Wr.getVerticalPos()+_),_+=30;const F=ei.getMax(M/2,bn.width/2);Wr.insert(f-F,Wr.getVerticalPos()-10+_,g+F,Wr.getVerticalPos()+30+_)}else _+=bn.boxMargin,S=Wr.getVerticalPos()+_,Wr.insert(f,S-10,g,S);return Wr.bumpVerticalPos(_),a.height+=_,a.stopy=a.starty+a.height,Wr.insert(a.fromBounds,a.starty,a.toBounds,a.stopy),S}const nJe=function(i,a,f,g){const{startx:w,stopx:v,starty:b,message:E,type:S,sequenceIndex:_,sequenceVisible:M}=a,F=uo.calculateTextDimensions(E,R9(bn)),R=tpt();R.x=w,R.y=b+10,R.width=v-w,R.class="messageText",R.dy="1em",R.text=E,R.fontFamily=bn.messageFontFamily,R.fontSize=bn.messageFontSize,R.fontWeight=bn.messageFontWeight,R.anchor=bn.messageAlign,R.valign="center",R.textMargin=bn.wrapPadding,R.tspan=!1,DD(i,R);const B=F.width;let z;w===v?bn.rightAngles?z=i.append("path").attr("d",`M ${w},${f} H ${w+ei.getMax(bn.width/2,B/2)} V ${f+25} H ${w}`):z=i.append("path").attr("d","M "+w+","+f+" C "+(w+60)+","+(f-10)+" "+(w+60)+","+(f+30)+" "+w+","+(f+20)):(z=i.append("line"),z.attr("x1",w),z.attr("y1",f),z.attr("x2",v),z.attr("y2",f)),S===g.db.LINETYPE.DOTTED||S===g.db.LINETYPE.DOTTED_CROSS||S===g.db.LINETYPE.DOTTED_POINT||S===g.db.LINETYPE.DOTTED_OPEN?(z.style("stroke-dasharray","3, 3"),z.attr("class","messageLine1")):z.attr("class","messageLine0");let Y="";bn.arrowMarkerAbsolute&&(Y=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,Y=Y.replace(/\(/g,"\\("),Y=Y.replace(/\)/g,"\\)")),z.attr("stroke-width",2),z.attr("stroke","none"),z.style("fill","none"),(S===g.db.LINETYPE.SOLID||S===g.db.LINETYPE.DOTTED)&&z.attr("marker-end","url("+Y+"#arrowhead)"),(S===g.db.LINETYPE.SOLID_POINT||S===g.db.LINETYPE.DOTTED_POINT)&&z.attr("marker-end","url("+Y+"#filled-head)"),(S===g.db.LINETYPE.SOLID_CROSS||S===g.db.LINETYPE.DOTTED_CROSS)&&z.attr("marker-end","url("+Y+"#crosshead)"),(M||bn.showSequenceNumbers)&&(z.attr("marker-start","url("+Y+"#sequencenumber)"),i.append("text").attr("x",w).attr("y",f+4).attr("font-family","sans-serif").attr("font-size","12px").attr("text-anchor","middle").attr("class","sequenceNumber").text(_))},rJe=function(i,a,f,g,w,v,b){let E=0,S=0,_,M=0;for(const F of g){const R=a[F],B=R.box;_&&_!=B&&(b||Wr.models.addBox(_),S+=bn.boxMargin+_.margin),B&&B!=_&&(b||(B.x=E+S,B.y=w),S+=B.margin),R.width=R.width||bn.width,R.height=ei.getMax(R.height||bn.height,bn.height),R.margin=R.margin||bn.actorMargin,M=ei.getMax(M,R.height),f[R.name]&&(S+=R.width/2),R.x=E+S,R.starty=Wr.getVerticalPos(),Wr.insert(R.x,w,R.x+R.width,R.height),E+=R.width+S,R.box&&(R.box.width=E+B.margin-R.box.x),S=R.margin,_=R.box,Wr.models.addActor(R)}_&&!b&&Wr.models.addBox(_),Wr.bumpVerticalPos(M)},jbt=function(i,a,f,g){if(g){let w=0;Wr.bumpVerticalPos(bn.boxMargin*2);for(const v of f){const b=a[v];b.stopy||(b.stopy=Wr.getVerticalPos());const E=_f.drawActor(i,b,bn,!0);w=ei.getMax(w,E)}Wr.bumpVerticalPos(w+bn.boxMargin)}else for(const w of f){const v=a[w];_f.drawActor(i,v,bn,!1)}},Cqt=function(i,a,f,g){let w=0,v=0;for(const b of f){const E=a[b],S=oJe(E),_=_f.drawPopup(i,E,S,bn,bn.forceMenus,g);_.height>w&&(w=_.height),_.width+E.x>v&&(v=_.width+E.x)}return{maxHeight:w,maxWidth:v}},Sqt=function(i){Ld(bn,i),i.fontFamily&&(bn.actorFontFamily=bn.noteFontFamily=bn.messageFontFamily=i.fontFamily),i.fontSize&&(bn.actorFontSize=bn.noteFontSize=bn.messageFontSize=i.fontSize),i.fontWeight&&(bn.actorFontWeight=bn.noteFontWeight=bn.messageFontWeight=i.fontWeight)},bX=function(i){return Wr.activations.filter(function(a){return a.actor===i})},_qt=function(i,a){const f=a[i],g=bX(i),w=g.reduce(function(b,E){return ei.getMin(b,E.startx)},f.x+f.width/2-1),v=g.reduce(function(b,E){return ei.getMax(b,E.stopx)},f.x+f.width/2+1);return[w,v]};function d4(i,a,f,g,w){Wr.bumpVerticalPos(f);let v=g;if(a.id&&a.message&&i[a.id]){const b=i[a.id].width,E=R9(bn);a.message=uo.wrapLabel(`[${a.message}]`,b-2*bn.wrapPadding,E),a.width=b,a.wrap=!0;const S=uo.calculateTextDimensions(a.message,E),_=ei.getMax(S.height,bn.labelBoxHeight);v=g+_,Kt.debug(`${_} - ${a.message}`)}w(a),Wr.bumpVerticalPos(v)}function iJe(i,a,f,g,w,v,b){function E(_,M){_.x{xt.add(Ft.from),xt.add(Ft.to)}),z=z.filter(Ft=>xt.has(Ft))}rJe(_,M,F,z,0,Y,!1);const mt=hJe(Y,M,wt,g);_f.insertArrowHead(_),_f.insertArrowCrossHead(_),_f.insertArrowFilledHead(_),_f.insertSequenceNumber(_);function ct(xt,Ft){const Ct=Wr.endActivation(xt);Ct.starty+18>Ft&&(Ct.starty=Ft-6,Ft+=12),_f.drawActivation(_,Ct,Ft,bn,bX(xt.from.actor).length),Wr.insert(Ct.startx,Ft-10,Ct.stopx,Ft)}let rt=1,it=1;const gt=[],Q=[];Y.forEach(function(xt,Ft){let Ct,kt,Gt;switch(xt.type){case g.db.LINETYPE.NOTE:Wr.resetVerticalPos(),kt=xt.noteModel,tJe(_,kt);break;case g.db.LINETYPE.ACTIVE_START:Wr.newActivation(xt,_,M);break;case g.db.LINETYPE.ACTIVE_END:ct(xt,Wr.getVerticalPos());break;case g.db.LINETYPE.LOOP_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.LOOP_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"loop",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.RECT_START:d4(mt,xt,bn.boxMargin,bn.boxMargin,Fe=>Wr.newLoop(void 0,Fe.message));break;case g.db.LINETYPE.RECT_END:Ct=Wr.endLoop(),Q.push(Ct),Wr.models.addLoop(Ct),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos());break;case g.db.LINETYPE.OPT_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.OPT_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"opt",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.ALT_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.ALT_ELSE:d4(mt,xt,bn.boxMargin+bn.boxTextMargin,bn.boxMargin,Fe=>Wr.addSectionToLoop(Fe));break;case g.db.LINETYPE.ALT_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"alt",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.PAR_START:case g.db.LINETYPE.PAR_OVER_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe)),Wr.saveVerticalPos();break;case g.db.LINETYPE.PAR_AND:d4(mt,xt,bn.boxMargin+bn.boxTextMargin,bn.boxMargin,Fe=>Wr.addSectionToLoop(Fe));break;case g.db.LINETYPE.PAR_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"par",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.AUTONUMBER:rt=xt.message.start||rt,it=xt.message.step||it,xt.message.visible?g.db.enableSequenceNumbers():g.db.disableSequenceNumbers();break;case g.db.LINETYPE.CRITICAL_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.CRITICAL_OPTION:d4(mt,xt,bn.boxMargin+bn.boxTextMargin,bn.boxMargin,Fe=>Wr.addSectionToLoop(Fe));break;case g.db.LINETYPE.CRITICAL_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"critical",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;case g.db.LINETYPE.BREAK_START:d4(mt,xt,bn.boxMargin,bn.boxMargin+bn.boxTextMargin,Fe=>Wr.newLoop(Fe));break;case g.db.LINETYPE.BREAK_END:Ct=Wr.endLoop(),_f.drawLoop(_,Ct,"break",bn),Wr.bumpVerticalPos(Ct.stopy-Wr.getVerticalPos()),Wr.models.addLoop(Ct);break;default:try{Gt=xt.msgModel,Gt.starty=Wr.getVerticalPos(),Gt.sequenceIndex=rt,Gt.sequenceVisible=g.db.showSequenceNumbers();const Fe=eJe(_,Gt);iJe(xt,Gt,Fe,Ft,M,F,R),gt.push({messageModel:Gt,lineStartY:Fe}),Wr.models.addMessage(Gt)}catch(Fe){Kt.error("error while drawing message",Fe)}}[g.db.LINETYPE.SOLID_OPEN,g.db.LINETYPE.DOTTED_OPEN,g.db.LINETYPE.SOLID,g.db.LINETYPE.DOTTED,g.db.LINETYPE.SOLID_CROSS,g.db.LINETYPE.DOTTED_CROSS,g.db.LINETYPE.SOLID_POINT,g.db.LINETYPE.DOTTED_POINT].includes(xt.type)&&(rt=rt+it)}),Kt.debug("createdActors",F),Kt.debug("destroyedActors",R),jbt(_,M,z,!1),gt.forEach(xt=>nJe(_,xt.messageModel,xt.lineStartY,g)),bn.mirrorActors&&jbt(_,M,z,!0),Q.forEach(xt=>_f.drawBackgroundRect(_,xt)),kqt(_,M,z,bn),Wr.models.boxes.forEach(function(xt){xt.height=Wr.getVerticalPos()-xt.y,Wr.insert(xt.x,xt.y,xt.x+xt.width,xt.height),xt.startx=xt.x,xt.starty=xt.y,xt.stopx=xt.startx+xt.width,xt.stopy=xt.starty+xt.height,xt.stroke="rgb(0,0,0, 0.5)",_f.drawBox(_,xt,bn)}),ot&&Wr.bumpVerticalPos(bn.boxMargin);const dt=Cqt(_,M,z,S),{bounds:K}=Wr.getBounds();let yt=K.stopy-K.starty;yt{const b=i[v];b.wrap&&(b.description=uo.wrapLabel(b.description,bn.width-2*bn.wrapPadding,Rbt(bn)));const E=uo.calculateTextDimensions(b.description,Rbt(bn));b.width=b.wrap?bn.width:ei.getMax(bn.width,E.width+2*bn.wrapPadding),b.height=b.wrap?ei.getMax(E.height,bn.height):bn.height,g=ei.getMax(g,b.height)});for(const v in a){const b=i[v];if(!b)continue;const E=i[b.nextActor];if(!E){const F=a[v]+bn.actorMargin-b.width/2;b.margin=ei.getMax(F,bn.actorMargin);continue}const _=a[v]+bn.actorMargin-b.width/2-E.width/2;b.margin=ei.getMax(_,bn.actorMargin)}let w=0;return f.forEach(v=>{const b=R9(bn);let E=v.actorKeys.reduce((M,F)=>M+=i[F].width+(i[F].margin||0),0);E-=2*bn.boxTextMargin,v.wrap&&(v.name=uo.wrapLabel(v.name,E-2*bn.wrapPadding,b));const S=uo.calculateTextDimensions(v.name,b);w=ei.getMax(S.height,w);const _=ei.getMax(E,S.width+2*bn.wrapPadding);if(v.margin=bn.boxTextMargin,E<_){const M=(_-E)/2;v.margin+=M}}),f.forEach(v=>v.textMaxHeight=w),ei.getMax(g,bn.height)}const uJe=function(i,a,f){const g=a[i.from].x,w=a[i.to].x,v=i.wrap&&i.message;let b=uo.calculateTextDimensions(v?uo.wrapLabel(i.message,bn.width,MD(bn)):i.message,MD(bn));const E={width:v?bn.width:ei.getMax(bn.width,b.width+2*bn.noteMargin),height:0,startx:a[i.from].x,stopx:0,starty:0,stopy:0,message:i.message};return i.placement===f.db.PLACEMENT.RIGHTOF?(E.width=v?ei.getMax(bn.width,b.width):ei.getMax(a[i.from].width/2+a[i.to].width/2,b.width+2*bn.noteMargin),E.startx=g+(a[i.from].width+bn.actorMargin)/2):i.placement===f.db.PLACEMENT.LEFTOF?(E.width=v?ei.getMax(bn.width,b.width+2*bn.noteMargin):ei.getMax(a[i.from].width/2+a[i.to].width/2,b.width+2*bn.noteMargin),E.startx=g-E.width+(a[i.from].width-bn.actorMargin)/2):i.to===i.from?(b=uo.calculateTextDimensions(v?uo.wrapLabel(i.message,ei.getMax(bn.width,a[i.from].width),MD(bn)):i.message,MD(bn)),E.width=v?ei.getMax(bn.width,a[i.from].width):ei.getMax(a[i.from].width,bn.width,b.width+2*bn.noteMargin),E.startx=g+(a[i.from].width-E.width)/2):(E.width=Math.abs(g+a[i.from].width/2-(w+a[i.to].width/2))+bn.actorMargin,E.startx=g2,F=Y=>E?-Y:Y;i.from===i.to?_=S:(i.activate&&!M&&(_+=F(bn.activationWidth/2-1)),[f.db.LINETYPE.SOLID_OPEN,f.db.LINETYPE.DOTTED_OPEN].includes(i.type)||(_+=F(3)));const R=[g,w,v,b],B=Math.abs(S-_);i.wrap&&i.message&&(i.message=uo.wrapLabel(i.message,ei.getMax(B+2*bn.wrapPadding,bn.width),R9(bn)));const z=uo.calculateTextDimensions(i.message,R9(bn));return{width:ei.getMax(i.wrap?0:z.width+2*bn.wrapPadding,B+2*bn.wrapPadding,bn.width),height:0,startx:S,stopx:_,starty:0,stopy:0,message:i.message,type:i.type,wrap:i.wrap,fromBounds:Math.min.apply(null,R),toBounds:Math.max.apply(null,R)}},hJe=function(i,a,f,g){const w={},v=[];let b,E,S;return i.forEach(function(_){switch(_.id=uo.random({length:10}),_.type){case g.db.LINETYPE.LOOP_START:case g.db.LINETYPE.ALT_START:case g.db.LINETYPE.OPT_START:case g.db.LINETYPE.PAR_START:case g.db.LINETYPE.PAR_OVER_START:case g.db.LINETYPE.CRITICAL_START:case g.db.LINETYPE.BREAK_START:v.push({id:_.id,msg:_.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case g.db.LINETYPE.ALT_ELSE:case g.db.LINETYPE.PAR_AND:case g.db.LINETYPE.CRITICAL_OPTION:_.message&&(b=v.pop(),w[b.id]=b,w[_.id]=b,v.push(b));break;case g.db.LINETYPE.LOOP_END:case g.db.LINETYPE.ALT_END:case g.db.LINETYPE.OPT_END:case g.db.LINETYPE.PAR_END:case g.db.LINETYPE.CRITICAL_END:case g.db.LINETYPE.BREAK_END:b=v.pop(),w[b.id]=b;break;case g.db.LINETYPE.ACTIVE_START:{const F=a[_.from?_.from.actor:_.to.actor],R=bX(_.from?_.from.actor:_.to.actor).length,B=F.x+F.width/2+(R-1)*bn.activationWidth/2,z={startx:B,stopx:B+bn.activationWidth,actor:_.from.actor,enabled:!0};Wr.activations.push(z)}break;case g.db.LINETYPE.ACTIVE_END:{const F=Wr.activations.map(R=>R.actor).lastIndexOf(_.from.actor);delete Wr.activations.splice(F,1)[0]}break}_.placement!==void 0?(E=uJe(_,a,g),_.noteModel=E,v.forEach(F=>{b=F,b.from=ei.getMin(b.from,E.startx),b.to=ei.getMax(b.to,E.startx+E.width),b.width=ei.getMax(b.width,Math.abs(b.from-b.to))-bn.labelBoxWidth})):(S=lJe(_,a,g),_.msgModel=S,S.startx&&S.stopx&&v.length>0&&v.forEach(F=>{if(b=F,S.startx===S.stopx){const R=a[_.from],B=a[_.to];b.from=ei.getMin(R.x-S.width/2,R.x-R.width/2,b.from),b.to=ei.getMax(B.x+S.width/2,B.x+R.width/2,b.to),b.width=ei.getMax(b.width,Math.abs(b.to-b.from))-bn.labelBoxWidth}else b.from=ei.getMin(S.startx,b.from),b.to=ei.getMax(S.stopx,b.to),b.width=ei.getMax(b.width,S.width)-bn.labelBoxWidth}))}),Wr.activations=[],Kt.debug("Loop type widths:",w),w},fJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:lQe,db:mqt,renderer:{bounds:Wr,drawActors:jbt,drawActorsPopup:Cqt,setConf:Sqt,draw:sJe},styles:PQe,init:({wrap:i})=>{mqt.setWrap(i)}}},Symbol.toStringTag,{value:"Module"}));var $bt=function(){var i=function(za,br,An,Nn){for(An=An||{},Nn=za.length;Nn--;An[za[Nn]]=br);return An},a=[1,17],f=[1,18],g=[1,19],w=[1,39],v=[1,40],b=[1,25],E=[1,23],S=[1,24],_=[1,31],M=[1,32],F=[1,33],R=[1,34],B=[1,35],z=[1,36],Y=[1,26],nt=[1,27],ot=[1,28],ft=[1,29],wt=[1,43],mt=[1,30],ct=[1,42],rt=[1,44],it=[1,41],gt=[1,45],Q=[1,9],dt=[1,8,9],K=[1,56],yt=[1,57],V=[1,58],Ot=[1,59],It=[1,60],jt=[1,61],xt=[1,62],Ft=[1,8,9,39],Ct=[1,74],kt=[1,8,9,12,13,21,37,39,42,59,60,61,62,63,64,65,70,72],Gt=[1,8,9,12,13,19,21,37,39,42,46,59,60,61,62,63,64,65,70,72,74,80,95,97,98],Fe=[13,74,80,95,97,98],Mt=[13,64,65,74,80,95,97,98],pn=[13,59,60,61,62,63,74,80,95,97,98],Ae=[1,93],ye=[1,110],tn=[1,108],sn=[1,102],be=[1,103],Ne=[1,104],Xt=[1,105],_e=[1,106],xe=[1,107],Mn=[1,109],ce=[1,8,9,37,39,42],Br=[1,8,9,21],we=[1,8,9,78],Fi=[1,8,9,21,73,74,78,80,81,82,83,84,85],mi={trace:function(){},yy:{},symbols_:{error:2,start:3,mermaidDoc:4,statements:5,graphConfig:6,CLASS_DIAGRAM:7,NEWLINE:8,EOF:9,statement:10,classLabel:11,SQS:12,STR:13,SQE:14,namespaceName:15,alphaNumToken:16,className:17,classLiteralName:18,GENERICTYPE:19,relationStatement:20,LABEL:21,namespaceStatement:22,classStatement:23,memberStatement:24,annotationStatement:25,clickStatement:26,styleStatement:27,cssClassStatement:28,noteStatement:29,direction:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,namespaceIdentifier:36,STRUCT_START:37,classStatements:38,STRUCT_STOP:39,NAMESPACE:40,classIdentifier:41,STYLE_SEPARATOR:42,members:43,CLASS:44,ANNOTATION_START:45,ANNOTATION_END:46,MEMBER:47,SEPARATOR:48,relation:49,NOTE_FOR:50,noteText:51,NOTE:52,direction_tb:53,direction_bt:54,direction_rl:55,direction_lr:56,relationType:57,lineType:58,AGGREGATION:59,EXTENSION:60,COMPOSITION:61,DEPENDENCY:62,LOLLIPOP:63,LINE:64,DOTTED_LINE:65,CALLBACK:66,LINK:67,LINK_TARGET:68,CLICK:69,CALLBACK_NAME:70,CALLBACK_ARGS:71,HREF:72,STYLE:73,ALPHA:74,stylesOpt:75,CSSCLASS:76,style:77,COMMA:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,commentToken:86,textToken:87,graphCodeTokens:88,textNoTagsToken:89,TAGSTART:90,TAGEND:91,"==":92,"--":93,DEFAULT:94,MINUS:95,keywords:96,UNICODE_TEXT:97,BQUOTE_STR:98,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",19:"GENERICTYPE",21:"LABEL",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",37:"STRUCT_START",39:"STRUCT_STOP",40:"NAMESPACE",42:"STYLE_SEPARATOR",44:"CLASS",45:"ANNOTATION_START",46:"ANNOTATION_END",47:"MEMBER",48:"SEPARATOR",50:"NOTE_FOR",52:"NOTE",53:"direction_tb",54:"direction_bt",55:"direction_rl",56:"direction_lr",59:"AGGREGATION",60:"EXTENSION",61:"COMPOSITION",62:"DEPENDENCY",63:"LOLLIPOP",64:"LINE",65:"DOTTED_LINE",66:"CALLBACK",67:"LINK",68:"LINK_TARGET",69:"CLICK",70:"CALLBACK_NAME",71:"CALLBACK_ARGS",72:"HREF",73:"STYLE",74:"ALPHA",76:"CSSCLASS",78:"COMMA",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",88:"graphCodeTokens",90:"TAGSTART",91:"TAGEND",92:"==",93:"--",94:"DEFAULT",95:"MINUS",96:"keywords",97:"UNICODE_TEXT",98:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,2],[17,1],[17,1],[17,2],[17,2],[17,2],[10,1],[10,2],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,1],[10,2],[10,2],[10,1],[22,4],[22,5],[36,2],[38,1],[38,2],[38,3],[23,1],[23,3],[23,4],[23,6],[41,2],[41,3],[25,4],[43,1],[43,2],[24,1],[24,2],[24,1],[24,1],[20,3],[20,4],[20,4],[20,5],[29,3],[29,2],[30,1],[30,1],[30,1],[30,1],[49,3],[49,2],[49,2],[49,1],[57,1],[57,1],[57,1],[57,1],[57,1],[58,1],[58,1],[26,3],[26,4],[26,3],[26,4],[26,4],[26,5],[26,3],[26,4],[26,4],[26,5],[26,4],[26,5],[26,5],[26,6],[27,3],[28,3],[75,1],[75,3],[77,1],[77,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[86,1],[86,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[87,1],[89,1],[89,1],[89,1],[89,1],[16,1],[16,1],[16,1],[16,1],[18,1],[51,1]],performAction:function(br,An,Nn,Bn,ke,pe,Je){var an=pe.length-1;switch(ke){case 8:this.$=pe[an-1];break;case 9:case 11:case 12:this.$=pe[an];break;case 10:case 13:this.$=pe[an-1]+pe[an];break;case 14:case 15:this.$=pe[an-1]+"~"+pe[an]+"~";break;case 16:Bn.addRelation(pe[an]);break;case 17:pe[an-1].title=Bn.cleanupLabel(pe[an]),Bn.addRelation(pe[an-1]);break;case 27:this.$=pe[an].trim(),Bn.setAccTitle(this.$);break;case 28:case 29:this.$=pe[an].trim(),Bn.setAccDescription(this.$);break;case 30:Bn.addClassesToNamespace(pe[an-3],pe[an-1]);break;case 31:Bn.addClassesToNamespace(pe[an-4],pe[an-1]);break;case 32:this.$=pe[an],Bn.addNamespace(pe[an]);break;case 33:this.$=[pe[an]];break;case 34:this.$=[pe[an-1]];break;case 35:pe[an].unshift(pe[an-2]),this.$=pe[an];break;case 37:Bn.setCssClass(pe[an-2],pe[an]);break;case 38:Bn.addMembers(pe[an-3],pe[an-1]);break;case 39:Bn.setCssClass(pe[an-5],pe[an-3]),Bn.addMembers(pe[an-5],pe[an-1]);break;case 40:this.$=pe[an],Bn.addClass(pe[an]);break;case 41:this.$=pe[an-1],Bn.addClass(pe[an-1]),Bn.setClassLabel(pe[an-1],pe[an]);break;case 42:Bn.addAnnotation(pe[an],pe[an-2]);break;case 43:this.$=[pe[an]];break;case 44:pe[an].push(pe[an-1]),this.$=pe[an];break;case 45:break;case 46:Bn.addMember(pe[an-1],Bn.cleanupLabel(pe[an]));break;case 47:break;case 48:break;case 49:this.$={id1:pe[an-2],id2:pe[an],relation:pe[an-1],relationTitle1:"none",relationTitle2:"none"};break;case 50:this.$={id1:pe[an-3],id2:pe[an],relation:pe[an-1],relationTitle1:pe[an-2],relationTitle2:"none"};break;case 51:this.$={id1:pe[an-3],id2:pe[an],relation:pe[an-2],relationTitle1:"none",relationTitle2:pe[an-1]};break;case 52:this.$={id1:pe[an-4],id2:pe[an],relation:pe[an-2],relationTitle1:pe[an-3],relationTitle2:pe[an-1]};break;case 53:Bn.addNote(pe[an],pe[an-1]);break;case 54:Bn.addNote(pe[an]);break;case 55:Bn.setDirection("TB");break;case 56:Bn.setDirection("BT");break;case 57:Bn.setDirection("RL");break;case 58:Bn.setDirection("LR");break;case 59:this.$={type1:pe[an-2],type2:pe[an],lineType:pe[an-1]};break;case 60:this.$={type1:"none",type2:pe[an],lineType:pe[an-1]};break;case 61:this.$={type1:pe[an-1],type2:"none",lineType:pe[an]};break;case 62:this.$={type1:"none",type2:"none",lineType:pe[an]};break;case 63:this.$=Bn.relationType.AGGREGATION;break;case 64:this.$=Bn.relationType.EXTENSION;break;case 65:this.$=Bn.relationType.COMPOSITION;break;case 66:this.$=Bn.relationType.DEPENDENCY;break;case 67:this.$=Bn.relationType.LOLLIPOP;break;case 68:this.$=Bn.lineType.LINE;break;case 69:this.$=Bn.lineType.DOTTED_LINE;break;case 70:case 76:this.$=pe[an-2],Bn.setClickEvent(pe[an-1],pe[an]);break;case 71:case 77:this.$=pe[an-3],Bn.setClickEvent(pe[an-2],pe[an-1]),Bn.setTooltip(pe[an-2],pe[an]);break;case 72:this.$=pe[an-2],Bn.setLink(pe[an-1],pe[an]);break;case 73:this.$=pe[an-3],Bn.setLink(pe[an-2],pe[an-1],pe[an]);break;case 74:this.$=pe[an-3],Bn.setLink(pe[an-2],pe[an-1]),Bn.setTooltip(pe[an-2],pe[an]);break;case 75:this.$=pe[an-4],Bn.setLink(pe[an-3],pe[an-2],pe[an]),Bn.setTooltip(pe[an-3],pe[an-1]);break;case 78:this.$=pe[an-3],Bn.setClickEvent(pe[an-2],pe[an-1],pe[an]);break;case 79:this.$=pe[an-4],Bn.setClickEvent(pe[an-3],pe[an-2],pe[an-1]),Bn.setTooltip(pe[an-3],pe[an]);break;case 80:this.$=pe[an-3],Bn.setLink(pe[an-2],pe[an]);break;case 81:this.$=pe[an-4],Bn.setLink(pe[an-3],pe[an-1],pe[an]);break;case 82:this.$=pe[an-4],Bn.setLink(pe[an-3],pe[an-1]),Bn.setTooltip(pe[an-3],pe[an]);break;case 83:this.$=pe[an-5],Bn.setLink(pe[an-4],pe[an-2],pe[an]),Bn.setTooltip(pe[an-4],pe[an-1]);break;case 84:this.$=pe[an-2],Bn.setCssStyle(pe[an-1],pe[an]);break;case 85:Bn.setCssClass(pe[an-1],pe[an]);break;case 86:this.$=[pe[an]];break;case 87:pe[an-2].push(pe[an]),this.$=pe[an-2];break;case 89:this.$=pe[an-1]+pe[an];break}},table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:37,17:20,18:38,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,31:a,33:f,35:g,36:21,40:w,41:22,44:v,45:b,47:E,48:S,50:_,52:M,53:F,54:R,55:B,56:z,66:Y,67:nt,69:ot,73:ft,74:wt,76:mt,80:ct,95:rt,97:it,98:gt},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},i(Q,[2,5],{8:[1,46]}),{8:[1,47]},i(dt,[2,16],{21:[1,48]}),i(dt,[2,18]),i(dt,[2,19]),i(dt,[2,20]),i(dt,[2,21]),i(dt,[2,22]),i(dt,[2,23]),i(dt,[2,24]),i(dt,[2,25]),i(dt,[2,26]),{32:[1,49]},{34:[1,50]},i(dt,[2,29]),i(dt,[2,45],{49:51,57:54,58:55,13:[1,52],21:[1,53],59:K,60:yt,61:V,62:Ot,63:It,64:jt,65:xt}),{37:[1,63]},i(Ft,[2,36],{37:[1,65],42:[1,64]}),i(dt,[2,47]),i(dt,[2,48]),{16:66,74:wt,80:ct,95:rt,97:it},{16:37,17:67,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{16:37,17:68,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{16:37,17:69,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{74:[1,70]},{13:[1,71]},{16:37,17:72,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{13:Ct,51:73},i(dt,[2,55]),i(dt,[2,56]),i(dt,[2,57]),i(dt,[2,58]),i(kt,[2,11],{16:37,18:38,17:75,19:[1,76],74:wt,80:ct,95:rt,97:it,98:gt}),i(kt,[2,12],{19:[1,77]}),{15:78,16:79,74:wt,80:ct,95:rt,97:it},{16:37,17:80,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(Gt,[2,112]),i(Gt,[2,113]),i(Gt,[2,114]),i(Gt,[2,115]),i([1,8,9,12,13,19,21,37,39,42,59,60,61,62,63,64,65,70,72],[2,116]),i(Q,[2,6],{10:5,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,17:20,36:21,41:22,16:37,18:38,5:81,31:a,33:f,35:g,40:w,44:v,45:b,47:E,48:S,50:_,52:M,53:F,54:R,55:B,56:z,66:Y,67:nt,69:ot,73:ft,74:wt,76:mt,80:ct,95:rt,97:it,98:gt}),{5:82,10:5,16:37,17:20,18:38,20:7,22:8,23:9,24:10,25:11,26:12,27:13,28:14,29:15,30:16,31:a,33:f,35:g,36:21,40:w,41:22,44:v,45:b,47:E,48:S,50:_,52:M,53:F,54:R,55:B,56:z,66:Y,67:nt,69:ot,73:ft,74:wt,76:mt,80:ct,95:rt,97:it,98:gt},i(dt,[2,17]),i(dt,[2,27]),i(dt,[2,28]),{13:[1,84],16:37,17:83,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{49:85,57:54,58:55,59:K,60:yt,61:V,62:Ot,63:It,64:jt,65:xt},i(dt,[2,46]),{58:86,64:jt,65:xt},i(Fe,[2,62],{57:87,59:K,60:yt,61:V,62:Ot,63:It}),i(Mt,[2,63]),i(Mt,[2,64]),i(Mt,[2,65]),i(Mt,[2,66]),i(Mt,[2,67]),i(pn,[2,68]),i(pn,[2,69]),{8:[1,89],23:90,38:88,41:22,44:v},{16:91,74:wt,80:ct,95:rt,97:it},{43:92,47:Ae},{46:[1,94]},{13:[1,95]},{13:[1,96]},{70:[1,97],72:[1,98]},{21:ye,73:tn,74:sn,75:99,77:100,79:101,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn},{74:[1,111]},{13:Ct,51:112},i(dt,[2,54]),i(dt,[2,117]),i(kt,[2,13]),i(kt,[2,14]),i(kt,[2,15]),{37:[2,32]},{15:113,16:79,37:[2,9],74:wt,80:ct,95:rt,97:it},i(ce,[2,40],{11:114,12:[1,115]}),i(Q,[2,7]),{9:[1,116]},i(Br,[2,49]),{16:37,17:117,18:38,74:wt,80:ct,95:rt,97:it,98:gt},{13:[1,119],16:37,17:118,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(Fe,[2,61],{57:120,59:K,60:yt,61:V,62:Ot,63:It}),i(Fe,[2,60]),{39:[1,121]},{23:90,38:122,41:22,44:v},{8:[1,123],39:[2,33]},i(Ft,[2,37],{37:[1,124]}),{39:[1,125]},{39:[2,43],43:126,47:Ae},{16:37,17:127,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(dt,[2,70],{13:[1,128]}),i(dt,[2,72],{13:[1,130],68:[1,129]}),i(dt,[2,76],{13:[1,131],71:[1,132]}),{13:[1,133]},i(dt,[2,84],{78:[1,134]}),i(we,[2,86],{79:135,21:ye,73:tn,74:sn,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn}),i(Fi,[2,88]),i(Fi,[2,90]),i(Fi,[2,91]),i(Fi,[2,92]),i(Fi,[2,93]),i(Fi,[2,94]),i(Fi,[2,95]),i(Fi,[2,96]),i(Fi,[2,97]),i(Fi,[2,98]),i(dt,[2,85]),i(dt,[2,53]),{37:[2,10]},i(ce,[2,41]),{13:[1,136]},{1:[2,4]},i(Br,[2,51]),i(Br,[2,50]),{16:37,17:137,18:38,74:wt,80:ct,95:rt,97:it,98:gt},i(Fe,[2,59]),i(dt,[2,30]),{39:[1,138]},{23:90,38:139,39:[2,34],41:22,44:v},{43:140,47:Ae},i(Ft,[2,38]),{39:[2,44]},i(dt,[2,42]),i(dt,[2,71]),i(dt,[2,73]),i(dt,[2,74],{68:[1,141]}),i(dt,[2,77]),i(dt,[2,78],{13:[1,142]}),i(dt,[2,80],{13:[1,144],68:[1,143]}),{21:ye,73:tn,74:sn,77:145,79:101,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn},i(Fi,[2,89]),{14:[1,146]},i(Br,[2,52]),i(dt,[2,31]),{39:[2,35]},{39:[1,147]},i(dt,[2,75]),i(dt,[2,79]),i(dt,[2,81]),i(dt,[2,82],{68:[1,148]}),i(we,[2,87],{79:135,21:ye,73:tn,74:sn,80:be,81:Ne,82:Xt,83:_e,84:xe,85:Mn}),i(ce,[2,8]),i(Ft,[2,39]),i(dt,[2,83])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],78:[2,32],113:[2,10],116:[2,4],126:[2,44],139:[2,35]},parseError:function(br,An){if(An.recoverable)this.trace(br);else{var Nn=new Error(br);throw Nn.hash=An,Nn}},parse:function(br){var An=this,Nn=[0],Bn=[],ke=[null],pe=[],Je=this.table,an="",xn=0,qa=0,xo=2,ko=1,va=pe.slice.call(arguments,1),Ha=Object.create(this.lexer),ds={yy:{}};for(var Fu in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Fu)&&(ds.yy[Fu]=this.yy[Fu]);Ha.setInput(br,ds.yy),ds.yy.lexer=Ha,ds.yy.parser=this,typeof Ha.yylloc>"u"&&(Ha.yylloc={});var Zs=Ha.yylloc;pe.push(Zs);var d1=Ha.options&&Ha.options.ranges;typeof ds.yy.parseError=="function"?this.parseError=ds.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function I2(){var ea;return ea=Bn.pop()||Ha.lex()||ko,typeof ea!="number"&&(ea instanceof Array&&(Bn=ea,ea=Bn.pop()),ea=An.symbols_[ea]||ea),ea}for(var ll,Ic,wc,Ea,gu={},ta,fo,mc,ca;;){if(Ic=Nn[Nn.length-1],this.defaultActions[Ic]?wc=this.defaultActions[Ic]:((ll===null||typeof ll>"u")&&(ll=I2()),wc=Je[Ic]&&Je[Ic][ll]),typeof wc>"u"||!wc.length||!wc[0]){var ya="";ca=[];for(ta in Je[Ic])this.terminals_[ta]&&ta>xo&&ca.push("'"+this.terminals_[ta]+"'");Ha.showPosition?ya="Parse error on line "+(xn+1)+`: +`+Ha.showPosition()+` +Expecting `+ca.join(", ")+", got '"+(this.terminals_[ll]||ll)+"'":ya="Parse error on line "+(xn+1)+": Unexpected "+(ll==ko?"end of input":"'"+(this.terminals_[ll]||ll)+"'"),this.parseError(ya,{text:Ha.match,token:this.terminals_[ll]||ll,line:Ha.yylineno,loc:Zs,expected:ca})}if(wc[0]instanceof Array&&wc.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ic+", token: "+ll);switch(wc[0]){case 1:Nn.push(ll),ke.push(Ha.yytext),pe.push(Ha.yylloc),Nn.push(wc[1]),ll=null,qa=Ha.yyleng,an=Ha.yytext,xn=Ha.yylineno,Zs=Ha.yylloc;break;case 2:if(fo=this.productions_[wc[1]][1],gu.$=ke[ke.length-fo],gu._$={first_line:pe[pe.length-(fo||1)].first_line,last_line:pe[pe.length-1].last_line,first_column:pe[pe.length-(fo||1)].first_column,last_column:pe[pe.length-1].last_column},d1&&(gu._$.range=[pe[pe.length-(fo||1)].range[0],pe[pe.length-1].range[1]]),Ea=this.performAction.apply(gu,[an,qa,xn,ds.yy,wc[1],ke,pe].concat(va)),typeof Ea<"u")return Ea;fo&&(Nn=Nn.slice(0,-1*fo*2),ke=ke.slice(0,-1*fo),pe=pe.slice(0,-1*fo)),Nn.push(this.productions_[wc[1]][0]),ke.push(gu.$),pe.push(gu._$),mc=Je[Nn[Nn.length-2]][Nn[Nn.length-1]],Nn.push(mc);break;case 3:return!0}}return!0}},ga=function(){var za={EOF:1,parseError:function(An,Nn){if(this.yy.parser)this.yy.parser.parseError(An,Nn);else throw new Error(An)},setInput:function(br,An){return this.yy=An||this.yy||{},this._input=br,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var br=this._input[0];this.yytext+=br,this.yyleng++,this.offset++,this.match+=br,this.matched+=br;var An=br.match(/(?:\r\n?|\n).*/g);return An?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),br},unput:function(br){var An=br.length,Nn=br.split(/(?:\r\n?|\n)/g);this._input=br+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-An),this.offset-=An;var Bn=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Nn.length-1&&(this.yylineno-=Nn.length-1);var ke=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Nn?(Nn.length===Bn.length?this.yylloc.first_column:0)+Bn[Bn.length-Nn.length].length-Nn[0].length:this.yylloc.first_column-An},this.options.ranges&&(this.yylloc.range=[ke[0],ke[0]+this.yyleng-An]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(br){this.unput(this.match.slice(br))},pastInput:function(){var br=this.matched.substr(0,this.matched.length-this.match.length);return(br.length>20?"...":"")+br.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var br=this.match;return br.length<20&&(br+=this._input.substr(0,20-br.length)),(br.substr(0,20)+(br.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var br=this.pastInput(),An=new Array(br.length+1).join("-");return br+this.upcomingInput()+` +`+An+"^"},test_match:function(br,An){var Nn,Bn,ke;if(this.options.backtrack_lexer&&(ke={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ke.yylloc.range=this.yylloc.range.slice(0))),Bn=br[0].match(/(?:\r\n?|\n).*/g),Bn&&(this.yylineno+=Bn.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Bn?Bn[Bn.length-1].length-Bn[Bn.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+br[0].length},this.yytext+=br[0],this.match+=br[0],this.matches=br,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(br[0].length),this.matched+=br[0],Nn=this.performAction.call(this,this.yy,this,An,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Nn)return Nn;if(this._backtrack){for(var pe in ke)this[pe]=ke[pe];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var br,An,Nn,Bn;this._more||(this.yytext="",this.match="");for(var ke=this._currentRules(),pe=0;peAn[0].length)){if(An=Nn,Bn=pe,this.options.backtrack_lexer){if(br=this.test_match(Nn,ke[pe]),br!==!1)return br;if(this._backtrack){An=!1;continue}else return!1}else if(!this.options.flex)break}return An?(br=this.test_match(An,ke[Bn]),br!==!1?br:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var An=this.next();return An||this.lex()},begin:function(An){this.conditionStack.push(An)},popState:function(){var An=this.conditionStack.length-1;return An>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(An){return An=this.conditionStack.length-1-Math.abs(An||0),An>=0?this.conditionStack[An]:"INITIAL"},pushState:function(An){this.begin(An)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(An,Nn,Bn,ke){switch(Bn){case 0:return 53;case 1:return 54;case 2:return 55;case 3:return 56;case 4:break;case 5:break;case 6:return this.begin("acc_title"),31;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),33;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 8;case 14:break;case 15:return 7;case 16:return 7;case 17:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 19:this.popState();break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 70;case 22:this.popState();break;case 23:return 71;case 24:this.popState();break;case 25:return"STR";case 26:this.begin("string");break;case 27:return 73;case 28:return this.begin("namespace"),40;case 29:return this.popState(),8;case 30:break;case 31:return this.begin("namespace-body"),37;case 32:return this.popState(),39;case 33:return"EOF_IN_STRUCT";case 34:return 8;case 35:break;case 36:return"EDGE_STATE";case 37:return this.begin("class"),44;case 38:return this.popState(),8;case 39:break;case 40:return this.popState(),this.popState(),39;case 41:return this.begin("class-body"),37;case 42:return this.popState(),39;case 43:return"EOF_IN_STRUCT";case 44:return"EDGE_STATE";case 45:return"OPEN_IN_STRUCT";case 46:break;case 47:return"MEMBER";case 48:return 76;case 49:return 66;case 50:return 67;case 51:return 69;case 52:return 50;case 53:return 52;case 54:return 45;case 55:return 46;case 56:return 72;case 57:this.popState();break;case 58:return"GENERICTYPE";case 59:this.begin("generic");break;case 60:this.popState();break;case 61:return"BQUOTE_STR";case 62:this.begin("bqstring");break;case 63:return 68;case 64:return 68;case 65:return 68;case 66:return 68;case 67:return 60;case 68:return 60;case 69:return 62;case 70:return 62;case 71:return 61;case 72:return 59;case 73:return 63;case 74:return 64;case 75:return 65;case 76:return 21;case 77:return 42;case 78:return 95;case 79:return"DOT";case 80:return"PLUS";case 81:return 81;case 82:return 78;case 83:return 84;case 84:return 84;case 85:return 85;case 86:return"EQUALS";case 87:return"EQUALS";case 88:return 74;case 89:return 12;case 90:return 14;case 91:return"PUNCTUATION";case 92:return 80;case 93:return 97;case 94:return 83;case 95:return 83;case 96:return 9}},rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,32,33,34,35,36,37,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},namespace:{rules:[26,28,29,30,31,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},"class-body":{rules:[26,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},class:{rules:[26,38,39,40,41,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_descr:{rules:[9,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},acc_title:{rules:[7,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},callback_args:{rules:[22,23,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},callback_name:{rules:[19,20,21,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},href:{rules:[26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},struct:{rules:[26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},generic:{rules:[26,48,49,50,51,52,53,54,55,56,57,58,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},bqstring:{rules:[26,48,49,50,51,52,53,54,55,56,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},string:{rules:[24,25,26,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,85,86,87,88,89,90,91,92,93,94,96],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,37,48,49,50,51,52,53,54,55,56,59,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96],inclusive:!0}}};return za}();mi.lexer=ga;function Ss(){this.yy={}}return Ss.prototype=mi,mi.Parser=Ss,new Ss}();$bt.parser=$bt;const Aqt=$bt,Lqt=["#","+","~","-",""];class Dqt{constructor(a,f){this.memberType=f,this.visibility="",this.classifier="";const g=Ef(a,Re());this.parseMember(g)}getDisplayDetails(){let a=this.visibility+kF(this.id);this.memberType==="method"&&(a+=`(${kF(this.parameters.trim())})`,this.returnType&&(a+=" : "+kF(this.returnType))),a=a.trim();const f=this.parseClassifier();return{displayText:a,cssStyle:f}}parseMember(a){let f="";if(this.memberType==="method"){const g=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/,w=a.match(g);if(w){const v=w[1]?w[1].trim():"";if(Lqt.includes(v)&&(this.visibility=v),this.id=w[2].trim(),this.parameters=w[3]?w[3].trim():"",f=w[4]?w[4].trim():"",this.returnType=w[5]?w[5].trim():"",f===""){const b=this.returnType.substring(this.returnType.length-1);b.match(/[$*]/)&&(f=b,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const g=a.length,w=a.substring(0,1),v=a.substring(g-1);Lqt.includes(w)&&(this.visibility=w),v.match(/[$*]/)&&(f=v),this.id=a.substring(this.visibility===""?0:1,f===""?g:g-1)}this.classifier=f}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}}const wX="classId-";let zbt=[],Jl={},mX=[],Mqt=0,A8={},qbt=0,mB=[];const j9=i=>ei.sanitizeText(i,Re()),$9=function(i){const a=ei.sanitizeText(i,Re());let f="",g=a;if(a.indexOf("~")>0){const w=a.split("~");g=j9(w[0]),f=j9(w[1])}return{className:g,type:f}},dJe=function(i,a){const f=ei.sanitizeText(i,Re());a&&(a=j9(a));const{className:g}=$9(f);Jl[g].label=a},vX=function(i){const a=ei.sanitizeText(i,Re()),{className:f,type:g}=$9(a);if(Object.hasOwn(Jl,f))return;const w=ei.sanitizeText(f,Re());Jl[w]={id:w,type:g,label:w,cssClasses:[],methods:[],members:[],annotations:[],styles:[],domId:wX+w+"-"+Mqt},Mqt++},Iqt=function(i){const a=ei.sanitizeText(i,Re());if(a in Jl)return Jl[a].domId;throw new Error("Class not found: "+a)},gJe=function(){zbt=[],Jl={},mX=[],mB=[],mB.push(Nqt),A8={},qbt=0,ag()},pJe=function(i){return Jl[i]},bJe=function(){return Jl},wJe=function(){return zbt},mJe=function(){return mX},vJe=function(i){Kt.debug("Adding relation: "+JSON.stringify(i)),vX(i.id1),vX(i.id2),i.id1=$9(i.id1).className,i.id2=$9(i.id2).className,i.relationTitle1=ei.sanitizeText(i.relationTitle1.trim(),Re()),i.relationTitle2=ei.sanitizeText(i.relationTitle2.trim(),Re()),zbt.push(i)},yJe=function(i,a){const f=$9(i).className;Jl[f].annotations.push(a)},Oqt=function(i,a){vX(i);const f=$9(i).className,g=Jl[f];if(typeof a=="string"){const w=a.trim();w.startsWith("<<")&&w.endsWith(">>")?g.annotations.push(j9(w.substring(2,w.length-2))):w.indexOf(")")>0?g.methods.push(new Dqt(w,"method")):w&&g.members.push(new Dqt(w,"attribute"))}},xJe=function(i,a){Array.isArray(a)&&(a.reverse(),a.forEach(f=>Oqt(i,f)))},kJe=function(i,a){const f={id:`note${mX.length}`,class:a,text:i};mX.push(f)},EJe=function(i){return i.startsWith(":")&&(i=i.substring(1)),j9(i.trim())},Hbt=function(i,a){i.split(",").forEach(function(f){let g=f;f[0].match(/\d/)&&(g=wX+g),Jl[g]!==void 0&&Jl[g].cssClasses.push(a)})},TJe=function(i,a){i.split(",").forEach(function(f){a!==void 0&&(Jl[f].tooltip=j9(a))})},CJe=function(i,a){return a?A8[a].classes[i].tooltip:Jl[i].tooltip},SJe=function(i,a,f){const g=Re();i.split(",").forEach(function(w){let v=w;w[0].match(/\d/)&&(v=wX+v),Jl[v]!==void 0&&(Jl[v].link=uo.formatUrl(a,g),g.securityLevel==="sandbox"?Jl[v].linkTarget="_top":typeof f=="string"?Jl[v].linkTarget=j9(f):Jl[v].linkTarget="_blank")}),Hbt(i,"clickable")},_Je=function(i,a,f){i.split(",").forEach(function(g){AJe(g,a,f),Jl[g].haveCallback=!0}),Hbt(i,"clickable")},AJe=function(i,a,f){const g=ei.sanitizeText(i,Re());if(Re().securityLevel!=="loose"||a===void 0)return;const v=g;if(Jl[v]!==void 0){const b=Iqt(v);let E=[];if(typeof f=="string"){E=f.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let S=0;S")),w.classed("hover",!0)}).on("mouseout",function(){a.transition().duration(500).style("opacity",0),Tr(this).classed("hover",!1)})};mB.push(Nqt);let Pqt="TB";const yX={setAccTitle:og,getAccTitle:Xg,getAccDescription:Jg,setAccDescription:Qg,getConfig:()=>Re().class,addClass:vX,bindFunctions:LJe,clear:gJe,getClass:pJe,getClasses:bJe,getNotes:mJe,addAnnotation:yJe,addNote:kJe,getRelations:wJe,addRelation:vJe,getDirection:()=>Pqt,setDirection:i=>{Pqt=i},addMember:Oqt,addMembers:xJe,cleanupLabel:EJe,lineType:DJe,relationType:MJe,setClickEvent:_Je,setCssClass:Hbt,setLink:SJe,getTooltip:CJe,setTooltip:TJe,lookUpDomId:Iqt,setDiagramTitle:S2,getDiagramTitle:Zg,setClassLabel:dJe,addNamespace:function(i){A8[i]===void 0&&(A8[i]={id:i,classes:{},children:{},domId:wX+i+"-"+qbt},qbt++)},addClassesToNamespace:function(i,a){if(A8[i]!==void 0)for(const f of a){const{className:g}=$9(f);Jl[g].parent=i,A8[i].classes[g]=Jl[g]}},getNamespace:function(i){return A8[i]},getNamespaces:function(){return A8},setCssStyle:function(i,a){const f=Jl[i];if(!(!a||!f))for(const g of a)g.includes(",")?f.styles.push(...g.split(",")):f.styles.push(g)}},Fqt=i=>`g.classGroup text { + fill: ${i.nodeBorder||i.classText}; + stroke: none; + font-family: ${i.fontFamily}; + font-size: 10px; + + .title { + font-weight: bolder; + } + +} + +.nodeLabel, .edgeLabel { + color: ${i.classText}; +} +.edgeLabel .label rect { + fill: ${i.mainBkg}; +} +.label text { + fill: ${i.classText}; +} +.edgeLabel .label span { + background: ${i.mainBkg}; +} + +.classTitle { + font-weight: bolder; +} +.node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + +.divider { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +g.clickable { + cursor: pointer; +} + +g.classGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.classGroup line { + stroke: ${i.nodeBorder}; + stroke-width: 1; +} + +.classLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.classLabel .label { + fill: ${i.nodeBorder}; + font-size: 10px; +} + +.relation { + stroke: ${i.lineColor}; + stroke-width: 1; + fill: none; +} + +.dashed-line{ + stroke-dasharray: 3; +} + +.dotted-line{ + stroke-dasharray: 1 2; +} + +#compositionStart, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#compositionEnd, .composition { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#dependencyStart, .dependency { + fill: ${i.lineColor} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionStart, .extension { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#extensionEnd, .extension { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationStart, .aggregation { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#aggregationEnd, .aggregation { + fill: transparent !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopStart, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +#lollipopEnd, .lollipop { + fill: ${i.mainBkg} !important; + stroke: ${i.lineColor} !important; + stroke-width: 1; +} + +.edgeTerminals { + font-size: 11px; + line-height: initial; +} + +.classTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`;let Bqt=0;const IJe=function(i,a,f,g,w){const v=function(ft){switch(ft){case w.db.relationType.AGGREGATION:return"aggregation";case w.db.relationType.EXTENSION:return"extension";case w.db.relationType.COMPOSITION:return"composition";case w.db.relationType.DEPENDENCY:return"dependency";case w.db.relationType.LOLLIPOP:return"lollipop"}};a.points=a.points.filter(ft=>!Number.isNaN(ft.y));const b=a.points,E=Ax().x(function(ft){return ft.x}).y(function(ft){return ft.y}).curve(wF),S=i.append("path").attr("d",E(b)).attr("id","edge"+Bqt).attr("class","relation");let _="";g.arrowMarkerAbsolute&&(_=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,_=_.replace(/\(/g,"\\("),_=_.replace(/\)/g,"\\)")),f.relation.lineType==1&&S.attr("class","relation dashed-line"),f.relation.lineType==10&&S.attr("class","relation dotted-line"),f.relation.type1!=="none"&&S.attr("marker-start","url("+_+"#"+v(f.relation.type1)+"Start)"),f.relation.type2!=="none"&&S.attr("marker-end","url("+_+"#"+v(f.relation.type2)+"End)");let M,F;const R=a.points.length;let B=uo.calcLabelPosition(a.points);M=B.x,F=B.y;let z,Y,nt,ot;if(R%2!==0&&R>1){let ft=uo.calcCardinalityPosition(f.relation.type1!=="none",a.points,a.points[0]),wt=uo.calcCardinalityPosition(f.relation.type2!=="none",a.points,a.points[R-1]);Kt.debug("cardinality_1_point "+JSON.stringify(ft)),Kt.debug("cardinality_2_point "+JSON.stringify(wt)),z=ft.x,Y=ft.y,nt=wt.x,ot=wt.y}if(f.title!==void 0){const ft=i.append("g").attr("class","classLabel"),wt=ft.append("text").attr("class","label").attr("x",M).attr("y",F).attr("fill","red").attr("text-anchor","middle").text(f.title);window.label=wt;const mt=wt.node().getBBox();ft.insert("rect",":first-child").attr("class","box").attr("x",mt.x-g.padding/2).attr("y",mt.y-g.padding/2).attr("width",mt.width+g.padding).attr("height",mt.height+g.padding)}Kt.info("Rendering relation "+JSON.stringify(f)),f.relationTitle1!==void 0&&f.relationTitle1!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type1").attr("x",z).attr("y",Y).attr("fill","black").attr("font-size","6").text(f.relationTitle1),f.relationTitle2!==void 0&&f.relationTitle2!=="none"&&i.append("g").attr("class","cardinality").append("text").attr("class","type2").attr("x",nt).attr("y",ot).attr("fill","black").attr("font-size","6").text(f.relationTitle2),Bqt++},OJe=function(i,a,f,g){Kt.debug("Rendering class ",a,f);const w=a.id,v={id:w,label:a.id,width:0,height:0},b=i.append("g").attr("id",g.db.lookUpDomId(w)).attr("class","classGroup");let E;a.link?E=b.append("svg:a").attr("xlink:href",a.link).attr("target",a.linkTarget).append("text").attr("y",f.textHeight+f.padding).attr("x",0):E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);let S=!0;a.annotations.forEach(function(wt){const mt=E.append("tspan").text("«"+wt+"»");S||mt.attr("dy",f.textHeight),S=!1});let _=Rqt(a);const M=E.append("tspan").text(_).attr("class","title");S||M.attr("dy",f.textHeight);const F=E.node().getBBox().height;let R,B,z;if(a.members.length>0){R=b.append("line").attr("x1",0).attr("y1",f.padding+F+f.dividerMargin/2).attr("y2",f.padding+F+f.dividerMargin/2);const wt=b.append("text").attr("x",f.padding).attr("y",F+f.dividerMargin+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.members.forEach(function(mt){jqt(wt,mt,S,f),S=!1}),B=wt.node().getBBox()}if(a.methods.length>0){z=b.append("line").attr("x1",0).attr("y1",f.padding+F+f.dividerMargin+B.height).attr("y2",f.padding+F+f.dividerMargin+B.height);const wt=b.append("text").attr("x",f.padding).attr("y",F+2*f.dividerMargin+B.height+f.textHeight).attr("fill","white").attr("class","classText");S=!0,a.methods.forEach(function(mt){jqt(wt,mt,S,f),S=!1})}const Y=b.node().getBBox();var nt=" ";a.cssClasses.length>0&&(nt=nt+a.cssClasses.join(" "));const ft=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",Y.width+2*f.padding).attr("height",Y.height+f.padding+.5*f.dividerMargin).attr("class",nt).node().getBBox().width;return E.node().childNodes.forEach(function(wt){wt.setAttribute("x",(ft-wt.getBBox().width)/2)}),a.tooltip&&E.insert("title").text(a.tooltip),R&&R.attr("x2",ft),z&&z.attr("x2",ft),v.width=ft,v.height=Y.height+f.padding+.5*f.dividerMargin,v},Rqt=function(i){let a=i.id;return i.type&&(a+="<"+kF(i.type)+">"),a},NJe=function(i,a,f,g){Kt.debug("Rendering note ",a,f);const w=a.id,v={id:w,text:a.text,width:0,height:0},b=i.append("g").attr("id",w).attr("class","classGroup");let E=b.append("text").attr("y",f.textHeight+f.padding).attr("x",0);const S=JSON.parse(`"${a.text}"`).split(` +`);S.forEach(function(R){Kt.debug(`Adding line: ${R}`),E.append("tspan").text(R).attr("class","title").attr("dy",f.textHeight)});const _=b.node().getBBox(),F=b.insert("rect",":first-child").attr("x",0).attr("y",0).attr("width",_.width+2*f.padding).attr("height",_.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin).node().getBBox().width;return E.node().childNodes.forEach(function(R){R.setAttribute("x",(F-R.getBBox().width)/2)}),v.width=F,v.height=_.height+S.length*f.textHeight+f.padding+.5*f.dividerMargin,v},jqt=function(i,a,f,g){const{displayText:w,cssStyle:v}=a.getDisplayDetails(),b=i.append("tspan").attr("x",g.padding).text(w);v!==""&&b.attr("style",a.cssStyle),f||b.attr("dy",g.textHeight)},Vbt={getClassTitleString:Rqt,drawClass:OJe,drawEdge:IJe,drawNote:NJe};let xX={};const kX=20,vB=function(i){const a=Object.entries(xX).find(f=>f[1].label===i);if(a)return a[0]},PJe=function(i){i.append("defs").append("marker").attr("id","extensionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),i.append("defs").append("marker").attr("id","extensionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z"),i.append("defs").append("marker").attr("id","compositionStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","compositionEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","aggregationEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyStart").attr("class","extension").attr("refX",0).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")},FJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Aqt,db:yX,renderer:{draw:function(i,a,f,g){const w=Re().class;xX={},Kt.info("Rendering diagram "+i);const v=Re().securityLevel;let b;v==="sandbox"&&(b=Tr("#i"+a));const E=Tr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body"),S=E.select(`[id='${a}']`);PJe(S);const _=new l1({multigraph:!0});_.setGraph({isMultiGraph:!0}),_.setDefaultEdgeLabel(function(){return{}});const M=g.db.getClasses(),F=Object.keys(M);for(const ft of F){const wt=M[ft],mt=Vbt.drawClass(S,wt,w,g);xX[mt.id]=mt,_.setNode(mt.id,mt),Kt.info("Org height: "+mt.height)}g.db.getRelations().forEach(function(ft){Kt.info("tjoho"+vB(ft.id1)+vB(ft.id2)+JSON.stringify(ft)),_.setEdge(vB(ft.id1),vB(ft.id2),{relation:ft},ft.title||"DEFAULT")}),g.db.getNotes().forEach(function(ft){Kt.debug(`Adding note: ${JSON.stringify(ft)}`);const wt=Vbt.drawNote(S,ft,w,g);xX[wt.id]=wt,_.setNode(wt.id,wt),ft.class&&ft.class in M&&_.setEdge(ft.id,vB(ft.class),{relation:{id1:ft.id,id2:ft.class,relation:{type1:"none",type2:"none",lineType:10}}},"DEFAULT")}),kD(_),_.nodes().forEach(function(ft){ft!==void 0&&_.node(ft)!==void 0&&(Kt.debug("Node "+ft+": "+JSON.stringify(_.node(ft))),E.select("#"+(g.db.lookUpDomId(ft)||ft)).attr("transform","translate("+(_.node(ft).x-_.node(ft).width/2)+","+(_.node(ft).y-_.node(ft).height/2)+" )"))}),_.edges().forEach(function(ft){ft!==void 0&&_.edge(ft)!==void 0&&(Kt.debug("Edge "+ft.v+" -> "+ft.w+": "+JSON.stringify(_.edge(ft))),Vbt.drawEdge(S,_.edge(ft),_.edge(ft).relation,w,g))});const z=S.node().getBBox(),Y=z.width+kX*2,nt=z.height+kX*2;sg(S,nt,Y,w.useMaxWidth);const ot=`${z.x-kX} ${z.y-kX} ${Y} ${nt}`;Kt.debug(`viewBox ${ot}`),S.attr("viewBox",ot)}},styles:Fqt,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,yX.clear()}}},Symbol.toStringTag,{value:"Module"})),Ubt=i=>ei.sanitizeText(i,Re());let Gbt={dividerMargin:10,padding:5,textHeight:10,curve:void 0};const BJe=function(i,a,f,g){const w=Object.keys(i);Kt.info("keys:",w),Kt.info(i),w.forEach(function(v){var _,M;const b=i[v],S={shape:"rect",id:b.id,domId:b.domId,labelText:Ubt(b.id),labelStyle:"",style:"fill: none; stroke: black",padding:((_=Re().flowchart)==null?void 0:_.padding)??((M=Re().class)==null?void 0:M.padding)};a.setNode(b.id,S),$qt(b.classes,a,f,g,b.id),Kt.info("setNode",S)})},$qt=function(i,a,f,g,w){const v=Object.keys(i);Kt.info("keys:",v),Kt.info(i),v.filter(b=>i[b].parent==w).forEach(function(b){var z,Y;const E=i[b],S=E.cssClasses.join(" "),_=C2(E.styles),M=E.label??E.id,F=0,R="class_box",B={labelStyle:_.labelStyle,shape:R,labelText:Ubt(M),classData:E,rx:F,ry:F,class:S,style:_.style,id:E.id,domId:E.domId,tooltip:g.db.getTooltip(E.id,w)||"",haveCallback:E.haveCallback,link:E.link,width:E.type==="group"?500:void 0,type:E.type,padding:((z=Re().flowchart)==null?void 0:z.padding)??((Y=Re().class)==null?void 0:Y.padding)};a.setNode(E.id,B),w&&a.setParent(E.id,w),Kt.info("setNode",B)})},RJe=function(i,a,f,g){Kt.info(i),i.forEach(function(w,v){var Y,nt;const b=w,E="",S={labelStyle:"",style:""},_=b.text,M=0,F="note",R={labelStyle:S.labelStyle,shape:F,labelText:Ubt(_),noteData:b,rx:M,ry:M,class:E,style:S.style,id:b.id,domId:b.id,tooltip:"",type:"note",padding:((Y=Re().flowchart)==null?void 0:Y.padding)??((nt=Re().class)==null?void 0:nt.padding)};if(a.setNode(b.id,R),Kt.info("setNode",R),!b.class||!(b.class in g))return;const B=f+v,z={id:`edgeNote${B}`,classes:"relation",pattern:"dotted",arrowhead:"none",startLabelRight:"",endLabelLeft:"",arrowTypeStart:"none",arrowTypeEnd:"none",style:"fill:none",labelStyle:"",curve:Xw(Gbt.curve,Kg)};a.setEdge(b.id,b.class,z,B)})},jJe=function(i,a){const f=Re().flowchart;let g=0;i.forEach(function(w){var b;g++;const v={classes:"relation",pattern:w.relation.lineType==1?"dashed":"solid",id:`id_${w.id1}_${w.id2}_${g}`,arrowhead:w.type==="arrow_open"?"none":"normal",startLabelRight:w.relationTitle1==="none"?"":w.relationTitle1,endLabelLeft:w.relationTitle2==="none"?"":w.relationTitle2,arrowTypeStart:zqt(w.relation.type1),arrowTypeEnd:zqt(w.relation.type2),style:"fill:none",labelStyle:"",curve:Xw(f==null?void 0:f.curve,Kg)};if(Kt.info(v,w),w.style!==void 0){const E=C2(w.style);v.style=E.style,v.labelStyle=E.labelStyle}w.text=w.title,w.text===void 0?w.style!==void 0&&(v.arrowheadStyle="fill: #333"):(v.arrowheadStyle="fill: #333",v.labelpos="c",((b=Re().flowchart)==null?void 0:b.htmlLabels)??Re().htmlLabels?(v.labelType="html",v.label=''+w.text+""):(v.labelType="text",v.label=w.text.replace(ei.lineBreakRegex,` +`),w.style===void 0&&(v.style=v.style||"stroke: #333; stroke-width: 1.5px;fill:none"),v.labelStyle=v.labelStyle.replace("color:","fill:"))),a.setEdge(w.id1,w.id2,v,g)})},$Je=function(i){Gbt={...Gbt,...i}},zJe=async function(i,a,f,g){Kt.info("Drawing class - ",a);const w=Re().flowchart??Re().class,v=Re().securityLevel;Kt.info("config:",w);const b=(w==null?void 0:w.nodeSpacing)??50,E=(w==null?void 0:w.rankSpacing)??50,S=new l1({multigraph:!0,compound:!0}).setGraph({rankdir:g.db.getDirection(),nodesep:b,ranksep:E,marginx:8,marginy:8}).setDefaultEdgeLabel(function(){return{}}),_=g.db.getNamespaces(),M=g.db.getClasses(),F=g.db.getRelations(),R=g.db.getNotes();Kt.info(F),BJe(_,S,a,g),$qt(M,S,a,g),jJe(F,S),RJe(R,S,F.length+1,M);let B;v==="sandbox"&&(B=Tr("#i"+a));const z=Tr(v==="sandbox"?B.nodes()[0].contentDocument.body:"body"),Y=z.select(`[id="${a}"]`),nt=z.select("#"+a+" g");if(await ebt(nt,S,["aggregation","extension","composition","dependency","lollipop"],"classDiagram",a),uo.insertTitle(Y,"classTitleText",(w==null?void 0:w.titleTopMargin)??5,g.db.getDiagramTitle()),w8(S,Y,w==null?void 0:w.diagramPadding,w==null?void 0:w.useMaxWidth),!(w!=null&&w.htmlLabels)){const ot=v==="sandbox"?B.nodes()[0].contentDocument:document,ft=ot.querySelectorAll('[id="'+a+'"] .edgeLabel .label');for(const wt of ft){const mt=wt.getBBox(),ct=ot.createElementNS("http://www.w3.org/2000/svg","rect");ct.setAttribute("rx",0),ct.setAttribute("ry",0),ct.setAttribute("width",mt.width),ct.setAttribute("height",mt.height),wt.insertBefore(ct,wt.firstChild)}}};function zqt(i){let a;switch(i){case 0:a="aggregation";break;case 1:a="extension";break;case 2:a="composition";break;case 3:a="dependency";break;case 4:a="lollipop";break;default:a="none"}return a}const qJe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Aqt,db:yX,renderer:{setConf:$Je,draw:zJe},styles:Fqt,init:i=>{i.class||(i.class={}),i.class.arrowMarkerAbsolute=i.arrowMarkerAbsolute,yX.clear()}}},Symbol.toStringTag,{value:"Module"}));var Kbt=function(){var i=function(xt,Ft,Ct,kt){for(Ct=Ct||{},kt=xt.length;kt--;Ct[xt[kt]]=Ft);return Ct},a=[1,2],f=[1,3],g=[1,4],w=[2,4],v=[1,9],b=[1,11],E=[1,15],S=[1,16],_=[1,17],M=[1,18],F=[1,30],R=[1,19],B=[1,20],z=[1,21],Y=[1,22],nt=[1,23],ot=[1,25],ft=[1,26],wt=[1,27],mt=[1,28],ct=[1,29],rt=[1,32],it=[1,33],gt=[1,34],Q=[1,35],dt=[1,31],K=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],yt=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],V=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],Ot={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"-->":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",13:"DESCR",14:"-->",15:"HIDE_EMPTY",16:"scale",17:"WIDTH",18:"COMPOSIT_STATE",19:"STRUCT_START",20:"STRUCT_STOP",21:"STATE_DESCR",22:"AS",23:"ID",24:"FORK",25:"JOIN",26:"CHOICE",27:"CONCURRENT",28:"note",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(Ft,Ct,kt,Gt,Fe,Mt,pn){var Ae=Mt.length-1;switch(Fe){case 3:return Gt.setRootDoc(Mt[Ae]),Mt[Ae];case 4:this.$=[];break;case 5:Mt[Ae]!="nl"&&(Mt[Ae-1].push(Mt[Ae]),this.$=Mt[Ae-1]);break;case 6:case 7:this.$=Mt[Ae];break;case 8:this.$="nl";break;case 11:this.$=Mt[Ae];break;case 12:const be=Mt[Ae-1];be.description=Gt.trimColon(Mt[Ae]),this.$=be;break;case 13:this.$={stmt:"relation",state1:Mt[Ae-2],state2:Mt[Ae]};break;case 14:const Ne=Gt.trimColon(Mt[Ae]);this.$={stmt:"relation",state1:Mt[Ae-3],state2:Mt[Ae-1],description:Ne};break;case 18:this.$={stmt:"state",id:Mt[Ae-3],type:"default",description:"",doc:Mt[Ae-1]};break;case 19:var ye=Mt[Ae],tn=Mt[Ae-2].trim();if(Mt[Ae].match(":")){var sn=Mt[Ae].split(":");ye=sn[0],tn=[tn,sn[1]]}this.$={stmt:"state",id:ye,type:"default",description:tn};break;case 20:this.$={stmt:"state",id:Mt[Ae-3],type:"default",description:Mt[Ae-5],doc:Mt[Ae-1]};break;case 21:this.$={stmt:"state",id:Mt[Ae],type:"fork"};break;case 22:this.$={stmt:"state",id:Mt[Ae],type:"join"};break;case 23:this.$={stmt:"state",id:Mt[Ae],type:"choice"};break;case 24:this.$={stmt:"state",id:Gt.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:Mt[Ae-1].trim(),note:{position:Mt[Ae-2].trim(),text:Mt[Ae].trim()}};break;case 28:this.$=Mt[Ae].trim(),Gt.setAccTitle(this.$);break;case 29:case 30:this.$=Mt[Ae].trim(),Gt.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:Mt[Ae-1].trim(),classes:Mt[Ae].trim()};break;case 33:this.$={stmt:"applyClass",id:Mt[Ae-1].trim(),styleClass:Mt[Ae].trim()};break;case 34:Gt.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:Gt.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:Gt.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:Gt.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:Mt[Ae].trim(),type:"default",description:""};break;case 42:this.$={stmt:"state",id:Mt[Ae-2].trim(),classes:[Mt[Ae].trim()],type:"default",description:""};break;case 43:this.$={stmt:"state",id:Mt[Ae-2].trim(),classes:[Mt[Ae].trim()],type:"default",description:""};break}},table:[{3:1,4:a,5:f,6:g},{1:[3]},{3:5,4:a,5:f,6:g},{3:6,4:a,5:f,6:g},i([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],w,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:S,18:_,21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,5]),{9:36,10:12,11:13,12:14,15:E,16:S,18:_,21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,7]),i(K,[2,8]),i(K,[2,9]),i(K,[2,10]),i(K,[2,11],{13:[1,37],14:[1,38]}),i(K,[2,15]),{17:[1,39]},i(K,[2,17],{19:[1,40]}),{22:[1,41]},i(K,[2,21]),i(K,[2,22]),i(K,[2,23]),i(K,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},i(K,[2,27]),{33:[1,46]},{35:[1,47]},i(K,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},i(yt,[2,40],{51:[1,51]}),i(yt,[2,41],{51:[1,52]}),i(K,[2,34]),i(K,[2,35]),i(K,[2,36]),i(K,[2,37]),i(K,[2,6]),i(K,[2,12]),{12:53,23:F,50:dt},i(K,[2,16]),i(V,w,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},i(K,[2,28]),i(K,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},i(K,[2,13],{13:[1,63]}),{4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:S,18:_,20:[1,64],21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},i(K,[2,31]),i(K,[2,32]),i(K,[2,33]),i(yt,[2,42]),i(yt,[2,43]),i(K,[2,14]),i(K,[2,18]),i(V,w,{7:68}),i(K,[2,25]),i(K,[2,26]),{4:v,5:b,8:8,9:10,10:12,11:13,12:14,15:E,16:S,18:_,20:[1,69],21:M,23:F,24:R,25:B,26:z,27:Y,28:nt,31:24,32:ot,34:ft,36:wt,37:mt,41:ct,44:rt,45:it,46:gt,47:Q,50:dt},i(K,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(Ft,Ct){if(Ct.recoverable)this.trace(Ft);else{var kt=new Error(Ft);throw kt.hash=Ct,kt}},parse:function(Ft){var Ct=this,kt=[0],Gt=[],Fe=[null],Mt=[],pn=this.table,Ae="",ye=0,tn=0,sn=2,be=1,Ne=Mt.slice.call(arguments,1),Xt=Object.create(this.lexer),_e={yy:{}};for(var xe in this.yy)Object.prototype.hasOwnProperty.call(this.yy,xe)&&(_e.yy[xe]=this.yy[xe]);Xt.setInput(Ft,_e.yy),_e.yy.lexer=Xt,_e.yy.parser=this,typeof Xt.yylloc>"u"&&(Xt.yylloc={});var Mn=Xt.yylloc;Mt.push(Mn);var ce=Xt.options&&Xt.options.ranges;typeof _e.yy.parseError=="function"?this.parseError=_e.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Br(){var ke;return ke=Gt.pop()||Xt.lex()||be,typeof ke!="number"&&(ke instanceof Array&&(Gt=ke,ke=Gt.pop()),ke=Ct.symbols_[ke]||ke),ke}for(var we,Fi,mi,ga,Ss={},za,br,An,Nn;;){if(Fi=kt[kt.length-1],this.defaultActions[Fi]?mi=this.defaultActions[Fi]:((we===null||typeof we>"u")&&(we=Br()),mi=pn[Fi]&&pn[Fi][we]),typeof mi>"u"||!mi.length||!mi[0]){var Bn="";Nn=[];for(za in pn[Fi])this.terminals_[za]&&za>sn&&Nn.push("'"+this.terminals_[za]+"'");Xt.showPosition?Bn="Parse error on line "+(ye+1)+`: +`+Xt.showPosition()+` +Expecting `+Nn.join(", ")+", got '"+(this.terminals_[we]||we)+"'":Bn="Parse error on line "+(ye+1)+": Unexpected "+(we==be?"end of input":"'"+(this.terminals_[we]||we)+"'"),this.parseError(Bn,{text:Xt.match,token:this.terminals_[we]||we,line:Xt.yylineno,loc:Mn,expected:Nn})}if(mi[0]instanceof Array&&mi.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Fi+", token: "+we);switch(mi[0]){case 1:kt.push(we),Fe.push(Xt.yytext),Mt.push(Xt.yylloc),kt.push(mi[1]),we=null,tn=Xt.yyleng,Ae=Xt.yytext,ye=Xt.yylineno,Mn=Xt.yylloc;break;case 2:if(br=this.productions_[mi[1]][1],Ss.$=Fe[Fe.length-br],Ss._$={first_line:Mt[Mt.length-(br||1)].first_line,last_line:Mt[Mt.length-1].last_line,first_column:Mt[Mt.length-(br||1)].first_column,last_column:Mt[Mt.length-1].last_column},ce&&(Ss._$.range=[Mt[Mt.length-(br||1)].range[0],Mt[Mt.length-1].range[1]]),ga=this.performAction.apply(Ss,[Ae,tn,ye,_e.yy,mi[1],Fe,Mt].concat(Ne)),typeof ga<"u")return ga;br&&(kt=kt.slice(0,-1*br*2),Fe=Fe.slice(0,-1*br),Mt=Mt.slice(0,-1*br)),kt.push(this.productions_[mi[1]][0]),Fe.push(Ss.$),Mt.push(Ss._$),An=pn[kt[kt.length-2]][kt[kt.length-1]],kt.push(An);break;case 3:return!0}}return!0}},It=function(){var xt={EOF:1,parseError:function(Ct,kt){if(this.yy.parser)this.yy.parser.parseError(Ct,kt);else throw new Error(Ct)},setInput:function(Ft,Ct){return this.yy=Ct||this.yy||{},this._input=Ft,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var Ft=this._input[0];this.yytext+=Ft,this.yyleng++,this.offset++,this.match+=Ft,this.matched+=Ft;var Ct=Ft.match(/(?:\r\n?|\n).*/g);return Ct?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),Ft},unput:function(Ft){var Ct=Ft.length,kt=Ft.split(/(?:\r\n?|\n)/g);this._input=Ft+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-Ct),this.offset-=Ct;var Gt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),kt.length-1&&(this.yylineno-=kt.length-1);var Fe=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:kt?(kt.length===Gt.length?this.yylloc.first_column:0)+Gt[Gt.length-kt.length].length-kt[0].length:this.yylloc.first_column-Ct},this.options.ranges&&(this.yylloc.range=[Fe[0],Fe[0]+this.yyleng-Ct]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(Ft){this.unput(this.match.slice(Ft))},pastInput:function(){var Ft=this.matched.substr(0,this.matched.length-this.match.length);return(Ft.length>20?"...":"")+Ft.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var Ft=this.match;return Ft.length<20&&(Ft+=this._input.substr(0,20-Ft.length)),(Ft.substr(0,20)+(Ft.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var Ft=this.pastInput(),Ct=new Array(Ft.length+1).join("-");return Ft+this.upcomingInput()+` +`+Ct+"^"},test_match:function(Ft,Ct){var kt,Gt,Fe;if(this.options.backtrack_lexer&&(Fe={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Fe.yylloc.range=this.yylloc.range.slice(0))),Gt=Ft[0].match(/(?:\r\n?|\n).*/g),Gt&&(this.yylineno+=Gt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Gt?Gt[Gt.length-1].length-Gt[Gt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+Ft[0].length},this.yytext+=Ft[0],this.match+=Ft[0],this.matches=Ft,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(Ft[0].length),this.matched+=Ft[0],kt=this.performAction.call(this,this.yy,this,Ct,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),kt)return kt;if(this._backtrack){for(var Mt in Fe)this[Mt]=Fe[Mt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var Ft,Ct,kt,Gt;this._more||(this.yytext="",this.match="");for(var Fe=this._currentRules(),Mt=0;MtCt[0].length)){if(Ct=kt,Gt=Mt,this.options.backtrack_lexer){if(Ft=this.test_match(kt,Fe[Mt]),Ft!==!1)return Ft;if(this._backtrack){Ct=!1;continue}else return!1}else if(!this.options.flex)break}return Ct?(Ft=this.test_match(Ct,Fe[Gt]),Ft!==!1?Ft:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var Ct=this.next();return Ct||this.lex()},begin:function(Ct){this.conditionStack.push(Ct)},popState:function(){var Ct=this.conditionStack.length-1;return Ct>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(Ct){return Ct=this.conditionStack.length-1-Math.abs(Ct||0),Ct>=0?this.conditionStack[Ct]:"INITIAL"},pushState:function(Ct){this.begin(Ct)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(Ct,kt,Gt,Fe){switch(Gt){case 0:return 40;case 1:return 44;case 2:return 45;case 3:return 46;case 4:return 47;case 5:break;case 6:break;case 7:return 5;case 8:break;case 9:break;case 10:break;case 11:break;case 12:return this.pushState("SCALE"),16;case 13:return 17;case 14:this.popState();break;case 15:return this.begin("acc_title"),32;case 16:return this.popState(),"acc_title_value";case 17:return this.begin("acc_descr"),34;case 18:return this.popState(),"acc_descr_value";case 19:this.begin("acc_descr_multiline");break;case 20:this.popState();break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),37;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 24:return this.popState(),this.pushState("CLASSDEFID"),38;case 25:return this.popState(),39;case 26:return this.pushState("CLASS"),41;case 27:return this.popState(),this.pushState("CLASS_STYLE"),42;case 28:return this.popState(),43;case 29:return this.pushState("SCALE"),16;case 30:return 17;case 31:this.popState();break;case 32:this.pushState("STATE");break;case 33:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),24;case 34:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),25;case 35:return this.popState(),kt.yytext=kt.yytext.slice(0,-10).trim(),26;case 36:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),24;case 37:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),25;case 38:return this.popState(),kt.yytext=kt.yytext.slice(0,-10).trim(),26;case 39:return 44;case 40:return 45;case 41:return 46;case 42:return 47;case 43:this.pushState("STATE_STRING");break;case 44:return this.pushState("STATE_ID"),"AS";case 45:return this.popState(),"ID";case 46:this.popState();break;case 47:return"STATE_DESCR";case 48:return 18;case 49:this.popState();break;case 50:return this.popState(),this.pushState("struct"),19;case 51:break;case 52:return this.popState(),20;case 53:break;case 54:return this.begin("NOTE"),28;case 55:return this.popState(),this.pushState("NOTE_ID"),52;case 56:return this.popState(),this.pushState("NOTE_ID"),53;case 57:this.popState(),this.pushState("FLOATING_NOTE");break;case 58:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 59:break;case 60:return"NOTE_TEXT";case 61:return this.popState(),"ID";case 62:return this.popState(),this.pushState("NOTE_TEXT"),23;case 63:return this.popState(),kt.yytext=kt.yytext.substr(2).trim(),30;case 64:return this.popState(),kt.yytext=kt.yytext.slice(0,-8).trim(),30;case 65:return 6;case 66:return 6;case 67:return 15;case 68:return 50;case 69:return 23;case 70:return kt.yytext=kt.yytext.trim(),13;case 71:return 14;case 72:return 27;case 73:return 51;case 74:return 5;case 75:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,32,39,40,41,42,51,52,53,54,68,69,70,71,72],inclusive:!1},FLOATING_NOTE_ID:{rules:[61],inclusive:!1},FLOATING_NOTE:{rules:[58,59,60],inclusive:!1},NOTE_TEXT:{rules:[63,64],inclusive:!1},NOTE_ID:{rules:[62],inclusive:!1},NOTE:{rules:[55,56,57],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,30,31],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[45],inclusive:!1},STATE_STRING:{rules:[46,47],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,33,34,35,36,37,38,43,44,48,49,50],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,50,54,65,66,67,68,69,70,71,73,74,75],inclusive:!0}}};return xt}();Ot.lexer=It;function jt(){this.yy={}}return jt.prototype=Ot,Ot.Parser=jt,new jt}();Kbt.parser=Kbt;const qqt=Kbt,HJe="LR",VJe="TB",EX="state",Wbt="relation",UJe="classDef",GJe="applyClass",yB="default",Hqt="divider",Ybt="[*]",Vqt="start",Uqt=Ybt,Gqt="end",Kqt="color",Wqt="fill",KJe="bgFill",WJe=",";function Yqt(){return{}}let Xqt=HJe,TX=[],xB=Yqt();const Qqt=()=>({relations:[],states:{},documents:{}});let CX={root:Qqt()},lg=CX.root,kB=0,Jqt=0;const YJe={LINE:0,DOTTED_LINE:1},XJe={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},SX=i=>JSON.parse(JSON.stringify(i)),QJe=i=>{Kt.info("Setting root doc",i),TX=i},JJe=()=>TX,_X=(i,a,f)=>{if(a.stmt===Wbt)_X(i,a.state1,!0),_X(i,a.state2,!1);else if(a.stmt===EX&&(a.id==="[*]"?(a.id=f?i.id+"_start":i.id+"_end",a.start=f):a.id=a.id.trim()),a.doc){const g=[];let w=[],v;for(v=0;v0&&w.length>0){const b={stmt:EX,id:_Ft(),type:"divider",doc:SX(w)};g.push(SX(b)),a.doc=g}a.doc.forEach(b=>_X(a,b,!0))}},ZJe=()=>(_X({id:"root"},{id:"root",doc:TX},!0),{id:"root",doc:TX}),tZe=i=>{let a;i.doc?a=i.doc:a=i,Kt.info(a),Zqt(!0),Kt.info("Extract",a),a.forEach(f=>{switch(f.stmt){case EX:z9(f.id.trim(),f.type,f.doc,f.description,f.note,f.classes,f.styles,f.textStyles);break;case Wbt:tHt(f.state1,f.state2,f.description);break;case UJe:eHt(f.id.trim(),f.classes);break;case GJe:Zbt(f.id.trim(),f.styleClass);break}})},z9=function(i,a=yB,f=null,g=null,w=null,v=null,b=null,E=null){const S=i==null?void 0:i.trim();lg.states[S]===void 0?(Kt.info("Adding state ",S,g),lg.states[S]={id:S,descriptions:[],type:a,doc:f,note:w,classes:[],styles:[],textStyles:[]}):(lg.states[S].doc||(lg.states[S].doc=f),lg.states[S].type||(lg.states[S].type=a)),g&&(Kt.info("Setting state description",S,g),typeof g=="string"&&Jbt(S,g.trim()),typeof g=="object"&&g.forEach(_=>Jbt(S,_.trim()))),w&&(lg.states[S].note=w,lg.states[S].note.text=ei.sanitizeText(lg.states[S].note.text,Re())),v&&(Kt.info("Setting state classes",S,v),(typeof v=="string"?[v]:v).forEach(M=>Zbt(S,M.trim()))),b&&(Kt.info("Setting state styles",S,b),(typeof b=="string"?[b]:b).forEach(M=>lZe(S,M.trim()))),E&&(Kt.info("Setting state styles",S,b),(typeof E=="string"?[E]:E).forEach(M=>hZe(S,M.trim())))},Zqt=function(i){CX={root:Qqt()},lg=CX.root,kB=0,xB=Yqt(),i||ag()},EB=function(i){return lg.states[i]},eZe=function(){return lg.states},nZe=function(){Kt.info("Documents = ",CX)},rZe=function(){return lg.relations};function Xbt(i=""){let a=i;return i===Ybt&&(kB++,a=`${Vqt}${kB}`),a}function Qbt(i="",a=yB){return i===Ybt?Vqt:a}function iZe(i=""){let a=i;return i===Uqt&&(kB++,a=`${Gqt}${kB}`),a}function sZe(i="",a=yB){return i===Uqt?Gqt:a}function aZe(i,a,f){let g=Xbt(i.id.trim()),w=Qbt(i.id.trim(),i.type),v=Xbt(a.id.trim()),b=Qbt(a.id.trim(),a.type);z9(g,w,i.doc,i.description,i.note,i.classes,i.styles,i.textStyles),z9(v,b,a.doc,a.description,a.note,a.classes,a.styles,a.textStyles),lg.relations.push({id1:g,id2:v,relationTitle:ei.sanitizeText(f,Re())})}const tHt=function(i,a,f){if(typeof i=="object")aZe(i,a,f);else{const g=Xbt(i.trim()),w=Qbt(i),v=iZe(a.trim()),b=sZe(a);z9(g,w),z9(v,b),lg.relations.push({id1:g,id2:v,title:ei.sanitizeText(f,Re())})}},Jbt=function(i,a){const f=lg.states[i],g=a.startsWith(":")?a.replace(":","").trim():a;f.descriptions.push(ei.sanitizeText(g,Re()))},oZe=function(i){return i.substring(0,1)===":"?i.substr(2).trim():i.trim()},cZe=()=>(Jqt++,"divider-id-"+Jqt),eHt=function(i,a=""){xB[i]===void 0&&(xB[i]={id:i,styles:[],textStyles:[]});const f=xB[i];a!=null&&a.split(WJe).forEach(g=>{const w=g.replace(/([^;]*);/,"$1").trim();if(g.match(Kqt)){const b=w.replace(Wqt,KJe).replace(Kqt,Wqt);f.textStyles.push(b)}f.styles.push(w)})},uZe=function(){return xB},Zbt=function(i,a){i.split(",").forEach(function(f){let g=EB(f);if(g===void 0){const w=f.trim();z9(w),g=EB(w)}g.classes.push(a)})},lZe=function(i,a){const f=EB(i);f!==void 0&&f.textStyles.push(a)},hZe=function(i,a){const f=EB(i);f!==void 0&&f.textStyles.push(a)},Hx={getConfig:()=>Re().state,addState:z9,clear:Zqt,getState:EB,getStates:eZe,getRelations:rZe,getClasses:uZe,getDirection:()=>Xqt,addRelation:tHt,getDividerId:cZe,setDirection:i=>{Xqt=i},cleanupLabel:oZe,lineType:YJe,relationType:XJe,logDocuments:nZe,getRootDoc:JJe,setRootDoc:QJe,getRootDocV2:ZJe,extract:tZe,trimColon:i=>i&&i[0]===":"?i.substr(1).trim():i.trim(),getAccTitle:Xg,setAccTitle:og,getAccDescription:Jg,setAccDescription:Qg,addStyleClass:eHt,setCssClass:Zbt,addDescription:Jbt,setDiagramTitle:S2,getDiagramTitle:Zg},nHt=i=>` +defs #statediagram-barbEnd { + fill: ${i.transitionColor}; + stroke: ${i.transitionColor}; + } +g.stateGroup text { + fill: ${i.nodeBorder}; + stroke: none; + font-size: 10px; +} +g.stateGroup text { + fill: ${i.textColor}; + stroke: none; + font-size: 10px; + +} +g.stateGroup .state-title { + font-weight: bolder; + fill: ${i.stateLabelColor}; +} + +g.stateGroup rect { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; +} + +g.stateGroup line { + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.transition { + stroke: ${i.transitionColor}; + stroke-width: 1; + fill: none; +} + +.stateGroup .composit { + fill: ${i.background}; + border-bottom: 1px +} + +.stateGroup .alt-composit { + fill: #e0e0e0; + border-bottom: 1px +} + +.state-note { + stroke: ${i.noteBorderColor}; + fill: ${i.noteBkgColor}; + + text { + fill: ${i.noteTextColor}; + stroke: none; + font-size: 10px; + } +} + +.stateLabel .box { + stroke: none; + stroke-width: 0; + fill: ${i.mainBkg}; + opacity: 0.5; +} + +.edgeLabel .label rect { + fill: ${i.labelBackgroundColor}; + opacity: 0.5; +} +.edgeLabel .label text { + fill: ${i.transitionLabelColor||i.tertiaryTextColor}; +} +.label div .edgeLabel { + color: ${i.transitionLabelColor||i.tertiaryTextColor}; +} + +.stateLabel text { + fill: ${i.stateLabelColor}; + font-size: 10px; + font-weight: bold; +} + +.node circle.state-start { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node .fork-join { + fill: ${i.specialStateColor}; + stroke: ${i.specialStateColor}; +} + +.node circle.state-end { + fill: ${i.innerEndBackground}; + stroke: ${i.background}; + stroke-width: 1.5 +} +.end-state-inner { + fill: ${i.compositeBackground||i.background}; + // stroke: ${i.background}; + stroke-width: 1.5 +} + +.node rect { + fill: ${i.stateBkg||i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} +.node polygon { + fill: ${i.mainBkg}; + stroke: ${i.stateBorder||i.nodeBorder};; + stroke-width: 1px; +} +#statediagram-barbEnd { + fill: ${i.lineColor}; +} + +.statediagram-cluster rect { + fill: ${i.compositeTitleBackground}; + stroke: ${i.stateBorder||i.nodeBorder}; + stroke-width: 1px; +} + +.cluster-label, .nodeLabel { + color: ${i.stateLabelColor}; +} + +.statediagram-cluster rect.outer { + rx: 5px; + ry: 5px; +} +.statediagram-state .divider { + stroke: ${i.stateBorder||i.nodeBorder}; +} + +.statediagram-state .title-state { + rx: 5px; + ry: 5px; +} +.statediagram-cluster.statediagram-cluster .inner { + fill: ${i.compositeBackground||i.background}; +} +.statediagram-cluster.statediagram-cluster-alt .inner { + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.statediagram-cluster .inner { + rx:0; + ry:0; +} + +.statediagram-state rect.basic { + rx: 5px; + ry: 5px; +} +.statediagram-state rect.divider { + stroke-dasharray: 10,10; + fill: ${i.altBackground?i.altBackground:"#efefef"}; +} + +.note-edge { + stroke-dasharray: 5; +} + +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} +.statediagram-note rect { + fill: ${i.noteBkgColor}; + stroke: ${i.noteBorderColor}; + stroke-width: 1px; + rx: 0; + ry: 0; +} + +.statediagram-note text { + fill: ${i.noteTextColor}; +} + +.statediagram-note .nodeLabel { + color: ${i.noteTextColor}; +} +.statediagram .edgeLabel { + color: red; // ${i.noteTextColor}; +} + +#dependencyStart, #dependencyEnd { + fill: ${i.lineColor}; + stroke: ${i.lineColor}; + stroke-width: 1; +} + +.statediagramTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; +} +`,t2t={},fZe=(i,a)=>{t2t[i]=a},dZe=i=>t2t[i],rHt=()=>Object.keys(t2t),gZe={get:dZe,set:fZe,keys:rHt,size:()=>rHt().length},pZe=i=>i.append("circle").attr("class","start-state").attr("r",Re().state.sizeUnit).attr("cx",Re().state.padding+Re().state.sizeUnit).attr("cy",Re().state.padding+Re().state.sizeUnit),bZe=i=>i.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",Re().state.textHeight).attr("class","divider").attr("x2",Re().state.textHeight*2).attr("y1",0).attr("y2",0),wZe=(i,a)=>{const f=i.append("text").attr("x",2*Re().state.padding).attr("y",Re().state.textHeight+2*Re().state.padding).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.id),g=f.node().getBBox();return i.insert("rect",":first-child").attr("x",Re().state.padding).attr("y",Re().state.padding).attr("width",g.width+2*Re().state.padding).attr("height",g.height+2*Re().state.padding).attr("rx",Re().state.radius),f},mZe=(i,a)=>{const f=function(R,B,z){const Y=R.append("tspan").attr("x",2*Re().state.padding).text(B);z||Y.attr("dy",Re().state.textHeight)},w=i.append("text").attr("x",2*Re().state.padding).attr("y",Re().state.textHeight+1.3*Re().state.padding).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.descriptions[0]).node().getBBox(),v=w.height,b=i.append("text").attr("x",Re().state.padding).attr("y",v+Re().state.padding*.4+Re().state.dividerMargin+Re().state.textHeight).attr("class","state-description");let E=!0,S=!0;a.descriptions.forEach(function(R){E||(f(b,R,S),S=!1),E=!1});const _=i.append("line").attr("x1",Re().state.padding).attr("y1",Re().state.padding+v+Re().state.dividerMargin/2).attr("y2",Re().state.padding+v+Re().state.dividerMargin/2).attr("class","descr-divider"),M=b.node().getBBox(),F=Math.max(M.width,w.width);return _.attr("x2",F+3*Re().state.padding),i.insert("rect",":first-child").attr("x",Re().state.padding).attr("y",Re().state.padding).attr("width",F+2*Re().state.padding).attr("height",M.height+v+2*Re().state.padding).attr("rx",Re().state.radius),i},vZe=(i,a,f)=>{const g=Re().state.padding,w=2*Re().state.padding,v=i.node().getBBox(),b=v.width,E=v.x,S=i.append("text").attr("x",0).attr("y",Re().state.titleShift).attr("font-size",Re().state.fontSize).attr("class","state-title").text(a.id),M=S.node().getBBox().width+w;let F=Math.max(M,b);F===b&&(F=F+w);let R;const B=i.node().getBBox();a.doc,R=E-g,M>b&&(R=(b-F)/2+g),Math.abs(E-B.x)b&&(R=E-(M-b)/2);const z=1-Re().state.textHeight;return i.insert("rect",":first-child").attr("x",R).attr("y",z).attr("class",f?"alt-composit":"composit").attr("width",F).attr("height",B.height+Re().state.textHeight+Re().state.titleShift+1).attr("rx","0"),S.attr("x",R+g),M<=b&&S.attr("x",E+(F-w)/2-M/2+g),i.insert("rect",":first-child").attr("x",R).attr("y",Re().state.titleShift-Re().state.textHeight-Re().state.padding).attr("width",F).attr("height",Re().state.textHeight*3).attr("rx",Re().state.radius),i.insert("rect",":first-child").attr("x",R).attr("y",Re().state.titleShift-Re().state.textHeight-Re().state.padding).attr("width",F).attr("height",B.height+3+2*Re().state.textHeight).attr("rx",Re().state.radius),i},yZe=i=>(i.append("circle").attr("class","end-state-outer").attr("r",Re().state.sizeUnit+Re().state.miniPadding).attr("cx",Re().state.padding+Re().state.sizeUnit+Re().state.miniPadding).attr("cy",Re().state.padding+Re().state.sizeUnit+Re().state.miniPadding),i.append("circle").attr("class","end-state-inner").attr("r",Re().state.sizeUnit).attr("cx",Re().state.padding+Re().state.sizeUnit+2).attr("cy",Re().state.padding+Re().state.sizeUnit+2)),xZe=(i,a)=>{let f=Re().state.forkWidth,g=Re().state.forkHeight;if(a.parentId){let w=f;f=g,g=w}return i.append("rect").style("stroke","black").style("fill","black").attr("width",f).attr("height",g).attr("x",Re().state.padding).attr("y",Re().state.padding)},kZe=(i,a,f,g)=>{let w=0;const v=g.append("text");v.style("text-anchor","start"),v.attr("class","noteText");let b=i.replace(/\r\n/g,"
    ");b=b.replace(/\n/g,"
    ");const E=b.split(ei.lineBreakRegex);let S=1.25*Re().state.noteMargin;for(const _ of E){const M=_.trim();if(M.length>0){const F=v.append("tspan");if(F.text(M),S===0){const R=F.node().getBBox();S+=R.height}w+=S,F.attr("x",a+Re().state.noteMargin),F.attr("y",f+w+1.25*Re().state.noteMargin)}}return{textWidth:v.node().getBBox().width,textHeight:w}},EZe=(i,a)=>{a.attr("class","state-note");const f=a.append("rect").attr("x",0).attr("y",Re().state.padding),g=a.append("g"),{textWidth:w,textHeight:v}=kZe(i,0,0,g);return f.attr("height",v+2*Re().state.noteMargin),f.attr("width",w+Re().state.noteMargin*2),f},iHt=function(i,a){const f=a.id,g={id:f,label:a.id,width:0,height:0},w=i.append("g").attr("id",f).attr("class","stateGroup");a.type==="start"&&pZe(w),a.type==="end"&&yZe(w),(a.type==="fork"||a.type==="join")&&xZe(w,a),a.type==="note"&&EZe(a.note.text,w),a.type==="divider"&&bZe(w),a.type==="default"&&a.descriptions.length===0&&wZe(w,a),a.type==="default"&&a.descriptions.length>0&&mZe(w,a);const v=w.node().getBBox();return g.width=v.width+2*Re().state.padding,g.height=v.height+2*Re().state.padding,gZe.set(f,g),g};let sHt=0;const TZe=function(i,a,f){const g=function(S){switch(S){case Hx.relationType.AGGREGATION:return"aggregation";case Hx.relationType.EXTENSION:return"extension";case Hx.relationType.COMPOSITION:return"composition";case Hx.relationType.DEPENDENCY:return"dependency"}};a.points=a.points.filter(S=>!Number.isNaN(S.y));const w=a.points,v=Ax().x(function(S){return S.x}).y(function(S){return S.y}).curve(wF),b=i.append("path").attr("d",v(w)).attr("id","edge"+sHt).attr("class","transition");let E="";if(Re().state.arrowMarkerAbsolute&&(E=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,E=E.replace(/\(/g,"\\("),E=E.replace(/\)/g,"\\)")),b.attr("marker-end","url("+E+"#"+g(Hx.relationType.DEPENDENCY)+"End)"),f.title!==void 0){const S=i.append("g").attr("class","stateLabel"),{x:_,y:M}=uo.calcLabelPosition(a.points),F=ei.getRows(f.title);let R=0;const B=[];let z=0,Y=0;for(let ft=0;ft<=F.length;ft++){const wt=S.append("text").attr("text-anchor","middle").text(F[ft]).attr("x",_).attr("y",M+R),mt=wt.node().getBBox();z=Math.max(z,mt.width),Y=Math.min(Y,mt.x),Kt.info(mt.x,_,M+R),R===0&&(R=wt.node().getBBox().height,Kt.info("Title height",R,M)),B.push(wt)}let nt=R*F.length;if(F.length>1){const ft=(F.length-1)*R*.5;B.forEach((wt,mt)=>wt.attr("y",M+mt*R-ft)),nt=R*F.length}const ot=S.node().getBBox();S.insert("rect",":first-child").attr("class","box").attr("x",_-z/2-Re().state.padding/2).attr("y",M-nt/2-Re().state.padding/2-3.5).attr("width",z+Re().state.padding).attr("height",nt+Re().state.padding),Kt.info(ot)}sHt++};let M2;const e2t={},CZe=function(){},SZe=function(i){i.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")},_Ze=function(i,a,f,g){M2=Re().state;const w=Re().securityLevel;let v;w==="sandbox"&&(v=Tr("#i"+a));const b=Tr(w==="sandbox"?v.nodes()[0].contentDocument.body:"body"),E=w==="sandbox"?v.nodes()[0].contentDocument:document;Kt.debug("Rendering diagram "+i);const S=b.select(`[id='${a}']`);SZe(S);const _=g.db.getRootDoc();aHt(_,S,void 0,!1,b,E,g);const M=M2.padding,F=S.node().getBBox(),R=F.width+M*2,B=F.height+M*2,z=R*1.75;sg(S,B,z,M2.useMaxWidth),S.attr("viewBox",`${F.x-M2.padding} ${F.y-M2.padding} `+R+" "+B)},AZe=i=>i?i.length*M2.fontSizeFactor:1,aHt=(i,a,f,g,w,v,b)=>{const E=new l1({compound:!0,multigraph:!0});let S,_=!0;for(S=0;S{const mt=wt.parentElement;let ct=0,rt=0;mt&&(mt.parentElement&&(ct=mt.parentElement.getBBox().width),rt=parseInt(mt.getAttribute("data-x-shift"),10),Number.isNaN(rt)&&(rt=0)),wt.setAttribute("x1",0-rt+8),wt.setAttribute("x2",ct-rt-8)})):Kt.debug("No Node "+ot+": "+JSON.stringify(E.node(ot)))});let Y=z.getBBox();E.edges().forEach(function(ot){ot!==void 0&&E.edge(ot)!==void 0&&(Kt.debug("Edge "+ot.v+" -> "+ot.w+": "+JSON.stringify(E.edge(ot))),TZe(a,E.edge(ot),E.edge(ot).relation))}),Y=z.getBBox();const nt={id:f||"root",label:f||"root",width:0,height:0};return nt.width=Y.width+2*M2.padding,nt.height=Y.height+2*M2.padding,Kt.debug("Doc rendered",nt,E),nt},LZe=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:qqt,db:Hx,renderer:{setConf:CZe,draw:_Ze},styles:nHt,init:i=>{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,Hx.clear()}}},Symbol.toStringTag,{value:"Module"})),AX="rect",n2t="rectWithTitle",DZe="start",MZe="end",IZe="divider",OZe="roundedWithTitle",NZe="note",PZe="noteGroup",ID="statediagram",FZe=`${ID}-state`,oHt="transition",BZe="note",RZe=`${oHt} note-edge`,jZe=`${ID}-${BZe}`,$Ze=`${ID}-cluster`,zZe=`${ID}-cluster-alt`,cHt="parent",uHt="note",qZe="state",r2t="----",HZe=`${r2t}${uHt}`,lHt=`${r2t}${cHt}`,hHt="fill:none",fHt="fill: #333",dHt="c",gHt="text",pHt="normal";let LX={},L8=0;const VZe=function(i){const a=Object.keys(i);for(const f of a)i[f]},UZe=function(i,a){return a.db.extract(a.db.getRootDocV2()),a.db.getClasses()};function GZe(i){return i==null?"":i.classes?i.classes.join(" "):""}function i2t(i="",a=0,f="",g=r2t){const w=f!==null&&f.length>0?`${g}${f}`:"";return`${qZe}-${i}${w}-${a}`}const TB=(i,a,f,g,w,v)=>{const b=f.id,E=GZe(g[b]);if(b!=="root"){let S=AX;f.start===!0&&(S=DZe),f.start===!1&&(S=MZe),f.type!==yB&&(S=f.type),LX[b]||(LX[b]={id:b,shape:S,description:ei.sanitizeText(b,Re()),classes:`${E} ${FZe}`});const _=LX[b];f.description&&(Array.isArray(_.description)?(_.shape=n2t,_.description.push(f.description)):_.description.length>0?(_.shape=n2t,_.description===b?_.description=[f.description]:_.description=[_.description,f.description]):(_.shape=AX,_.description=f.description),_.description=ei.sanitizeTextOrArray(_.description,Re())),_.description.length===1&&_.shape===n2t&&(_.shape=AX),!_.type&&f.doc&&(Kt.info("Setting cluster for ",b,s2t(f)),_.type="group",_.dir=s2t(f),_.shape=f.type===Hqt?IZe:OZe,_.classes=_.classes+" "+$Ze+" "+(v?zZe:""));const M={labelStyle:"",shape:_.shape,labelText:_.description,classes:_.classes,style:"",id:b,dir:_.dir,domId:i2t(b,L8),type:_.type,padding:15};if(M.centerLabel=!0,f.note){const F={labelStyle:"",shape:NZe,labelText:f.note.text,classes:jZe,style:"",id:b+HZe+"-"+L8,domId:i2t(b,L8,uHt),type:_.type,padding:15},R={labelStyle:"",shape:PZe,labelText:f.note.text,classes:_.classes,style:"",id:b+lHt,domId:i2t(b,L8,cHt),type:"group",padding:0};L8++;const B=b+lHt;i.setNode(B,R),i.setNode(F.id,F),i.setNode(b,M),i.setParent(b,B),i.setParent(F.id,B);let z=b,Y=F.id;f.note.position==="left of"&&(z=F.id,Y=b),i.setEdge(z,Y,{arrowhead:"none",arrowType:"",style:hHt,labelStyle:"",classes:RZe,arrowheadStyle:fHt,labelpos:dHt,labelType:gHt,thickness:pHt})}else i.setNode(b,M)}a&&a.id!=="root"&&(Kt.trace("Setting node ",b," to be child of its parent ",a.id),i.setParent(b,a.id)),f.doc&&(Kt.trace("Adding nodes children "),KZe(i,f,f.doc,g,w,!v))},KZe=(i,a,f,g,w,v)=>{Kt.trace("items",f),f.forEach(b=>{switch(b.stmt){case EX:TB(i,a,b,g,w,v);break;case yB:TB(i,a,b,g,w,v);break;case Wbt:{TB(i,a,b.state1,g,w,v),TB(i,a,b.state2,g,w,v);const E={id:"edge"+L8,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:hHt,labelStyle:"",label:ei.sanitizeText(b.description,Re()),arrowheadStyle:fHt,labelpos:dHt,labelType:gHt,thickness:pHt,classes:oHt};i.setEdge(b.state1.id,b.state2.id,E,L8),L8++}break}})},s2t=(i,a=VJe)=>{let f=a;if(i.doc)for(let g=0;g{i.state||(i.state={}),i.state.arrowMarkerAbsolute=i.arrowMarkerAbsolute,Hx.clear()}}},Symbol.toStringTag,{value:"Module"}));var a2t=function(){var i=function(F,R,B,z){for(B=B||{},z=F.length;z--;B[F[z]]=R);return B},a=[6,8,10,11,12,14,16,17,18],f=[1,9],g=[1,10],w=[1,11],v=[1,12],b=[1,13],E=[1,14],S={trace:function(){},yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:function(R,B,z,Y,nt,ot,ft){var wt=ot.length-1;switch(nt){case 1:return ot[wt-1];case 2:this.$=[];break;case 3:ot[wt-1].push(ot[wt]),this.$=ot[wt-1];break;case 4:case 5:this.$=ot[wt];break;case 6:case 7:this.$=[];break;case 8:Y.setDiagramTitle(ot[wt].substr(6)),this.$=ot[wt].substr(6);break;case 9:this.$=ot[wt].trim(),Y.setAccTitle(this.$);break;case 10:case 11:this.$=ot[wt].trim(),Y.setAccDescription(this.$);break;case 12:Y.addSection(ot[wt].substr(8)),this.$=ot[wt].substr(8);break;case 13:Y.addTask(ot[wt-1],ot[wt]),this.$="task";break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:f,12:g,14:w,16:v,17:b,18:E},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:15,11:f,12:g,14:w,16:v,17:b,18:E},i(a,[2,5]),i(a,[2,6]),i(a,[2,8]),{13:[1,16]},{15:[1,17]},i(a,[2,11]),i(a,[2,12]),{19:[1,18]},i(a,[2,4]),i(a,[2,9]),i(a,[2,10]),i(a,[2,13])],defaultActions:{},parseError:function(R,B){if(B.recoverable)this.trace(R);else{var z=new Error(R);throw z.hash=B,z}},parse:function(R){var B=this,z=[0],Y=[],nt=[null],ot=[],ft=this.table,wt="",mt=0,ct=0,rt=2,it=1,gt=ot.slice.call(arguments,1),Q=Object.create(this.lexer),dt={yy:{}};for(var K in this.yy)Object.prototype.hasOwnProperty.call(this.yy,K)&&(dt.yy[K]=this.yy[K]);Q.setInput(R,dt.yy),dt.yy.lexer=Q,dt.yy.parser=this,typeof Q.yylloc>"u"&&(Q.yylloc={});var yt=Q.yylloc;ot.push(yt);var V=Q.options&&Q.options.ranges;typeof dt.yy.parseError=="function"?this.parseError=dt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Ot(){var Ae;return Ae=Y.pop()||Q.lex()||it,typeof Ae!="number"&&(Ae instanceof Array&&(Y=Ae,Ae=Y.pop()),Ae=B.symbols_[Ae]||Ae),Ae}for(var It,jt,xt,Ft,Ct={},kt,Gt,Fe,Mt;;){if(jt=z[z.length-1],this.defaultActions[jt]?xt=this.defaultActions[jt]:((It===null||typeof It>"u")&&(It=Ot()),xt=ft[jt]&&ft[jt][It]),typeof xt>"u"||!xt.length||!xt[0]){var pn="";Mt=[];for(kt in ft[jt])this.terminals_[kt]&&kt>rt&&Mt.push("'"+this.terminals_[kt]+"'");Q.showPosition?pn="Parse error on line "+(mt+1)+`: +`+Q.showPosition()+` +Expecting `+Mt.join(", ")+", got '"+(this.terminals_[It]||It)+"'":pn="Parse error on line "+(mt+1)+": Unexpected "+(It==it?"end of input":"'"+(this.terminals_[It]||It)+"'"),this.parseError(pn,{text:Q.match,token:this.terminals_[It]||It,line:Q.yylineno,loc:yt,expected:Mt})}if(xt[0]instanceof Array&&xt.length>1)throw new Error("Parse Error: multiple actions possible at state: "+jt+", token: "+It);switch(xt[0]){case 1:z.push(It),nt.push(Q.yytext),ot.push(Q.yylloc),z.push(xt[1]),It=null,ct=Q.yyleng,wt=Q.yytext,mt=Q.yylineno,yt=Q.yylloc;break;case 2:if(Gt=this.productions_[xt[1]][1],Ct.$=nt[nt.length-Gt],Ct._$={first_line:ot[ot.length-(Gt||1)].first_line,last_line:ot[ot.length-1].last_line,first_column:ot[ot.length-(Gt||1)].first_column,last_column:ot[ot.length-1].last_column},V&&(Ct._$.range=[ot[ot.length-(Gt||1)].range[0],ot[ot.length-1].range[1]]),Ft=this.performAction.apply(Ct,[wt,ct,mt,dt.yy,xt[1],nt,ot].concat(gt)),typeof Ft<"u")return Ft;Gt&&(z=z.slice(0,-1*Gt*2),nt=nt.slice(0,-1*Gt),ot=ot.slice(0,-1*Gt)),z.push(this.productions_[xt[1]][0]),nt.push(Ct.$),ot.push(Ct._$),Fe=ft[z[z.length-2]][z[z.length-1]],z.push(Fe);break;case 3:return!0}}return!0}},_=function(){var F={EOF:1,parseError:function(B,z){if(this.yy.parser)this.yy.parser.parseError(B,z);else throw new Error(B)},setInput:function(R,B){return this.yy=B||this.yy||{},this._input=R,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var R=this._input[0];this.yytext+=R,this.yyleng++,this.offset++,this.match+=R,this.matched+=R;var B=R.match(/(?:\r\n?|\n).*/g);return B?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),R},unput:function(R){var B=R.length,z=R.split(/(?:\r\n?|\n)/g);this._input=R+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-B),this.offset-=B;var Y=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),z.length-1&&(this.yylineno-=z.length-1);var nt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:z?(z.length===Y.length?this.yylloc.first_column:0)+Y[Y.length-z.length].length-z[0].length:this.yylloc.first_column-B},this.options.ranges&&(this.yylloc.range=[nt[0],nt[0]+this.yyleng-B]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(R){this.unput(this.match.slice(R))},pastInput:function(){var R=this.matched.substr(0,this.matched.length-this.match.length);return(R.length>20?"...":"")+R.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var R=this.match;return R.length<20&&(R+=this._input.substr(0,20-R.length)),(R.substr(0,20)+(R.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var R=this.pastInput(),B=new Array(R.length+1).join("-");return R+this.upcomingInput()+` +`+B+"^"},test_match:function(R,B){var z,Y,nt;if(this.options.backtrack_lexer&&(nt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(nt.yylloc.range=this.yylloc.range.slice(0))),Y=R[0].match(/(?:\r\n?|\n).*/g),Y&&(this.yylineno+=Y.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:Y?Y[Y.length-1].length-Y[Y.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+R[0].length},this.yytext+=R[0],this.match+=R[0],this.matches=R,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(R[0].length),this.matched+=R[0],z=this.performAction.call(this,this.yy,this,B,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),z)return z;if(this._backtrack){for(var ot in nt)this[ot]=nt[ot];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var R,B,z,Y;this._more||(this.yytext="",this.match="");for(var nt=this._currentRules(),ot=0;otB[0].length)){if(B=z,Y=ot,this.options.backtrack_lexer){if(R=this.test_match(z,nt[ot]),R!==!1)return R;if(this._backtrack){B=!1;continue}else return!1}else if(!this.options.flex)break}return B?(R=this.test_match(B,nt[Y]),R!==!1?R:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var B=this.next();return B||this.lex()},begin:function(B){this.conditionStack.push(B)},popState:function(){var B=this.conditionStack.length-1;return B>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(B){return B=this.conditionStack.length-1-Math.abs(B||0),B>=0?this.conditionStack[B]:"INITIAL"},pushState:function(B){this.begin(B)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(B,z,Y,nt){switch(Y){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}},rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}};return F}();S.lexer=_;function M(){this.yy={}}return M.prototype=S,S.Parser=M,new M}();a2t.parser=a2t;const YZe=a2t;let OD="";const o2t=[],CB=[],SB=[],XZe=function(){o2t.length=0,CB.length=0,OD="",SB.length=0,ag()},QZe=function(i){OD=i,o2t.push(i)},JZe=function(){return o2t},ZZe=function(){let i=bHt();const a=100;let f=0;for(;!i&&f{f.people&&i.push(...f.people)}),[...new Set(i)].sort()},etn=function(i,a){const f=a.substr(1).split(":");let g=0,w=[];f.length===1?(g=Number(f[0]),w=[]):(g=Number(f[0]),w=f[1].split(","));const v=w.map(E=>E.trim()),b={section:OD,type:OD,people:v,task:i,score:g};SB.push(b)},ntn=function(i){const a={section:OD,type:OD,description:i,task:i,classes:[]};CB.push(a)},bHt=function(){const i=function(f){return SB[f].processed};let a=!0;for(const[f,g]of SB.entries())i(f),a=a&&g.processed;return a},wHt={getConfig:()=>Re().journey,clear:XZe,setDiagramTitle:S2,getDiagramTitle:Zg,setAccTitle:og,getAccTitle:Xg,setAccDescription:Qg,getAccDescription:Jg,addSection:QZe,getSections:JZe,getTasks:ZZe,addTask:etn,addTaskOrg:ntn,getActors:function(){return ttn()}},rtn=i=>`.label { + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + color: ${i.textColor}; + } + .mouth { + stroke: #666; + } + + line { + stroke: ${i.textColor} + } + + .legend { + fill: ${i.textColor}; + } + + .label text { + fill: #333; + } + .label { + color: ${i.textColor} + } + + .face { + ${i.faceColor?`fill: ${i.faceColor}`:"fill: #FFF8DC"}; + stroke: #999; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 1.5px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + } + text-align: center; + } + + .cluster rect { + } + + .cluster text { + fill: ${i.titleColor}; + } + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: 'trebuchet ms', verdana, arial, sans-serif; + font-family: var(--mermaid-font-family); + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .task-type-0, .section-type-0 { + ${i.fillType0?`fill: ${i.fillType0}`:""}; + } + .task-type-1, .section-type-1 { + ${i.fillType0?`fill: ${i.fillType1}`:""}; + } + .task-type-2, .section-type-2 { + ${i.fillType0?`fill: ${i.fillType2}`:""}; + } + .task-type-3, .section-type-3 { + ${i.fillType0?`fill: ${i.fillType3}`:""}; + } + .task-type-4, .section-type-4 { + ${i.fillType0?`fill: ${i.fillType4}`:""}; + } + .task-type-5, .section-type-5 { + ${i.fillType0?`fill: ${i.fillType5}`:""}; + } + .task-type-6, .section-type-6 { + ${i.fillType0?`fill: ${i.fillType6}`:""}; + } + .task-type-7, .section-type-7 { + ${i.fillType0?`fill: ${i.fillType7}`:""}; + } + + .actor-0 { + ${i.actor0?`fill: ${i.actor0}`:""}; + } + .actor-1 { + ${i.actor1?`fill: ${i.actor1}`:""}; + } + .actor-2 { + ${i.actor2?`fill: ${i.actor2}`:""}; + } + .actor-3 { + ${i.actor3?`fill: ${i.actor3}`:""}; + } + .actor-4 { + ${i.actor4?`fill: ${i.actor4}`:""}; + } + .actor-5 { + ${i.actor5?`fill: ${i.actor5}`:""}; + } +`,c2t=function(i,a){return LY(i,a)},itn=function(i,a){const g=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function v(S){const _=YL().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const _=YL().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?v(w):a.score<3?b(w):E(w),g},mHt=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},vHt=function(i,a){return URe(i,a)},stn=function(i,a){function f(w,v,b,E,S){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-S)+" "+(w+b-S*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");g.attr("points",f(a.x,a.y,50,20,7)),g.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,vHt(i,a)},atn=function(i,a,f){const g=i.append("g"),w=_9();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width*a.taskCount+f.diagramMarginX*(a.taskCount-1),w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,c2t(g,w),xHt(f)(a.text,g,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let yHt=-1;const otn=function(i,a,f){const g=a.x+f.width/2,w=i.append("g");yHt++;const v=300+5*30;w.append("line").attr("id","task"+yHt).attr("x1",g).attr("y1",a.y).attr("x2",g).attr("y2",v).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),itn(w,{cx:g,cy:300+(5-a.score)*30,score:a.score});const b=_9();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,c2t(w,b);let E=a.x+14;a.people.forEach(S=>{const _=a.actors[S].color,M={cx:E,cy:a.y,r:7,fill:_,stroke:"#000",title:S,pos:a.actors[S].position};mHt(w,M),E+=10}),xHt(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},ctn=function(i,a){sRt(i,a)},xHt=function(){function i(w,v,b,E,S,_,M,F){const R=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("font-color",F).style("text-anchor","middle").text(w);g(R,M)}function a(w,v,b,E,S,_,M,F,R){const{taskFontSize:B,taskFontFamily:z}=F,Y=w.split(//gi);for(let nt=0;nt{const w=Vx[g].color,v={cx:20,cy:f,r:7,fill:w,stroke:"#000",pos:Vx[g].position};_B.drawCircle(i,v);const b={x:40,y:f+7,fill:"#666",text:g,textMargin:a.boxTextMargin|5};_B.drawText(i,b),f+=20})}const DX=Re().journey,q9=DX.leftMargin,htn=function(i,a,f,g){const w=Re().journey,v=Re().securityLevel;let b;v==="sandbox"&&(b=Tr("#i"+a));const E=Tr(v==="sandbox"?b.nodes()[0].contentDocument.body:"body");em.init();const S=E.select("#"+a);_B.initGraphics(S);const _=g.db.getTasks(),M=g.db.getDiagramTitle(),F=g.db.getActors();for(const ot in Vx)delete Vx[ot];let R=0;F.forEach(ot=>{Vx[ot]={color:w.actorColours[R%w.actorColours.length],position:R},R++}),ltn(S),em.insert(0,0,q9,Object.keys(Vx).length*50),ftn(S,_,0);const B=em.getBounds();M&&S.append("text").text(M).attr("x",q9).attr("font-size","4ex").attr("font-weight","bold").attr("y",25);const z=B.stopy-B.starty+2*w.diagramMarginY,Y=q9+B.stopx+2*w.diagramMarginX;sg(S,z,Y,w.useMaxWidth),S.append("line").attr("x1",q9).attr("y1",w.height*4).attr("x2",Y-q9-4).attr("y2",w.height*4).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const nt=M?70:0;S.attr("viewBox",`${B.startx} -25 ${Y} ${z+nt}`),S.attr("preserveAspectRatio","xMinYMin meet"),S.attr("height",z+nt+25)},em={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0},updateVal:function(i,a,f,g){i[a]===void 0?i[a]=f:i[a]=g(f,i[a])},updateBounds:function(i,a,f,g){const w=Re().journey,v=this;let b=0;function E(S){return function(M){b++;const F=v.sequenceItems.length-b+1;v.updateVal(M,"starty",a-F*w.boxMargin,Math.min),v.updateVal(M,"stopy",g+F*w.boxMargin,Math.max),v.updateVal(em.data,"startx",i-F*w.boxMargin,Math.min),v.updateVal(em.data,"stopx",f+F*w.boxMargin,Math.max),S!=="activation"&&(v.updateVal(M,"startx",i-F*w.boxMargin,Math.min),v.updateVal(M,"stopx",f+F*w.boxMargin,Math.max),v.updateVal(em.data,"starty",a-F*w.boxMargin,Math.min),v.updateVal(em.data,"stopy",g+F*w.boxMargin,Math.max))}}this.sequenceItems.forEach(E())},insert:function(i,a,f,g){const w=Math.min(i,f),v=Math.max(i,f),b=Math.min(a,g),E=Math.max(a,g);this.updateVal(em.data,"startx",w,Math.min),this.updateVal(em.data,"starty",b,Math.min),this.updateVal(em.data,"stopx",v,Math.max),this.updateVal(em.data,"stopy",E,Math.max),this.updateBounds(w,b,v,E)},bumpVerticalPos:function(i){this.verticalPos=this.verticalPos+i,this.data.stopy=this.verticalPos},getVerticalPos:function(){return this.verticalPos},getBounds:function(){return this.data}},u2t=DX.sectionFills,kHt=DX.sectionColours,ftn=function(i,a,f){const g=Re().journey;let w="";const v=g.height*2+g.diagramMarginY,b=f+v;let E=0,S="#CCC",_="black",M=0;for(const[F,R]of a.entries()){if(w!==R.section){S=u2t[E%u2t.length],M=E%u2t.length,_=kHt[E%kHt.length];let z=0;const Y=R.section;for(let ot=F;ot(Vx[Y]&&(z[Y]=Vx[Y]),z),{});R.x=F*g.taskMargin+F*g.width+q9,R.y=b,R.width=g.diagramMarginX,R.height=g.diagramMarginY,R.colour=_,R.fill=S,R.num=M,R.actors=B,_B.drawTask(i,R,g),em.insert(R.x,R.y,R.x+R.width+g.taskMargin,300+5*30)}},EHt={setConf:utn,draw:htn},dtn=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:YZe,db:wHt,renderer:EHt,styles:rtn,init:i=>{EHt.setConf(i.journey),wHt.clear()}}},Symbol.toStringTag,{value:"Module"})),gtn=(i,a,f)=>{const{parentById:g}=f,w=new Set;let v=i;for(;v;){if(w.add(v),v===a)return v;v=g[v]}for(v=a;v;){if(w.has(v))return v;v=g[v]}return"root"};function MX(i){throw new Error('Could not dynamically require "'+i+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var THt={exports:{}};(function(i,a){(function(f){i.exports=f()})(function(){return function(){function f(g,w,v){function b(_,M){if(!w[_]){if(!g[_]){var F=typeof MX=="function"&&MX;if(!M&&F)return F(_,!0);if(E)return E(_,!0);var R=new Error("Cannot find module '"+_+"'");throw R.code="MODULE_NOT_FOUND",R}var B=w[_]={exports:{}};g[_][0].call(B.exports,function(z){var Y=g[_][1][z];return b(Y||z)},B,B.exports,f,g,w,v)}return w[_].exports}for(var E=typeof MX=="function"&&MX,S=0;S0&&arguments[0]!==void 0?arguments[0]:{},R=F.defaultLayoutOptions,B=R===void 0?{}:R,z=F.algorithms,Y=z===void 0?["layered","stress","mrtree","radial","force","disco","sporeOverlap","sporeCompaction","rectpacking"]:z,nt=F.workerFactory,ot=F.workerUrl;if(b(this,_),this.defaultLayoutOptions=B,this.initialized=!1,typeof ot>"u"&&typeof nt>"u")throw new Error("Cannot construct an ELK without both 'workerUrl' and 'workerFactory'.");var ft=nt;typeof ot<"u"&&typeof nt>"u"&&(ft=function(ct){return new Worker(ct)});var wt=ft(ot);if(typeof wt.postMessage!="function")throw new TypeError("Created worker does not provide the required 'postMessage' function.");this.worker=new S(wt),this.worker.postMessage({cmd:"register",algorithms:Y}).then(function(mt){return M.initialized=!0}).catch(console.err)}return v(_,[{key:"layout",value:function(F){var R=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},B=R.layoutOptions,z=B===void 0?this.defaultLayoutOptions:B,Y=R.logging,nt=Y===void 0?!1:Y,ot=R.measureExecutionTime,ft=ot===void 0?!1:ot;return F?this.worker.postMessage({cmd:"layout",graph:F,layoutOptions:z,options:{logging:nt,measureExecutionTime:ft}}):Promise.reject(new Error("Missing mandatory parameter 'graph'."))}},{key:"knownLayoutAlgorithms",value:function(){return this.worker.postMessage({cmd:"algorithms"})}},{key:"knownLayoutOptions",value:function(){return this.worker.postMessage({cmd:"options"})}},{key:"knownLayoutCategories",value:function(){return this.worker.postMessage({cmd:"categories"})}},{key:"terminateWorker",value:function(){this.worker.terminate()}}]),_}();w.default=E;var S=function(){function _(M){var F=this;if(b(this,_),M===void 0)throw new Error("Missing mandatory parameter 'worker'.");this.resolvers={},this.worker=M,this.worker.onmessage=function(R){setTimeout(function(){F.receive(F,R)},0)}}return v(_,[{key:"postMessage",value:function(F){var R=this.id||0;this.id=R+1,F.id=R;var B=this;return new Promise(function(z,Y){B.resolvers[R]=function(nt,ot){nt?(B.convertGwtStyleError(nt),Y(nt)):z(ot)},B.worker.postMessage(F)})}},{key:"receive",value:function(F,R){var B=R.data,z=F.resolvers[B.id];z&&(delete F.resolvers[B.id],B.error?z(B.error):z(null,B.data))}},{key:"terminate",value:function(){this.worker.terminate&&this.worker.terminate()}},{key:"convertGwtStyleError",value:function(F){if(F){var R=F.__java$exception;R&&(R.cause&&R.cause.backingJsObject&&(F.cause=R.cause.backingJsObject,this.convertGwtStyleError(F.cause)),delete F.__java$exception)}}}]),_}()},{}],2:[function(f,g,w){(function(v){(function(){var b;typeof window<"u"?b=window:typeof v<"u"?b=v:typeof self<"u"&&(b=self);var E;function S(){}function _(){}function M(){}function F(){}function R(){}function B(){}function z(){}function Y(){}function nt(){}function ot(){}function ft(){}function wt(){}function mt(){}function ct(){}function rt(){}function it(){}function gt(){}function Q(){}function dt(){}function K(){}function yt(){}function V(){}function Ot(){}function It(){}function jt(){}function xt(){}function Ft(){}function Ct(){}function kt(){}function Gt(){}function Fe(){}function Mt(){}function pn(){}function Ae(){}function ye(){}function tn(){}function sn(){}function be(){}function Ne(){}function Xt(){}function _e(){}function xe(){}function Mn(){}function ce(){}function Br(){}function we(){}function Fi(){}function mi(){}function ga(){}function Ss(){}function za(){}function br(){}function An(){}function Nn(){}function Bn(){}function ke(){}function pe(){}function Je(){}function an(){}function xn(){}function qa(){}function xo(){}function ko(){}function va(){}function Ha(){}function ds(){}function Fu(){}function Zs(){}function d1(){}function I2(){}function ll(){}function Ic(){}function wc(){}function Ea(){}function gu(){}function ta(){}function fo(){}function mc(){}function ca(){}function ya(){}function ea(){}function Zl(){}function Uc(){}function rm(){}function kh(){}function Md(){}function w0(){}function Id(){}function m0(){}function hg(){}function Gi(){}function cn(){}function Nr(){}function Si(){}function vc(){}function Rc(){}function Eh(){}function Zc(){}function Qh(){}function Od(){}function cs(){}function As(){}function to(){}function Ci(){}function pu(){}function Le(){}function iy(){}function $e(){}function g1(){}function ip(){}function sy(){}function D8(){}function g4(){}function th(){}function fg(){}function O2(){}function M8(){}function N2(){}function p4(){}function U1(){}function Nd(){}function Pd(){}function I8(){}function im(){}function Gx(){}function hb(){}function Kx(){}function b4(){}function ay(){}function sp(){}function BD(){}function $l(){}function U9(){}function Gc(){}function $X(){}function P2(){}function zX(){}function MB(){}function qX(){}function IB(){}function p1(){}function oy(){}function G9(){}function OB(){}function fb(){}function cy(){}function HX(){}function F2(){}function VX(){}function UX(){}function Wx(){}function K9(){}function NB(){}function O8(){}function GX(){}function N8(){}function KX(){}function WX(){}function YX(){}function XX(){}function QX(){}function JX(){}function ZX(){}function tQ(){}function eQ(){}function nQ(){}function rQ(){}function RD(){}function iQ(){}function sQ(){}function W9(){}function PB(){}function Yx(){}function aQ(){}function oQ(){}function cQ(){}function uQ(){}function lQ(){}function Y9(){}function jD(){}function FB(){}function w4(){}function m4(){}function hQ(){}function Lf(){}function Xx(){}function fQ(){}function P8(){}function v0(){}function dQ(){}function gQ(){}function pQ(){}function BB(){}function bQ(){}function X9(){}function Q9(){}function RB(){}function $D(){}function Qx(){}function wQ(){}function jB(){}function $B(){}function mQ(){}function vQ(){}function yQ(){}function xQ(){}function kQ(){}function EQ(){}function y0(){}function sm(){}function TQ(){}function J9(){}function Z9(){}function CQ(){}function v4(){}function F8(){}function zD(){}function uy(){}function B8(){}function SQ(){}function tC(){}function Fd(){}function zB(){}function qD(){}function R8(){}function HD(){}function qB(){}function _Q(){}function VD(){}function AQ(){}function LQ(){}function HB(){}function Jx(){}function VB(){}function Zx(){}function DQ(){}function UD(){}function MQ(){}function IQ(){}function OQ(){}function NQ(){}function UB(){}function PQ(){}function FQ(){}function GB(){}function BQ(){}function RQ(){}function jQ(){}function $Q(){}function KB(){}function zQ(){}function qQ(){}function WB(){}function YB(){}function XB(){}function HQ(){}function VQ(){}function j8(){}function t6(){}function eC(){}function UQ(){}function GD(){}function nC(){}function KD(){}function QB(){}function JB(){}function GQ(){}function KQ(){}function WQ(){}function ZB(){}function tR(){}function YQ(){}function XQ(){}function QQ(){}function JQ(){}function ZQ(){}function eR(){}function tJ(){}function eJ(){}function nJ(){}function rJ(){}function nR(){}function rC(){}function iJ(){}function sJ(){}function rR(){}function aJ(){}function oJ(){}function cJ(){}function uJ(){}function lJ(){}function hJ(){}function iR(){}function fJ(){}function sR(){}function dJ(){}function gJ(){}function pJ(){}function iC(){}function bJ(){}function sC(){}function wJ(){}function aR(){}function oR(){}function cR(){}function uR(){}function am(){}function lR(){}function hR(){}function fR(){}function dR(){}function mJ(){}function e6(){}function WD(){}function y4(){}function vJ(){}function yJ(){}function aC(){}function gR(){}function xJ(){}function kJ(){}function EJ(){}function TJ(){}function CJ(){}function SJ(){}function _J(){}function AJ(){}function LJ(){}function DJ(){}function oC(){}function pR(){}function MJ(){}function IJ(){}function OJ(){}function NJ(){}function PJ(){}function bR(){}function wR(){}function FJ(){}function mR(){}function vR(){}function BJ(){}function RJ(){}function jJ(){}function $J(){}function zJ(){}function qJ(){}function HJ(){}function VJ(){}function YD(){}function UJ(){}function $8(){}function yR(){}function GJ(){}function KJ(){}function WJ(){}function YJ(){}function XJ(){}function QJ(){}function JJ(){}function ZJ(){}function tZ(){}function eZ(){}function nZ(){}function rZ(){}function iZ(){}function sZ(){}function aZ(){}function n6(){}function xR(){}function oZ(){}function cZ(){}function uZ(){}function kR(){}function lZ(){}function cC(){}function hZ(){}function fZ(){}function dZ(){}function gZ(){}function pZ(){}function bZ(){}function wZ(){}function mZ(){}function vZ(){}function yZ(){}function r6(){}function xZ(){}function kZ(){}function EZ(){}function TZ(){}function CZ(){}function SZ(){}function _Z(){}function AZ(){}function uC(){}function LZ(){}function DZ(){}function MZ(){}function IZ(){}function OZ(){}function NZ(){}function PZ(){}function FZ(){}function i6(){}function ER(){}function BZ(){}function XD(){}function RZ(){}function jZ(){}function $Z(){}function zZ(){}function qZ(){}function HZ(){}function VZ(){}function TR(){}function UZ(){}function CR(){}function GZ(){}function SR(){}function _R(){}function AR(){}function KZ(){}function WZ(){}function LR(){}function YZ(){}function DR(){}function XZ(){}function QZ(){}function QD(){}function JZ(){}function ZZ(){}function ttt(){}function ett(){}function ntt(){}function MR(){}function rtt(){}function itt(){}function stt(){}function A2t(){}function att(){}function ott(){}function ctt(){}function utt(){}function ltt(){}function htt(){}function ftt(){}function dtt(){}function gtt(){}function ptt(){}function btt(){}function wtt(){}function mtt(){}function vtt(){}function ytt(){}function xtt(){}function Kc(){}function ktt(){}function lC(){}function yc(){}function bu(){}function Xi(){}function JD(){}function Ett(){}function Ttt(){}function Ctt(){}function s6(){}function B2(){}function z8(){}function Stt(){}function ZD(){}function _tt(){}function Att(){}function Ltt(){}function IR(){}function Dtt(){}function Mtt(){}function tM(){}function Itt(){}function zl(){}function Yu(){}function OR(){}function Ott(){}function Ntt(){}function ly(){}function x4(){}function hy(){}function ap(){}function a6(){}function eM(){}function NR(){}function PR(){}function Ptt(){}function G1(){}function FR(){}function fy(){}function q8(){}function nM(){}function o6(){}function db(){}function BR(){}function RR(){}function jR(){}function Ftt(){}function c6(){}function dy(){}function op(){}function gb(){}function k4(){}function H8(){}function hC(){}function rM(){}function Btt(){}function Rtt(){}function $R(){}function zR(){}function je(){}function V8(){}function qR(){}function HR(){}function jtt(){}function U8(){}function G8(){}function VR(){}function $tt(){}function ztt(){}function qtt(){}function Htt(){}function Vtt(){}function Utt(){}function iM(){}function Gtt(){}function Ktt(){}function UR(){}function fC(){}function Wtt(){}function sM(){}function K8(){}function W8(){}function Y8(){}function GR(){}function Ytt(){}function KR(){}function WR(){}function Xtt(){}function dC(){}function pb(){}function YR(){}function XR(){}function gC(){}function Qtt(){}function E4(){}function QR(){}function aM(){}function Oc(){}function oM(){}function cM(){}function pC(){}function Jtt(){}function Ztt(){}function bC(){}function tet(){}function wC(){}function mC(){}function b1(){}function uM(){}function lM(){}function u6(){}function eet(){}function net(){}function ret(){}function iet(){}function x0(){}function vC(){}function l6(){}function K1(){}function JR(){}function ZR(){}function tj(){}function ej(){}function nj(){}function rj(){}function w1(){}function Bu(){}function set(){}function aet(){}function oet(){}function Ru(){}function yC(){}function ij(){}function sj(){}function h6(){}function cet(){}function X8(){}function uet(){}function aj(){}function het(){}function fet(){}function xC(){}function oj(){}function hM(){}function kC(){}function det(){}function get(){}function fM(){}function EC(){}function W1(){}function Q8(){}function pet(){}function J8(){}function dM(){}function R2(){}function TC(){}function gM(){}function m1(){}function CC(){}function Y1(){}function X1(){}function bet(){}function wet(){}function T4(){}function Z8(){}function tE(){}function SC(){}function met(){}function vet(){}function f6(){}function cj(){}function uj(){}function yet(){}function lj(){}function xet(){}function hj(){}function pM(){}function ket(){}function _C(){}function Eet(){}function Tet(){}function Cet(){}function _et(){}function Aet(){}function fj(){}function Let(){}function Det(){}function Met(){}function dj(){}function Iet(){}function Oet(){}function AC(){}function Net(){}function Pet(){}function Fet(){}function Bet(){}function Ret(){}function jet(){}function gj(){}function $et(){}function pj(){}function zet(){}function bM(){}function qet(){}function bj(){}function Het(){}function wj(){}function Vet(){}function mj(){}function vj(){}function yj(){}function wM(){}function C4(){}function LC(){}function Q1(){}function xj(){}function eE(){}function mM(){}function kj(){}function j2(){}function Ej(){}function DC(){UC()}function Uet(){jM()}function Tj(){RH()}function Cj(){Mat()}function Sj(){b_()}function MC(){u6t()}function IC(){Vf()}function _j(){vxt()}function Aj(){TO()}function d6(){$M()}function om(){gI()}function nE(){UYt()}function Lj(){ok()}function Get(){vse()}function Dj(){m4t()}function g6(){ore()}function vM(){v4t()}function Mj(){Xse()}function Ket(){are()}function Ij(){g7()}function OC(){Ooe()}function NC(){Ioe()}function yM(){nie()}function Wet(){Noe()}function Yet(){Vb()}function Xet(){T$()}function Qet(){o8t()}function Jet(){De()}function Zet(){Poe()}function tnt(){cce()}function ent(){cre()}function nnt(){Ohe()}function rnt(){ure()}function int(){W0e()}function snt(){j6t()}function ant(){Sg()}function ont(){Wue()}function p6(){Cc()}function cnt(){mre()}function rE(){ak()}function Jh(){xkt()}function unt(){Ub()}function iE(){kkt()}function PC(){fd()}function lnt(){LO()}function hnt(){rct()}function fnt(){fot()}function Zh(){WZt()}function dnt(){Tq()}function gnt(){VH()}function Oj(){ai()}function pnt(){aH()}function Nj(){Y5t()}function Pj(){fat()}function Fj(){fV()}function Bj(){Okt()}function Df(t){Wn(t)}function Rj(t){this.a=t}function FC(t){this.a=t}function jj(t){this.a=t}function $j(t){this.a=t}function bnt(t){this.a=t}function wnt(t){this.a=t}function zj(t){this.a=t}function mnt(t){this.a=t}function qj(t){this.a=t}function bb(t){this.a=t}function vnt(t){this.a=t}function ynt(t){this.a=t}function xM(t){this.a=t}function xnt(t){this.a=t}function knt(t){this.a=t}function sE(t){this.a=t}function wb(t){this.a=t}function Hj(t){this.a=t}function aE(t){this.a=t}function S4(t){this.a=t}function kM(t){this.a=t}function b6(t){this.a=t}function EM(t){this.b=t}function dg(t){this.c=t}function Ent(t){this.a=t}function gy(t){this.a=t}function Vj(t){this.a=t}function Uj(t){this.a=t}function TM(t){this.a=t}function CM(t){this.a=t}function Gj(t){this.a=t}function w6(t){this.a=t}function oE(t){this.a=t}function Tnt(t){this.a=t}function Kj(t){this.a=t}function Wj(t){this.a=t}function Yj(t){this.a=t}function Xj(t){this.a=t}function xc(t){this.a=t}function cE(t){this.a=t}function uE(t){this.a=t}function cp(){this.a=[]}function Cnt(t,e){t.a=e}function Snt(t,e){t.a=e}function _nt(t,e){t.b=e}function Ant(t,e){t.b=e}function Lnt(t,e){t.b=e}function Qj(t,e){t.j=e}function L2t(t,e){t.g=e}function Jj(t,e){t.i=e}function Dnt(t,e){t.c=e}function m6(t,e){t.c=e}function D2t(t,e){t.d=e}function v6(t,e){t.d=e}function y(t,e){t.k=e}function p(t,e){t.c=e}function x(t,e){t.c=e}function C(t,e){t.a=e}function L(t,e){t.a=e}function O(t,e){t.f=e}function N(t,e){t.a=e}function j(t,e){t.b=e}function H(t,e){t.d=e}function q(t,e){t.i=e}function W(t,e){t.o=e}function Z(t,e){t.r=e}function st(t,e){t.a=e}function bt(t,e){t.b=e}function pt(t,e){t.e=e}function _t(t,e){t.f=e}function St(t,e){t.g=e}function Et(t,e){t.e=e}function Nt(t,e){t.f=e}function Pt(t,e){t.f=e}function qt(t,e){t.a=e}function re(t,e){t.b=e}function ee(t,e){t.n=e}function Ut(t,e){t.a=e}function de(t,e){t.c=e}function Yt(t,e){t.c=e}function Ee(t,e){t.c=e}function Te(t,e){t.a=e}function ie(t,e){t.a=e}function ze(t,e){t.d=e}function me(t,e){t.d=e}function yn(t,e){t.e=e}function nn(t,e){t.e=e}function qe(t,e){t.g=e}function Tn(t,e){t.f=e}function Xn(t,e){t.j=e}function lr(t,e){t.a=e}function Sn(t,e){t.a=e}function or(t,e){t.b=e}function pr(t){t.b=t.a}function kr(t){t.c=t.d.d}function wr(t){this.a=t}function Cr(t){this.a=t}function $n(t){this.a=t}function cr(t){this.a=t}function mr(t){this.a=t}function Sr(t){this.a=t}function gi(t){this.a=t}function ss(t){this.a=t}function na(t){this.a=t}function vi(t){this.a=t}function si(t){this.a=t}function Qi(t){this.a=t}function ks(t){this.a=t}function as(t){this.a=t}function Es(t){this.b=t}function eo(t){this.b=t}function Ta(t){this.b=t}function pa(t){this.a=t}function mo(t){this.a=t}function Kn(t){this.c=t}function G(t){this.c=t}function Vn(t){this.c=t}function gr(t){this.d=t}function nr(t){this.a=t}function Be(t){this.a=t}function Ls(t){this.a=t}function hr(t){this.a=t}function us(t){this.a=t}function Ya(t){this.a=t}function kc(t){this.a=t}function Ca(t){this.a=t}function oc(t){this.a=t}function ra(t){this.a=t}function no(t){this.a=t}function ql(t){this.a=t}function Sl(t){this.a=t}function mb(t){this.a=t}function vb(t){this.a=t}function v1(t){this.a=t}function up(t){this.a=t}function Bd(t){this.a=t}function cm(t){this.a=t}function py(t){this.a=t}function y6(t){this.a=t}function _4(t){this.a=t}function x6(t){this.a=t}function BC(t){this.a=t}function A4(t){this.a=t}function k0(t){this.a=t}function J1(t){this.a=t}function E0(t){this.a=t}function by(t){this.a=t}function $2(t){this.a=t}function Zj(t){this.a=t}function Mnt(t){this.a=t}function Int(t){this.a=t}function RC(t){this.a=t}function Ont(t){this.a=t}function Nnt(t){this.a=t}function L4(t){this.a=t}function t$(t){this.a=t}function lE(t){this.a=t}function SM(t){this.a=t}function jC(t){this.a=t}function e$(t){this.a=t}function n$(t){this.a=t}function Pnt(t){this.a=t}function lp(t){this.a=t}function $C(t){this.a=t}function _M(t){this.a=t}function z2(t){this.a=t}function T0(t){this.e=t}function D4(t){this.a=t}function yVt(t){this.a=t}function k6(t){this.a=t}function M2t(t){this.a=t}function xVt(t){this.a=t}function kVt(t){this.a=t}function EVt(t){this.a=t}function TVt(t){this.a=t}function CVt(t){this.a=t}function SVt(t){this.a=t}function _Vt(t){this.a=t}function AVt(t){this.a=t}function LVt(t){this.a=t}function DVt(t){this.a=t}function MVt(t){this.a=t}function I2t(t){this.a=t}function IVt(t){this.a=t}function OVt(t){this.a=t}function NVt(t){this.a=t}function PVt(t){this.a=t}function FVt(t){this.a=t}function BVt(t){this.a=t}function RVt(t){this.a=t}function jVt(t){this.a=t}function $Vt(t){this.a=t}function zVt(t){this.a=t}function qVt(t){this.a=t}function HVt(t){this.a=t}function VVt(t){this.a=t}function UVt(t){this.a=t}function GVt(t){this.a=t}function KVt(t){this.a=t}function WVt(t){this.a=t}function YVt(t){this.a=t}function XVt(t){this.a=t}function QVt(t){this.a=t}function JVt(t){this.a=t}function ZVt(t){this.a=t}function tUt(t){this.a=t}function eUt(t){this.a=t}function nUt(t){this.a=t}function rUt(t){this.a=t}function iUt(t){this.a=t}function sUt(t){this.a=t}function aUt(t){this.a=t}function oUt(t){this.a=t}function cUt(t){this.a=t}function uUt(t){this.a=t}function lUt(t){this.a=t}function hUt(t){this.a=t}function fUt(t){this.a=t}function dUt(t){this.a=t}function gUt(t){this.a=t}function pUt(t){this.a=t}function bUt(t){this.c=t}function wUt(t){this.b=t}function mUt(t){this.a=t}function vUt(t){this.a=t}function yUt(t){this.a=t}function xUt(t){this.a=t}function kUt(t){this.a=t}function EUt(t){this.a=t}function TUt(t){this.a=t}function CUt(t){this.a=t}function SUt(t){this.a=t}function _Ut(t){this.a=t}function AUt(t){this.a=t}function LUt(t){this.a=t}function DUt(t){this.a=t}function MUt(t){this.a=t}function IUt(t){this.a=t}function OUt(t){this.a=t}function NUt(t){this.a=t}function PUt(t){this.a=t}function FUt(t){this.a=t}function BUt(t){this.a=t}function RUt(t){this.a=t}function jUt(t){this.a=t}function $Ut(t){this.a=t}function zUt(t){this.a=t}function qUt(t){this.a=t}function HUt(t){this.a=t}function VUt(t){this.a=t}function gg(t){this.a=t}function M4(t){this.a=t}function UUt(t){this.a=t}function GUt(t){this.a=t}function KUt(t){this.a=t}function WUt(t){this.a=t}function YUt(t){this.a=t}function XUt(t){this.a=t}function QUt(t){this.a=t}function JUt(t){this.a=t}function ZUt(t){this.a=t}function tGt(t){this.a=t}function eGt(t){this.a=t}function nGt(t){this.a=t}function rGt(t){this.a=t}function iGt(t){this.a=t}function sGt(t){this.a=t}function aGt(t){this.a=t}function oGt(t){this.a=t}function cGt(t){this.a=t}function uGt(t){this.a=t}function lGt(t){this.a=t}function hGt(t){this.a=t}function fGt(t){this.a=t}function dGt(t){this.a=t}function gGt(t){this.a=t}function pGt(t){this.a=t}function bGt(t){this.a=t}function r$(t){this.a=t}function wGt(t){this.f=t}function mGt(t){this.a=t}function vGt(t){this.a=t}function yGt(t){this.a=t}function xGt(t){this.a=t}function kGt(t){this.a=t}function EGt(t){this.a=t}function TGt(t){this.a=t}function CGt(t){this.a=t}function SGt(t){this.a=t}function _Gt(t){this.a=t}function AGt(t){this.a=t}function LGt(t){this.a=t}function DGt(t){this.a=t}function MGt(t){this.a=t}function IGt(t){this.a=t}function OGt(t){this.a=t}function NGt(t){this.a=t}function PGt(t){this.a=t}function FGt(t){this.a=t}function BGt(t){this.a=t}function RGt(t){this.a=t}function jGt(t){this.a=t}function $Gt(t){this.a=t}function zGt(t){this.a=t}function qGt(t){this.a=t}function HGt(t){this.a=t}function VGt(t){this.a=t}function UGt(t){this.a=t}function Fnt(t){this.a=t}function O2t(t){this.a=t}function Oi(t){this.b=t}function GGt(t){this.a=t}function KGt(t){this.a=t}function WGt(t){this.a=t}function YGt(t){this.a=t}function XGt(t){this.a=t}function QGt(t){this.a=t}function JGt(t){this.a=t}function ZGt(t){this.b=t}function tKt(t){this.a=t}function AM(t){this.a=t}function eKt(t){this.a=t}function nKt(t){this.a=t}function N2t(t){this.c=t}function i$(t){this.e=t}function s$(t){this.a=t}function a$(t){this.a=t}function Bnt(t){this.a=t}function rKt(t){this.d=t}function iKt(t){this.a=t}function P2t(t){this.a=t}function F2t(t){this.a=t}function um(t){this.e=t}function vnn(){this.a=0}function _r(){dl(this)}function fe(){Qrt(this)}function Rnt(){zee(this)}function sKt(){}function lm(){this.c=qIt}function aKt(t,e){t.b+=e}function ynn(t,e){e.Wb(t)}function xnn(t){return t.a}function knn(t){return t.a}function Enn(t){return t.a}function Tnn(t){return t.a}function Cnn(t){return t.a}function at(t){return t.e}function Snn(){return null}function _nn(){return null}function Ann(){xwt(),oSn()}function Lnn(t){t.b.Of(t.e)}function oKt(t){t.b=new irt}function zC(t,e){t.b=e-t.b}function qC(t,e){t.a=e-t.a}function In(t,e){t.push(e)}function cKt(t,e){t.sort(e)}function uKt(t,e){e.jd(t.a)}function Dnn(t,e){Xs(e,t)}function Mnn(t,e,n){t.Yd(n,e)}function LM(t,e){t.e=e,e.b=t}function B2t(t){Vd(),this.a=t}function lKt(t){Vd(),this.a=t}function hKt(t){Vd(),this.a=t}function jnt(t){Dm(),this.a=t}function fKt(t){$E(),Aht.le(t)}function R2t(){R2t=V,new _r}function q2(){MJt.call(this)}function j2t(){MJt.call(this)}function $2t(){q2.call(this)}function $nt(){q2.call(this)}function dKt(){q2.call(this)}function DM(){q2.call(this)}function Xu(){q2.call(this)}function E6(){q2.call(this)}function Vr(){q2.call(this)}function Th(){q2.call(this)}function gKt(){q2.call(this)}function cc(){q2.call(this)}function pKt(){q2.call(this)}function bKt(){this.a=this}function o$(){this.Bb|=256}function wKt(){this.b=new TQt}function wy(t,e){t.length=e}function c$(t,e){ge(t.a,e)}function Inn(t,e){h6t(t.c,e)}function Onn(t,e){qs(t.b,e)}function Nnn(t,e){IH(t.a,e)}function Pnn(t,e){jat(t.a,e)}function hE(t,e){Ei(t.e,e)}function T6(t){WH(t.c,t.b)}function Fnn(t,e){t.kc().Nb(e)}function z2t(t){this.a=A2n(t)}function Os(){this.a=new _r}function mKt(){this.a=new _r}function q2t(){this.a=new BYt}function u$(){this.a=new fe}function znt(){this.a=new fe}function H2t(){this.a=new fe}function tf(){this.a=new I2}function H2(){this.a=new dse}function V2t(){this.a=new O2}function U2t(){this.a=new sre}function G2t(){this.a=new wZt}function vKt(){this.a=new fe}function yKt(){this.a=new fe}function xKt(){this.a=new fe}function K2t(){this.a=new fe}function kKt(){this.d=new fe}function EKt(){this.a=new Cre}function TKt(){this.a=new Os}function CKt(){this.a=new _r}function SKt(){this.b=new _r}function _Kt(){this.b=new fe}function W2t(){this.e=new fe}function AKt(){this.a=new Yet}function LKt(){this.d=new fe}function DKt(){Dne.call(this)}function MKt(){Dne.call(this)}function IKt(){fe.call(this)}function Y2t(){$2t.call(this)}function X2t(){u$.call(this)}function OKt(){gz.call(this)}function NKt(){K2t.call(this)}function HC(){sKt.call(this)}function qnt(){HC.call(this)}function C6(){sKt.call(this)}function Q2t(){C6.call(this)}function PKt(){ewt.call(this)}function FKt(){ewt.call(this)}function BKt(){ewt.call(this)}function RKt(){nwt.call(this)}function VC(){Wtt.call(this)}function J2t(){Wtt.call(this)}function Qu(){Ki.call(this)}function jKt(){tWt.call(this)}function $Kt(){tWt.call(this)}function zKt(){_r.call(this)}function qKt(){_r.call(this)}function HKt(){_r.call(this)}function Hnt(){Roe.call(this)}function VKt(){Os.call(this)}function UKt(){o$.call(this)}function Vnt(){Pmt.call(this)}function Z2t(){_r.call(this)}function Unt(){Pmt.call(this)}function Gnt(){_r.call(this)}function GKt(){_r.call(this)}function twt(){E4.call(this)}function KKt(){twt.call(this)}function WKt(){E4.call(this)}function YKt(){kj.call(this)}function ewt(){this.a=new Os}function XKt(){this.a=new _r}function QKt(){this.a=new fe}function nwt(){this.a=new _r}function S6(){this.a=new Ki}function JKt(){this.j=new fe}function ZKt(){this.a=new QWt}function tWt(){this.a=new Qtt}function rwt(){this.a=new Xi}function UC(){UC=V,yht=new _}function Knt(){Knt=V,xht=new nWt}function Wnt(){Wnt=V,kht=new eWt}function eWt(){sE.call(this,"")}function nWt(){sE.call(this,"")}function rWt(t){ooe.call(this,t)}function iWt(t){ooe.call(this,t)}function iwt(t){qj.call(this,t)}function swt(t){SYt.call(this,t)}function Bnn(t){SYt.call(this,t)}function Rnn(t){swt.call(this,t)}function jnn(t){swt.call(this,t)}function $nn(t){swt.call(this,t)}function sWt(t){Sst.call(this,t)}function aWt(t){Sst.call(this,t)}function oWt(t){jZt.call(this,t)}function cWt(t){Awt.call(this,t)}function GC(t){y$.call(this,t)}function awt(t){y$.call(this,t)}function uWt(t){y$.call(this,t)}function owt(t){c4n.call(this,t)}function cwt(t){owt.call(this,t)}function uc(t){aee.call(this,t)}function lWt(t){uc.call(this,t)}function _6(){uE.call(this,{})}function hWt(){hWt=V,Kve=new K}function l$(){l$=V,Cht=new oJt}function fWt(){fWt=V,r9t=new S}function uwt(){uwt=V,i9t=new ct}function h$(){h$=V,mA=new gt}function Ynt(t){EE(),this.a=t}function Xnt(t){F4t(),this.a=t}function my(t){Nit(),this.f=t}function Qnt(t){Nit(),this.f=t}function dWt(t){KZt(),this.a=t}function gWt(t){t.b=null,t.c=0}function znn(t,e){t.e=e,Wde(t,e)}function qnn(t,e){t.a=e,Y4n(t)}function Jnt(t,e,n){t.a[e.g]=n}function Hnn(t,e,n){lyn(n,t,e)}function Vnn(t,e){jan(e.i,t.n)}function pWt(t,e){ubn(t).Cd(e)}function Unn(t,e){t.a.ec().Mc(e)}function bWt(t,e){return t.g-e.g}function Gnn(t,e){return t*t/e}function Ie(t){return Wn(t),t}function Rt(t){return Wn(t),t}function MM(t){return Wn(t),t}function Knn(t){return new cE(t)}function Wnn(t){return new Oy(t)}function lwt(t){return Wn(t),t}function Ynn(t){return Wn(t),t}function f$(t){uc.call(this,t)}function Bo(t){uc.call(this,t)}function wWt(t){uc.call(this,t)}function Znt(t){aee.call(this,t)}function fE(t){uc.call(this,t)}function zn(t){uc.call(this,t)}function Ro(t){uc.call(this,t)}function mWt(t){uc.call(this,t)}function A6(t){uc.call(this,t)}function hp(t){uc.call(this,t)}function fp(t){uc.call(this,t)}function L6(t){uc.call(this,t)}function Rd(t){uc.call(this,t)}function trt(t){uc.call(this,t)}function Yr(t){uc.call(this,t)}function hl(t){Wn(t),this.a=t}function hwt(t){return cw(t),t}function KC(t){Eyt(t,t.length)}function WC(t){return t.b==t.c}function vy(t){return!!t&&t.b}function Xnn(t){return!!t&&t.k}function Qnn(t){return!!t&&t.j}function Jnn(t,e,n){t.c.Ef(e,n)}function vWt(t,e){t.be(e),e.ae(t)}function D6(t){Vd(),this.a=Hr(t)}function ert(){this.a=Gr(Hr(ao))}function yWt(){throw at(new Vr)}function Znn(){throw at(new Vr)}function fwt(){throw at(new Vr)}function xWt(){throw at(new Vr)}function trn(){throw at(new Vr)}function ern(){throw at(new Vr)}function d$(){d$=V,$E()}function dp(){Sr.call(this,"")}function YC(){Sr.call(this,"")}function yb(){Sr.call(this,"")}function I4(){Sr.call(this,"")}function dwt(t){Bo.call(this,t)}function gwt(t){Bo.call(this,t)}function jd(t){zn.call(this,t)}function dE(t){Ta.call(this,t)}function kWt(t){dE.call(this,t)}function nrt(t){uz.call(this,t)}function rrt(t){Kmt.call(this,t,0)}function irt(){s3t.call(this,12,3)}function ut(t,e){return Zne(t,e)}function g$(t,e){return zst(t,e)}function nrn(t,e){return t.a-e.a}function rrn(t,e){return t.a-e.a}function irn(t,e){return t.a-e.a}function srn(t,e){return e in t.a}function EWt(t){return t.a?t.b:0}function arn(t){return t.a?t.b:0}function orn(t,e,n){e.Cd(t.a[n])}function crn(t,e,n){e.Pe(t.a[n])}function urn(t,e){t.b=new io(e)}function lrn(t,e){return t.b=e,t}function TWt(t,e){return t.c=e,t}function CWt(t,e){return t.f=e,t}function hrn(t,e){return t.g=e,t}function pwt(t,e){return t.a=e,t}function bwt(t,e){return t.f=e,t}function frn(t,e){return t.k=e,t}function wwt(t,e){return t.a=e,t}function drn(t,e){return t.e=e,t}function mwt(t,e){return t.e=e,t}function grn(t,e){return t.f=e,t}function prn(t,e){t.b=!0,t.d=e}function brn(t,e){return t.b-e.b}function wrn(t,e){return t.g-e.g}function mrn(t,e){return t?0:e-1}function SWt(t,e){return t?0:e-1}function vrn(t,e){return t?e-1:0}function yrn(t,e){return t.s-e.s}function xrn(t,e){return e.rg(t)}function hm(t,e){return t.b=e,t}function p$(t,e){return t.a=e,t}function fm(t,e){return t.c=e,t}function dm(t,e){return t.d=e,t}function gm(t,e){return t.e=e,t}function vwt(t,e){return t.f=e,t}function XC(t,e){return t.a=e,t}function gE(t,e){return t.b=e,t}function pE(t,e){return t.c=e,t}function Ve(t,e){return t.c=e,t}function fn(t,e){return t.b=e,t}function Ue(t,e){return t.d=e,t}function Ge(t,e){return t.e=e,t}function krn(t,e){return t.f=e,t}function Ke(t,e){return t.g=e,t}function We(t,e){return t.a=e,t}function Ye(t,e){return t.i=e,t}function Xe(t,e){return t.j=e,t}function Ern(t,e){Vb(),hc(e,t)}function Trn(t,e,n){$un(t.a,e,n)}function b$(t){pit.call(this,t)}function _Wt(t){H2n.call(this,t)}function AWt(t){one.call(this,t)}function ywt(t){one.call(this,t)}function xb(t){$m.call(this,t)}function LWt(t){ist.call(this,t)}function DWt(t){ist.call(this,t)}function MWt(){Lmt.call(this,"")}function Sa(){this.a=0,this.b=0}function IWt(){this.b=0,this.a=0}function OWt(t,e){t.b=0,Hy(t,e)}function NWt(t,e){return t.k=e,t}function Crn(t,e){return t.j=e,t}function Srn(t,e){t.c=e,t.b=!0}function PWt(){PWt=V,aye=Byn()}function kb(){kb=V,Z7e=Wvn()}function FWt(){FWt=V,da=a3n()}function xwt(){xwt=V,b2=e7()}function bE(){bE=V,zIt=Yvn()}function BWt(){BWt=V,BTe=Xvn()}function kwt(){kwt=V,Bc=G4n()}function y1(t){return t.e&&t.e()}function RWt(t){return t.l|t.m<<22}function jWt(t,e){return t.c._b(e)}function $Wt(t,e){return Bue(t.b,e)}function srt(t){return t?t.d:null}function _rn(t){return t?t.g:null}function Arn(t){return t?t.i:null}function V2(t){return wg(t),t.o}function O4(t,e){return t.a+=e,t}function art(t,e){return t.a+=e,t}function gp(t,e){return t.a+=e,t}function pm(t,e){return t.a+=e,t}function Ewt(t,e){for(;t.Bd(e););}function w$(t){this.a=new M6(t)}function zWt(){throw at(new Vr)}function qWt(){throw at(new Vr)}function HWt(){throw at(new Vr)}function VWt(){throw at(new Vr)}function UWt(){throw at(new Vr)}function GWt(){throw at(new Vr)}function pp(t){this.a=new Bit(t)}function KWt(){this.a=new L_(PLt)}function WWt(){this.b=new L_(tLt)}function YWt(){this.a=new L_(sDt)}function XWt(){this.b=new L_(bdt)}function QWt(){this.b=new L_(bdt)}function m$(t){this.a=0,this.b=t}function Twt(t){Spe(),ySn(this,t)}function wE(t){return Mb(t),t.a}function IM(t){return t.b!=t.d.c}function Cwt(t,e){return t.d[e.p]}function JWt(t,e){return Bkn(t,e)}function Swt(t,e,n){t.splice(e,n)}function N4(t,e){for(;t.Re(e););}function ZWt(t){t.c?f0e(t):d0e(t)}function tYt(){throw at(new Vr)}function eYt(){throw at(new Vr)}function nYt(){throw at(new Vr)}function rYt(){throw at(new Vr)}function iYt(){throw at(new Vr)}function sYt(){throw at(new Vr)}function aYt(){throw at(new Vr)}function oYt(){throw at(new Vr)}function cYt(){throw at(new Vr)}function uYt(){throw at(new Vr)}function Lrn(){throw at(new cc)}function Drn(){throw at(new cc)}function OM(t){this.a=new lYt(t)}function lYt(t){Ngn(this,t,f4n())}function NM(t){return!t||$ee(t)}function PM(t){return _d[t]!=-1}function Mrn(){MU!=0&&(MU=0),IU=-1}function hYt(){vht==null&&(vht=[])}function FM(t,e){W4.call(this,t,e)}function mE(t,e){FM.call(this,t,e)}function fYt(t,e){this.a=t,this.b=e}function dYt(t,e){this.a=t,this.b=e}function gYt(t,e){this.a=t,this.b=e}function pYt(t,e){this.a=t,this.b=e}function bYt(t,e){this.a=t,this.b=e}function wYt(t,e){this.a=t,this.b=e}function mYt(t,e){this.a=t,this.b=e}function vE(t,e){this.e=t,this.d=e}function _wt(t,e){this.b=t,this.c=e}function vYt(t,e){this.b=t,this.a=e}function yYt(t,e){this.b=t,this.a=e}function xYt(t,e){this.b=t,this.a=e}function kYt(t,e){this.b=t,this.a=e}function EYt(t,e){this.a=t,this.b=e}function ort(t,e){this.a=t,this.b=e}function TYt(t,e){this.a=t,this.f=e}function bm(t,e){this.g=t,this.i=e}function Rr(t,e){this.f=t,this.g=e}function CYt(t,e){this.b=t,this.c=e}function SYt(t){Bmt(t.dc()),this.c=t}function Irn(t,e){this.a=t,this.b=e}function _Yt(t,e){this.a=t,this.b=e}function AYt(t){this.a=u(Hr(t),15)}function Awt(t){this.a=u(Hr(t),15)}function LYt(t){this.a=u(Hr(t),85)}function v$(t){this.b=u(Hr(t),85)}function y$(t){this.b=u(Hr(t),51)}function x$(){this.q=new b.Date}function crt(t,e){this.a=t,this.b=e}function DYt(t,e){return Tu(t.b,e)}function BM(t,e){return t.b.Hc(e)}function MYt(t,e){return t.b.Ic(e)}function IYt(t,e){return t.b.Qc(e)}function OYt(t,e){return t.b.Hc(e)}function NYt(t,e){return t.c.uc(e)}function PYt(t,e){return Ti(t.c,e)}function x1(t,e){return t.a._b(e)}function FYt(t,e){return t>e&&e0}function grt(t,e){return $c(t,e)<0}function JYt(t,e){return Dit(t.a,e)}function Qrn(t,e){tre.call(this,t,e)}function Pwt(t){Yit(),jZt.call(this,t)}function Fwt(t,e){Kte(t,t.length,e)}function zM(t,e){xee(t,t.length,e)}function iS(t,e){return t.a.get(e)}function ZYt(t,e){return Tu(t.e,e)}function Bwt(t){return Wn(t),!1}function Rwt(t){this.a=u(Hr(t),229)}function D$(t){gn.call(this,t,21)}function M$(t,e){Rr.call(this,t,e)}function prt(t,e){Rr.call(this,t,e)}function tXt(t,e){this.b=t,this.a=e}function I$(t,e){this.d=t,this.e=e}function eXt(t,e){this.a=t,this.b=e}function nXt(t,e){this.a=t,this.b=e}function rXt(t,e){this.a=t,this.b=e}function iXt(t,e){this.a=t,this.b=e}function O6(t,e){this.a=t,this.b=e}function sXt(t,e){this.b=t,this.a=e}function jwt(t,e){this.b=t,this.a=e}function $wt(t,e){Rr.call(this,t,e)}function zwt(t,e){Rr.call(this,t,e)}function P4(t,e){Rr.call(this,t,e)}function brt(t,e){Rr.call(this,t,e)}function wrt(t,e){Rr.call(this,t,e)}function mrt(t,e){Rr.call(this,t,e)}function O$(t,e){Rr.call(this,t,e)}function qwt(t,e){this.b=t,this.a=e}function N$(t,e){Rr.call(this,t,e)}function Hwt(t,e){this.b=t,this.a=e}function P$(t,e){Rr.call(this,t,e)}function aXt(t,e){this.b=t,this.a=e}function Vwt(t,e){Rr.call(this,t,e)}function vrt(t,e){Rr.call(this,t,e)}function qM(t,e){Rr.call(this,t,e)}function sS(t,e,n){t.splice(e,0,n)}function Jrn(t,e,n){t.Mb(n)&&e.Cd(n)}function Zrn(t,e,n){e.Pe(t.a.Ye(n))}function tin(t,e,n){e.Dd(t.a.Ze(n))}function ein(t,e,n){e.Cd(t.a.Kb(n))}function nin(t,e){return Zu(t.c,e)}function rin(t,e){return Zu(t.e,e)}function F$(t,e){Rr.call(this,t,e)}function B$(t,e){Rr.call(this,t,e)}function aS(t,e){Rr.call(this,t,e)}function Uwt(t,e){Rr.call(this,t,e)}function Ns(t,e){Rr.call(this,t,e)}function R$(t,e){Rr.call(this,t,e)}function oXt(t,e){this.a=t,this.b=e}function cXt(t,e){this.a=t,this.b=e}function uXt(t,e){this.a=t,this.b=e}function lXt(t,e){this.a=t,this.b=e}function hXt(t,e){this.a=t,this.b=e}function fXt(t,e){this.a=t,this.b=e}function dXt(t,e){this.b=t,this.a=e}function gXt(t,e){this.b=t,this.a=e}function Gwt(t,e){this.b=t,this.a=e}function kE(t,e){this.c=t,this.d=e}function pXt(t,e){this.e=t,this.d=e}function bXt(t,e){this.a=t,this.b=e}function wXt(t,e){this.a=t,this.b=e}function mXt(t,e){this.a=t,this.b=e}function vXt(t,e){this.b=t,this.a=e}function yXt(t,e){this.b=e,this.c=t}function j$(t,e){Rr.call(this,t,e)}function HM(t,e){Rr.call(this,t,e)}function yrt(t,e){Rr.call(this,t,e)}function Kwt(t,e){Rr.call(this,t,e)}function oS(t,e){Rr.call(this,t,e)}function xrt(t,e){Rr.call(this,t,e)}function krt(t,e){Rr.call(this,t,e)}function VM(t,e){Rr.call(this,t,e)}function Wwt(t,e){Rr.call(this,t,e)}function Ert(t,e){Rr.call(this,t,e)}function cS(t,e){Rr.call(this,t,e)}function Ywt(t,e){Rr.call(this,t,e)}function uS(t,e){Rr.call(this,t,e)}function lS(t,e){Rr.call(this,t,e)}function ky(t,e){Rr.call(this,t,e)}function Trt(t,e){Rr.call(this,t,e)}function Crt(t,e){Rr.call(this,t,e)}function Xwt(t,e){Rr.call(this,t,e)}function UM(t,e){Rr.call(this,t,e)}function F4(t,e){Rr.call(this,t,e)}function Srt(t,e){Rr.call(this,t,e)}function $$(t,e){Rr.call(this,t,e)}function GM(t,e){Rr.call(this,t,e)}function Ey(t,e){Rr.call(this,t,e)}function z$(t,e){Rr.call(this,t,e)}function Qwt(t,e){Rr.call(this,t,e)}function _rt(t,e){Rr.call(this,t,e)}function Art(t,e){Rr.call(this,t,e)}function Lrt(t,e){Rr.call(this,t,e)}function Drt(t,e){Rr.call(this,t,e)}function Mrt(t,e){Rr.call(this,t,e)}function Irt(t,e){Rr.call(this,t,e)}function Ort(t,e){Rr.call(this,t,e)}function xXt(t,e){this.b=t,this.a=e}function Jwt(t,e){Rr.call(this,t,e)}function kXt(t,e){this.a=t,this.b=e}function EXt(t,e){this.a=t,this.b=e}function TXt(t,e){this.a=t,this.b=e}function Zwt(t,e){Rr.call(this,t,e)}function tmt(t,e){Rr.call(this,t,e)}function CXt(t,e){this.a=t,this.b=e}function iin(t,e){return LE(),e!=t}function KM(t){return ur(t.a),t.b}function Nrt(t){return hxn(t,t.c),t}function SXt(){return PWt(),new aye}function _Xt(){vz(),this.a=new wvt}function AXt(){rV(),this.a=new Os}function LXt(){gst(),this.b=new Os}function DXt(t,e){this.b=t,this.d=e}function MXt(t,e){this.a=t,this.b=e}function IXt(t,e){this.a=t,this.b=e}function OXt(t,e){this.a=t,this.b=e}function NXt(t,e){this.b=t,this.a=e}function emt(t,e){Rr.call(this,t,e)}function nmt(t,e){Rr.call(this,t,e)}function q$(t,e){Rr.call(this,t,e)}function mm(t,e){Rr.call(this,t,e)}function Prt(t,e){Rr.call(this,t,e)}function H$(t,e){Rr.call(this,t,e)}function rmt(t,e){Rr.call(this,t,e)}function imt(t,e){Rr.call(this,t,e)}function WM(t,e){Rr.call(this,t,e)}function smt(t,e){Rr.call(this,t,e)}function Frt(t,e){Rr.call(this,t,e)}function V$(t,e){Rr.call(this,t,e)}function Brt(t,e){Rr.call(this,t,e)}function Rrt(t,e){Rr.call(this,t,e)}function jrt(t,e){Rr.call(this,t,e)}function $rt(t,e){Rr.call(this,t,e)}function amt(t,e){Rr.call(this,t,e)}function zrt(t,e){Rr.call(this,t,e)}function omt(t,e){Rr.call(this,t,e)}function YM(t,e){Rr.call(this,t,e)}function qrt(t,e){Rr.call(this,t,e)}function cmt(t,e){Rr.call(this,t,e)}function XM(t,e){Rr.call(this,t,e)}function umt(t,e){Rr.call(this,t,e)}function PXt(t,e){this.b=t,this.a=e}function FXt(t,e){this.b=t,this.a=e}function BXt(t,e){this.b=t,this.a=e}function RXt(t,e){this.b=t,this.a=e}function lmt(t,e){this.a=t,this.b=e}function jXt(t,e){this.a=t,this.b=e}function $Xt(t,e){this.a=t,this.b=e}function ae(t,e){this.a=t,this.b=e}function hS(t,e){Rr.call(this,t,e)}function QM(t,e){Rr.call(this,t,e)}function N6(t,e){Rr.call(this,t,e)}function fS(t,e){Rr.call(this,t,e)}function JM(t,e){Rr.call(this,t,e)}function Hrt(t,e){Rr.call(this,t,e)}function U$(t,e){Rr.call(this,t,e)}function dS(t,e){Rr.call(this,t,e)}function Vrt(t,e){Rr.call(this,t,e)}function G$(t,e){Rr.call(this,t,e)}function B4(t,e){Rr.call(this,t,e)}function ZM(t,e){Rr.call(this,t,e)}function gS(t,e){Rr.call(this,t,e)}function pS(t,e){Rr.call(this,t,e)}function tI(t,e){Rr.call(this,t,e)}function K$(t,e){Rr.call(this,t,e)}function R4(t,e){Rr.call(this,t,e)}function Urt(t,e){Rr.call(this,t,e)}function zXt(t,e){Rr.call(this,t,e)}function W$(t,e){Rr.call(this,t,e)}function qXt(t,e){this.a=t,this.b=e}function HXt(t,e){this.a=t,this.b=e}function VXt(t,e){this.a=t,this.b=e}function UXt(t,e){this.a=t,this.b=e}function GXt(t,e){this.a=t,this.b=e}function KXt(t,e){this.a=t,this.b=e}function Ws(t,e){this.a=t,this.b=e}function WXt(t,e){this.a=t,this.b=e}function YXt(t,e){this.a=t,this.b=e}function XXt(t,e){this.a=t,this.b=e}function QXt(t,e){this.a=t,this.b=e}function JXt(t,e){this.a=t,this.b=e}function ZXt(t,e){this.a=t,this.b=e}function tQt(t,e){this.b=t,this.a=e}function eQt(t,e){this.b=t,this.a=e}function nQt(t,e){this.b=t,this.a=e}function rQt(t,e){this.b=t,this.a=e}function iQt(t,e){this.a=t,this.b=e}function sQt(t,e){this.a=t,this.b=e}function Y$(t,e){Rr.call(this,t,e)}function aQt(t,e){this.a=t,this.b=e}function oQt(t,e){this.a=t,this.b=e}function P6(t,e){Rr.call(this,t,e)}function cQt(t,e){this.f=t,this.c=e}function hmt(t,e){return Zu(t.g,e)}function sin(t,e){return Zu(e.b,t)}function uQt(t,e){return Yat(t.a,e)}function ain(t,e){return-t.b.af(e)}function oin(t,e){t&&hi(VP,t,e)}function fmt(t,e){t.i=null,Gq(t,e)}function cin(t,e,n){tfe(e,zot(t,n))}function uin(t,e,n){tfe(e,zot(t,n))}function lin(t,e){R6n(t.a,u(e,58))}function lQt(t,e){N0n(t.a,u(e,12))}function X$(t,e){this.a=t,this.b=e}function hQt(t,e){this.a=t,this.b=e}function fQt(t,e){this.a=t,this.b=e}function dQt(t,e){this.a=t,this.b=e}function gQt(t,e){this.a=t,this.b=e}function pQt(t,e){this.d=t,this.b=e}function bQt(t,e){this.e=t,this.a=e}function eI(t,e){this.b=t,this.c=e}function dmt(t,e){this.i=t,this.g=e}function gmt(t,e){this.d=t,this.e=e}function hin(t,e){Y0n(new Zn(t),e)}function Q$(t){return wO(t.c,t.b)}function Ko(t){return t?t.md():null}function $t(t){return t??null}function ba(t){return typeof t===Nct}function Ty(t){return typeof t===kk}function Cy(t){return typeof t===u8t}function vm(t,e){return $c(t,e)==0}function J$(t,e){return $c(t,e)>=0}function bS(t,e){return $c(t,e)!=0}function Z$(t,e){return fpn(t.Kc(),e)}function Cb(t,e){return t.Rd().Xb(e)}function wQt(t){return Ll(t),t.d.gc()}function tz(t){return AS(t==null),t}function wS(t,e){return t.a+=""+e,t}function Mo(t,e){return t.a+=""+e,t}function mS(t,e){return t.a+=""+e,t}function tu(t,e){return t.a+=""+e,t}function ni(t,e){return t.a+=""+e,t}function pmt(t,e){return t.a+=""+e,t}function fin(t){return""+(Wn(t),t)}function mQt(t){dl(this),t_(this,t)}function vQt(){i3t(),lyt.call(this)}function yQt(t,e){pyt.call(this,t,e)}function xQt(t,e){pyt.call(this,t,e)}function ez(t,e){pyt.call(this,t,e)}function ro(t,e){hs(t,e,t.c.b,t.c)}function j4(t,e){hs(t,e,t.a,t.a.a)}function bmt(t){return vn(t,0),null}function kQt(){this.b=0,this.a=!1}function EQt(){this.b=0,this.a=!1}function TQt(){this.b=new M6(zy(12))}function CQt(){CQt=V,t3e=$r(not())}function SQt(){SQt=V,k4e=$r(Bde())}function _Qt(){_Qt=V,Uke=$r(pce())}function wmt(){wmt=V,R2t(),s9t=new _r}function k1(t){return t.a=0,t.b=0,t}function AQt(t,e){return t.a=e.g+1,t}function Grt(t,e){Dy.call(this,t,e)}function un(t,e){rs.call(this,t,e)}function $4(t,e){dmt.call(this,t,e)}function LQt(t,e){sI.call(this,t,e)}function Krt(t,e){o7.call(this,t,e)}function ui(t,e){A$(),hi(KK,t,e)}function DQt(t,e){t.q.setTime(tw(e))}function din(t){b.clearTimeout(t)}function gin(t){return Hr(t),new vS(t)}function MQt(t,e){return $t(t)===$t(e)}function IQt(t,e){return t.a.a.a.cc(e)}function Wrt(t,e){return Lh(t.a,0,e)}function mmt(t){return wln(u(t,74))}function F6(t){return Ys((Wn(t),t))}function pin(t){return Ys((Wn(t),t))}function OQt(t){return Eu(t.l,t.m,t.h)}function vmt(t,e){return jc(t.a,e.a)}function bin(t,e){return vee(t.a,e.a)}function win(t,e){return Bi(t.a,e.a)}function $d(t,e){return t.indexOf(e)}function min(t,e){return t.j[e.p]==2}function ym(t,e){return t==e?0:t?1:-1}function nz(t){return t<10?"0"+t:""+t}function ec(t){return typeof t===u8t}function vin(t){return t==bv||t==y3}function yin(t){return t==bv||t==v3}function NQt(t,e){return jc(t.g,e.g)}function ymt(t){return Xo(t.b.b,t,0)}function PQt(){Lz.call(this,0,0,0,0)}function zd(){hr.call(this,new kp)}function xmt(t,e){GE(t,0,t.length,e)}function xin(t,e){return ge(t.a,e),e}function kin(t,e){return Bf(),e.a+=t}function Ein(t,e){return Bf(),e.a+=t}function Tin(t,e){return Bf(),e.c+=t}function Cin(t,e){return ge(t.c,e),t}function kmt(t,e){return ch(t.a,e),t}function FQt(t){this.a=SXt(),this.b=t}function BQt(t){this.a=SXt(),this.b=t}function io(t){this.a=t.a,this.b=t.b}function vS(t){this.a=t,DC.call(this)}function RQt(t){this.a=t,DC.call(this)}function B6(){Ah.call(this,0,0,0,0)}function rz(t){return ch(new Fs,t)}function jQt(t){return Kz(u(t,123))}function Hl(t){return t.vh()&&t.wh()}function z4(t){return t!=Td&&t!=d2}function bg(t){return t==Uo||t==tc}function q4(t){return t==Gh||t==kd}function $Qt(t){return t==J5||t==Q5}function Sin(t,e){return jc(t.g,e.g)}function zQt(t,e){return new o7(e,t)}function _in(t,e){return new o7(e,t)}function Emt(t){return Wcn(t.b.Kc(),t.a)}function Yrt(t,e){p7(t,e),t7(t,t.D)}function Xrt(t,e,n){Rq(t,e),Bq(t,n)}function H4(t,e,n){qm(t,e),zm(t,n)}function Ch(t,e,n){Su(t,e),_u(t,n)}function nI(t,e,n){XE(t,e),JE(t,n)}function rI(t,e,n){QE(t,e),ZE(t,n)}function qQt(t,e,n){svt.call(this,t,e,n)}function Tmt(t){cQt.call(this,t,!0)}function HQt(){M$.call(this,"Tail",3)}function VQt(){M$.call(this,"Head",1)}function Sb(t){Xd(),cpn.call(this,t)}function xm(t){Lz.call(this,t,t,t,t)}function Qrt(t){t.c=Vt(aa,Ln,1,0,5,1)}function Cmt(t){return t.b&&bct(t),t.a}function Smt(t){return t.b&&bct(t),t.c}function Ain(t,e){wd||(t.b=e)}function Lin(t,e){return t[t.length]=e}function Din(t,e){return t[t.length]=e}function Min(t,e){return qy(e,ed(t))}function Iin(t,e){return qy(e,ed(t))}function Oin(t,e){return Hq(Kit(t.d),e)}function Nin(t,e){return Hq(Kit(t.g),e)}function Pin(t,e){return Hq(Kit(t.j),e)}function _a(t,e){rs.call(this,t.b,e)}function Fin(t,e){Or(Wc(t.a),hre(e))}function Bin(t,e){Or(Al(t.a),fre(e))}function Rin(t,e,n){Ch(n,n.i+t,n.j+e)}function UQt(t,e,n){ls(t.c[e.g],e.g,n)}function jin(t,e,n){u(t.c,71).Gi(e,n)}function Jrt(t,e,n){return ls(t,e,n),n}function GQt(t){Cu(t.Sf(),new Int(t))}function V4(t){return t!=null?$i(t):0}function $in(t){return t==null?0:$i(t)}function yS(t){yi(),um.call(this,t)}function KQt(t){this.a=t,$vt.call(this,t)}function Z1(){Z1=V,b.Math.log(2)}function Sh(){Sh=V,Q0=(XYt(),sTe)}function WQt(){WQt=V,I1t=new d_(Udt)}function Ur(){Ur=V,new YQt,new fe}function YQt(){new _r,new _r,new _r}function zin(){throw at(new hp(Mve))}function qin(){throw at(new hp(Mve))}function Hin(){throw at(new hp(Ive))}function Vin(){throw at(new hp(Ive))}function Zrt(t){this.a=t,v$.call(this,t)}function tit(t){this.a=t,v$.call(this,t)}function XQt(t,e){Dm(),this.a=t,this.b=e}function Uin(t,e){Hr(e),X4(t).Jc(new ot)}function Ds(t,e){Mit(t.c,t.c.length,e)}function lc(t){return t.ae?1:0}function Amt(t,e){return $c(t,e)>0?t:e}function Eu(t,e,n){return{l:t,m:e,h:n}}function Gin(t,e){t.a!=null&&lQt(e,t.a)}function Kin(t){Xa(t,null),xa(t,null)}function Win(t,e,n){return hi(t.g,n,e)}function U4(t,e,n){return Q5t(e,n,t.c)}function Yin(t,e,n){return hi(t.k,n,e)}function Xin(t,e,n){return P9n(t,e,n),n}function Qin(t,e){return rh(),e.n.b+=t}function JQt(t){Qyt.call(this),this.b=t}function Lmt(t){bvt.call(this),this.a=t}function ZQt(){M$.call(this,"Range",2)}function iz(t){this.b=t,this.a=new fe}function tJt(t){this.b=new pu,this.a=t}function eJt(t){t.a=new Ae,t.c=new Ae}function nJt(t){t.a=new _r,t.d=new _r}function rJt(t){pst(t,null),bst(t,null)}function iJt(t,e){return B9n(t.a,e,null)}function Jin(t,e){return hi(t.a,e.a,e)}function Oa(t){return new ae(t.a,t.b)}function Dmt(t){return new ae(t.c,t.d)}function Zin(t){return new ae(t.c,t.d)}function xS(t,e){return YTn(t.c,t.b,e)}function Lt(t,e){return t!=null&&aot(t,e)}function eit(t,e){return qpn(t.Kc(),e)!=-1}function sz(t){return t.Ob()?t.Pb():null}function tsn(t){this.b=(mn(),new Kn(t))}function Mmt(t){this.a=t,_r.call(this)}function sJt(){sI.call(this,null,null)}function aJt(){fz.call(this,null,null)}function oJt(){Rr.call(this,"INSTANCE",0)}function cJt(){Dxt(),this.a=new L_(SCt)}function uJt(t){return af(t,0,t.length)}function esn(t,e){return new _Jt(t.Kc(),e)}function Imt(t,e){return t.a.Bc(e)!=null}function lJt(t,e){Ir(t),t.Gc(u(e,15))}function nsn(t,e,n){t.c.bd(e,u(n,136))}function rsn(t,e,n){t.c.Ui(e,u(n,136))}function hJt(t,e){t.c&&(Zvt(e),Bne(e))}function isn(t,e){t.q.setHours(e),N_(t,e)}function ssn(t,e){Tm(e,t.a.a.a,t.a.a.b)}function asn(t,e,n,r){ls(t.a[e.g],n.g,r)}function nit(t,e,n){return t.a[e.g][n.g]}function osn(t,e){return t.e[e.c.p][e.p]}function csn(t,e){return t.c[e.c.p][e.p]}function td(t,e){return t.a[e.c.p][e.p]}function usn(t,e){return t.j[e.p]=y6n(e)}function rit(t,e){return t.a.Bc(e)!=null}function lsn(t,e){return Rt(Ht(e.a))<=t}function hsn(t,e){return Rt(Ht(e.a))>=t}function fsn(t,e){return F3t(t.f,e.Pg())}function R6(t,e){return t.a*e.a+t.b*e.b}function dsn(t,e){return t.a<_vt(e)?-1:1}function gsn(t,e){return F3t(t.b,e.Pg())}function psn(t,e,n){return n?e!=0:e!=t-1}function fJt(t,e,n){t.a=e^1502,t.b=n^dut}function bsn(t,e,n){return t.a=e,t.b=n,t}function qd(t,e){return t.a*=e,t.b*=e,t}function ge(t,e){return In(t.c,e),!0}function kS(t,e,n){return ls(t.g,e,n),n}function Ps(t,e,n){mI.call(this,t,e,n)}function az(t,e,n){Ps.call(this,t,e,n)}function Omt(t,e,n){kz.call(this,t,e,n)}function dJt(t,e,n){kz.call(this,t,e,n)}function gJt(t,e,n){Omt.call(this,t,e,n)}function Ju(t,e,n){Ps.call(this,t,e,n)}function pJt(t,e,n){az.call(this,t,e,n)}function Nmt(t,e,n){mI.call(this,t,e,n)}function G4(t,e,n){mI.call(this,t,e,n)}function bJt(t,e,n){Nmt.call(this,t,e,n)}function oz(t){t.j=Vt(m9t,ue,319,0,0,1)}function K4(){this.a=Vt(aa,Ln,1,8,5,1)}function Pmt(){this.Bb|=256,this.Bb|=512}function Zn(t){this.i=t,this.f=this.i.j}function _b(t){this.c=t,this.a=this.c.a}function W4(t,e){this.a=t,v$.call(this,e)}function Fmt(t,e){return I2n(t,new yb,e).a}function Bmt(t){if(!t)throw at(new DM)}function Rmt(t){if(!t)throw at(new Xu)}function jmt(){jmt=V,jmt(),uye=new sn}function wJt(){wJt=V,hrt(),NTe=new Bj}function EE(){EE=V,A9t=new Ynt(null)}function wsn(t){SI(t,sme),ZH(t,PCn(t))}function mJt(t){t.a=u(jn(t.b.a,4),129)}function vJt(t){t.a=u(jn(t.b.a,4),129)}function yJt(t){t.b.Qb(),--t.d.f.d,Nz(t.d)}function $mt(t){this.a=t,dg.call(this,t.d)}function xJt(t,e){this.a=t,rrt.call(this,e)}function kJt(t,e){this.a=t,rrt.call(this,e)}function EJt(t,e){this.a=t,rrt.call(this,e)}function zmt(t,e){this.a=e,rrt.call(this,t)}function TJt(t,e){this.a=e,Sst.call(this,t)}function CJt(t,e){this.a=t,Sst.call(this,e)}function SJt(t,e){this.a=e,y$.call(this,t)}function _Jt(t,e){this.a=e,y$.call(this,t)}function sr(t,e){return Hr(e),new SJt(t,e)}function AJt(t,e){return new Zfe(t.a,t.b,e)}function qmt(t,e,n){return t.indexOf(e,n)}function cz(t,e){return t.lastIndexOf(e)}function ES(t){return t==null?Vu:rc(t)}function msn(t){return t==null?null:t.name}function vsn(t){return t.l+t.m*Sk+t.h*bw}function ysn(t){return IM(t.a)?dre(t):null}function ef(t){Sr.call(this,(Wn(t),t))}function eh(t){Sr.call(this,(Wn(t),t))}function LJt(t){sE.call(this,u(Hr(t),34))}function DJt(t){sE.call(this,u(Hr(t),34))}function iit(t){hr.call(this,new U3t(t))}function uz(t){Ta.call(this,t),this.a=t}function Hmt(t){eo.call(this,t),this.a=t}function Vmt(t){dE.call(this,t),this.a=t}function MJt(){oz(this),Xz(this),this.je()}function IJt(t){this.a=t,Es.call(this,t)}function Vl(t){return ur(t.a!=null),t.a}function OJt(t,e){return ge(e.a,t.a),t.a}function NJt(t,e){return ge(e.b,t.a),t.a}function km(t,e){return ge(e.a,t.a),t.a}function iI(t,e,n){return dat(t,e,e,n),t}function lz(t,e){return++t.b,ge(t.a,e)}function Umt(t,e){return++t.b,zu(t.a,e)}function xsn(t,e){return Bi(t.c.d,e.c.d)}function ksn(t,e){return Bi(t.c.c,e.c.c)}function Esn(t,e){return Bi(t.n.a,e.n.a)}function ju(t,e){return u(Ai(t.b,e),15)}function Tsn(t,e){return t.n.b=(Wn(e),e)}function Csn(t,e){return t.n.b=(Wn(e),e)}function Zu(t,e){return!!e&&t.b[e.g]==e}function TS(t){return lc(t.a)||lc(t.b)}function Em(t){return t.$H||(t.$H=++i_n)}function Ssn(t){return t.a!=null?t.a:null}function _sn(t,e){return Bi(t.e.b,e.e.b)}function Asn(t,e){return Bi(t.e.a,e.e.a)}function Lsn(t,e,n){return bie(t,e,n,t.b)}function Gmt(t,e,n){return bie(t,e,n,t.c)}function Dsn(t){return Bf(),!!t&&!t.dc()}function PJt(){ZC(),this.b=new WVt(this)}function hz(){hz=V,$U=new rs(Xbe,0)}function Pn(){Pn=V,t2=!1,bT=!0}function wp(t){var e;e=t.a,t.a=t.b,t.b=e}function sI(t,e){rS(),this.a=t,this.b=e}function fz(t,e){bp(),this.b=t,this.c=e}function sit(t,e){Nit(),this.f=e,this.d=t}function Kmt(t,e){P3t(e,t),this.d=t,this.c=e}function Wmt(t,e){ixt.call(this,t,e,null)}function FJt(t,e,n,r){byt.call(this,t,e,n,r)}function j6(t){this.d=t,Zn.call(this,t)}function $6(t){this.c=t,Zn.call(this,t)}function aI(t){this.c=t,j6.call(this,t)}function Msn(t){return new By(3,t)}function C0(t){return oh(t,c3),new wu(t)}function BJt(t){return $E(),parseInt(t)||-1}function Isn(t){return l$(),jr((Vne(),zve),t)}function TE(t,e,n){return qmt(t,Hu(e),n)}function ait(t,e){return new FZt(t,t.gc(),e)}function Osn(t,e){return Pit(t.c).Md().Xb(e)}function CE(t,e,n){var r;r=t.fd(e),r.Rb(n)}function Ymt(t,e,n){u(UI(t,e),21).Fc(n)}function Nsn(t,e,n){jat(t.a,n),IH(t.a,e)}function oI(t){Lt(t,158)&&u(t,158).pi()}function RJt(t){zvt.call(this,t,null,null)}function oit(t){yy(),this.b=t,this.a=!0}function jJt(t){k$(),this.b=t,this.a=!0}function SE(t){return ur(t.b!=0),t.a.a.c}function Pf(t){return ur(t.b!=0),t.c.b.c}function Psn(t,e){return dat(t,e,e+1,""),t}function qi(t,e){return!!t.q&&Tu(t.q,e)}function $Jt(t){return t.b=u(Uyt(t.a),44)}function Fsn(t){return t.f!=null?t.f:""+t.g}function cit(t){return t.f!=null?t.f:""+t.g}function Bsn(t,e){return t>0?e/(t*t):e*100}function Rsn(t,e){return t>0?e*e/t:e*e*100}function Sy(t,e){return u(od(t.a,e),34)}function jsn(t,e){return Vb(),dn(t,e.e,e)}function $sn(t,e,n){return C$(),n.Mg(t,e)}function zsn(t){return Sg(),t.e.a+t.f.a/2}function qsn(t,e,n){return Sg(),n.e.a-t*e}function Hsn(t){return Sg(),t.e.b+t.f.b/2}function Vsn(t,e,n){return Sg(),n.e.b-t*e}function zJt(t){t.d=new RJt(t),t.e=new _r}function qJt(){this.a=new Fm,this.b=new Fm}function HJt(t){this.c=t,this.a=1,this.b=1}function VJt(t){Ict(),oKt(this),this.Ff(t)}function Usn(t,e,n){Tq(),t.pf(e)&&n.Cd(t)}function Gsn(t,e,n){return ge(e,ele(t,n))}function Tm(t,e,n){return t.a+=e,t.b+=n,t}function Ksn(t,e,n){return t.a*=e,t.b*=n,t}function Xmt(t,e){return t.a=e.a,t.b=e.b,t}function dz(t){return t.a=-t.a,t.b=-t.b,t}function CS(t,e,n){return t.a-=e,t.b-=n,t}function UJt(t){Ki.call(this),XS(this,t)}function GJt(){Rr.call(this,"GROW_TREE",0)}function KJt(){Rr.call(this,"POLYOMINO",0)}function Ul(t,e,n){nl.call(this,t,e,n,2)}function Wsn(t,e,n){h_(Wc(t.a),e,hre(n))}function WJt(t,e){rS(),sI.call(this,t,e)}function Qmt(t,e){bp(),fz.call(this,t,e)}function YJt(t,e){bp(),Qmt.call(this,t,e)}function XJt(t,e){bp(),fz.call(this,t,e)}function Ysn(t,e){return t.c.Fc(u(e,136))}function Xsn(t,e,n){h_(Al(t.a),e,fre(n))}function QJt(t){this.c=t,Su(t,0),_u(t,0)}function uit(t,e){Sh(),Iz.call(this,t,e)}function JJt(t,e){Sh(),uit.call(this,t,e)}function Jmt(t,e){Sh(),uit.call(this,t,e)}function Zmt(t,e){Sh(),Iz.call(this,t,e)}function ZJt(t,e){Sh(),Jmt.call(this,t,e)}function tZt(t,e){Sh(),Zmt.call(this,t,e)}function eZt(t,e){Sh(),Iz.call(this,t,e)}function Qsn(t,e,n){return e.zl(t.e,t.c,n)}function Jsn(t,e,n){return e.Al(t.e,t.c,n)}function tvt(t,e,n){return pV(VI(t,e),n)}function lit(t,e){return jb(t.e,u(e,54))}function Zsn(t){return t==null?null:TCn(t)}function tan(t){return t==null?null:w4n(t)}function ean(t){return t==null?null:rc(t)}function nan(t){return t==null?null:rc(t)}function Me(t){return AS(t==null||Ty(t)),t}function Ht(t){return AS(t==null||Cy(t)),t}function Gr(t){return AS(t==null||ba(t)),t}function wg(t){t.o==null&&Yxn(t)}function evt(t){if(!t)throw at(new DM)}function ran(t){if(!t)throw at(new $nt)}function ur(t){if(!t)throw at(new cc)}function _y(t){if(!t)throw at(new Xu)}function nZt(t){if(!t)throw at(new Th)}function _E(){_E=V,GP=new jKt,new $Kt}function Y4(){Y4=V,ex=new Oi("root")}function nvt(){Roe.call(this),this.Bb|=po}function ian(t,e){this.d=t,kr(this),this.b=e}function rvt(t,e){Bst.call(this,t),this.a=e}function ivt(t,e){Bst.call(this,t),this.a=e}function svt(t,e,n){yq.call(this,t,e,n,null)}function rZt(t,e,n){yq.call(this,t,e,n,null)}function cI(t,e){this.c=t,vE.call(this,t,e)}function SS(t,e){this.a=t,cI.call(this,t,e)}function avt(t){this.q=new b.Date(tw(t))}function iZt(t){return t>8?0:t+1}function sZt(t,e){wd||ge(t.a,e)}function san(t,e){return $M(),a7(e.d.i,t)}function aan(t,e){return ok(),new F0e(e,t)}function oan(t,e,n){return t.Ne(e,n)<=0?n:e}function can(t,e,n){return t.Ne(e,n)<=0?e:n}function uan(t,e){return u(od(t.b,e),143)}function lan(t,e){return u(od(t.c,e),233)}function hit(t){return u(Oe(t.a,t.b),293)}function aZt(t){return new ae(t.c,t.d+t.a)}function oZt(t){return Wn(t),t?1231:1237}function cZt(t){return rh(),$Qt(u(t,203))}function Ay(){Ay=V,tCt=en((Yl(),qw))}function han(t,e){e.a?pxn(t,e):rit(t.a,e.b)}function uI(t,e,n){++t.j,t.tj(),Fst(t,e,n)}function uZt(t,e,n){++t.j,t.qj(e,t.Zi(e,n))}function lZt(t,e,n){var r;r=t.fd(e),r.Rb(n)}function ovt(t,e,n){return n=hh(t,e,6,n),n}function cvt(t,e,n){return n=hh(t,e,3,n),n}function uvt(t,e,n){return n=hh(t,e,9,n),n}function Hd(t,e){return SI(e,I8t),t.f=e,t}function lvt(t,e){return(e&xi)%t.d.length}function hZt(t,e,n){return qkt(t.c,t.b,e,n)}function fZt(t,e){this.c=t,$m.call(this,e)}function dZt(t,e){this.a=t,ZGt.call(this,e)}function lI(t,e){this.a=t,ZGt.call(this,e)}function rs(t,e){Oi.call(this,t),this.a=e}function hvt(t,e){N2t.call(this,t),this.a=e}function fit(t,e){N2t.call(this,t),this.a=e}function fan(t){U5t.call(this,0,0),this.f=t}function gZt(t,e,n){return t.a+=af(e,0,n),t}function hI(t){return!t.a&&(t.a=new dt),t.a}function fvt(t,e){var n;return n=t.e,t.e=e,n}function dvt(t,e){var n;return n=e,!!t.Fe(n)}function dan(t,e){return Pn(),t==e?0:t?1:-1}function Ly(t,e){t.a.bd(t.b,e),++t.b,t.c=-1}function fI(t){t.b?fI(t.b):t.f.c.zc(t.e,t.d)}function pZt(t){dl(t.e),t.d.b=t.d,t.d.a=t.d}function gan(t,e,n){U2(),Cnt(t,e.Ve(t.a,n))}function gvt(t,e,n){return W6(t,u(e,22),n)}function Ff(t,e){return g$(new Array(e),t)}function pan(t){return qr(Ab(t,32))^qr(t)}function dit(t){return String.fromCharCode(t)}function ban(t){return t==null?null:t.message}function wan(t,e,n){return t.apply(e,n)}function man(t,e){var n;n=t[fut],n.call(t,e)}function van(t,e){var n;n=t[fut],n.call(t,e)}function yan(t,e){return $M(),!a7(e.d.i,t)}function pvt(t,e,n,r){Lz.call(this,t,e,n,r)}function bZt(){gz.call(this),this.a=new Sa}function bvt(){this.n=new Sa,this.o=new Sa}function wZt(){this.b=new Sa,this.c=new fe}function mZt(){this.a=new fe,this.b=new fe}function vZt(){this.a=new O2,this.b=new wKt}function wvt(){this.b=new kp,this.a=new kp}function yZt(){this.b=new Os,this.a=new Os}function xZt(){this.b=new _r,this.a=new _r}function kZt(){this.b=new WWt,this.a=new uC}function EZt(){this.a=new Xet,this.b=new AJ}function TZt(){this.a=new fe,this.d=new fe}function gz(){this.n=new C6,this.i=new B6}function CZt(t){this.a=(oh(t,c3),new wu(t))}function SZt(t){this.a=(oh(t,c3),new wu(t))}function xan(t){return t<100?null:new xb(t)}function kan(t,e){return t.n.a=(Wn(e),e+10)}function Ean(t,e){return t.n.a=(Wn(e),e+10)}function Tan(t,e){return e==t||L7(JH(e),t)}function _Zt(t,e){return hi(t.a,e,"")==null}function Can(t,e){var n;return n=e.qi(t.a),n}function ki(t,e){return t.a+=e.a,t.b+=e.b,t}function ia(t,e){return t.a-=e.a,t.b-=e.b,t}function San(t){return wy(t.j.c,0),t.a=-1,t}function mvt(t,e,n){return n=hh(t,e,11,n),n}function _an(t,e,n){n!=null&&Vq(e,wot(t,n))}function Aan(t,e,n){n!=null&&Uq(e,wot(t,n))}function z6(t,e,n,r){Jt.call(this,t,e,n,r)}function vvt(t,e,n,r){Jt.call(this,t,e,n,r)}function AZt(t,e,n,r){vvt.call(this,t,e,n,r)}function LZt(t,e,n,r){jz.call(this,t,e,n,r)}function git(t,e,n,r){jz.call(this,t,e,n,r)}function yvt(t,e,n,r){jz.call(this,t,e,n,r)}function DZt(t,e,n,r){git.call(this,t,e,n,r)}function xvt(t,e,n,r){git.call(this,t,e,n,r)}function kn(t,e,n,r){yvt.call(this,t,e,n,r)}function MZt(t,e,n,r){xvt.call(this,t,e,n,r)}function IZt(t,e,n,r){vyt.call(this,t,e,n,r)}function Dy(t,e){Bo.call(this,uA+t+Ew+e)}function kvt(t,e){return t.jk().wi().ri(t,e)}function Evt(t,e){return t.jk().wi().ti(t,e)}function OZt(t,e){return Wn(t),$t(t)===$t(e)}function hn(t,e){return Wn(t),$t(t)===$t(e)}function Lan(t,e){return t.b.Bd(new nXt(t,e))}function Dan(t,e){return t.b.Bd(new rXt(t,e))}function NZt(t,e){return t.b.Bd(new iXt(t,e))}function Man(t,e){return t.e=u(t.d.Kb(e),159)}function Tvt(t,e,n){return t.lastIndexOf(e,n)}function Ian(t,e,n){return Bi(t[e.a],t[n.a])}function Oan(t,e){return Zt(e,(De(),iP),t)}function Nan(t,e){return jc(e.a.d.p,t.a.d.p)}function Pan(t,e){return jc(t.a.d.p,e.a.d.p)}function Fan(t,e){return Bi(t.c-t.s,e.c-e.s)}function Ban(t,e){return Bi(t.b.e.a,e.b.e.a)}function Ran(t,e){return Bi(t.c.e.a,e.c.e.a)}function PZt(t){return t.c?Xo(t.c.a,t,0):-1}function q6(t){return t==zw||t==Y0||t==hu}function Cvt(t,e){this.c=t,zit.call(this,t,e)}function FZt(t,e,n){this.a=t,Kmt.call(this,e,n)}function BZt(t){this.c=t,ez.call(this,rN,0)}function RZt(t,e,n){this.c=e,this.b=n,this.a=t}function dI(t){LE(),this.d=t,this.a=new K4}function jZt(t){Vd(),this.a=(mn(),new dE(t))}function jan(t,e){bg(t.f)?zxn(t,e):m3n(t,e)}function $Zt(t,e){Jcn.call(this,t,t.length,e)}function $an(t,e){wd||e&&(t.d=e)}function zZt(t,e){return Lt(e,15)&&b0e(t.c,e)}function zan(t,e,n){return u(t.c,71).Wk(e,n)}function pz(t,e,n){return u(t.c,71).Xk(e,n)}function qan(t,e,n){return Qsn(t,u(e,343),n)}function Svt(t,e,n){return Jsn(t,u(e,343),n)}function Han(t,e,n){return cfe(t,u(e,343),n)}function qZt(t,e,n){return M3n(t,u(e,343),n)}function _S(t,e){return e==null?null:Gy(t.b,e)}function _vt(t){return Cy(t)?(Wn(t),t):t.ue()}function bz(t){return!isNaN(t)&&!isFinite(t)}function pit(t){eJt(this),nh(this),Ma(this,t)}function fl(t){Qrt(this),Hvt(this.c,0,t.Pc())}function _h(t,e,n){this.a=t,this.b=e,this.c=n}function HZt(t,e,n){this.a=t,this.b=e,this.c=n}function VZt(t,e,n){this.d=t,this.b=n,this.a=e}function UZt(t){this.a=t,pg(),Pc(Date.now())}function GZt(t){Kl(t.a),q3t(t.c,t.b),t.b=null}function bit(){bit=V,_9t=new ye,oye=new tn}function KZt(){KZt=V,lTe=Vt(aa,Ln,1,0,5,1)}function WZt(){WZt=V,ATe=Vt(aa,Ln,1,0,5,1)}function Avt(){Avt=V,LTe=Vt(aa,Ln,1,0,5,1)}function Vd(){Vd=V,new B2t((mn(),mn(),co))}function Van(t){return KE(),jr((tae(),lye),t)}function Uan(t){return bl(),jr((Vse(),bye),t)}function Gan(t){return TH(),jr((Lie(),kye),t)}function Kan(t){return Mq(),jr((Die(),Eye),t)}function Wan(t){return aV(),jr((Lce(),Tye),t)}function Yan(t){return A1(),jr((qse(),_ye),t)}function Xan(t){return pl(),jr((zse(),Lye),t)}function Qan(t){return qu(),jr((Hse(),Mye),t)}function Jan(t){return yV(),jr((CQt(),t3e),t)}function Zan(t){return Gm(),jr((nae(),n3e),t)}function ton(t){return dk(),jr((iae(),i3e),t)}function eon(t){return m_(),jr((rae(),o3e),t)}function non(t){return E$(),jr((eie(),c3e),t)}function ron(t){return Iq(),jr((Mie(),C3e),t)}function ion(t){return WS(),jr((Use(),Q3e),t)}function son(t){return Ua(),jr((jae(),e4e),t)}function aon(t){return u7(),jr((aae(),a4e),t)}function oon(t){return lw(),jr((sae(),f4e),t)}function Lvt(t,e){if(!t)throw at(new zn(e))}function AE(t){if(!t)throw at(new Ro(l8t))}function wit(t,e){if(t!=e)throw at(new Th)}function YZt(t,e,n){this.a=t,this.b=e,this.c=n}function Dvt(t,e,n){this.a=t,this.b=e,this.c=n}function XZt(t,e,n){this.a=t,this.b=e,this.c=n}function wz(t,e,n){this.b=t,this.a=e,this.c=n}function Mvt(t,e,n){this.b=t,this.c=e,this.a=n}function Ivt(t,e,n){this.a=t,this.b=e,this.c=n}function mz(t,e,n){this.e=e,this.b=t,this.d=n}function QZt(t,e,n){this.b=t,this.a=e,this.c=n}function con(t,e,n){return U2(),t.a.Yd(e,n),e}function mit(t){var e;return e=new ll,e.e=t,e}function Ovt(t){var e;return e=new kKt,e.b=t,e}function gI(){gI=V,XU=new pQ,QU=new BB}function vz(){vz=V,_4e=new SQ,S4e=new tC}function Bf(){Bf=V,I4e=new iJ,O4e=new sJ}function uon(t){return Vm(),jr((Ese(),H4e),t)}function lon(t){return Za(),jr((SQt(),k4e),t)}function hon(t){return rH(),jr((cae(),C4e),t)}function fon(t){return ud(),jr((oae(),F4e),t)}function don(t){return Qy(),jr(($ae(),R4e),t)}function gon(t){return iV(),jr((gce(),V4e),t)}function pon(t){return wk(),jr((hoe(),U4e),t)}function bon(t){return Eq(),jr((Pie(),G4e),t)}function won(t){return QS(),jr((yse(),K4e),t)}function mon(t){return $q(),jr((xse(),W4e),t)}function von(t){return Ip(),jr((zae(),Y4e),t)}function yon(t){return YI(),jr((Nie(),X4e),t)}function xon(t){return M7(),jr((goe(),n5e),t)}function kon(t){return Co(),jr((Uce(),r5e),t)}function Eon(t){return c7(),jr((Cse(),i5e),t)}function Ton(t){return Cg(),jr((Tse(),a5e),t)}function Con(t){return fq(),jr((zie(),o5e),t)}function Son(t){return AO(),jr((doe(),e5e),t)}function _on(t){return ow(),jr((kse(),J4e),t)}function Aon(t){return UH(),jr((foe(),Z4e),t)}function Lon(t){return qI(),jr((Oie(),t5e),t)}function Don(t){return Rh(),jr((Hae(),c5e),t)}function Mon(t){return Bp(),jr((Sce(),I6e),t)}function Ion(t){return o_(),jr((Sse(),O6e),t)}function Oon(t){return Yy(),jr((uae(),N6e),t)}function Non(t){return w_(),jr((qae(),P6e),t)}function Pon(t){return cf(),jr((Gce(),F6e),t)}function Fon(t){return Wd(),jr((lae(),B6e),t)}function Bon(t){return KI(),jr((Fie(),R6e),t)}function Ron(t){return To(),jr((Lse(),$6e),t)}function jon(t){return tH(),jr((_se(),z6e),t)}function $on(t){return i_(),jr((Ase(),q6e),t)}function zon(t){return b7(),jr((Mse(),H6e),t)}function qon(t){return jq(),jr((Dse(),V6e),t)}function Hon(t){return iH(),jr((Ise(),U6e),t)}function Von(t){return Hm(),jr(($se(),oke),t)}function Uon(t){return US(),jr((Bie(),fke),t)}function Gon(t){return Gd(),jr((Rie(),vke),t)}function Kon(t){return nd(),jr((jie(),xke),t)}function Won(t){return C1(),jr(($ie(),Fke),t)}function Yon(t){return Bm(),jr((qie(),Hke),t)}function Xon(t){return bk(),jr((wae(),Vke),t)}function Qon(t){return I_(),jr((_Qt(),Uke),t)}function Jon(t){return s_(),jr((Ose(),Gke),t)}function Zon(t){return a_(),jr((bae(),p8e),t)}function tcn(t){return uq(),jr((Vie(),b8e),t)}function ecn(t){return Kq(),jr((Uie(),x8e),t)}function ncn(t){return zH(),jr((Vae(),E8e),t)}function rcn(t){return uO(),jr((Nse(),C8e),t)}function icn(t){return Cq(),jr((Hie(),T8e),t)}function scn(t){return NH(),jr((pae(),U8e),t)}function acn(t){return Zq(),jr((Pse(),G8e),t)}function ocn(t){return vH(),jr((Fse(),K8e),t)}function ccn(t){return DH(),jr((Bse(),Y8e),t)}function ucn(t){return dH(),jr((Rse(),J8e),t)}function lcn(t){return wq(),jr((Gie(),vEe),t)}function hcn(t){return r7(),jr((Iie(),x4e),t)}function fcn(t){return Un(),jr((poe(),b4e),t)}function dcn(t){return Sq(),jr((jse(),yEe),t)}function gcn(t){return gat(),jr((Kie(),xEe),t)}function pcn(t){return A_(),jr((Uae(),EEe),t)}function bcn(t){return S$(),jr((uie(),CEe),t)}function wcn(t){return pO(),jr((Kse(),TEe),t)}function mcn(t){return _$(),jr((lie(),_Ee),t)}function vcn(t){return BI(),jr((Wie(),AEe),t)}function ycn(t){return DO(),jr((Gae(),LEe),t)}function xcn(t){return tS(),jr((hie(),UEe),t)}function kcn(t){return sO(),jr((Yie(),GEe),t)}function Ecn(t){return D1(),jr((Wae(),JEe),t)}function Tcn(t){return Fp(),jr((fce(),t7e),t)}function Ccn(t){return I0(),jr((boe(),e7e),t)}function Scn(t){return fw(),jr((woe(),o7e),t)}function _cn(t){return Rs(),jr((Kae(),S7e),t)}function Acn(t){return cd(),jr((Wse(),_7e),t)}function Lcn(t){return Lg(),jr((mae(),A7e),t)}function Dcn(t){return HH(),jr((moe(),L7e),t)}function Mcn(t){return Ag(),jr((Gse(),M7e),t)}function Icn(t){return uh(),jr((vae(),O7e),t)}function Ocn(t){return e3(),jr((Ace(),N7e),t)}function Ncn(t){return o5(),jr((Yae(),P7e),t)}function Pcn(t){return ka(),jr((voe(),F7e),t)}function Fcn(t){return wl(),jr((yoe(),B7e),t)}function Bcn(t){return ve(),jr((Xae(),R7e),t)}function Rcn(t){return Yl(),jr((yae(),H7e),t)}function jcn(t){return Ml(),jr((_ce(),V7e),t)}function $cn(t){return lk(),jr((Yse(),U7e),t)}function zcn(t,e){return Wn(t),t+(Wn(e),e)}function qcn(t){return vit(),jr((Xie(),G7e),t)}function Hcn(t){return pH(),jr((xae(),K7e),t)}function Vcn(t){return sH(),jr((kae(),X7e),t)}function LE(){LE=V,JAt=(ve(),Gn),nK=Jn}function vit(){vit=V,bIt=new _te,wIt=new fee}function Ucn(t){return!t.e&&(t.e=new fe),t.e}function yit(t,e){this.c=t,this.a=e,this.b=e-t}function JZt(t,e,n){this.a=t,this.b=e,this.c=n}function xit(t,e,n){this.a=t,this.b=e,this.c=n}function Nvt(t,e,n){this.a=t,this.b=e,this.c=n}function Pvt(t,e,n){this.a=t,this.b=e,this.c=n}function ZZt(t,e,n){this.a=t,this.b=e,this.c=n}function tte(t,e,n){this.a=t,this.b=e,this.c=n}function mp(t,e,n){this.e=t,this.a=e,this.c=n}function ete(t,e,n){Sh(),Zyt.call(this,t,e,n)}function kit(t,e,n){Sh(),Fyt.call(this,t,e,n)}function Fvt(t,e,n){Sh(),Fyt.call(this,t,e,n)}function Bvt(t,e,n){Sh(),Fyt.call(this,t,e,n)}function nte(t,e,n){Sh(),kit.call(this,t,e,n)}function Rvt(t,e,n){Sh(),kit.call(this,t,e,n)}function rte(t,e,n){Sh(),Rvt.call(this,t,e,n)}function ite(t,e,n){Sh(),Fvt.call(this,t,e,n)}function ste(t,e,n){Sh(),Bvt.call(this,t,e,n)}function Eit(t){Lz.call(this,t.d,t.c,t.a,t.b)}function jvt(t){Lz.call(this,t.d,t.c,t.a,t.b)}function $vt(t){this.d=t,kr(this),this.b=Vun(t.d)}function Gcn(t){return O7(),jr((dce(),uTe),t)}function pI(t,e){return Hr(t),Hr(e),new dYt(t,e)}function H6(t,e){return Hr(t),Hr(e),new mte(t,e)}function Kcn(t,e){return Hr(t),Hr(e),new vte(t,e)}function Wcn(t,e){return Hr(t),Hr(e),new kYt(t,e)}function Tit(t){return ur(t.b!=0),Oh(t,t.a.a)}function Ycn(t){return ur(t.b!=0),Oh(t,t.c.b)}function Xcn(t){return!t.c&&(t.c=new x0),t.c}function DE(t){var e;return e=new fe,Wst(e,t),e}function Qcn(t){var e;return e=new Os,Wst(e,t),e}function ate(t){var e;return e=new q2t,oat(e,t),e}function bI(t){var e;return e=new Ki,oat(e,t),e}function u(t,e){return AS(t==null||aot(t,e)),t}function Jcn(t,e,n){see.call(this,e,n),this.a=t}function ote(t,e){this.c=t,this.b=e,this.a=!1}function cte(){this.a=";,;",this.b="",this.c=""}function ute(t,e,n){this.b=t,yQt.call(this,e,n)}function zvt(t,e,n){this.c=t,I$.call(this,e,n)}function qvt(t,e,n){kE.call(this,t,e),this.b=n}function Hvt(t,e,n){N6t(n,0,t,e,n.length,!1)}function S0(t,e,n,r,s){t.b=e,t.c=n,t.d=r,t.a=s}function Vvt(t,e,n,r,s){t.d=e,t.c=n,t.a=r,t.b=s}function Zcn(t,e){e&&(t.b=e,t.a=(Mb(e),e.a))}function wI(t,e){if(!t)throw at(new zn(e))}function V6(t,e){if(!t)throw at(new Ro(e))}function Uvt(t,e){if(!t)throw at(new wWt(e))}function tun(t,e){return T$(),jc(t.d.p,e.d.p)}function eun(t,e){return Sg(),Bi(t.e.b,e.e.b)}function nun(t,e){return Sg(),Bi(t.e.a,e.e.a)}function run(t,e){return jc(Tte(t.d),Tte(e.d))}function yz(t,e){return e&&Vz(t,e.d)?e:null}function iun(t,e){return e==(ve(),Gn)?t.c:t.d}function Gvt(t){return Fb(rln(ec(t)?rf(t):t))}function sun(t){return new ae(t.c+t.b,t.d+t.a)}function lte(t){return t!=null&&!Uat(t,CL,SL)}function aun(t,e){return(que(t)<<4|que(e))&js}function hte(t,e,n,r,s){t.c=e,t.d=n,t.b=r,t.a=s}function Kvt(t){var e,n;e=t.b,n=t.c,t.b=n,t.c=e}function Wvt(t){var e,n;n=t.d,e=t.a,t.d=e,t.a=n}function oun(t,e){var n;return n=t.c,S4t(t,e),n}function Yvt(t,e){return e<0?t.g=-1:t.g=e,t}function xz(t,e){return pgn(t),t.a*=e,t.b*=e,t}function fte(t,e,n){aoe.call(this,e,n),this.d=t}function mI(t,e,n){gmt.call(this,t,e),this.c=n}function kz(t,e,n){gmt.call(this,t,e),this.c=n}function Xvt(t){Avt(),E4.call(this),this.ci(t)}function dte(){VE(),Aln.call(this,(Eb(),yf))}function gte(t){return yi(),new _0(0,t)}function pte(){pte=V,a0t=(mn(),new pa(lht))}function Ez(){Ez=V,new oxt((Wnt(),kht),(Knt(),xht))}function bte(){bte=V,d9t=Vt(Ra,ue,17,256,0,1)}function wte(){this.b=Rt(Ht(Se((Vf(),eft))))}function Cit(t){this.b=t,this.a=K2(this.b.a).Od()}function mte(t,e){this.b=t,this.a=e,DC.call(this)}function vte(t,e){this.a=t,this.b=e,DC.call(this)}function yte(t,e,n){this.a=t,$4.call(this,e,n)}function xte(t,e,n){this.a=t,$4.call(this,e,n)}function ME(t,e,n){var r;r=new Oy(n),_1(t,e,r)}function Qvt(t,e,n){var r;return r=t[e],t[e]=n,r}function Tz(t){var e;return e=t.slice(),zst(e,t)}function Cz(t){var e;return e=t.n,t.a.b+e.d+e.a}function kte(t){var e;return e=t.n,t.e.b+e.d+e.a}function Jvt(t){var e;return e=t.n,t.e.a+e.b+e.c}function Zvt(t){t.a.b=t.b,t.b.a=t.a,t.a=t.b=null}function Zr(t,e){return hs(t,e,t.c.b,t.c),!0}function cun(t){return t.a?t.a:Zit(t)}function uun(t){return J6(),O0(t)==Ji(qb(t))}function lun(t){return J6(),qb(t)==Ji(O0(t))}function Cm(t,e){return k_(t,new kE(e.a,e.b))}function hun(t,e){return Gz(),got(t,e),new Vee(t,e)}function fun(t,e){return t.c=e)throw at(new Y2t)}function My(t,e){return dO(t,(Wn(e),new no(e)))}function G6(t,e){return dO(t,(Wn(e),new ql(e)))}function oee(t,e,n){return RSn(t,u(e,12),u(n,12))}function cee(t){return rl(),u(t,12).g.c.length!=0}function uee(t){return rl(),u(t,12).e.c.length!=0}function Xun(t,e){return ok(),Bi(e.a.o.a,t.a.o.a)}function Qun(t,e){e.Bb&Fc&&!t.a.o&&(t.a.o=e)}function Jun(t,e){e.Ug("General 'Rotator",1),fCn(t)}function Zun(t,e,n){e.qf(n,Rt(Ht(tr(t.b,n)))*t.a)}function lee(t,e,n){return w5(),i7(t,e)&&i7(t,n)}function IS(t){return wl(),!t.Hc(Hg)&&!t.Hc(g2)}function tln(t){return t.e?$3t(t.e):null}function OS(t){return ec(t)?""+t:p0e(t)}function myt(t){var e;for(e=t;e.f;)e=e.f;return e}function eln(t,e,n){return ls(e,0,iyt(e[0],n[0])),e}function vp(t,e,n,r){var s;s=t.i,s.i=e,s.a=n,s.b=r}function Jt(t,e,n,r){Ps.call(this,t,e,n),this.b=r}function ha(t,e,n,r,s){jst.call(this,t,e,n,r,s,-1)}function NS(t,e,n,r,s){jI.call(this,t,e,n,r,s,-1)}function jz(t,e,n,r){mI.call(this,t,e,n),this.b=r}function hee(t){cQt.call(this,t,!1),this.a=!1}function fee(){zXt.call(this,"LOOKAHEAD_LAYOUT",1)}function dee(t){this.b=t,j6.call(this,t),mJt(this)}function gee(t){this.b=t,aI.call(this,t),vJt(this)}function Iy(t,e,n){this.a=t,z6.call(this,e,n,5,6)}function vyt(t,e,n,r){this.b=t,Ps.call(this,e,n,r)}function pee(t,e){this.b=t,dg.call(this,t.b),this.a=e}function bee(t){this.a=Zle(t.a),this.b=new fl(t.b)}function yyt(t,e){Dm(),Irn.call(this,t,uH(new hl(e)))}function $z(t,e){return yi(),new Pyt(t,e,0)}function Rit(t,e){return yi(),new Pyt(6,t,e)}function Na(t,e){for(Wn(e);t.Ob();)e.Cd(t.Pb())}function Tu(t,e){return ba(e)?ost(t,e):!!Eo(t.f,e)}function jit(t,e){return e.Vh()?jb(t.b,u(e,54)):e}function nln(t,e){return hn(t.substr(0,e.length),e)}function A0(t){return new rr(new zmt(t.a.length,t.a))}function zz(t){return new ae(t.c+t.b/2,t.d+t.a/2)}function rln(t){return Eu(~t.l&Il,~t.m&Il,~t.h&Fg)}function $it(t){return typeof t===ZO||typeof t===Pct}function dl(t){t.f=new FQt(t),t.i=new BQt(t),++t.g}function wee(t){if(!t)throw at(new cc);return t.d}function K6(t){var e;return e=r_(t),ur(e!=null),e}function iln(t){var e;return e=y2n(t),ur(e!=null),e}function OE(t,e){var n;return n=t.a.gc(),P3t(e,n),n-e}function qs(t,e){var n;return n=t.a.zc(e,t),n==null}function yI(t,e){return t.a.zc(e,(Pn(),t2))==null}function xyt(t){return new ln(null,uln(t,t.length))}function kyt(t,e,n){return jge(t,u(e,42),u(n,176))}function W6(t,e,n){return zf(t.a,e),Qvt(t.b,e.g,n)}function sln(t,e,n){IE(n,t.a.c.length),Mh(t.a,n,e)}function zt(t,e,n,r){pue(e,n,t.length),aln(t,e,n,r)}function aln(t,e,n,r){var s;for(s=e;s0?b.Math.log(t/e):-100}function vee(t,e){return $c(t,e)<0?-1:$c(t,e)>0?1:0}function xI(t,e){lJt(t,Lt(e,160)?e:u(e,2036).Rl())}function Syt(t,e){if(t==null)throw at(new A6(e))}function uln(t,e){return hgn(e,t.length),new Ste(t,e)}function _yt(t,e){return e?Ma(t,e):!1}function lln(){return l$(),lt(ut($ve,1),te,549,0,[Cht])}function FS(t){return t.e==0?t:new Y2(-t.e,t.d,t.a)}function hln(t,e){return Bi(t.c.c+t.c.b,e.c.c+e.c.b)}function kI(t,e){hs(t.d,e,t.b.b,t.b),++t.a,t.c=null}function yee(t,e){return t.c?yee(t.c,e):ge(t.b,e),t}function fln(t,e,n){var r;return r=$y(t,e),Est(t,e,n),r}function xee(t,e,n){var r;for(r=0;r=t.g}function ls(t,e,n){return ran(n==null||JEn(t,n)),t[e]=n}function Iyt(t,e){return qn(e,t.length+1),t.substr(e)}function Xit(t,e){for(Wn(e);t.c=t?new Lwt:Pgn(t-1)}function Pa(t){return!t.a&&t.c?t.c.b:t.a}function Byt(t){return Lt(t,616)?t:new $ne(t)}function Mb(t){t.c?Mb(t.c):($b(t),t.d=!0)}function jS(t){t.c?t.c.$e():(t.d=!0,Z6n(t))}function zee(t){t.b=!1,t.c=!1,t.d=!1,t.a=!1}function qee(t){var e,n;return e=t.c.i.c,n=t.d.i.c,e==n}function Mln(t,e){var n;n=t.Ih(e),n>=0?t.ki(n):C6t(t,e)}function Hee(t,e){t.c<0||t.b.b0;)t=t<<1|(t<0?1:0);return t}function Qee(t,e){var n;return n=new eu(t),In(e.c,n),n}function Jee(t,e){t.u.Hc((wl(),Hg))&&F5n(t,e),t0n(t,e)}function Nc(t,e){return $t(t)===$t(e)||t!=null&&Ti(t,e)}function Io(t,e){return Dit(t.a,e)?t.b[u(e,22).g]:null}function Vln(){return E$(),lt(ut(rCt,1),te,488,0,[Wht])}function Uln(){return S$(),lt(ut(IDt,1),te,489,0,[wdt])}function Gln(){return _$(),lt(ut(SEe,1),te,558,0,[mdt])}function Kln(){return tS(),lt(ut(ZDt,1),te,539,0,[kP])}function Kz(t){return!t.n&&(t.n=new Jt(Po,t,1,7)),t.n}function Jit(t){return!t.c&&(t.c=new Jt(kl,t,9,9)),t.c}function zyt(t){return!t.c&&(t.c=new kn(vr,t,5,8)),t.c}function Wln(t){return!t.b&&(t.b=new kn(vr,t,4,7)),t.b}function EI(t){return t.j.c.length=0,Hyt(t.c),San(t.a),t}function RE(t){return t.e==dT&&nn(t,qwn(t.g,t.b)),t.e}function TI(t){return t.f==dT&&Tn(t,Ovn(t.g,t.b)),t.f}function fi(t,e,n,r){return xce(t,e,n,!1),lH(t,r),t}function Zee(t,e){this.b=t,zit.call(this,t,e),mJt(this)}function tne(t,e){this.b=t,Cvt.call(this,t,e),vJt(this)}function $S(t){this.d=t,this.a=this.d.b,this.b=this.d.c}function qyt(t,e){this.b=t,this.c=e,this.a=new I6(this.b)}function Va(t,e){return qn(e,t.length),t.charCodeAt(e)}function Yln(t,e){L5t(t,Rt(_g(e,"x")),Rt(_g(e,"y")))}function Xln(t,e){L5t(t,Rt(_g(e,"x")),Rt(_g(e,"y")))}function _i(t,e){return $b(t),new ln(t,new Z3t(e,t.a))}function Wo(t,e){return $b(t),new ln(t,new R3t(e,t.a))}function Ny(t,e){return $b(t),new rvt(t,new use(e,t.a))}function Wz(t,e){return $b(t),new ivt(t,new lse(e,t.a))}function Qln(t,e){return new Tne(u(Hr(t),50),u(Hr(e),50))}function Jln(t,e){return Bi(t.d.c+t.d.b/2,e.d.c+e.d.b/2)}function ene(t,e,n){n.a?_u(t,e.b-t.f/2):Su(t,e.a-t.g/2)}function Zln(t,e){return Bi(t.g.c+t.g.b/2,e.g.c+e.g.b/2)}function thn(t,e){return Iwt(),Bi((Wn(t),t),(Wn(e),e))}function ehn(t){return t!=null&&BM(WK,t.toLowerCase())}function Hyt(t){var e;for(e=t.Kc();e.Ob();)e.Pb(),e.Qb()}function X4(t){var e;return e=t.b,!e&&(t.b=e=new vnt(t)),e}function Zit(t){var e;return e=jgn(t),e||null}function nne(t,e){var n,r;return n=t/e,r=Ys(n),n>r&&++r,r}function nhn(t,e,n){var r;r=u(t.d.Kb(n),159),r&&r.Nb(e)}function rhn(t,e,n){sTn(t.a,n),Fpn(n),Sxn(t.b,n),STn(e,n)}function Yz(t,e,n,r){this.a=t,this.c=e,this.b=n,this.d=r}function Vyt(t,e,n,r){this.c=t,this.b=e,this.a=n,this.d=r}function rne(t,e,n,r){this.c=t,this.b=e,this.d=n,this.a=r}function Ah(t,e,n,r){this.c=t,this.d=e,this.b=n,this.a=r}function ine(t,e,n,r){this.a=t,this.d=e,this.c=n,this.b=r}function tst(t,e,n,r){this.a=t,this.e=e,this.d=n,this.c=r}function sne(t,e,n,r){this.a=t,this.c=e,this.d=n,this.b=r}function est(t,e,n){this.a=b8t,this.d=t,this.b=e,this.c=n}function X6(t,e,n,r){Rr.call(this,t,e),this.a=n,this.b=r}function ane(t,e){this.d=(Wn(t),t),this.a=16449,this.c=e}function one(t){this.a=new fe,this.e=Vt(Fr,ue,53,t,0,2)}function ihn(t){t.Ug("No crossing minimization",1),t.Vg()}function cne(){uc.call(this,"There is no more element.")}function une(t,e,n,r){this.a=t,this.b=e,this.c=n,this.d=r}function lne(t,e,n,r){this.a=t,this.b=e,this.c=n,this.d=r}function X2(t,e,n,r){this.e=t,this.a=e,this.c=n,this.d=r}function hne(t,e,n,r){this.a=t,this.c=e,this.d=n,this.b=r}function fne(t,e,n,r){Sh(),hse.call(this,e,n,r),this.a=t}function dne(t,e,n,r){Sh(),hse.call(this,e,n,r),this.a=t}function nst(t,e,n){var r,s;return r=n8t(t),s=e.ti(n,r),s}function mg(t){var e,n;return n=(e=new lm,e),YE(n,t),n}function rst(t){var e,n;return n=(e=new lm,e),a6t(n,t),n}function shn(t,e){var n;return n=tr(t.f,e),j4t(e,n),null}function gne(t){return!t.b&&(t.b=new Jt(Ts,t,12,3)),t.b}function pne(t){return AS(t==null||$it(t)&&t.Tm!==yt),t}function Xz(t){return t.n&&(t.e!==wbe&&t.je(),t.j=null),t}function jE(t){if(Ll(t.d),t.d.d!=t.c)throw at(new Th)}function Uyt(t){return ur(t.b0&&Khe(this)}function bne(t,e){this.a=t,ian.call(this,t,u(t.d,15).fd(e))}function ahn(t,e){return Bi(tl(t)*Gl(t),tl(e)*Gl(e))}function ohn(t,e){return Bi(tl(t)*Gl(t),tl(e)*Gl(e))}function chn(t){return Zm(t)&&Ie(Me(ne(t,(De(),Mw))))}function uhn(t,e){return dn(t,u(X(e,(De(),OT)),17),e)}function lhn(t,e){return u(X(t,(oe(),Uk)),15).Fc(e),e}function Gyt(t,e){return t.b=e.b,t.c=e.c,t.d=e.d,t.a=e.a,t}function wne(t,e,n,r){this.b=t,this.c=r,ez.call(this,e,n)}function hhn(t,e,n){t.i=0,t.e=0,e!=n&&tue(t,e,n)}function fhn(t,e,n){t.i=0,t.e=0,e!=n&&eue(t,e,n)}function dhn(t,e,n){return ZC(),$2n(u(tr(t.e,e),529),n)}function Q6(t){var e;return e=t.f,e||(t.f=new vE(t,t.c))}function mne(t,e){return a5(t.j,e.s,e.c)+a5(e.e,t.s,t.c)}function vne(t,e){t.e&&!t.e.a&&(aKt(t.e,e),vne(t.e,e))}function yne(t,e){t.d&&!t.d.a&&(aKt(t.d,e),yne(t.d,e))}function ghn(t,e){return-Bi(tl(t)*Gl(t),tl(e)*Gl(e))}function phn(t){return u(t.ld(),149).Pg()+":"+rc(t.md())}function xne(){Fot(this,new Fj),this.wb=(Lb(),Fn),bE()}function kne(t){this.b=new fe,Hs(this.b,this.b),this.a=t}function Kyt(t,e){new Ki,this.a=new Qu,this.b=t,this.c=e}function Nm(){Nm=V,C9t=new Gt,Oht=new Gt,S9t=new Fe}function mn(){mn=V,co=new jt,q0=new Ft,FU=new Ct}function Wyt(){Wyt=V,vye=new Ha,xye=new uyt,yye=new ds}function J6(){J6=V,VU=new fe,Jht=new _r,Qht=new fe}function Qz(t,e){if(t==null)throw at(new A6(e));return t}function Jz(t){return!t.a&&(t.a=new Jt(bi,t,10,11)),t.a}function Di(t){return!t.q&&(t.q=new Jt(vf,t,11,10)),t.q}function Qt(t){return!t.s&&(t.s=new Jt(Wu,t,21,17)),t.s}function bhn(t){return Hr(t),uhe(new rr(sr(t.a.Kc(),new z)))}function whn(t,e){return Wl(t),Wl(e),bWt(u(t,22),u(e,22))}function Q2(t,e,n){var r,s;r=_vt(n),s=new cE(r),_1(t,e,s)}function sst(t,e,n,r,s,o){jI.call(this,t,e,n,r,s,o?-2:-1)}function Ene(t,e,n,r){gmt.call(this,e,n),this.b=t,this.a=r}function Tne(t,e){Rnn.call(this,new Bit(t)),this.a=t,this.b=e}function Yyt(t){this.b=t,this.c=t,t.e=null,t.c=null,this.a=1}function mhn(t){Bf();var e;e=u(t.g,10),e.n.a=t.d.c+e.d.b}function $E(){$E=V;var t,e;e=!Cwn(),t=new it,Aht=e?new rt:t}function ast(t){return mn(),Lt(t,59)?new nrt(t):new uz(t)}function Zz(t){return Lt(t,16)?new LS(u(t,16)):Qcn(t.Kc())}function vhn(t){return new xJt(t,t.e.Rd().gc()*t.c.Rd().gc())}function yhn(t){return new kJt(t,t.e.Rd().gc()*t.c.Rd().gc())}function Xyt(t){return t&&t.hashCode?t.hashCode():Em(t)}function ost(t,e){return e==null?!!Eo(t.f,null):Fun(t.i,e)}function xhn(t,e){var n;return n=Imt(t.a,e),n&&(e.d=null),n}function Cne(t,e,n){return t.f?t.f.ef(e,n):!1}function CI(t,e,n,r){ls(t.c[e.g],n.g,r),ls(t.c[n.g],e.g,r)}function cst(t,e,n,r){ls(t.c[e.g],e.g,n),ls(t.b[e.g],e.g,r)}function khn(t,e,n){return Rt(Ht(n.a))<=t&&Rt(Ht(n.b))>=e}function Sne(t,e){this.g=t,this.d=lt(ut(V0,1),jp,10,0,[e])}function _ne(t){this.c=t,this.b=new pp(u(Hr(new Fu),50))}function Ane(t){this.c=t,this.b=new pp(u(Hr(new b4),50))}function Lne(t){this.b=t,this.a=new pp(u(Hr(new Ci),50))}function Dne(){this.b=new Os,this.d=new Ki,this.e=new X2t}function Qyt(){this.c=new Sa,this.d=new Sa,this.e=new Sa}function Pm(){this.a=new Qu,this.b=(oh(3,c3),new wu(3))}function yp(t,e){this.e=t,this.a=aa,this.b=M0e(e),this.c=e}function tq(t){this.c=t.c,this.d=t.d,this.b=t.b,this.a=t.a}function Mne(t,e,n,r,s,o){this.a=t,tat.call(this,e,n,r,s,o)}function Ine(t,e,n,r,s,o){this.a=t,tat.call(this,e,n,r,s,o)}function Ib(t,e,n,r,s,o,h){return new Cst(t.e,e,n,r,s,o,h)}function Ehn(t,e,n){return n>=0&&hn(t.substr(n,e.length),e)}function One(t,e){return Lt(e,149)&&hn(t.b,u(e,149).Pg())}function Thn(t,e){return t.a?e.Gh().Kc():u(e.Gh(),71).Ii()}function Nne(t,e){var n;return n=t.b.Qc(e),Aie(n,t.b.gc()),n}function SI(t,e){if(t==null)throw at(new A6(e));return t}function Yo(t){return t.u||(_l(t),t.u=new dZt(t,t)),t.u}function ust(t){this.a=(mn(),Lt(t,59)?new nrt(t):new uz(t))}function $u(t){var e;return e=u(jn(t,16),29),e||t.ii()}function eq(t,e){var n;return n=V2(t.Rm),e==null?n:n+": "+e}function Lh(t,e,n){return Da(e,n,t.length),t.substr(e,n-e)}function Pne(t,e){gz.call(this),c4t(this),this.a=t,this.c=e}function Chn(t){t&&eq(t,t.ie())}function Shn(t){d$(),b.setTimeout(function(){throw t},0)}function _hn(){return TH(),lt(ut(N9t,1),te,436,0,[zht,O9t])}function Ahn(){return Mq(),lt(ut(F9t,1),te,435,0,[P9t,qht])}function Lhn(){return Iq(),lt(ut(lCt,1),te,432,0,[Zht,UU])}function Dhn(){return r7(),lt(ut(y4e,1),te,517,0,[KN,dft])}function Mhn(){return qI(),lt(ut(NSt,1),te,487,0,[OSt,EG])}function Ihn(){return YI(),lt(ut(MSt,1),te,428,0,[xG,DSt])}function Ohn(){return Eq(),lt(ut(ESt,1),te,431,0,[kSt,Aft])}function Nhn(){return KI(),lt(ut(jAt,1),te,430,0,[T1t,C1t])}function Phn(){return US(),lt(ut(hke,1),te,531,0,[KA,GA])}function Fhn(){return Gd(),lt(ut(mke,1),te,523,0,[Dv,Gp])}function Bhn(){return nd(),lt(ut(yke,1),te,522,0,[Fw,yd])}function Rhn(){return C1(),lt(ut(Pke,1),te,528,0,[F3,o2])}function jhn(){return fq(),lt(ut(KSt,1),te,429,0,[Hft,GSt])}function $hn(){return wq(),lt(ut(CDt,1),te,490,0,[gdt,TDt])}function zhn(){return gat(),lt(ut(MDt,1),te,491,0,[LDt,DDt])}function qhn(){return uq(),lt(ut(NLt,1),te,433,0,[K1t,OLt])}function Hhn(){return Cq(),lt(ut(BLt,1),te,434,0,[FLt,Z1t])}function Vhn(){return Bm(),lt(ut(qke,1),te,464,0,[c2,Z5])}function Uhn(){return Kq(),lt(ut(PLt,1),te,500,0,[hK,nx])}function Ghn(){return BI(),lt(ut(ODt,1),te,438,0,[vdt,kK])}function Khn(){return sO(),lt(ut(eMt,1),te,437,0,[TK,tMt])}function Whn(){return vit(),lt(ut(jK,1),te,347,0,[bIt,wIt])}function nq(t,e,n,r){return n>=0?t.Uh(e,n,r):t.Ch(null,n,r)}function _I(t){return t.b.b==0?t.a.sf():Tit(t.b)}function Yhn(t){if(t.p!=5)throw at(new Xu);return qr(t.f)}function Xhn(t){if(t.p!=5)throw at(new Xu);return qr(t.k)}function Jyt(t){return $t(t.a)===$t((fat(),r0t))&&WTn(t),t.a}function Qhn(t,e){t.b=e,t.c>0&&t.b>0&&(t.g=Dz(t.c,t.b,t.a))}function Jhn(t,e){t.c=e,t.c>0&&t.b>0&&(t.g=Dz(t.c,t.b,t.a))}function Fne(t,e){st(this,new ae(t.a,t.b)),bt(this,bI(e))}function Fm(){jnn.call(this,new M6(zy(12))),Bmt(!0),this.a=2}function lst(t,e,n){yi(),um.call(this,t),this.b=e,this.a=n}function Zyt(t,e,n){Sh(),i$.call(this,e),this.a=t,this.b=n}function Bne(t){var e;e=t.c.d.b,t.b=e,t.a=t.c.d,e.a=t.c.d.b=t}function Zhn(t){return t.b==0?null:(ur(t.b!=0),Oh(t,t.a.a))}function nu(t,e){return e==null?Ko(Eo(t.f,null)):iS(t.i,e)}function Rne(t,e,n,r,s){return new Rot(t,(KE(),Bht),e,n,r,s)}function rq(t,e){return Cie(e),Egn(t,Vt(Fr,ii,28,e,15,1),e)}function iq(t,e){return Qz(t,"set1"),Qz(e,"set2"),new _Yt(t,e)}function tfn(t,e){var n=_ht[t.charCodeAt(0)];return n??t}function jne(t,e){var n,r;return n=e,r=new be,dpe(t,n,r),r.d}function hst(t,e,n,r){var s;s=new bZt,e.a[n.g]=s,W6(t.b,r,s)}function efn(t,e){var n;return n=ygn(t.f,e),ki(dz(n),t.f.d)}function sq(t){var e;Mgn(t.a),GQt(t.a),e=new RC(t.a),j5t(e)}function nfn(t,e){x0e(t,!0),Cu(t.e.Rf(),new Mvt(t,!0,e))}function rfn(t,e){return J6(),t==Ji(O0(e))||t==Ji(qb(e))}function ifn(t,e){return Sg(),u(X(e,(Cc(),h0)),17).a==t}function Ys(t){return Math.max(Math.min(t,xi),-2147483648)|0}function $ne(t){this.a=u(Hr(t),277),this.b=(mn(),new Vmt(t))}function zne(t,e,n){this.i=new fe,this.b=t,this.g=e,this.a=n}function t3t(t,e,n){this.a=new fe,this.e=t,this.f=e,this.c=n}function aq(t,e,n){this.c=new fe,this.e=t,this.f=e,this.b=n}function qne(t){gz.call(this),c4t(this),this.a=t,this.c=!0}function sfn(t){function e(){}return e.prototype=t||{},new e}function afn(t){if(t.Ae())return null;var e=t.n;return DU[e]}function AI(t){return t.Db>>16!=3?null:u(t.Cb,27)}function ed(t){return t.Db>>16!=9?null:u(t.Cb,27)}function Hne(t){return t.Db>>16!=6?null:u(t.Cb,74)}function Bm(){Bm=V,c2=new nmt(_k,0),Z5=new nmt(Ak,1)}function Gd(){Gd=V,Dv=new Zwt(Ak,0),Gp=new Zwt(_k,1)}function nd(){nd=V,Fw=new tmt(xut,0),yd=new tmt("UP",1)}function Vne(){Vne=V,zve=$r((l$(),lt(ut($ve,1),te,549,0,[Cht])))}function Une(t){var e;return e=new w$(zy(t.length)),J4t(e,t),e}function Gne(t,e){return t.b+=e.b,t.c+=e.c,t.d+=e.d,t.a+=e.a,t}function ofn(t,e){return Ice(t,e)?(Aoe(t),!0):!1}function vg(t,e){if(e==null)throw at(new E6);return _wn(t,e)}function LI(t,e){var n;n=t.q.getHours(),t.q.setDate(e),N_(t,n)}function e3t(t,e,n){var r;r=t.Ih(e),r>=0?t.bi(r,n):J6t(t,e,n)}function Kne(t,e){var n;return n=t.Ih(e),n>=0?t.Wh(n):Vot(t,e)}function Wne(t,e){var n;for(Hr(e),n=t.a;n;n=n.c)e.Yd(n.g,n.i)}function fst(t,e,n){var r;r=Jce(t,e,n),t.b=new Yq(r.c.length)}function Q4(t,e,n){oq(),t&&hi(t0t,t,e),t&&hi(VP,t,n)}function cfn(t,e){return vz(),Pn(),u(e.a,17).a0}function n3t(t){var e;return e=t.d,e=t.bj(t.f),Or(t,e),e.Ob()}function Yne(t,e){var n;return n=new ayt(e),yfe(n,t),new fl(n)}function hfn(t){if(t.p!=0)throw at(new Xu);return bS(t.f,0)}function ffn(t){if(t.p!=0)throw at(new Xu);return bS(t.k,0)}function Xne(t){return t.Db>>16!=7?null:u(t.Cb,241)}function zE(t){return t.Db>>16!=6?null:u(t.Cb,241)}function Qne(t){return t.Db>>16!=7?null:u(t.Cb,167)}function Ji(t){return t.Db>>16!=11?null:u(t.Cb,27)}function Py(t){return t.Db>>16!=17?null:u(t.Cb,29)}function Jne(t){return t.Db>>16!=3?null:u(t.Cb,155)}function r3t(t){var e;return $b(t),e=new Os,_i(t,new A4(e))}function Zne(t,e){var n=t.a=t.a||[];return n[e]||(n[e]=t.ve(e))}function dfn(t,e){var n;n=t.q.getHours(),t.q.setMonth(e),N_(t,n)}function tre(t,e){oz(this),this.f=e,this.g=t,Xz(this),this.je()}function ere(t,e){this.a=t,this.c=Oa(this.a),this.b=new tq(e)}function nre(t,e,n){this.a=e,this.c=t,this.b=(Hr(n),new fl(n))}function rre(t,e,n){this.a=e,this.c=t,this.b=(Hr(n),new fl(n))}function ire(t){this.a=t,this.b=Vt(cke,ue,2043,t.e.length,0,2)}function sre(){this.a=new zd,this.e=new Os,this.g=0,this.i=0}function oq(){oq=V,t0t=new _r,VP=new _r,oin(sye,new dC)}function are(){are=V,G6e=el(new Fs,(Ua(),Zo),(Za(),WN))}function i3t(){i3t=V,K6e=el(new Fs,(Ua(),Zo),(Za(),WN))}function ore(){ore=V,Y6e=el(new Fs,(Ua(),Zo),(Za(),WN))}function cre(){cre=V,dke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function rh(){rh=V,bke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function ure(){ure=V,wke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function gst(){gst=V,kke=ri(new Fs,(Ua(),Zo),(Za(),CA))}function zS(t,e,n,r,s,o){return new Tg(t.e,e,t.Lj(),n,r,s,o)}function jo(t,e,n){return e==null?yu(t.f,null,n):Km(t.i,e,n)}function Xa(t,e){t.c&&zu(t.c.g,t),t.c=e,t.c&&ge(t.c.g,t)}function Aa(t,e){t.c&&zu(t.c.a,t),t.c=e,t.c&&ge(t.c.a,t)}function hc(t,e){t.i&&zu(t.i.j,t),t.i=e,t.i&&ge(t.i.j,t)}function xa(t,e){t.d&&zu(t.d.e,t),t.d=e,t.d&&ge(t.d.e,t)}function pst(t,e){t.a&&zu(t.a.k,t),t.a=e,t.a&&ge(t.a.k,t)}function bst(t,e){t.b&&zu(t.b.f,t),t.b=e,t.b&&ge(t.b.f,t)}function lre(t,e){Cln(t,t.b,t.c),u(t.b.b,68),e&&u(e.b,68).b}function gfn(t,e){return Bi(u(t.c,65).c.e.b,u(e.c,65).c.e.b)}function pfn(t,e){return Bi(u(t.c,65).c.e.a,u(e.c,65).c.e.a)}function bfn(t){return Iat(),Pn(),u(t.a,86).d.e!=0}function cq(t,e){Lt(t.Cb,184)&&(u(t.Cb,184).tb=null),mu(t,e)}function wst(t,e){Lt(t.Cb,90)&&t3(_l(u(t.Cb,90)),4),mu(t,e)}function wfn(t,e){D5t(t,e),Lt(t.Cb,90)&&t3(_l(u(t.Cb,90)),2)}function mfn(t,e){var n,r;n=e.c,r=n!=null,r&&Y6(t,new Oy(e.c))}function hre(t){var e,n;return n=(bE(),e=new lm,e),YE(n,t),n}function fre(t){var e,n;return n=(bE(),e=new lm,e),YE(n,t),n}function dre(t){for(var e;;)if(e=t.Pb(),!t.Ob())return e}function vfn(t,e,n){return ge(t.a,(Gz(),got(e,n),new bm(e,n))),t}function ru(t,e){return vo(),Gst(e)?new Sz(e,t):new eI(e,t)}function DI(t){return Xd(),$c(t,0)>=0?zb(t):FS(zb(Cp(t)))}function yfn(t){var e;return e=u(Tz(t.b),9),new _h(t.a,e,t.c)}function gre(t,e){var n;return n=u(Gy(Q6(t.a),e),16),n?n.gc():0}function pre(t,e,n){var r;$ue(e,n,t.c.length),r=n-e,Swt(t.c,e,r)}function xp(t,e,n){$ue(e,n,t.gc()),this.c=t,this.a=e,this.b=n-e}function Z6(t){this.c=new Ki,this.b=t.b,this.d=t.c,this.a=t.a}function mst(t){this.a=b.Math.cos(t),this.b=b.Math.sin(t)}function J2(t,e,n,r){this.c=t,this.d=r,pst(this,e),bst(this,n)}function s3t(t,e){Bnn.call(this,new M6(zy(t))),oh(e,hbe),this.a=e}function bre(t,e,n){return new Rot(t,(KE(),Fht),null,!1,e,n)}function wre(t,e,n){return new Rot(t,(KE(),Rht),e,n,null,!1)}function xfn(){return bl(),lt(ut(Ho,1),te,108,0,[I9t,sc,w3])}function kfn(){return qu(),lt(ut(Dye,1),te,471,0,[O1,n2,Kf])}function Efn(){return pl(),lt(ut(Aye,1),te,470,0,[c0,e2,Gf])}function Tfn(){return A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])}function Cfn(){return WS(),lt(ut(CCt,1),te,391,0,[rft,nft,ift])}function Sfn(){return Vm(),lt(ut(vft,1),te,372,0,[mv,r2,wv])}function _fn(){return QS(),lt(ut(CSt,1),te,322,0,[_A,QN,TSt])}function Afn(){return $q(),lt(ut(_St,1),te,351,0,[SSt,yG,Lft])}function Lfn(){return ow(),lt(ut(Q4e,1),te,459,0,[Ift,_T,z5])}function Dfn(){return c7(),lt(ut(qft,1),te,298,0,[$ft,zft,JN])}function Mfn(){return Cg(),lt(ut(s5e,1),te,311,0,[ZN,H5,qk])}function Ifn(){return o_(),lt(ut(LAt,1),te,390,0,[w1t,AAt,QG])}function Ofn(){return To(),lt(ut(j6e,1),te,462,0,[HA,vl,ku])}function Nfn(){return tH(),lt(ut(qAt,1),te,387,0,[$At,S1t,zAt])}function Pfn(){return i_(),lt(ut(HAt,1),te,349,0,[A1t,_1t,lP])}function Ffn(){return b7(),lt(ut(UAt,1),te,350,0,[L1t,VAt,VA])}function Bfn(){return jq(),lt(ut(WAt,1),te,352,0,[KAt,D1t,GAt])}function Rfn(){return iH(),lt(ut(YAt,1),te,388,0,[M1t,$T,P3])}function jfn(){return Hm(),lt(ut(ake,1),te,463,0,[hP,UA,eK])}function rd(t){return dc(lt(ut(la,1),ue,8,0,[t.i.n,t.n,t.a]))}function $fn(){return s_(),lt(ut(fLt,1),te,392,0,[hLt,N1t,dP])}function mre(){mre=V,w8e=el(new Fs,(bk(),YA),(I_(),nLt))}function uq(){uq=V,K1t=new rmt("DFS",0),OLt=new rmt("BFS",1)}function vre(t,e,n){var r;r=new hZ,r.b=e,r.a=n,++e.b,ge(t.d,r)}function zfn(t,e,n){var r;r=new io(n.d),ki(r,t),L5t(e,r.a,r.b)}function qfn(t,e){fJt(t,qr(sa(_m(e,24),TV)),qr(sa(e,TV)))}function Fy(t,e){if(t<0||t>e)throw at(new Bo(C8t+t+S8t+e))}function vn(t,e){if(t<0||t>=e)throw at(new Bo(C8t+t+S8t+e))}function qn(t,e){if(t<0||t>=e)throw at(new dwt(C8t+t+S8t+e))}function gn(t,e){this.b=(Wn(t),t),this.a=e&u3?e:e|64|Jd}function a3t(t){var e;return $b(t),e=(Nm(),Nm(),Oht),Pq(t,e)}function Hfn(t,e,n){var r;return r=B_(t,e,!1),r.b<=e&&r.a<=n}function Vfn(){return Sq(),lt(ut(ADt,1),te,439,0,[pdt,_Dt,SDt])}function Ufn(){return dH(),lt(ut(cDt,1),te,394,0,[oDt,hdt,aDt])}function Gfn(){return vH(),lt(ut(sDt,1),te,445,0,[mP,pK,sdt])}function Kfn(){return DH(),lt(ut(W8e,1),te,455,0,[adt,cdt,odt])}function Wfn(){return uO(),lt(ut($Lt,1),te,393,0,[fK,RLt,jLt])}function Yfn(){return Zq(),lt(ut(iDt,1),te,299,0,[idt,rDt,nDt])}function Xfn(){return cd(),lt(ut(XMt,1),te,278,0,[GT,$3,KT])}function Qfn(){return lk(),lt(ut(pIt,1),te,280,0,[gIt,q3,RK])}function Jfn(){return Ag(),lt(ut(cIt,1),te,346,0,[IK,Xp,bL])}function Zfn(){return pO(),lt(ut(bdt,1),te,444,0,[vK,yK,xK])}function Rm(t){return Hr(t),Lt(t,16)?new fl(u(t,16)):DE(t.Kc())}function o3t(t,e){return t&&t.equals?t.equals(e):$t(t)===$t(e)}function sa(t,e){return Fb(Uun(ec(t)?rf(t):t,ec(e)?rf(e):e))}function T1(t,e){return Fb(Gun(ec(t)?rf(t):t,ec(e)?rf(e):e))}function vst(t,e){return Fb(Kun(ec(t)?rf(t):t,ec(e)?rf(e):e))}function t1n(t,e){var n;return n=(Wn(t),t).g,evt(!!n),Wn(e),n(e)}function yre(t,e){var n,r;return r=OE(t,e),n=t.a.fd(r),new CYt(t,n)}function e1n(t){return t.Db>>16!=6?null:u(Kot(t),241)}function n1n(t){if(t.p!=2)throw at(new Xu);return qr(t.f)&js}function r1n(t){if(t.p!=2)throw at(new Xu);return qr(t.k)&js}function et(t){return ur(t.ar?1:0}function Tre(t,e){var n,r;return n=qst(e),r=n,u(tr(t.c,r),17).a}function yst(t,e,n){var r;r=t.d[e.p],t.d[e.p]=t.d[n.p],t.d[n.p]=r}function g1n(t,e,n){var r;t.n&&e&&n&&(r=new Ktt,ge(t.e,r))}function xst(t,e){if(qs(t.a,e),e.d)throw at(new uc(Nbe));e.d=t}function l3t(t,e){this.a=new fe,this.d=new fe,this.f=t,this.c=e}function Cre(){this.c=new cJt,this.a=new gse,this.b=new SKt,VYt()}function Sre(){ck(),this.b=new _r,this.a=new _r,this.c=new fe}function _re(t,e,n){this.d=t,this.j=e,this.e=n,this.o=-1,this.p=3}function Are(t,e,n){this.d=t,this.k=e,this.f=n,this.o=-1,this.p=5}function Lre(t,e,n,r,s,o){l4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Dre(t,e,n,r,s,o){h4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Mre(t,e,n,r,s,o){A3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Ire(t,e,n,r,s,o){g4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Ore(t,e,n,r,s,o){L3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Nre(t,e,n,r,s,o){f4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Pre(t,e,n,r,s,o){d4t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Fre(t,e,n,r,s,o){D3t.call(this,t,e,n,r,s),o&&(this.o=-2)}function Bre(t,e,n,r){i$.call(this,n),this.b=t,this.c=e,this.d=r}function Rre(t,e){this.f=t,this.a=(VE(),QK),this.c=QK,this.b=e}function jre(t,e){this.g=t,this.d=(VE(),JK),this.a=JK,this.b=e}function h3t(t,e){!t.c&&(t.c=new ps(t,0)),gV(t.c,(Ni(),AL),e)}function p1n(t,e){return Qxn(t,e,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function b1n(t,e){return vee(Pc(t.q.getTime()),Pc(e.q.getTime()))}function $re(t){return _it(t.e.Rd().gc()*t.c.Rd().gc(),16,new wnt(t))}function w1n(t){return!!t.u&&Wc(t.u.a).i!=0&&!(t.n&&lot(t.n))}function m1n(t){return!!t.a&&Al(t.a.a).i!=0&&!(t.b&&hot(t.b))}function f3t(t,e){return e==0?!!t.o&&t.o.f!=0:iot(t,e)}function v1n(t,e,n){var r;return r=u(t.Zb().xc(e),16),!!r&&r.Hc(n)}function zre(t,e,n){var r;return r=u(t.Zb().xc(e),16),!!r&&r.Mc(n)}function qre(t,e){var n;return n=1-e,t.a[n]=Wq(t.a[n],n),Wq(t,e)}function Hre(t,e){var n,r;return r=sa(t,So),n=Rf(e,32),T1(n,r)}function Vre(t,e,n){var r;r=(Hr(t),new fl(t)),xvn(new nre(r,e,n))}function MI(t,e,n){var r;r=(Hr(t),new fl(t)),kvn(new rre(r,e,n))}function Ec(t,e,n,r,s,o){return xce(t,e,n,o),x5t(t,r),k5t(t,s),t}function Ure(t,e,n,r){return t.a+=""+Lh(e==null?Vu:rc(e),n,r),t}function La(t,e){this.a=t,gr.call(this,t),Fy(e,t.gc()),this.b=e}function Gre(t){this.a=Vt(aa,Ln,1,W4t(b.Math.max(8,t))<<1,5,1)}function II(t){return u(ld(t,Vt(V0,jp,10,t.c.length,0,1)),199)}function Kd(t){return u(ld(t,Vt(hft,Rut,18,t.c.length,0,1)),482)}function Kre(t){return t.a?t.e.length==0?t.a.a:t.a.a+(""+t.e):t.c}function qS(t){for(;t.d>0&&t.a[--t.d]==0;);t.a[t.d++]==0&&(t.e=0)}function Wre(t){return ur(t.b.b!=t.d.a),t.c=t.b=t.b.b,--t.a,t.c.c}function y1n(t,e,n){t.a=e,t.c=n,t.b.a.$b(),nh(t.d),wy(t.e.a.c,0)}function Yre(t,e){var n;t.e=new rwt,n=n3(e),Ds(n,t.c),l0e(t,n,0)}function Bs(t,e,n,r){var s;s=new q8,s.a=e,s.b=n,s.c=r,Zr(t.a,s)}function le(t,e,n,r){var s;s=new q8,s.a=e,s.b=n,s.c=r,Zr(t.b,s)}function Xre(t,e,n){if(t<0||en)throw at(new Bo(O4n(t,e,n)))}function OI(t,e){if(t<0||t>=e)throw at(new Bo(l5n(t,e)));return t}function x1n(t){if(!("stack"in t))try{throw t}catch{}return t}function J4(t){return ZC(),Lt(t.g,10)?u(t.g,10):null}function k1n(t){return X4(t).dc()?!1:(Uin(t,new ft),!0)}function tw(t){var e;return ec(t)?(e=t,e==-0?0:e):B0n(t)}function Qre(t,e){return Lt(e,44)?bot(t.a,u(e,44)):!1}function Jre(t,e){return Lt(e,44)?bot(t.a,u(e,44)):!1}function Zre(t,e){return Lt(e,44)?bot(t.a,u(e,44)):!1}function d3t(t){var e;return Mb(t),e=new Mt,N4(t.a,new _4(e)),e}function g3t(){var t,e,n;return e=(n=(t=new lm,t),n),ge(QIt,e),e}function lq(t){var e;return Mb(t),e=new pn,N4(t.a,new x6(e)),e}function E1n(t,e){return t.a<=t.b?(e.Dd(t.a++),!0):!1}function tie(t){uat.call(this,t,(KE(),Pht),null,!1,null,!1)}function eie(){eie=V,c3e=$r((E$(),lt(ut(rCt,1),te,488,0,[Wht])))}function nie(){nie=V,QAt=Wee(he(1),he(4)),XAt=Wee(he(1),he(2))}function T1n(t,e){return new xit(e,CS(Oa(e.e),t,t),(Pn(),!0))}function hq(t){return new wu((oh(t,jct),Oq(Qa(Qa(5,t),t/10|0))))}function C1n(t){return _it(t.e.Rd().gc()*t.c.Rd().gc(),273,new bnt(t))}function rie(t){return u(ld(t,Vt(w4e,f2e,12,t.c.length,0,1)),2042)}function S1n(t){return rh(),!go(t)&&!(!go(t)&&t.c.i.c==t.d.i.c)}function _1n(t,e){return ak(),u(X(e,(Cc(),tx)),17).a>=t.gc()}function HS(t,e){uSn(e,t),Kvt(t.d),Kvt(u(X(t,(De(),VG)),214))}function kst(t,e){lSn(e,t),Wvt(t.d),Wvt(u(X(t,(De(),VG)),214))}function A1n(t,e,n){t.d&&zu(t.d.e,t),t.d=e,t.d&&Sm(t.d.e,n,t)}function L1n(t,e,n){return n.f.c.length>0?kyt(t.a,e,n):kyt(t.b,e,n)}function D1n(t,e,n){var r;r=Kwn();try{return wan(t,e,n)}finally{kdn(r)}}function jm(t,e){var n,r;return n=vg(t,e),r=null,n&&(r=n.pe()),r}function VS(t,e){var n,r;return n=vg(t,e),r=null,n&&(r=n.se()),r}function qE(t,e){var n,r;return n=$y(t,e),r=null,n&&(r=n.se()),r}function yg(t,e){var n,r;return n=vg(t,e),r=null,n&&(r=d6t(n)),r}function M1n(t,e,n){var r;return r=T7(n),uV(t.g,r,e),uV(t.i,e,n),e}function p3t(t,e,n){this.d=new gUt(this),this.e=t,this.i=e,this.f=n}function iie(t,e,n,r){this.e=null,this.c=t,this.d=e,this.a=n,this.b=r}function sie(t,e,n,r){nJt(this),this.c=t,this.e=e,this.f=n,this.b=r}function b3t(t,e,n,r){this.d=t,this.n=e,this.g=n,this.o=r,this.p=-1}function aie(t,e,n,r){return Lt(n,59)?new FJt(t,e,n,r):new byt(t,e,n,r)}function HE(t){return Lt(t,16)?u(t,16).dc():!t.Kc().Ob()}function oie(t){if(t.e.g!=t.b)throw at(new Th);return!!t.c&&t.d>0}function Ar(t){return ur(t.b!=t.d.c),t.c=t.b,t.b=t.b.a,++t.a,t.c.c}function w3t(t,e){Wn(e),ls(t.a,t.c,e),t.c=t.c+1&t.a.length-1,Lhe(t)}function Ob(t,e){Wn(e),t.b=t.b-1&t.a.length-1,ls(t.a,t.b,e),Lhe(t)}function cie(t){var e;e=t.Gh(),this.a=Lt(e,71)?u(e,71).Ii():e.Kc()}function I1n(t){return new gn(wgn(u(t.a.md(),16).gc(),t.a.ld()),16)}function uie(){uie=V,CEe=$r((S$(),lt(ut(IDt,1),te,489,0,[wdt])))}function lie(){lie=V,_Ee=$r((_$(),lt(ut(SEe,1),te,558,0,[mdt])))}function hie(){hie=V,UEe=$r((tS(),lt(ut(ZDt,1),te,539,0,[kP])))}function O1n(){return lw(),lt(ut(LCt,1),te,389,0,[x3,ACt,uft,lft])}function N1n(){return KE(),lt(ut(BU,1),te,303,0,[Pht,Fht,Bht,Rht])}function P1n(){return dk(),lt(ut(r3e,1),te,332,0,[$N,jN,zN,qN])}function F1n(){return m_(),lt(ut(a3e,1),te,406,0,[HN,zU,qU,VN])}function B1n(){return Gm(),lt(ut(e3e,1),te,417,0,[RN,BN,Ght,Kht])}function R1n(){return u7(),lt(ut(s4e,1),te,416,0,[bv,y3,v3,F5])}function j1n(){return ud(),lt(ut(P4e,1),te,421,0,[zk,yT,xT,mft])}function $1n(){return rH(),lt(ut(T4e,1),te,371,0,[wft,gG,pG,YN])}function z1n(){return Yy(),lt(ut(v1t,1),te,203,0,[JG,m1t,J5,Q5])}function q1n(){return Wd(),lt(ut(RAt,1),te,284,0,[Up,BAt,k1t,E1t])}function H1n(t){var e;return t.j==(ve(),Er)&&(e=J1e(t),Zu(e,Jn))}function V1n(t,e){var n;n=e.a,Xa(n,e.c.d),xa(n,e.d.d),Vy(n.a,t.n)}function m3t(t,e){var n;return n=u(od(t.b,e),67),!n&&(n=new Ki),n}function ek(t){return ZC(),Lt(t.g,154)?u(t.g,154):null}function U1n(t){t.a=null,t.e=null,wy(t.b.c,0),wy(t.f.c,0),t.c=null}function fq(){fq=V,Hft=new Xwt(J7,0),GSt=new Xwt("TOP_LEFT",1)}function US(){US=V,KA=new Jwt("UPPER",0),GA=new Jwt("LOWER",1)}function G1n(t,e){return R6(new ae(e.e.a+e.f.a/2,e.e.b+e.f.b/2),t)}function fie(t,e){return u(Vl(My(u(Ai(t.k,e),15).Oc(),R5)),113)}function die(t,e){return u(Vl(G6(u(Ai(t.k,e),15).Oc(),R5)),113)}function K1n(){return bk(),lt(ut(tLt,1),te,405,0,[sK,WA,YA,XA])}function W1n(){return a_(),lt(ut(ILt,1),te,353,0,[G1t,lK,U1t,V1t])}function Y1n(){return NH(),lt(ut(eDt,1),te,354,0,[rdt,ZLt,tDt,JLt])}function X1n(){return Yl(),lt(ut(xL,1),te,386,0,[RP,qw,BP,z3])}function Q1n(){return uh(),lt(ut(I7e,1),te,290,0,[NP,K0,h2,OP])}function J1n(){return Lg(),lt(ut(Udt,1),te,223,0,[Vdt,IP,WT,e8])}function Z1n(){return pH(),lt(ut(xIt,1),te,320,0,[Wdt,mIt,yIt,vIt])}function tdn(){return sH(),lt(ut(Y7e,1),te,415,0,[Ydt,EIt,kIt,TIt])}function edn(t){return oq(),Tu(t0t,t)?u(tr(t0t,t),341).Qg():null}function Dh(t,e,n){return e<0?Vot(t,n):u(n,69).wk().Bk(t,t.hi(),e)}function ndn(t,e,n){var r;return r=T7(n),uV(t.j,r,e),hi(t.k,e,n),e}function rdn(t,e,n){var r;return r=T7(n),uV(t.d,r,e),hi(t.e,e,n),e}function gie(t){var e,n;return e=(kb(),n=new sM,n),t&&ZH(e,t),e}function v3t(t){var e;return e=t.aj(t.i),t.i>0&&Xc(t.g,0,e,0,t.i),e}function pie(t,e){var n;for(n=t.j.c.length;n>24}function sdn(t){if(t.p!=1)throw at(new Xu);return qr(t.k)<<24>>24}function adn(t){if(t.p!=7)throw at(new Xu);return qr(t.k)<<16>>16}function odn(t){if(t.p!=7)throw at(new Xu);return qr(t.f)<<16>>16}function Z4(t,e){return e.e==0||t.e==0?yA:(F7(),Zot(t,e))}function mie(t,e){return $t(e)===$t(t)?"(this Map)":e==null?Vu:rc(e)}function cdn(t,e,n){return Fit(Ht(Ko(Eo(t.f,e))),Ht(Ko(Eo(t.f,n))))}function udn(t,e,n){var r;r=u(tr(t.g,n),60),ge(t.a.c,new Ws(e,r))}function vie(t,e,n){t.i=0,t.e=0,e!=n&&(eue(t,e,n),tue(t,e,n))}function ldn(t,e,n,r,s){var o;o=h6n(s,n,r),ge(e,r5n(s,o)),W3n(t,s,e)}function y3t(t,e,n,r,s){this.i=t,this.a=e,this.e=n,this.j=r,this.f=s}function yie(t,e){Qyt.call(this),this.a=t,this.b=e,ge(this.a.b,this)}function xie(t){this.b=new _r,this.c=new _r,this.d=new _r,this.a=t}function kie(t,e){var n;return n=new I4,t.Gd(n),n.a+="..",e.Hd(n),n.a}function Eie(t,e){var n;for(n=e;n;)Tm(t,n.i,n.j),n=Ji(n);return t}function Tie(t,e,n){var r;return r=T7(n),hi(t.b,r,e),hi(t.c,e,n),e}function xg(t){var e;for(e=0;t.Ob();)t.Pb(),e=Qa(e,1);return Oq(e)}function D0(t,e){vo();var n;return n=u(t,69).vk(),l4n(n,e),n.xl(e)}function hdn(t,e,n){if(n){var r=n.oe();t.a[e]=r(n)}else delete t.a[e]}function x3t(t,e){var n;n=t.q.getHours(),t.q.setFullYear(e+Wb),N_(t,n)}function fdn(t,e){return u(e==null?Ko(Eo(t.f,null)):iS(t.i,e),288)}function k3t(t,e){return t==(Un(),xs)&&e==xs?4:t==xs||e==xs?8:32}function dq(t,e,n){return hV(t,e,n,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function ddn(t,e,n){return $7(t,e,n,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function gdn(t,e,n){return i6n(t,e,n,Lt(e,102)&&(u(e,19).Bb&po)!=0)}function E3t(t){t.b!=t.c&&(t.a=Vt(aa,Ln,1,8,5,1),t.b=0,t.c=0)}function GS(t){return ur(t.a=0&&t.a[n]===e[n];n--);return n<0}function gq(t){var e;return t?new ayt(t):(e=new zd,oat(e,t),e)}function xdn(t,e){var n,r;r=!1;do n=Vce(t,e),r=r|n;while(n);return r}function kdn(t){t&&W0n((uwt(),i9t)),--MU,t&&IU!=-1&&(din(IU),IU=-1)}function pq(t){Qxt(),fJt(this,qr(sa(_m(t,24),TV)),qr(sa(t,TV)))}function Lie(){Lie=V,kye=$r((TH(),lt(ut(N9t,1),te,436,0,[zht,O9t])))}function Die(){Die=V,Eye=$r((Mq(),lt(ut(F9t,1),te,435,0,[P9t,qht])))}function Mie(){Mie=V,C3e=$r((Iq(),lt(ut(lCt,1),te,432,0,[Zht,UU])))}function Iie(){Iie=V,x4e=$r((r7(),lt(ut(y4e,1),te,517,0,[KN,dft])))}function Oie(){Oie=V,t5e=$r((qI(),lt(ut(NSt,1),te,487,0,[OSt,EG])))}function Nie(){Nie=V,X4e=$r((YI(),lt(ut(MSt,1),te,428,0,[xG,DSt])))}function Pie(){Pie=V,G4e=$r((Eq(),lt(ut(ESt,1),te,431,0,[kSt,Aft])))}function Fie(){Fie=V,R6e=$r((KI(),lt(ut(jAt,1),te,430,0,[T1t,C1t])))}function Bie(){Bie=V,fke=$r((US(),lt(ut(hke,1),te,531,0,[KA,GA])))}function Rie(){Rie=V,vke=$r((Gd(),lt(ut(mke,1),te,523,0,[Dv,Gp])))}function jie(){jie=V,xke=$r((nd(),lt(ut(yke,1),te,522,0,[Fw,yd])))}function $ie(){$ie=V,Fke=$r((C1(),lt(ut(Pke,1),te,528,0,[F3,o2])))}function zie(){zie=V,o5e=$r((fq(),lt(ut(KSt,1),te,429,0,[Hft,GSt])))}function qie(){qie=V,Hke=$r((Bm(),lt(ut(qke,1),te,464,0,[c2,Z5])))}function Hie(){Hie=V,T8e=$r((Cq(),lt(ut(BLt,1),te,434,0,[FLt,Z1t])))}function Vie(){Vie=V,b8e=$r((uq(),lt(ut(NLt,1),te,433,0,[K1t,OLt])))}function Uie(){Uie=V,x8e=$r((Kq(),lt(ut(PLt,1),te,500,0,[hK,nx])))}function Gie(){Gie=V,vEe=$r((wq(),lt(ut(CDt,1),te,490,0,[gdt,TDt])))}function Kie(){Kie=V,xEe=$r((gat(),lt(ut(MDt,1),te,491,0,[LDt,DDt])))}function Wie(){Wie=V,AEe=$r((BI(),lt(ut(ODt,1),te,438,0,[vdt,kK])))}function Yie(){Yie=V,GEe=$r((sO(),lt(ut(eMt,1),te,437,0,[TK,tMt])))}function Xie(){Xie=V,G7e=$r((vit(),lt(ut(jK,1),te,347,0,[bIt,wIt])))}function Edn(){return Rs(),lt(ut(gL,1),te,88,0,[Ed,tc,Uo,kd,Gh])}function Tdn(){return ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])}function Cdn(t,e,n){return u(e==null?yu(t.f,null,n):Km(t.i,e,n),288)}function Sdn(t){return(t.k==(Un(),xs)||t.k==Ms)&&qi(t,(oe(),MA))}function _st(t){return t.c&&t.d?u3t(t.c)+"->"+u3t(t.d):"e_"+Em(t)}function Fa(t,e){var n,r;for(Wn(e),r=t.Kc();r.Ob();)n=r.Pb(),e.Cd(n)}function _dn(t,e){var n;n=new _6,Q2(n,"x",e.a),Q2(n,"y",e.b),Y6(t,n)}function Adn(t,e){var n;n=new _6,Q2(n,"x",e.a),Q2(n,"y",e.b),Y6(t,n)}function Qie(t,e){var n;for(n=e;n;)Tm(t,-n.i,-n.j),n=Ji(n);return t}function C3t(t,e){var n,r;for(n=e,r=0;n>0;)r+=t.a[n],n-=n&-n;return r}function Mh(t,e,n){var r;return r=(vn(e,t.c.length),t.c[e]),t.c[e]=n,r}function S3t(t,e,n){t.a.c.length=0,ZTn(t,e,n),t.a.c.length==0||_En(t,e)}function NI(t){t.i=0,zM(t.b,null),zM(t.c,null),t.a=null,t.e=null,++t.g}function bq(){bq=V,wd=!0,fye=!1,dye=!1,pye=!1,gye=!1}function Ast(t){bq(),!wd&&(this.c=t,this.e=!0,this.a=new fe)}function Jie(t,e){this.c=0,this.b=e,xQt.call(this,t,17493),this.a=this.c}function Zie(t){nbe(),oKt(this),this.a=new Ki,s5t(this,t),Zr(this.a,t)}function tse(){Qrt(this),this.b=new ae(Zi,Zi),this.a=new ae(Vs,Vs)}function wq(){wq=V,gdt=new amt(eEt,0),TDt=new amt("TARGET_WIDTH",1)}function t5(t,e){return($b(t),wE(new ln(t,new Z3t(e,t.a)))).Bd(Rk)}function Ldn(){return Ua(),lt(ut(SCt,1),te,367,0,[Wf,H0,Qc,cu,Zo])}function Ddn(){return Qy(),lt(ut(B4e,1),te,375,0,[XN,mG,vG,wG,bG])}function Mdn(){return Ip(),lt(ut(LSt,1),te,348,0,[Dft,ASt,Mft,ST,CT])}function Idn(){return w_(),lt(ut(MAt,1),te,323,0,[DAt,y1t,x1t,zA,qA])}function Odn(){return Rh(),lt(ut(a_t,1),te,171,0,[rP,OA,s2,NA,S3])}function Ndn(){return zH(),lt(ut(k8e,1),te,368,0,[Q1t,W1t,J1t,Y1t,X1t])}function Pdn(){return A_(),lt(ut(kEe,1),te,373,0,[rx,Xk,aL,sL,xP])}function Fdn(){return DO(),lt(ut(BDt,1),te,324,0,[NDt,ydt,FDt,xdt,PDt])}function Bdn(){return D1(),lt(ut(G0,1),te,170,0,[_n,Qs,f0,Bw,Wp])}function Rdn(){return o5(),lt(ut(mL,1),te,256,0,[f2,PP,uIt,wL,lIt])}function jdn(t){return d$(),function(){return D1n(t,this,arguments)}}function go(t){return!t.c||!t.d?!1:!!t.c.i&&t.c.i==t.d.i}function _3t(t,e){return Lt(e,143)?hn(t.c,u(e,143).c):!1}function _l(t){return t.t||(t.t=new QGt(t),h_(new dWt(t),0,t.t)),t.t}function ese(t){this.b=t,Zn.call(this,t),this.a=u(jn(this.b.a,4),129)}function nse(t){this.b=t,$6.call(this,t),this.a=u(jn(this.b.a,4),129)}function jf(t,e,n,r,s){fse.call(this,e,r,s),this.c=t,this.b=n}function A3t(t,e,n,r,s){_re.call(this,e,r,s),this.c=t,this.a=n}function L3t(t,e,n,r,s){Are.call(this,e,r,s),this.c=t,this.a=n}function D3t(t,e,n,r,s){fse.call(this,e,r,s),this.c=t,this.a=n}function Lst(t,e){var n;return n=u(od(t.d,e),23),n||u(od(t.e,e),23)}function rse(t,e){var n,r;return n=e.ld(),r=t.Fe(n),!!r&&Nc(r.e,e.md())}function ise(t,e){var n;return n=e.ld(),new bm(n,t.e.pc(n,u(e.md(),16)))}function $dn(t,e){var n;return n=t.a.get(e),n??Vt(aa,Ln,1,0,5,1)}function sse(t){var e;return e=t.length,hn(Qn.substr(Qn.length-e,e),t)}function dr(t){if(Mr(t))return t.c=t.a,t.a.Pb();throw at(new cc)}function M3t(t,e){return e==0||t.e==0?t:e>0?Yde(t,e):mle(t,-e)}function nk(t,e){return e==0||t.e==0?t:e>0?mle(t,e):Yde(t,-e)}function I3t(t){Qrn.call(this,t==null?Vu:rc(t),Lt(t,82)?u(t,82):null)}function ase(t){var e;return t.c||(e=t.r,Lt(e,90)&&(t.c=u(e,29))),t.c}function Dst(t){var e;return e=new Pm,Qo(e,t),Zt(e,(De(),Vo),null),e}function ose(t){var e,n;return e=t.c.i,n=t.d.i,e.k==(Un(),Ms)&&n.k==Ms}function Mst(t){var e,n,r;return e=t&Il,n=t>>22&Il,r=t<0?Fg:0,Eu(e,n,r)}function zdn(t){var e,n,r,s;for(n=t,r=0,s=n.length;r=0?t.Lh(r,n,!0):tv(t,e,n)}function Hdn(t,e,n){return Bi(R6(S7(t),Oa(e.b)),R6(S7(t),Oa(n.b)))}function Vdn(t,e,n){return Bi(R6(S7(t),Oa(e.e)),R6(S7(t),Oa(n.e)))}function Udn(t,e){return b.Math.min(Nb(e.a,t.d.d.c),Nb(e.b,t.d.d.c))}function PI(t,e){t._i(t.i+1),kS(t,t.i,t.Zi(t.i,e)),t.Mi(t.i++,e),t.Ni()}function KS(t){var e,n;++t.j,e=t.g,n=t.i,t.g=null,t.i=0,t.Oi(n,e),t.Ni()}function cse(t,e,n){var r;r=new Mmt(t.a),t_(r,t.a.a),yu(r.f,e,n),t.a.a=r}function O3t(t,e,n,r){var s;for(s=0;se)throw at(new Bo(x6t(t,e,"index")));return t}function Ep(t,e){var n;return n=(vn(e,t.c.length),t.c[e]),Swt(t.c,e,1),n}function F3t(t,e){var n,r;return n=(Wn(t),t),r=(Wn(e),e),n==r?0:ne.p?-1:0}function bse(t){var e;return t.a||(e=t.r,Lt(e,156)&&(t.a=u(e,156))),t.a}function Qdn(t,e,n){var r;return++t.e,--t.f,r=u(t.d[e].gd(n),136),r.md()}function Jdn(t){var e,n;return e=t.ld(),n=u(t.md(),16),pI(n.Nc(),new mnt(e))}function wse(t,e){return Tu(t.a,e)?(rk(t.a,e),!0):!1}function ik(t,e,n){return OI(e,t.e.Rd().gc()),OI(n,t.c.Rd().gc()),t.a[e][n]}function vq(t,e,n){this.a=t,this.b=e,this.c=n,ge(t.t,this),ge(e.i,this)}function yq(t,e,n,r){this.f=t,this.e=e,this.d=n,this.b=r,this.c=r?r.d:null}function FI(){this.b=new Ki,this.a=new Ki,this.b=new Ki,this.a=new Ki}function VE(){VE=V;var t,e;QK=(bE(),e=new o$,e),JK=(t=new Hnt,t)}function Zdn(t){var e;return $b(t),e=new ute(t,t.a.e,t.a.d|4),new rvt(t,e)}function mse(t){var e;for(Mb(t),e=0;t.a.Bd(new xn);)e=Qa(e,1);return e}function xq(t,e){return Wn(e),t.c=0,"Initial capacity must not be negative")}function kq(){kq=V,oL=new Oi("org.eclipse.elk.labels.labelManager")}function vse(){vse=V,wSt=new rs("separateLayerConnections",(rH(),wft))}function C1(){C1=V,F3=new emt("REGULAR",0),o2=new emt("CRITICAL",1)}function BI(){BI=V,vdt=new cmt("FIXED",0),kK=new cmt("CENTER_NODE",1)}function Eq(){Eq=V,kSt=new Kwt("QUADRATIC",0),Aft=new Kwt("SCANLINE",1)}function yse(){yse=V,K4e=$r((QS(),lt(ut(CSt,1),te,322,0,[_A,QN,TSt])))}function xse(){xse=V,W4e=$r(($q(),lt(ut(_St,1),te,351,0,[SSt,yG,Lft])))}function kse(){kse=V,J4e=$r((ow(),lt(ut(Q4e,1),te,459,0,[Ift,_T,z5])))}function Ese(){Ese=V,H4e=$r((Vm(),lt(ut(vft,1),te,372,0,[mv,r2,wv])))}function Tse(){Tse=V,a5e=$r((Cg(),lt(ut(s5e,1),te,311,0,[ZN,H5,qk])))}function Cse(){Cse=V,i5e=$r((c7(),lt(ut(qft,1),te,298,0,[$ft,zft,JN])))}function Sse(){Sse=V,O6e=$r((o_(),lt(ut(LAt,1),te,390,0,[w1t,AAt,QG])))}function _se(){_se=V,z6e=$r((tH(),lt(ut(qAt,1),te,387,0,[$At,S1t,zAt])))}function Ase(){Ase=V,q6e=$r((i_(),lt(ut(HAt,1),te,349,0,[A1t,_1t,lP])))}function Lse(){Lse=V,$6e=$r((To(),lt(ut(j6e,1),te,462,0,[HA,vl,ku])))}function Dse(){Dse=V,V6e=$r((jq(),lt(ut(WAt,1),te,352,0,[KAt,D1t,GAt])))}function Mse(){Mse=V,H6e=$r((b7(),lt(ut(UAt,1),te,350,0,[L1t,VAt,VA])))}function Ise(){Ise=V,U6e=$r((iH(),lt(ut(YAt,1),te,388,0,[M1t,$T,P3])))}function Ose(){Ose=V,Gke=$r((s_(),lt(ut(fLt,1),te,392,0,[hLt,N1t,dP])))}function Nse(){Nse=V,C8e=$r((uO(),lt(ut($Lt,1),te,393,0,[fK,RLt,jLt])))}function Pse(){Pse=V,G8e=$r((Zq(),lt(ut(iDt,1),te,299,0,[idt,rDt,nDt])))}function Fse(){Fse=V,K8e=$r((vH(),lt(ut(sDt,1),te,445,0,[mP,pK,sdt])))}function Bse(){Bse=V,Y8e=$r((DH(),lt(ut(W8e,1),te,455,0,[adt,cdt,odt])))}function Rse(){Rse=V,J8e=$r((dH(),lt(ut(cDt,1),te,394,0,[oDt,hdt,aDt])))}function jse(){jse=V,yEe=$r((Sq(),lt(ut(ADt,1),te,439,0,[pdt,_Dt,SDt])))}function $se(){$se=V,oke=$r((Hm(),lt(ut(ake,1),te,463,0,[hP,UA,eK])))}function zse(){zse=V,Lye=$r((pl(),lt(ut(Aye,1),te,470,0,[c0,e2,Gf])))}function qse(){qse=V,_ye=$r((A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])))}function Hse(){Hse=V,Mye=$r((qu(),lt(ut(Dye,1),te,471,0,[O1,n2,Kf])))}function Vse(){Vse=V,bye=$r((bl(),lt(ut(Ho,1),te,108,0,[I9t,sc,w3])))}function Use(){Use=V,Q3e=$r((WS(),lt(ut(CCt,1),te,391,0,[rft,nft,ift])))}function Gse(){Gse=V,M7e=$r((Ag(),lt(ut(cIt,1),te,346,0,[IK,Xp,bL])))}function Kse(){Kse=V,TEe=$r((pO(),lt(ut(bdt,1),te,444,0,[vK,yK,xK])))}function Wse(){Wse=V,_7e=$r((cd(),lt(ut(XMt,1),te,278,0,[GT,$3,KT])))}function Yse(){Yse=V,U7e=$r((lk(),lt(ut(pIt,1),te,280,0,[gIt,q3,RK])))}function ad(t,e){return!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),Yat(t.o,e)}function t0n(t,e){var n;t.C&&(n=u(Io(t.b,e),127).n,n.d=t.C.d,n.a=t.C.a)}function z3t(t){var e,n,r,s;s=t.d,e=t.a,n=t.b,r=t.c,t.d=n,t.a=r,t.b=s,t.c=e}function e0n(t){return!t.g&&(t.g=new gC),!t.g.b&&(t.g.b=new KGt(t)),t.g.b}function RI(t){return!t.g&&(t.g=new gC),!t.g.c&&(t.g.c=new XGt(t)),t.g.c}function n0n(t){return!t.g&&(t.g=new gC),!t.g.d&&(t.g.d=new WGt(t)),t.g.d}function r0n(t){return!t.g&&(t.g=new gC),!t.g.a&&(t.g.a=new YGt(t)),t.g.a}function i0n(t,e,n,r){return n&&(r=n.Rh(e,ns(n.Dh(),t.c.uk()),null,r)),r}function s0n(t,e,n,r){return n&&(r=n.Th(e,ns(n.Dh(),t.c.uk()),null,r)),r}function Pst(t,e,n,r){var s;return s=Vt(Fr,ii,28,e+1,15,1),u7n(s,t,e,n,r),s}function Vt(t,e,n,r,s,o){var h;return h=yhe(s,r),s!=10&<(ut(t,o),e,n,s,h),h}function a0n(t,e,n){var r,s;for(s=new o7(e,t),r=0;rn||e=0?t.Lh(n,!0,!0):tv(t,e,!0)}function E0n(t,e,n){var r;return r=Jce(t,e,n),t.b=new Yq(r.c.length),ukt(t,r)}function T0n(t){if(t.b<=0)throw at(new cc);return--t.b,t.a-=t.c.c,he(t.a)}function C0n(t){var e;if(!t.a)throw at(new cne);return e=t.a,t.a=Ji(t.a),e}function S0n(t){for(;!t.a;)if(!NZt(t.c,new BC(t)))return!1;return!0}function sk(t){var e;return Hr(t),Lt(t,204)?(e=u(t,204),e):new b6(t)}function _0n(t){Tq(),u(t.of((ai(),j3)),181).Fc((wl(),FP)),t.qf(zdt,null)}function Tq(){Tq=V,YEe=new NR,QEe=new PR,XEe=pbn((ai(),zdt),YEe,l2,QEe)}function Cq(){Cq=V,FLt=new smt("LEAF_NUMBER",0),Z1t=new smt("NODE_SIZE",1)}function $st(t){t.a=Vt(Fr,ii,28,t.b+1,15,1),t.c=Vt(Fr,ii,28,t.b,15,1),t.d=0}function A0n(t,e){t.a.Ne(e.d,t.b)>0&&(ge(t.c,new qvt(e.c,e.d,t.d)),t.b=e.d)}function Q3t(t,e){if(t.g==null||e>=t.i)throw at(new Grt(e,t.i));return t.g[e]}function Zse(t,e,n){if(d7(t,n),n!=null&&!t.fk(n))throw at(new $nt);return n}function zst(t,e){return WI(e)!=10&<(Wl(e),e.Sm,e.__elementTypeId$,WI(e),t),t}function GE(t,e,n,r){var s;r=(Nm(),r||C9t),s=t.slice(e,n),k6t(s,t,e,n,-e,r)}function Ih(t,e,n,r,s){return e<0?tv(t,n,r):u(n,69).wk().yk(t,t.hi(),e,r,s)}function L0n(t,e){return Bi(Rt(Ht(X(t,(oe(),xv)))),Rt(Ht(X(e,xv))))}function tae(){tae=V,lye=$r((KE(),lt(ut(BU,1),te,303,0,[Pht,Fht,Bht,Rht])))}function KE(){KE=V,Pht=new M$("All",0),Fht=new VQt,Bht=new ZQt,Rht=new HQt}function pl(){pl=V,c0=new wrt(_k,0),e2=new wrt(J7,1),Gf=new wrt(Ak,2)}function eae(){eae=V,fV(),sOt=Zi,JTe=Vs,aOt=new na(Zi),ZTe=new na(Vs)}function nae(){nae=V,n3e=$r((Gm(),lt(ut(e3e,1),te,417,0,[RN,BN,Ght,Kht])))}function rae(){rae=V,o3e=$r((m_(),lt(ut(a3e,1),te,406,0,[HN,zU,qU,VN])))}function iae(){iae=V,i3e=$r((dk(),lt(ut(r3e,1),te,332,0,[$N,jN,zN,qN])))}function sae(){sae=V,f4e=$r((lw(),lt(ut(LCt,1),te,389,0,[x3,ACt,uft,lft])))}function aae(){aae=V,a4e=$r((u7(),lt(ut(s4e,1),te,416,0,[bv,y3,v3,F5])))}function oae(){oae=V,F4e=$r((ud(),lt(ut(P4e,1),te,421,0,[zk,yT,xT,mft])))}function cae(){cae=V,C4e=$r((rH(),lt(ut(T4e,1),te,371,0,[wft,gG,pG,YN])))}function uae(){uae=V,N6e=$r((Yy(),lt(ut(v1t,1),te,203,0,[JG,m1t,J5,Q5])))}function lae(){lae=V,B6e=$r((Wd(),lt(ut(RAt,1),te,284,0,[Up,BAt,k1t,E1t])))}function qI(){qI=V,OSt=new Ywt(r0,0),EG=new Ywt("IMPROVE_STRAIGHTNESS",1)}function hae(t,e){var n,r;return r=e/t.c.Rd().gc()|0,n=e%t.c.Rd().gc(),ik(t,r,n)}function fae(t){var e;if(t.nl())for(e=t.i-1;e>=0;--e)Dt(t,e);return v3t(t)}function J3t(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[0];)n=e;return n}function dae(t){var e,n;if(!t.b)return null;for(n=t.b;e=n.a[1];)n=e;return n}function D0n(t){return Lt(t,180)?""+u(t,180).a:t==null?null:rc(t)}function M0n(t){return Lt(t,180)?""+u(t,180).a:t==null?null:rc(t)}function gae(t,e){if(e.a)throw at(new uc(Nbe));qs(t.a,e),e.a=t,!t.j&&(t.j=e)}function Z3t(t,e){ez.call(this,e.zd(),e.yd()&-16449),Wn(t),this.a=t,this.c=e}function I0n(t,e){return new xit(e,Tm(Oa(e.e),e.f.a+t,e.f.b+t),(Pn(),!1))}function O0n(t,e){return LE(),ge(t,new Ws(e,he(e.e.c.length+e.g.c.length)))}function N0n(t,e){return LE(),ge(t,new Ws(e,he(e.e.c.length+e.g.c.length)))}function pae(){pae=V,U8e=$r((NH(),lt(ut(eDt,1),te,354,0,[rdt,ZLt,tDt,JLt])))}function bae(){bae=V,p8e=$r((a_(),lt(ut(ILt,1),te,353,0,[G1t,lK,U1t,V1t])))}function wae(){wae=V,Vke=$r((bk(),lt(ut(tLt,1),te,405,0,[sK,WA,YA,XA])))}function mae(){mae=V,A7e=$r((Lg(),lt(ut(Udt,1),te,223,0,[Vdt,IP,WT,e8])))}function vae(){vae=V,O7e=$r((uh(),lt(ut(I7e,1),te,290,0,[NP,K0,h2,OP])))}function yae(){yae=V,H7e=$r((Yl(),lt(ut(xL,1),te,386,0,[RP,qw,BP,z3])))}function xae(){xae=V,K7e=$r((pH(),lt(ut(xIt,1),te,320,0,[Wdt,mIt,yIt,vIt])))}function kae(){kae=V,X7e=$r((sH(),lt(ut(Y7e,1),te,415,0,[Ydt,EIt,kIt,TIt])))}function Sq(){Sq=V,pdt=new zrt(J2e,0),_Dt=new zrt(y7t,1),SDt=new zrt(r0,2)}function jy(t,e,n,r,s){return Wn(t),Wn(e),Wn(n),Wn(r),Wn(s),new Tyt(t,e,r)}function Eae(t,e){var n;return n=u(rk(t.e,e),400),n?(Zvt(n),n.e):null}function zu(t,e){var n;return n=Xo(t,e,0),n==-1?!1:(Ep(t,n),!0)}function Tae(t,e,n){var r;return Mb(t),r=new Je,r.a=e,t.a.Nb(new sXt(r,n)),r.a}function P0n(t){var e;return Mb(t),e=Vt(ma,No,28,0,15,1),N4(t.a,new y6(e)),e}function t4t(t){var e;if(!rat(t))throw at(new cc);return t.e=1,e=t.d,t.d=null,e}function Cp(t){var e;return ec(t)&&(e=0-t,!isNaN(e))?e:Fb(h7(t))}function Xo(t,e,n){for(;n=0?AH(t,n,!0,!0):tv(t,e,!0)}function n4t(t){var e;return e=nw(jn(t,32)),e==null&&(Au(t),e=nw(jn(t,32))),e}function r4t(t){var e;return t.Oh()||(e=fr(t.Dh())-t.ji(),t.$h().Mk(e)),t.zh()}function Dae(t,e){eCt=new Le,s3e=e,kA=t,u(kA.b,68),V3t(kA,eCt,null),Gge(kA)}function WS(){WS=V,rft=new vrt("XY",0),nft=new vrt("X",1),ift=new vrt("Y",2)}function qu(){qu=V,O1=new mrt("TOP",0),n2=new mrt(J7,1),Kf=new mrt(O8t,2)}function Cg(){Cg=V,ZN=new Crt(r0,0),H5=new Crt("TOP",1),qk=new Crt(O8t,2)}function KI(){KI=V,T1t=new Qwt("INPUT_ORDER",0),C1t=new Qwt("PORT_DEGREE",1)}function WE(){WE=V,a9t=Eu(Il,Il,524287),Wve=Eu(0,0,aN),o9t=Mst(1),Mst(2),c9t=Mst(0)}function Gst(t){var e;return t.d!=t.r&&(e=of(t),t.e=!!e&&e.lk()==Wme,t.d=e),t.e}function Kst(t,e,n){var r;return r=t.g[e],kS(t,e,t.Zi(e,n)),t.Ri(e,n,r),t.Ni(),r}function Dq(t,e){var n;return n=t.dd(e),n>=0?(t.gd(n),!0):!1}function Wst(t,e){var n;for(Hr(t),Hr(e),n=!1;e.Ob();)n=n|t.Fc(e.Pb());return n}function od(t,e){var n;return n=u(tr(t.e,e),400),n?(hJt(t,n),n.e):null}function Mae(t){var e,n;return e=t/60|0,n=t%60,n==0?""+e:""+e+":"+(""+n)}function $y(t,e){var n=t.a[e],r=(yat(),Lht)[typeof n];return r?r(n):f5t(typeof n)}function fc(t,e){var n,r;return $b(t),r=new R3t(e,t.a),n=new BZt(r),new ln(t,n)}function Yst(t){var e;return e=t.b.c.length==0?null:Oe(t.b,0),e!=null&&sat(t,0),e}function j0n(t,e){var n,r,s;s=e.c.i,n=u(tr(t.f,s),60),r=n.d.c-n.e.c,P4t(e.a,r,0)}function i4t(t,e){var n;for(++t.d,++t.c[e],n=e+1;n=0;)++e[0]}function $0n(t,e){Su(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function z0n(t,e){_u(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function q0n(t,e){qm(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function H0n(t,e){zm(t,e==null||bz((Wn(e),e))||isNaN((Wn(e),e))?0:(Wn(e),e))}function V0n(t,e,n){return R6(new ae(n.e.a+n.f.a/2,n.e.b+n.f.b/2),t)==(Wn(e),e)}function U0n(t,e){return Lt(e,102)&&u(e,19).Bb&po?new Krt(e,t):new o7(e,t)}function G0n(t,e){return Lt(e,102)&&u(e,19).Bb&po?new Krt(e,t):new o7(e,t)}function WI(t){return t.__elementTypeCategory$==null?10:t.__elementTypeCategory$}function Nae(t,e){return e==(bit(),bit(),oye)?t.toLocaleLowerCase():t.toLowerCase()}function Pae(t){if(!t.e)throw at(new cc);return t.c=t.a=t.e,t.e=t.e.e,--t.d,t.a.f}function s4t(t){if(!t.c)throw at(new cc);return t.e=t.a=t.c,t.c=t.c.c,++t.d,t.a.f}function Fae(t){var e;for(++t.a,e=t.c.a.length;t.at.a[r]&&(r=n);return r}function Bae(t){var e;return e=u(X(t,(oe(),vv)),313),e?e.a==t:!1}function Rae(t){var e;return e=u(X(t,(oe(),vv)),313),e?e.i==t:!1}function jae(){jae=V,e4e=$r((Ua(),lt(ut(SCt,1),te,367,0,[Wf,H0,Qc,cu,Zo])))}function $ae(){$ae=V,R4e=$r((Qy(),lt(ut(B4e,1),te,375,0,[XN,mG,vG,wG,bG])))}function zae(){zae=V,Y4e=$r((Ip(),lt(ut(LSt,1),te,348,0,[Dft,ASt,Mft,ST,CT])))}function qae(){qae=V,P6e=$r((w_(),lt(ut(MAt,1),te,323,0,[DAt,y1t,x1t,zA,qA])))}function Hae(){Hae=V,c5e=$r((Rh(),lt(ut(a_t,1),te,171,0,[rP,OA,s2,NA,S3])))}function Vae(){Vae=V,E8e=$r((zH(),lt(ut(k8e,1),te,368,0,[Q1t,W1t,J1t,Y1t,X1t])))}function Uae(){Uae=V,EEe=$r((A_(),lt(ut(kEe,1),te,373,0,[rx,Xk,aL,sL,xP])))}function Gae(){Gae=V,LEe=$r((DO(),lt(ut(BDt,1),te,324,0,[NDt,ydt,FDt,xdt,PDt])))}function Kae(){Kae=V,S7e=$r((Rs(),lt(ut(gL,1),te,88,0,[Ed,tc,Uo,kd,Gh])))}function Wae(){Wae=V,JEe=$r((D1(),lt(ut(G0,1),te,170,0,[_n,Qs,f0,Bw,Wp])))}function Yae(){Yae=V,P7e=$r((o5(),lt(ut(mL,1),te,256,0,[f2,PP,uIt,wL,lIt])))}function Xae(){Xae=V,R7e=$r((ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])))}function Mq(){Mq=V,P9t=new zwt("BY_SIZE",0),qht=new zwt("BY_SIZE_AND_SHAPE",1)}function Iq(){Iq=V,Zht=new Vwt("EADES",0),UU=new Vwt("FRUCHTERMAN_REINGOLD",1)}function YI(){YI=V,xG=new Wwt("READING_DIRECTION",0),DSt=new Wwt("ROTATION",1)}function YS(){YS=V,u4e=new BD,l4e=new $X,o4e=new P2,c4e=new Gc,h4e=new zX}function Qae(t){this.b=new fe,this.a=new fe,this.c=new fe,this.d=new fe,this.e=t}function Jae(t){this.g=t,this.f=new fe,this.a=b.Math.min(this.g.c.c,this.g.d.c)}function Zae(t,e,n){gz.call(this),c4t(this),this.a=t,this.c=n,this.b=e.d,this.f=e.e}function J0n(t,e,n){var r,s;for(s=new G(n);s.a=0&&e0?e-1:e,NWt(Crn(Eoe(Yvt(new S6,n),t.n),t.j),t.k)}function zo(t){var e,n;n=(e=new Vnt,e),Or((!t.q&&(t.q=new Jt(vf,t,11,10)),t.q),n)}function a4t(t){return(t.i&2?"interface ":t.i&1?"":"class ")+(wg(t),t.o)}function Oq(t){return $c(t,xi)>0?xi:$c(t,Ga)<0?Ga:qr(t)}function zy(t){return t<3?(oh(t,pbe),t+1):t=-.01&&t.a<=gd&&(t.a=0),t.b>=-.01&&t.b<=gd&&(t.b=0),t}function e5(t){w5();var e,n;for(n=E7t,e=0;en&&(n=t[e]);return n}function roe(t,e){var n;if(n=zO(t.Dh(),e),!n)throw at(new zn(Jb+e+qlt));return n}function qy(t,e){var n;for(n=t;Ji(n);)if(n=Ji(n),n==e)return!0;return!1}function ugn(t,e){var n,r,s;for(r=e.a.ld(),n=u(e.a.md(),16).gc(),s=0;st||t>e)throw at(new gwt("fromIndex: 0, toIndex: "+t+x8t+e))}function $m(t){if(t<0)throw at(new zn("Illegal Capacity: "+t));this.g=this.aj(t)}function o4t(t,e){return Z1(),$f(Kb),b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)}function Jst(t,e){var n,r,s,o;for(r=t.d,s=0,o=r.length;s0&&(t.a/=e,t.b/=e),t}function sh(t){var e;return t.w?t.w:(e=e1n(t),e&&!e.Vh()&&(t.w=e),e)}function YE(t,e){var n,r;r=t.a,n=s2n(t,e,null),r!=e&&!t.e&&(n=H7(t,e,n)),n&&n.oj()}function coe(t,e,n){var r,s;r=e;do s=Rt(t.p[r.p])+n,t.p[r.p]=s,r=t.a[r.p];while(r!=e)}function uoe(t,e,n){var r=function(){return t.apply(r,arguments)};return e.apply(r,n),r}function bgn(t){var e;return t==null?null:(e=u(t,195),A3n(e,e.length))}function Dt(t,e){if(t.g==null||e>=t.i)throw at(new Grt(e,t.i));return t.Wi(e,t.g[e])}function wgn(t,e){mn();var n,r;for(r=new fe,n=0;n=14&&e<=16))),t}function jr(t,e){var n;return Wn(e),n=t[":"+e],wI(!!n,"Enum constant undefined: "+e),n}function Lr(t,e,n,r,s,o){var h;return h=Wit(t,e),Toe(n,h),h.i=s?8:0,h.f=r,h.e=s,h.g=o,h}function l4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=1,this.c=t,this.a=n}function h4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=2,this.c=t,this.a=n}function f4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=6,this.c=t,this.a=n}function d4t(t,e,n,r,s){this.d=e,this.k=r,this.f=s,this.o=-1,this.p=7,this.c=t,this.a=n}function g4t(t,e,n,r,s){this.d=e,this.j=r,this.e=s,this.o=-1,this.p=4,this.c=t,this.a=n}function Coe(t,e){var n,r,s,o;for(r=e,s=0,o=r.length;s=0))throw at(new zn("tolerance ("+t+") must be >= 0"));return t}function _oe(t,e){var n;return Lt(e,44)?t.c.Mc(e):(n=Yat(t,e),yH(t,e),n)}function Oo(t,e,n){return uw(t,e),mu(t,n),Sp(t,0),Hy(t,1),Mp(t,!0),Dp(t,!0),t}function QI(t,e){var n;if(n=t.gc(),e<0||e>n)throw at(new Dy(e,n));return new Cvt(t,e)}function zq(t,e){t.b=b.Math.max(t.b,e.d),t.e+=e.r+(t.a.c.length==0?0:t.c),ge(t.a,e)}function Aoe(t){_y(t.c>=0),Mwn(t.d,t.c)<0&&(t.a=t.a-1&t.d.a.length-1,t.b=t.d.c),t.c=-1}function qq(t){var e,n;for(n=t.c.Cc().Kc();n.Ob();)e=u(n.Pb(),16),e.$b();t.c.$b(),t.d=0}function _gn(t){var e,n,r,s;for(n=t.a,r=0,s=n.length;r=0}function x4t(t,e){t.r>0&&t.c0&&t.g!=0&&x4t(t.i,e/t.r*t.i.d))}function k4t(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,1,n,t.c))}function eat(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,4,n,t.c))}function n7(t,e){var n;n=t.k,t.k=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,2,n,t.k))}function nat(t,e){var n;n=t.D,t.D=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,2,n,t.D))}function Vq(t,e){var n;n=t.f,t.f=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,8,n,t.f))}function Uq(t,e){var n;n=t.i,t.i=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,7,n,t.i))}function E4t(t,e){var n;n=t.a,t.a=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,8,n,t.a))}function T4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,0,n,t.b))}function C4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,0,n,t.b))}function S4t(t,e){var n;n=t.c,t.c=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,1,n,t.c))}function _4t(t,e){var n;n=t.d,t.d=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,1,n,t.d))}function Ngn(t,e,n){var r;t.b=e,t.a=n,r=(t.a&512)==512?new YKt:new kj,t.c=Wkn(r,t.b,t.a)}function $oe(t,e){return Ng(t.e,e)?(vo(),Gst(e)?new Sz(e,t):new eI(e,t)):new gQt(e,t)}function Pgn(t){var e,n;return 0>t?new Lwt:(e=t+1,n=new Jie(e,t),new ivt(null,n))}function Fgn(t,e){mn();var n;return n=new M6(1),ba(t)?jo(n,t,e):yu(n.f,t,e),new Kn(n)}function Bgn(t,e){var n,r;return n=t.c,r=e.e[t.p],r>0?u(Oe(n.a,r-1),10):null}function Rgn(t,e){var n,r;return n=t.o+t.p,r=e.o+e.p,ne?(e<<=1,e>0?e:z_):e}function rat(t){switch(Rmt(t.e!=3),t.e){case 2:return!1;case 0:return!0}return Kdn(t)}function qoe(t,e){var n;return Lt(e,8)?(n=u(e,8),t.a==n.a&&t.b==n.b):!1}function $gn(t,e){var n;n=new Le,u(e.b,68),u(e.b,68),u(e.b,68),Cu(e.a,new Pvt(t,n,e))}function Hoe(t,e){var n,r;for(r=e.vc().Kc();r.Ob();)n=u(r.Pb(),44),SO(t,n.ld(),n.md())}function A4t(t,e){var n;n=t.d,t.d=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,11,n,t.d))}function Gq(t,e){var n;n=t.j,t.j=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,13,n,t.j))}function L4t(t,e){var n;n=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,21,n,t.b))}function zgn(t,e){(bq(),wd?null:e.c).length==0&&sZt(e,new _e),jo(t.a,wd?null:e.c,e)}function qgn(t,e){e.Ug("Hierarchical port constraint processing",1),amn(t),SSn(t),e.Vg()}function Vm(){Vm=V,mv=new yrt("START",0),r2=new yrt("MIDDLE",1),wv=new yrt("END",2)}function Kq(){Kq=V,hK=new imt("P1_NODE_PLACEMENT",0),nx=new imt("P2_EDGE_ROUTING",1)}function Pb(){Pb=V,$k=new Oi(G8t),WU=new Oi(s2e),TA=new Oi(a2e),UN=new Oi(o2e)}function Um(t){var e;return wit(t.f.g,t.d),ur(t.b),t.c=t.a,e=u(t.a.Pb(),44),t.b=q4t(t),e}function D4t(t){var e;return t.b==null?(bp(),bp(),KP):(e=t.ul()?t.tl():t.sl(),e)}function Voe(t,e){var n;return n=e==null?-1:Xo(t.b,e,0),n<0?!1:(sat(t,n),!0)}function zf(t,e){var n;return Wn(e),n=e.g,t.b[n]?!1:(ls(t.b,n,e),++t.c,!0)}function Wq(t,e){var n,r;return n=1-e,r=t.a[n],t.a[n]=r.a[e],r.a[e]=t,t.b=!0,r.b=!1,r}function Hgn(t,e){var n,r;for(r=e.Kc();r.Ob();)n=u(r.Pb(),272),t.b=!0,qs(t.e,n),n.b=t}function Vgn(t,e){var n,r;return n=u(X(t,(De(),I3)),8),r=u(X(e,I3),8),Bi(n.b,r.b)}function iat(t,e,n){var r,s,o;return o=e>>5,s=e&31,r=sa(Ab(t.n[n][o],qr(Rf(s,1))),3),r}function Uoe(t,e,n){var r,s,o;for(o=t.a.length-1,s=t.b,r=0;r0?1:0:(!t.c&&(t.c=DI(Pc(t.f))),t.c).e}function tce(t,e){e?t.B==null&&(t.B=t.D,t.D=null):t.B!=null&&(t.D=t.B,t.B=null)}function Wgn(t,e){return u7(),t==bv&&e==y3||t==y3&&e==bv||t==F5&&e==v3||t==v3&&e==F5}function Ygn(t,e){return u7(),t==bv&&e==v3||t==bv&&e==F5||t==y3&&e==F5||t==y3&&e==v3}function ece(t,e){return Z1(),$f(gd),b.Math.abs(0-e)<=gd||e==0||isNaN(0)&&isNaN(e)?0:t/e}function nce(t,e){return Rt(Ht(Vl(dO(Wo(new ln(null,new gn(t.c.b,16)),new uUt(t)),e))))}function N4t(t,e){return Rt(Ht(Vl(dO(Wo(new ln(null,new gn(t.c.b,16)),new cUt(t)),e))))}function Xgn(){return Co(),lt(ut(jft,1),te,259,0,[CG,Uh,LA,SG,DT,q5,DA,AT,LT,_G])}function Qgn(){return cf(),lt(ut(FAt,1),te,243,0,[ZG,cP,uP,OAt,NAt,IAt,PAt,tK,Lv,N3])}function Jgn(t,e){var n;e.Ug("General Compactor",1),n=rwn(u(ne(t,(Ub(),edt)),393)),n.Cg(t)}function Zgn(t,e){var n,r;return n=u(ne(t,(Ub(),dK)),17),r=u(ne(e,dK),17),jc(n.a,r.a)}function P4t(t,e,n){var r,s;for(s=Dr(t,0);s.b!=s.d.c;)r=u(Ar(s),8),r.a+=e,r.b+=n;return t}function JS(t,e,n){var r;for(r=t.b[n&t.f];r;r=r.b)if(n==r.a&&Ud(e,r.g))return r;return null}function ZS(t,e,n){var r;for(r=t.c[n&t.f];r;r=r.d)if(n==r.f&&Ud(e,r.i))return r;return null}function tpn(t,e,n){var r,s,o;for(r=0,s=0;s>>31;r!=0&&(t[n]=r)}function uat(t,e,n,r,s,o){var h;this.c=t,h=new fe,gxt(t,h,e,t.b,n,r,s,o),this.a=new La(h,0)}function rce(){this.c=new m$(0),this.b=new m$(k7t),this.d=new m$(U2e),this.a=new m$(Mut)}function Nh(t,e,n,r,s,o,h){Rr.call(this,t,e),this.d=n,this.e=r,this.c=s,this.b=o,this.a=id(h)}function vs(t,e,n,r,s,o,h,d,m,k,T,A,P){return u1e(t,e,n,r,s,o,h,d,m,k,T,A,P),qat(t,!1),t}function epn(t){return t.b.c.i.k==(Un(),Ms)?u(X(t.b.c.i,(oe(),Li)),12):t.b.c}function ice(t){return t.b.d.i.k==(Un(),Ms)?u(X(t.b.d.i,(oe(),Li)),12):t.b.d}function npn(t){var e;return e=lq(t),vm(e.a,0)?(k$(),k$(),cye):(k$(),new jJt(e.b))}function lat(t){var e;return e=d3t(t),vm(e.a,0)?(yy(),yy(),Nht):(yy(),new oit(e.b))}function hat(t){var e;return e=d3t(t),vm(e.a,0)?(yy(),yy(),Nht):(yy(),new oit(e.c))}function sce(t){switch(t.g){case 2:return ve(),Gn;case 4:return ve(),Jn;default:return t}}function ace(t){switch(t.g){case 1:return ve(),Er;case 3:return ve(),Hn;default:return t}}function oce(t){switch(t.g){case 0:return new Dtt;case 1:return new Mtt;default:return null}}function ok(){ok=V,bft=new rs("edgelabelcenterednessanalysis.includelabel",(Pn(),t2))}function F4t(){F4t=V,ske=Yd(AQt(ri(ri(new Fs,(Ua(),Qc),(Za(),aG)),cu,eG),Zo),sG)}function cce(){cce=V,uke=Yd(AQt(ri(ri(new Fs,(Ua(),Qc),(Za(),aG)),cu,eG),Zo),sG)}function fat(){fat=V,_L=new VKt,r0t=lt(ut(Wu,1),I5,179,0,[]),DTe=lt(ut(vf,1),zTt,62,0,[])}function r7(){r7=V,KN=new Uwt("TO_INTERNAL_LTR",0),dft=new Uwt("TO_INPUT_DIRECTION",1)}function rl(){rl=V,PCt=new fb,OCt=new cy,NCt=new HX,ICt=new F2,FCt=new VX,BCt=new UX}function rpn(t,e){e.Ug(k2e,1),j5t(zrn(new RC((JC(),new tst(t,!1,!1,new G9))))),e.Vg()}function ipn(t,e,n){n.Ug("DFS Treeifying phase",1),xwn(t,e),vkn(t,e),t.a=null,t.b=null,n.Vg()}function JI(t,e){return Pn(),ba(t)?F3t(t,Gr(e)):Cy(t)?Fit(t,Ht(e)):Ty(t)?Wun(t,Me(e)):t.Fd(e)}function t_(t,e){var n,r;for(Wn(e),r=e.vc().Kc();r.Ob();)n=u(r.Pb(),44),t.zc(n.ld(),n.md())}function spn(t,e,n){var r;for(r=n.Kc();r.Ob();)if(!dq(t,e,r.Pb()))return!1;return!0}function apn(t,e,n,r,s){var o;return n&&(o=ns(e.Dh(),t.c),s=n.Rh(e,-1-(o==-1?r:o),null,s)),s}function opn(t,e,n,r,s){var o;return n&&(o=ns(e.Dh(),t.c),s=n.Th(e,-1-(o==-1?r:o),null,s)),s}function uce(t){var e;if(t.b==-2){if(t.e==0)e=-1;else for(e=0;t.a[e]==0;e++);t.b=e}return t.b}function cpn(t){if(Wn(t),t.length==0)throw at(new jd("Zero length BigInteger"));gEn(this,t)}function B4t(t){this.i=t.gc(),this.i>0&&(this.g=this.aj(this.i+(this.i/8|0)+1),t.Qc(this.g))}function lce(t,e,n){this.g=t,this.d=e,this.e=n,this.a=new fe,y5n(this),mn(),Ds(this.a,null)}function R4t(t,e){e.q=t,t.d=b.Math.max(t.d,e.r),t.b+=e.d+(t.a.c.length==0?0:t.c),ge(t.a,e)}function i7(t,e){var n,r,s,o;return s=t.c,n=t.c+t.b,o=t.d,r=t.d+t.a,e.a>s&&e.ao&&e.bs?n=s:qn(e,n+1),t.a=Lh(t.a,0,e)+(""+r)+Iyt(t.a,n)}function vce(t,e){t.a=Qa(t.a,1),t.c=b.Math.min(t.c,e),t.b=b.Math.max(t.b,e),t.d=Qa(t.d,e)}function ppn(t,e){return e1||t.Ob())return++t.a,t.g=0,e=t.i,t.Ob(),e;throw at(new cc)}function Ece(t){switch(t.a.g){case 1:return new AXt;case 3:return new Ahe;default:return new int}}function $4t(t,e){switch(e){case 1:return!!t.n&&t.n.i!=0;case 2:return t.k!=null}return f3t(t,e)}function Pc(t){return oN>22),s=t.h+e.h+(r>>22),Eu(n&Il,r&Il,s&Fg)}function Mce(t,e){var n,r,s;return n=t.l-e.l,r=t.m-e.m+(n>>22),s=t.h-e.h+(r>>22),Eu(n&Il,r&Il,s&Fg)}function Fpn(t){var e,n;for(LCn(t),n=new G(t.d);n.ar)throw at(new Dy(e,r));return t.Si()&&(n=Yne(t,n)),t.Ei(e,n)}function l7(t,e,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=e;o<=r;o++)u5(t,o,h)||cV(t,o,h,!0,!1)}function Xpn(t){w5();var e,n,r;for(n=Vt(la,ue,8,2,0,1),r=0,e=0;e<2;e++)r+=.5,n[e]=Hmn(r,t);return n}function h7(t){var e,n,r;return e=~t.l+1&Il,n=~t.m+(e==0?1:0)&Il,r=~t.h+(e==0&&n==0?1:0)&Fg,Eu(e,n,r)}function W4t(t){var e;if(t<0)return Ga;if(t==0)return 0;for(e=z_;!(e&t);e>>=1);return e}function vat(t,e,n){return t>=128?!1:t<64?bS(sa(Rf(1,t),n),0):bS(sa(Rf(1,t-64),e),0)}function oO(t,e,n){return n==null?(!t.q&&(t.q=new _r),rk(t.q,e)):(!t.q&&(t.q=new _r),hi(t.q,e,n)),t}function Zt(t,e,n){return n==null?(!t.q&&(t.q=new _r),rk(t.q,e)):(!t.q&&(t.q=new _r),hi(t.q,e,n)),t}function qce(t){var e,n;return n=new mq,Qo(n,t),Zt(n,(Pb(),$k),t),e=new _r,C7n(t,n,e),Z9n(t,n,e),n}function Hce(t){var e,n;return e=t.t-t.k[t.o.p]*t.d+t.j[t.o.p]>t.f,n=t.u+t.e[t.o.p]*t.d>t.f*t.s*t.d,e||n}function Vce(t,e){var n,r,s,o;for(n=!1,r=t.a[e].length,o=0;o=0,"Negative initial capacity"),wI(e>=0,"Non-positive load factor"),dl(this)}function Jpn(t,e,n,r,s){var o,h;if(h=t.length,o=n.length,e<0||r<0||s<0||e+s>h||r+s>o)throw at(new $2t)}function J4t(t,e){mn();var n,r,s,o,h;for(h=!1,r=e,s=0,o=r.length;s1||e>=0&&t.b<3)}function kat(t){var e,n,r;e=~t.l+1&Il,n=~t.m+(e==0?1:0)&Il,r=~t.h+(e==0&&n==0?1:0)&Fg,t.l=e,t.m=n,t.h=r}function e5t(t){mn();var e,n,r;for(r=1,n=t.Kc();n.Ob();)e=n.Pb(),r=31*r+(e!=null?$i(e):0),r=r|0;return r}function rbn(t,e,n,r,s){var o;return o=H6t(t,e),n&&kat(o),s&&(t=Xmn(t,e),r?Zb=h7(t):Zb=Eu(t.l,t.m,t.h)),o}function tue(t,e,n){t.g=$ot(t,e,(ve(),Jn),t.b),t.d=$ot(t,n,Jn,t.b),!(t.g.c==0||t.d.c==0)&&Mfe(t)}function eue(t,e,n){t.g=$ot(t,e,(ve(),Gn),t.j),t.d=$ot(t,n,Gn,t.j),!(t.g.c==0||t.d.c==0)&&Mfe(t)}function n5t(t,e){switch(e){case 7:return!!t.e&&t.e.i!=0;case 8:return!!t.d&&t.d.i!=0}return $5t(t,e)}function ibn(t,e){switch(e.g){case 0:Lt(t.b,641)||(t.b=new mce);break;case 1:Lt(t.b,642)||(t.b=new wte)}}function nue(t){switch(t.g){case 0:return new Ott;default:throw at(new zn(cU+(t.f!=null?t.f:""+t.g)))}}function rue(t){switch(t.g){case 0:return new Yu;default:throw at(new zn(cU+(t.f!=null?t.f:""+t.g)))}}function sbn(t,e,n){return!wE(_i(new ln(null,new gn(t.c,16)),new Sl(new HXt(e,n)))).Bd((U2(),Rk))}function iue(t,e){return R6(S7(u(X(e,(Cc(),Mv)),88)),new ae(t.c.e.a-t.b.e.a,t.c.e.b-t.b.e.b))<=0}function abn(t,e){for(;t.g==null&&!t.c?n3t(t):t.g==null||t.i!=0&&u(t.g[t.i-1],51).Ob();)lin(e,XH(t))}function cw(t){var e,n;for(n=new G(t.a.b);n.ar?1:0}function ubn(t){return ge(t.c,(ck(),WEe)),o4t(t.a,Rt(Ht(Se((Wat(),YG)))))?new Htt:new gGt(t)}function lbn(t){for(;!t.d||!t.d.Ob();)if(t.b&&!WC(t.b))t.d=u(K6(t.b),51);else return null;return t.d}function i5t(t){switch(t.g){case 1:return U2e;default:case 2:return 0;case 3:return Mut;case 4:return k7t}}function hbn(){yi();var t;return u0t||(t=Msn(Gb("M",!0)),t=Mz(Gb("M",!1),t),u0t=t,u0t)}function sH(){sH=V,Ydt=new Y$("ELK",0),EIt=new Y$("JSON",1),kIt=new Y$("DOT",2),TIt=new Y$("SVG",3)}function i_(){i_=V,A1t=new Lrt("STACKED",0),_1t=new Lrt("REVERSE_STACKED",1),lP=new Lrt("SEQUENCED",2)}function s_(){s_=V,hLt=new Prt(r0,0),N1t=new Prt("MIDDLE_TO_MIDDLE",1),dP=new Prt("AVOID_OVERLAP",2)}function g7(){g7=V,vSt=new DQ,ySt=new UD,D4e=new VB,L4e=new MQ,A4e=new Zx,mSt=(Wn(A4e),new kt)}function aH(){aH=V,oIt=new xm(15),D7e=new _a((ai(),Yp),oIt),pL=Jk,rIt=u7e,iIt=jw,aIt=lx,sIt=R3}function r5(t,e){var n,r,s,o,h;for(r=e,s=0,o=r.length;s=t.b.c.length||(a5t(t,2*e+1),n=2*e+2,n0&&(e.Cd(n),n.i&&d2n(n))}function o5t(t,e,n){var r;for(r=n-1;r>=0&&t[r]===e[r];r--);return r<0?0:grt(sa(t[r],So),sa(e[r],So))?-1:1}function oue(t,e,n){var r,s;this.g=t,this.c=e,this.a=this,this.d=this,s=zoe(n),r=Vt(qve,iN,227,s,0,1),this.b=r}function _at(t,e,n,r,s){var o,h;for(h=n;h<=s;h++)for(o=e;o<=r;o++)if(u5(t,o,h))return!0;return!1}function wbn(t,e){var n,r;for(r=t.Zb().Cc().Kc();r.Ob();)if(n=u(r.Pb(),16),n.Hc(e))return!0;return!1}function cue(t,e,n){var r,s,o,h;for(Wn(n),h=!1,o=t.fd(e),s=n.Kc();s.Ob();)r=s.Pb(),o.Rb(r),h=!0;return h}function Aat(t,e){var n,r;return r=u(jn(t.a,4),129),n=Vt(e0t,sht,424,e,0,1),r!=null&&Xc(r,0,n,0,r.length),n}function uue(t,e){var n;return n=new nct((t.f&256)!=0,t.i,t.a,t.d,(t.f&16)!=0,t.j,t.g,e),t.e!=null||(n.c=t),n}function mbn(t,e){var n;return t===e?!0:Lt(e,85)?(n=u(e,85),l6t(K2(t),n.vc())):!1}function lue(t,e,n){var r,s;for(s=n.Kc();s.Ob();)if(r=u(s.Pb(),44),t.Be(e,r.md()))return!0;return!1}function hue(t,e,n){return t.d[e.p][n.p]||(xmn(t,e,n),t.d[e.p][n.p]=!0,t.d[n.p][e.p]=!0),t.a[e.p][n.p]}function vbn(t,e){var n;return!t||t==e||!qi(e,(oe(),yv))?!1:(n=u(X(e,(oe(),yv)),10),n!=t)}function Lat(t){switch(t.i){case 2:return!0;case 1:return!1;case-1:++t.c;default:return t.$l()}}function fue(t){switch(t.i){case-2:return!0;case-1:return!1;case 1:--t.c;default:return t._l()}}function due(t){tre.call(this,"The given string does not match the expected format for individual spacings.",t)}function ybn(t,e){var n;e.Ug("Min Size Preprocessing",1),n=v6t(t),Mi(t,(N0(),nL),n.a),Mi(t,bK,n.b),e.Vg()}function xbn(t){var e,n,r;for(e=0,r=Vt(la,ue,8,t.b,0,1),n=Dr(t,0);n.b!=n.d.c;)r[e++]=u(Ar(n),8);return r}function Dat(t,e,n){var r,s,o;for(r=new Ki,o=Dr(n,0);o.b!=o.d.c;)s=u(Ar(o),8),Zr(r,new io(s));cue(t,e,r)}function kbn(t,e){var n;return n=Qa(t,e),grt(vst(t,e),0)|J$(vst(t,n),0)?n:Qa(rN,vst(Ab(n,63),1))}function Ebn(t,e){var n,r;return n=u(t.d.Bc(e),16),n?(r=t.e.hc(),r.Gc(n),t.e.d-=n.gc(),n.$b(),r):null}function gue(t){var e;if(e=t.a.c.length,e>0)return IE(e-1,t.a.c.length),Ep(t.a,e-1);throw at(new gKt)}function pue(t,e,n){if(t>e)throw at(new zn(CV+t+Mbe+e));if(t<0||e>n)throw at(new gwt(CV+t+T8t+e+x8t+n))}function p7(t,e){t.D==null&&t.B!=null&&(t.D=t.B,t.B=null),nat(t,e==null?null:(Wn(e),e)),t.C&&t.hl(null)}function Tbn(t,e){var n;n=Se((Wat(),YG))!=null&&e.Sg()!=null?Rt(Ht(e.Sg()))/Rt(Ht(Se(YG))):1,hi(t.b,e,n)}function c5t(t,e){var n,r;if(r=t.c[e],r!=0)for(t.c[e]=0,t.d-=r,n=e+1;neU?t-n>eU:n-t>eU}function Sue(t,e){var n;for(n=0;ns&&(nfe(e.q,s),r=n!=e.q.d)),r}function _ue(t,e){var n,r,s,o,h,d,m,k;return m=e.i,k=e.j,r=t.f,s=r.i,o=r.j,h=m-s,d=k-o,n=b.Math.sqrt(h*h+d*d),n}function g5t(t,e){var n,r;return r=xH(t),r||(n=(Tct(),pde(e)),r=new rKt(n),Or(r.El(),t)),r}function hO(t,e){var n,r;return n=u(t.c.Bc(e),16),n?(r=t.hc(),r.Gc(n),t.d-=n.gc(),n.$b(),t.mc(r)):t.jc()}function Pbn(t,e){var n,r;for(r=Dl(t.d,1)!=0,n=!0;n;)n=!1,n=e.c.mg(e.e,r),n=n|qO(t,e,r,!1),r=!r;I4t(t)}function Aue(t,e,n,r){var s,o;t.a=e,o=r?0:1,t.f=(s=new zfe(t.c,t.a,n,o),new y0e(n,t.a,s,t.e,t.b,t.c==(Hm(),UA)))}function cH(t){var e;return ur(t.a!=t.b),e=t.d.a[t.a],nZt(t.b==t.d.c&&e!=null),t.c=t.a,t.a=t.a+1&t.d.a.length-1,e}function Lue(t){var e;if(t.c!=0)return t.c;for(e=0;e=t.c.b:t.a<=t.c.b))throw at(new cc);return e=t.a,t.a+=t.c.c,++t.b,he(e)}function Pat(t){var e;return e=new Lmt(t.a),Qo(e,t),Zt(e,(oe(),Li),t),e.o.a=t.g,e.o.b=t.f,e.n.a=t.i,e.n.b=t.j,e}function Fat(t){return(ve(),Gu).Hc(t.j)?Rt(Ht(X(t,(oe(),MT)))):dc(lt(ut(la,1),ue,8,0,[t.i.n,t.n,t.a])).b}function Bbn(t){var e;return e=rz(ike),u(X(t,(oe(),lu)),21).Hc((Co(),DT))&&ri(e,(Ua(),Qc),(Za(),uG)),e}function Rbn(t){var e,n,r,s;for(s=new Os,r=new G(t);r.a=0?e:-e;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return e<0?1/s:s}function Hbn(t,e){var n,r,s;for(s=1,n=t,r=e>=0?e:-e;r>0;)r%2==0?(n*=n,r=r/2|0):(s*=n,r-=1);return e<0?1/s:s}function jb(t,e){var n,r,s,o;return o=(s=t?xH(t):null,h1e((r=e,s&&s.Gl(),r))),o==e&&(n=xH(t),n&&n.Gl()),o}function Due(t,e,n){var r,s;return s=t.f,t.f=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,0,s,e),n?n.nj(r):n=r),n}function Mue(t,e,n){var r,s;return s=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,3,s,e),n?n.nj(r):n=r),n}function b5t(t,e,n){var r,s;return s=t.a,t.a=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,1,s,e),n?n.nj(r):n=r),n}function Iue(t){var e,n;if(t!=null)for(n=0;n=r||e-129&&t<128?(bte(),e=t+128,n=d9t[e],!n&&(n=d9t[e]=new wr(t)),n):new wr(t)}function w7(t){var e,n;return t>-129&&t<128?(Ote(),e=t+128,n=w9t[e],!n&&(n=w9t[e]=new $n(t)),n):new $n(t)}function Pue(t,e){var n;t.a.c.length>0&&(n=u(Oe(t.a,t.a.c.length-1),579),s5t(n,e))||ge(t.a,new Zie(e))}function Ybn(t){Bf();var e,n;e=t.d.c-t.e.c,n=u(t.g,154),Cu(n.b,new XVt(e)),Cu(n.c,new QVt(e)),Fa(n.i,new JVt(e))}function Fue(t){var e;return e=new yb,e.a+="VerticalSegment ",tu(e,t.e),e.a+=" ",ni(e,Fmt(new ert,new G(t.k))),e.a}function Bat(t,e){var n,r,s;for(n=0,s=gc(t,e).Kc();s.Ob();)r=u(s.Pb(),12),n+=X(r,(oe(),ml))!=null?1:0;return n}function a5(t,e,n){var r,s,o;for(r=0,o=Dr(t,0);o.b!=o.d.c&&(s=Rt(Ht(Ar(o))),!(s>n));)s>=e&&++r;return r}function Bue(t,e){Hr(t);try{return t._b(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return!1;throw at(n)}}function m5t(t,e){Hr(t);try{return t.Hc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return!1;throw at(n)}}function Xbn(t,e){Hr(t);try{return t.Mc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return!1;throw at(n)}}function Gy(t,e){Hr(t);try{return t.xc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return null;throw at(n)}}function Qbn(t,e){Hr(t);try{return t.Bc(e)}catch(n){if(n=es(n),Lt(n,212)||Lt(n,169))return null;throw at(n)}}function c_(t,e){switch(e.g){case 2:case 1:return gc(t,e);case 3:case 4:return Bh(gc(t,e))}return mn(),mn(),co}function u_(t){var e;return t.Db&64?qf(t):(e=new ef(qf(t)),e.a+=" (name: ",Mo(e,t.zb),e.a+=")",e.a)}function Jbn(t){var e;return e=u(od(t.c.c,""),233),e||(e=new Z6(pE(gE(new fy,""),"Other")),Op(t.c.c,"",e)),e}function v5t(t,e,n){var r,s;return s=t.sb,t.sb=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,4,s,e),n?n.nj(r):n=r),n}function y5t(t,e,n){var r,s;return s=t.r,t.r=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,8,s,t.r),n?n.nj(r):n=r),n}function Zbn(t,e,n){var r,s;return r=new Tg(t.e,4,13,(s=e.c,s||(wn(),Sd)),null,Np(t,e),!1),n?n.nj(r):n=r,n}function t2n(t,e,n){var r,s;return r=new Tg(t.e,3,13,null,(s=e.c,s||(wn(),Sd)),Np(t,e),!1),n?n.nj(r):n=r,n}function Lp(t,e){var n,r;return n=u(e,691),r=n.el(),!r&&n.fl(r=Lt(e,90)?new pQt(t,u(e,29)):new Rre(t,u(e,156))),r}function fO(t,e,n){var r;t._i(t.i+1),r=t.Zi(e,n),e!=t.i&&Xc(t.g,e,t.g,e+1,t.i-e),ls(t.g,e,r),++t.i,t.Mi(e,n),t.Ni()}function e2n(t,e){var n;return e.a&&(n=e.a.a.length,t.a?ni(t.a,t.b):t.a=new eh(t.d),Ure(t.a,e.a,e.d.length,n)),t}function n2n(t,e){var n;t.c=e,t.a=own(e),t.a<54&&(t.f=(n=e.d>1?Hre(e.a[0],e.a[1]):Hre(e.a[0],0),tw(e.e>0?n:Cp(n))))}function dO(t,e){var n;return n=new Je,t.a.Bd(n)?(EE(),new Ynt(Wn(Tae(t,n.a,e)))):(Mb(t),EE(),EE(),A9t)}function Rue(t,e){var n;t.c.length!=0&&(n=u(ld(t,Vt(V0,jp,10,t.c.length,0,1)),199),xmt(n,new P8),I1e(n,e))}function jue(t,e){var n;t.c.length!=0&&(n=u(ld(t,Vt(V0,jp,10,t.c.length,0,1)),199),xmt(n,new v0),I1e(n,e))}function Ti(t,e){return ba(t)?hn(t,e):Cy(t)?OZt(t,e):Ty(t)?(Wn(t),$t(t)===$t(e)):gyt(t)?t.Fb(e):oyt(t)?MQt(t,e):o3t(t,e)}function Ph(t,e,n){if(e<0)C6t(t,n);else{if(!n.rk())throw at(new zn(Jb+n.xe()+aA));u(n,69).wk().Ek(t,t.hi(),e)}}function $ue(t,e,n){if(t<0||e>n)throw at(new Bo(CV+t+T8t+e+", size: "+n));if(t>e)throw at(new zn(CV+t+Mbe+e))}function zue(t){var e;return t.Db&64?qf(t):(e=new ef(qf(t)),e.a+=" (source: ",Mo(e,t.d),e.a+=")",e.a)}function que(t){return t>=65&&t<=70?t-65+10:t>=97&&t<=102?t-97+10:t>=48&&t<=57?t-48:0}function r2n(t){yV();var e,n,r,s;for(n=not(),r=0,s=n.length;r=0?zb(t):FS(zb(Cp(t))))}function Uue(t,e,n,r,s,o){this.e=new fe,this.f=(To(),HA),ge(this.e,t),this.d=e,this.a=n,this.b=r,this.f=s,this.c=o}function a2n(t,e,n){t.n=G2(x2,[ue,cut],[376,28],14,[n,Ys(b.Math.ceil(e/32))],2),t.o=e,t.p=n,t.j=e-1>>1,t.k=n-1>>1}function Gue(t){return t-=t>>1&1431655765,t=(t>>2&858993459)+(t&858993459),t=(t>>4)+t&252645135,t+=t>>8,t+=t>>16,t&63}function Kue(t,e){var n,r;for(r=new Zn(t);r.e!=r.i.gc();)if(n=u(ar(r),142),$t(e)===$t(n))return!0;return!1}function o2n(t,e,n){var r,s,o;return o=(s=N7(t.b,e),s),o&&(r=u(pV(VI(t,o),""),29),r)?K6t(t,r,e,n):null}function Rat(t,e,n){var r,s,o;return o=(s=N7(t.b,e),s),o&&(r=u(pV(VI(t,o),""),29),r)?W6t(t,r,e,n):null}function c2n(t,e){var n;if(n=n5(t.i,e),n==null)throw at(new Rd("Node did not exist in input."));return j4t(e,n),null}function u2n(t,e){var n;if(n=zO(t,e),Lt(n,331))return u(n,35);throw at(new zn(Jb+e+"' is not a valid attribute"))}function h_(t,e,n){var r;if(r=t.gc(),e>r)throw at(new Dy(e,r));if(t.Si()&&t.Hc(n))throw at(new zn(AN));t.Gi(e,n)}function l2n(t,e){e.Ug("Sort end labels",1),ms(_i(fc(new ln(null,new gn(t.b,16)),new PB),new Yx),new aQ),e.Vg()}function Rs(){Rs=V,Ed=new JM(G_,0),tc=new JM(Ak,1),Uo=new JM(_k,2),kd=new JM(xut,3),Gh=new JM("UP",4)}function pO(){pO=V,vK=new qrt("P1_STRUCTURE",0),yK=new qrt("P2_PROCESSING_ORDER",1),xK=new qrt("P3_EXECUTION",2)}function Wue(){Wue=V,v8e=Yd(Yd(nS(Yd(Yd(nS(ri(new Fs,(bk(),WA),(I_(),O1t)),YA),oLt),uLt),XA),rLt),lLt)}function h2n(t){switch(u(X(t,(oe(),Aw)),311).g){case 1:Zt(t,Aw,(Cg(),qk));break;case 2:Zt(t,Aw,(Cg(),H5))}}function f2n(t){switch(t){case 0:return new BKt;case 1:return new PKt;case 2:return new FKt;default:throw at(new DM)}}function Yue(t){switch(t.g){case 2:return tc;case 1:return Uo;case 4:return kd;case 3:return Gh;default:return Ed}}function T5t(t,e){switch(t.b.g){case 0:case 1:return e;case 2:case 3:return new Ah(e.d,0,e.a,e.b);default:return null}}function C5t(t){switch(t.g){case 1:return Gn;case 2:return Hn;case 3:return Jn;case 4:return Er;default:return bc}}function bO(t){switch(t.g){case 1:return Er;case 2:return Gn;case 3:return Hn;case 4:return Jn;default:return bc}}function hH(t){switch(t.g){case 1:return Jn;case 2:return Er;case 3:return Gn;case 4:return Hn;default:return bc}}function S5t(t,e,n,r){switch(e){case 1:return!t.n&&(t.n=new Jt(Po,t,1,7)),t.n;case 2:return t.k}return mxt(t,e,n,r)}function f_(t,e,n){var r,s;return t.Pj()?(s=t.Qj(),r=Uot(t,e,n),t.Jj(t.Ij(7,he(n),r,e,s)),r):Uot(t,e,n)}function jat(t,e){var n,r,s;t.d==null?(++t.e,--t.f):(s=e.ld(),n=e.Bi(),r=(n&xi)%t.d.length,Qdn(t,r,vde(t,r,n,s)))}function m7(t,e){var n;n=(t.Bb&Uf)!=0,e?t.Bb|=Uf:t.Bb&=-1025,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,10,n,e))}function v7(t,e){var n;n=(t.Bb&u3)!=0,e?t.Bb|=u3:t.Bb&=-4097,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,12,n,e))}function y7(t,e){var n;n=(t.Bb&ol)!=0,e?t.Bb|=ol:t.Bb&=-8193,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,15,n,e))}function x7(t,e){var n;n=(t.Bb&b3)!=0,e?t.Bb|=b3:t.Bb&=-2049,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,11,n,e))}function d2n(t){var e;t.g&&(e=t.c.kg()?t.f:t.a,okt(e.a,t.o,!0),okt(e.a,t.o,!1),Zt(t.o,(De(),bs),(ka(),zw)))}function g2n(t){var e;if(!t.a)throw at(new Ro("Cannot offset an unassigned cut."));e=t.c-t.b,t.b+=e,yne(t,e),vne(t,e)}function p2n(t,e){var n;if(n=tr(t.k,e),n==null)throw at(new Rd("Port did not exist in input."));return j4t(e,n),null}function b2n(t){var e,n;for(n=bde(sh(t)).Kc();n.Ob();)if(e=Gr(n.Pb()),O_(t,e))return wdn((QYt(),mTe),e);return null}function Xue(t){var e,n;for(n=t.p.a.ec().Kc();n.Ob();)if(e=u(n.Pb(),218),e.f&&t.b[e.c]<-1e-10)return e;return null}function w2n(t){var e,n;for(n=Db(new yb,91),e=!0;t.Ob();)e||(n.a+=ao),e=!1,tu(n,t.Pb());return(n.a+="]",n).a}function m2n(t){var e,n,r;for(e=new fe,r=new G(t.b);r.ae?1:t==e?t==0?Bi(1/t,1/e):0:isNaN(t)?isNaN(e)?0:1:-1}function y2n(t){var e;return e=t.a[t.c-1&t.a.length-1],e==null?null:(t.c=t.c-1&t.a.length-1,ls(t.a,t.c,null),e)}function x2n(t){var e,n,r;for(r=0,n=t.length,e=0;e=1?tc:kd):n}function C2n(t){switch(u(X(t,(De(),zg)),223).g){case 1:return new TJ;case 3:return new LJ;default:return new EJ}}function $b(t){if(t.c)$b(t.c);else if(t.d)throw at(new Ro("Stream already terminated, can't be modified or used"))}function Km(t,e,n){var r;return r=t.a.get(e),t.a.set(e,n===void 0?null:n),r===void 0?(++t.c,++t.b.g):++t.d,r}function S2n(t,e,n){var r,s;for(s=t.a.ec().Kc();s.Ob();)if(r=u(s.Pb(),10),rO(n,u(Oe(e,r.p),16)))return r;return null}function A5t(t,e,n){var r;return r=0,e&&(q4(t.a)?r+=e.f.a/2:r+=e.f.b/2),n&&(q4(t.a)?r+=n.f.a/2:r+=n.f.b/2),r}function _2n(t,e,n){var r;r=n,!r&&(r=Yvt(new S6,0)),r.Ug(u2e,2),ehe(t.b,e,r.eh(1)),qTn(t,e,r.eh(1)),UCn(e,r.eh(1)),r.Vg()}function L5t(t,e,n){var r,s;return r=(kb(),s=new fC,s),Rq(r,e),Bq(r,n),t&&Or((!t.a&&(t.a=new Ps(vh,t,5)),t.a),r),r}function zat(t){var e;return t.Db&64?qf(t):(e=new ef(qf(t)),e.a+=" (identifier: ",Mo(e,t.k),e.a+=")",e.a)}function qat(t,e){var n;n=(t.Bb&Fc)!=0,e?t.Bb|=Fc:t.Bb&=-32769,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,18,n,e))}function D5t(t,e){var n;n=(t.Bb&Fc)!=0,e?t.Bb|=Fc:t.Bb&=-32769,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,18,n,e))}function k7(t,e){var n;n=(t.Bb&Jd)!=0,e?t.Bb|=Jd:t.Bb&=-16385,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,16,n,e))}function M5t(t,e){var n;n=(t.Bb&po)!=0,e?t.Bb|=po:t.Bb&=-65537,t.Db&4&&!(t.Db&1)&&Ei(t,new jf(t,1,20,n,e))}function I5t(t){var e;return e=Vt(Yh,Zd,28,2,15,1),t-=po,e[0]=(t>>10)+cN&js,e[1]=(t&1023)+56320&js,af(e,0,e.length)}function A2n(t){var e;return e=Jy(t),e>34028234663852886e22?Zi:e<-34028234663852886e22?Vs:e}function Qa(t,e){var n;return ec(t)&&ec(e)&&(n=t+e,oN"+Z2(e.c):"e_"+$i(e),t.b&&t.c?Z2(t.b)+"->"+Z2(t.c):"e_"+$i(t))}function M2n(t,e){return hn(e.b&&e.c?Z2(e.b)+"->"+Z2(e.c):"e_"+$i(e),t.b&&t.c?Z2(t.b)+"->"+Z2(t.c):"e_"+$i(t))}function Wm(t,e){return Z1(),$f(Kb),b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e))}function Lg(){Lg=V,Vdt=new U$(G_,0),IP=new U$("POLYLINE",1),WT=new U$("ORTHOGONAL",2),e8=new U$("SPLINES",3)}function dH(){dH=V,oDt=new $rt("ASPECT_RATIO_DRIVEN",0),hdt=new $rt("MAX_SCALE_DRIVEN",1),aDt=new $rt("AREA_DRIVEN",2)}function I2n(t,e,n){var r;try{ebn(t,e,n)}catch(s){throw s=es(s),Lt(s,606)?(r=s,at(new I3t(r))):at(s)}return e}function O2n(t){var e,n,r;for(n=0,r=t.length;ne&&r.Ne(t[o-1],t[o])>0;--o)h=t[o],ls(t,o,t[o-1]),ls(t,o-1,h)}function Qe(t,e){var n,r,s,o,h;if(n=e.f,Op(t.c.d,n,e),e.g!=null)for(s=e.g,o=0,h=s.length;oe){Wre(n);break}}kI(n,e)}function B2n(t,e){var n,r,s;r=J4(e),s=Rt(Ht(Wy(r,(De(),Yf)))),n=b.Math.max(0,s/2-.5),x_(e,n,1),ge(t,new dXt(e,n))}function R2n(t,e,n){var r;n.Ug("Straight Line Edge Routing",1),n.dh(e,I7t),r=u(ne(e,(Y4(),ex)),27),Bge(t,r),n.dh(e,iU)}function O5t(t,e){t.n.c.length==0&&ge(t.n,new aq(t.s,t.t,t.i)),ge(t.b,e),dxt(u(Oe(t.n,t.n.c.length-1),209),e),vge(t,e)}function d_(t){var e;this.a=(e=u(t.e&&t.e(),9),new _h(e,u(Ff(e,e.length),9),0)),this.b=Vt(aa,Ln,1,this.a.a.length,5,1)}function rc(t){var e;return Array.isArray(t)&&t.Tm===yt?V2(Wl(t))+"@"+(e=$i(t)>>>0,e.toString(16)):t.toString()}function j2n(t,e){return t.h==aN&&t.m==0&&t.l==0?(e&&(Zb=Eu(0,0,0)),OQt((WE(),o9t))):(e&&(Zb=Eu(t.l,t.m,t.h)),Eu(0,0,0))}function $2n(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function tle(t,e){switch(e.g){case 2:return t.b;case 1:return t.c;case 4:return t.d;case 3:return t.a;default:return!1}}function N5t(t,e,n,r){switch(e){case 3:return t.f;case 4:return t.g;case 5:return t.i;case 6:return t.j}return S5t(t,e,n,r)}function gH(t,e){if(e==t.d)return t.e;if(e==t.e)return t.d;throw at(new zn("Node "+e+" not part of edge "+t))}function z2n(t,e){var n;if(n=zO(t.Dh(),e),Lt(n,102))return u(n,19);throw at(new zn(Jb+e+"' is not a valid reference"))}function Fh(t,e,n,r){if(e<0)J6t(t,n,r);else{if(!n.rk())throw at(new zn(Jb+n.xe()+aA));u(n,69).wk().Ck(t,t.hi(),e,r)}}function Ll(t){var e;if(t.b){if(Ll(t.b),t.b.d!=t.c)throw at(new Th)}else t.d.dc()&&(e=u(t.f.c.xc(t.e),16),e&&(t.d=e))}function q2n(t){Ay();var e,n,r,s;for(e=t.o.b,r=u(u(Ai(t.r,(ve(),Er)),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s=n.e,s.b+=e}function H2n(t){var e,n,r;for(this.a=new zd,r=new G(t);r.a=s)return e.c+n;return e.c+e.b.gc()}function U2n(t,e){_E();var n,r,s,o;for(r=fae(t),s=e,GE(r,0,r.length,s),n=0;n0&&(r+=s,++n);return n>1&&(r+=t.d*(n-1)),r}function K2n(t){var e,n,r,s,o;return o=Jxt(t),n=NM(t.c),r=!n,r&&(s=new cp,_1(o,"knownLayouters",s),e=new VGt(s),Fa(t.c,e)),o}function B5t(t){var e,n,r;for(r=new dp,r.a+="[",e=0,n=t.gc();e0&&(qn(e-1,t.length),t.charCodeAt(e-1)==58)&&!Uat(t,CL,SL))}function R5t(t,e){var n;return $t(t)===$t(e)?!0:Lt(e,92)?(n=u(e,92),t.e==n.e&&t.d==n.d&&ydn(t,n.a)):!1}function hk(t){switch(ve(),t.g){case 4:return Hn;case 1:return Jn;case 3:return Er;case 2:return Gn;default:return bc}}function Q2n(t){var e,n;if(t.b)return t.b;for(n=wd?null:t.d;n;){if(e=wd?null:n.b,e)return e;n=wd?null:n.d}return xE(),M9t}function j5t(t){var e,n,r;for(r=Rt(Ht(t.a.of((ai(),LK)))),n=new G(t.a.Sf());n.a>5,e=t&31,r=Vt(Fr,ii,28,n+1,15,1),r[n]=1<3;)s*=10,--o;t=(t+(s>>1))/s|0}return r.i=t,!0}function ns(t,e){var n,r,s;if(n=(t.i==null&&Qd(t),t.i),r=e.Lj(),r!=-1){for(s=n.length;r=0;--r)for(e=n[r],s=0;s>1,this.k=e-1>>1}function fwn(t){Tq(),u(t.of((ai(),l2)),181).Hc((Ml(),FK))&&(u(t.of(j3),181).Fc((wl(),n8)),u(t.of(l2),181).Mc(FK))}function ole(t){var e,n;e=t.d==(wk(),kT),n=qxt(t),e&&!n||!e&&n?Zt(t.a,(De(),u0),(I0(),TP)):Zt(t.a,(De(),u0),(I0(),EP))}function Wat(){Wat=V,C$(),YG=(De(),Av),M6e=id(lt(ut(Sdt,1),v7t,149,0,[aP,Yf,Y5,_v,O3,l1t,FT,BT,h1t,jA,W5,Pw,X5]))}function dwn(t,e){var n;return n=u(nc(t,gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),n.Qc(Ate(n.gc()))}function cle(t,e){var n,r;if(r=new ra(t.a.ad(e,!0)),r.a.gc()<=1)throw at(new E6);return n=r.a.ec().Kc(),n.Pb(),u(n.Pb(),39)}function gwn(t,e,n){var r,s;return r=Rt(t.p[e.i.p])+Rt(t.d[e.i.p])+e.n.b+e.a.b,s=Rt(t.p[n.i.p])+Rt(t.d[n.i.p])+n.n.b+n.a.b,s-r}function G5t(t,e){var n;return t.i>0&&(e.lengtht.i&&ls(e,t.i,null),e}function bH(t){var e;return t.Db&64?u_(t):(e=new ef(u_(t)),e.a+=" (instanceClassName: ",Mo(e,t.D),e.a+=")",e.a)}function wH(t){var e,n,r,s;for(s=0,n=0,r=t.length;n0?(t._j(),r=e==null?0:$i(e),s=(r&xi)%t.d.length,n=vde(t,s,r,e),n!=-1):!1}function ule(t,e){var n,r;t.a=Qa(t.a,1),t.c=b.Math.min(t.c,e),t.b=b.Math.max(t.b,e),t.d+=e,n=e-t.f,r=t.e+n,t.f=r-t.e-n,t.e=r}function K5t(t,e){switch(e){case 3:zm(t,0);return;case 4:qm(t,0);return;case 5:Su(t,0);return;case 6:_u(t,0);return}w5t(t,e)}function Ym(t,e){switch(e.g){case 1:return H6(t.j,(rl(),OCt));case 2:return H6(t.j,(rl(),PCt));default:return mn(),mn(),co}}function W5t(t){Dm();var e;switch(e=t.Pc(),e.length){case 0:return Eht;case 1:return new Ait(Hr(e[0]));default:return new ust(O2n(e))}}function lle(t,e){t.Xj();try{t.d.bd(t.e++,e),t.f=t.d.j,t.g=-1}catch(n){throw n=es(n),Lt(n,77)?at(new Th):at(n)}}function Xat(){Xat=V,s0t=new mC,HIt=new b1,VIt=new uM,UIt=new lM,GIt=new u6,KIt=new eet,WIt=new net,YIt=new ret,XIt=new iet}function mH(t,e){wmt();var n,r;return n=hI((h$(),h$(),mA)),r=null,e==n&&(r=u(nu(s9t,t),624)),r||(r=new Lee(t),e==n&&jo(s9t,t,r)),r}function hle(t){Yy();var e;return(t.q?t.q:(mn(),mn(),q0))._b((De(),Cv))?e=u(X(t,Cv),203):e=u(X(Pa(t),RA),203),e}function Wy(t,e){var n,r;return r=null,qi(t,(De(),KG))&&(n=u(X(t,KG),96),n.pf(e)&&(r=n.of(e))),r==null&&(r=X(Pa(t),e)),r}function fle(t,e){var n,r,s;return Lt(e,44)?(n=u(e,44),r=n.ld(),s=Gy(t.Rc(),r),Ud(s,n.md())&&(s!=null||t.Rc()._b(r))):!1}function L1(t,e){var n,r,s;return t.f>0&&(t._j(),r=e==null?0:$i(e),s=(r&xi)%t.d.length,n=I6t(t,s,r,e),n)?n.md():null}function vu(t,e,n){var r,s,o;return t.Pj()?(r=t.i,o=t.Qj(),fO(t,r,e),s=t.Ij(3,null,e,r,o),n?n.nj(s):n=s):fO(t,t.i,e),n}function bwn(t,e,n){var r,s;return r=new Tg(t.e,4,10,(s=e.c,Lt(s,90)?u(s,29):(wn(),xf)),null,Np(t,e),!1),n?n.nj(r):n=r,n}function wwn(t,e,n){var r,s;return r=new Tg(t.e,3,10,null,(s=e.c,Lt(s,90)?u(s,29):(wn(),xf)),Np(t,e),!1),n?n.nj(r):n=r,n}function dle(t){Ay();var e;return e=new io(u(t.e.of((ai(),lx)),8)),t.B.Hc((Ml(),XT))&&(e.a<=0&&(e.a=20),e.b<=0&&(e.b=20)),e}function zb(t){Xd();var e,n;return n=qr(t),e=qr(Ab(t,32)),e!=0?new xre(n,e):n>10||n<0?new kg(1,n):tye[n]}function mO(t,e){var n;return ec(t)&&ec(e)&&(n=t%e,oN=0?o=o.a[1]:(s=o,o=o.a[0])}return s}function yO(t,e,n){var r,s,o;for(s=null,o=t.b;o;){if(r=t.a.Ne(e,o.d),n&&r==0)return o;r<=0?o=o.a[0]:(s=o,o=o.a[1])}return s}function Ewn(t,e,n,r){var s,o,h;return s=!1,S9n(t.f,n,r)&&(Uwn(t.f,t.a[e][n],t.a[e][r]),o=t.a[e],h=o[r],o[r]=o[n],o[n]=h,s=!0),s}function wle(t,e,n){var r,s,o,h;for(s=u(tr(t.b,n),183),r=0,h=new G(e.j);h.a>5,e&=31,s=t.d+n+(e==0?0:1),r=Vt(Fr,ii,28,s,15,1),x3n(r,t.a,n,e),o=new Y2(t.e,s,r),qS(o),o}function Twn(t,e){var n,r,s;for(r=new rr(sr(_s(t).a.Kc(),new z));Mr(r);)if(n=u(dr(r),18),s=n.d.i,s.c==e)return!1;return!0}function Q5t(t,e,n){var r,s,o,h,d;return h=t.k,d=e.k,r=n[h.g][d.g],s=Ht(Wy(t,r)),o=Ht(Wy(e,r)),b.Math.max((Wn(s),s),(Wn(o),o))}function Cwn(){return Error.stackTraceLimit>0?(b.Error.stackTraceLimit=Error.stackTraceLimit=64,!0):"stack"in new Error}function Swn(t,e){return Z1(),Z1(),$f(Kb),(b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e)))>0}function J5t(t,e){return Z1(),Z1(),$f(Kb),(b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e)))<0}function vle(t,e){return Z1(),Z1(),$f(Kb),(b.Math.abs(t-e)<=Kb||t==e||isNaN(t)&&isNaN(e)?0:te?1:ym(isNaN(t),isNaN(e)))<=0}function Jat(t,e){for(var n=0;!e[n]||e[n]=="";)n++;for(var r=e[n++];n0&&this.b>0&&(this.g=Dz(this.c,this.b,this.a))}function _wn(t,e){var n=t.a,r;e=String(e),n.hasOwnProperty(e)&&(r=n[e]);var s=(yat(),Lht)[typeof r],o=s?s(r):f5t(typeof r);return o}function T7(t){var e,n,r;if(r=null,e=a0 in t.a,n=!e,n)throw at(new Rd("Every element must have an id."));return r=mk(vg(t,a0)),r}function Xm(t){var e,n;for(n=Ufe(t),e=null;t.c==2;)wi(t),e||(e=(yi(),yi(),new yS(2)),gw(e,n),n=e),n.Jm(Ufe(t));return n}function yH(t,e){var n,r,s;return t._j(),r=e==null?0:$i(e),s=(r&xi)%t.d.length,n=I6t(t,s,r,e),n?(_oe(t,n),n.md()):null}function Sle(t,e){return t.e>e.e?1:t.ee.d?t.e:t.d=48&&t<48+b.Math.min(10,10)?t-48:t>=97&&t<97?t-97+10:t>=65&&t<65?t-65+10:-1}function Awn(t,e){if(e.c==t)return e.d;if(e.d==t)return e.c;throw at(new zn("Input edge is not connected to the input port."))}function Lwn(t){if(kH(uT,t))return Pn(),bT;if(kH(jlt,t))return Pn(),t2;throw at(new zn("Expecting true or false"))}function ext(t){switch(typeof t){case Nct:return _p(t);case u8t:return F6(t);case kk:return oZt(t);default:return t==null?0:Em(t)}}function Yd(t,e){if(t.a<0)throw at(new Ro("Did not call before(...) or after(...) before calling add(...)."));return Ymt(t,t.a,e),t}function nxt(t){return oq(),Lt(t,162)?u(tr(VP,sye),294).Rg(t):Tu(VP,Wl(t))?u(tr(VP,Wl(t)),294).Rg(t):null}function Au(t){var e,n;return t.Db&32||(n=(e=u(jn(t,16),29),fr(e||t.ii())-fr(t.ii())),n!=0&&fk(t,32,Vt(aa,Ln,1,n,5,1))),t}function fk(t,e,n){var r;t.Db&e?n==null?fxn(t,e):(r=vot(t,e),r==-1?t.Eb=n:ls(nw(t.Eb),r,n)):n!=null&&Pkn(t,e,n)}function Dwn(t,e,n,r){var s,o;e.c.length!=0&&(s=C6n(n,r),o=S5n(e),ms(Pq(new ln(null,new gn(o,1)),new r6),new ine(t,n,s,r)))}function Mwn(t,e){var n,r,s,o;return r=t.a.length-1,n=e-t.b&r,o=t.c-e&r,s=t.c-t.b&r,nZt(n=o?(Lbn(t,e),-1):(Abn(t,e),1)}function xH(t){var e,n,r;if(r=t.Jh(),!r)for(e=0,n=t.Ph();n;n=n.Ph()){if(++e>uut)return n.Qh();if(r=n.Jh(),r||n==t)break}return r}function Ale(t,e){var n;return $t(e)===$t(t)?!0:!Lt(e,21)||(n=u(e,21),n.gc()!=t.gc())?!1:t.Ic(n)}function Iwn(t,e){return t.ee.e?1:t.fe.f?1:$i(t)-$i(e)}function kH(t,e){return Wn(t),e==null?!1:hn(t,e)?!0:t.length==e.length&&hn(t.toLowerCase(),e.toLowerCase())}function Mg(t){var e,n;return $c(t,-129)>0&&$c(t,128)<0?(Ite(),e=qr(t)+128,n=g9t[e],!n&&(n=g9t[e]=new Cr(t)),n):new Cr(t)}function lw(){lw=V,x3=new B$(r0,0),ACt=new B$("INSIDE_PORT_SIDE_GROUPS",1),uft=new B$("GROUP_MODEL_ORDER",2),lft=new B$(J8t,3)}function Own(t){var e;return t.b||Srn(t,(e=Can(t.e,t.a),!e||!hn(jlt,L1((!e.b&&(e.b=new Ul((wn(),wo),Mc,e)),e.b),"qualified")))),t.c}function Nwn(t,e){var n,r;for(n=(qn(e,t.length),t.charCodeAt(e)),r=e+1;r2e3&&(Vve=t,IU=b.setTimeout(Mrn,10))),MU++==0?(K0n((uwt(),i9t)),!0):!1}function Wwn(t,e,n){var r;(fye?(Q2n(t),!0):dye||pye?(xE(),!0):gye&&(xE(),!1))&&(r=new UZt(e),r.b=n,n4n(t,r))}function tot(t,e){var n;n=!t.A.Hc((Yl(),qw))||t.q==(ka(),hu),t.u.Hc((wl(),Hg))?n?BCn(t,e):Tpe(t,e):t.u.Hc(g2)&&(n?rCn(t,e):jpe(t,e))}function Nle(t){var e;$t(ne(t,(ai(),cx)))===$t((Ag(),IK))&&(Ji(t)?(e=u(ne(Ji(t),cx),346),Mi(t,cx,e)):Mi(t,cx,bL))}function Ywn(t){var e,n;return qi(t.d.i,(De(),OT))?(e=u(X(t.c.i,OT),17),n=u(X(t.d.i,OT),17),jc(e.a,n.a)>0):!1}function Ple(t,e,n){return new Ah(b.Math.min(t.a,e.a)-n/2,b.Math.min(t.b,e.b)-n/2,b.Math.abs(t.a-e.a)+n,b.Math.abs(t.b-e.b)+n)}function Fle(t){var e;this.d=new fe,this.j=new Sa,this.g=new Sa,e=t.g.b,this.f=u(X(Pa(e),(De(),ph)),88),this.e=Rt(Ht(SH(e,O3)))}function Ble(t){this.d=new fe,this.e=new kp,this.c=Vt(Fr,ii,28,(ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])).length,15,1),this.b=t}function sxt(t,e,n){var r;switch(r=n[t.g][e],t.g){case 1:case 3:return new ae(0,r);case 2:case 4:return new ae(r,0);default:return null}}function Rle(t,e,n){var r,s;s=u(_I(e.f),205);try{s.rf(t,n),Hee(e.f,s)}catch(o){throw o=es(o),Lt(o,103)?(r=o,at(r)):at(o)}}function jle(t,e,n){var r,s,o,h,d,m;return r=null,d=Ykt(e7(),e),o=null,d&&(s=null,m=Kkt(d,n),h=null,m!=null&&(h=t.qf(d,m)),s=h,o=s),r=o,r}function eot(t,e,n,r){var s;if(s=t.length,e>=s)return s;for(e=e>0?e:0;er&&ls(e,r,null),e}function $le(t,e){var n,r;for(r=t.a.length,e.lengthr&&ls(e,r,null),e}function C7(t,e){var n,r;if(++t.j,e!=null&&(n=(r=t.a.Cb,Lt(r,99)?u(r,99).th():null),txn(e,n))){fk(t.a,4,n);return}fk(t.a,4,u(e,129))}function Xwn(t){var e;if(t==null)return null;if(e=e6n(su(t,!0)),e==null)throw at(new trt("Invalid hexBinary value: '"+t+"'"));return e}function EH(t,e,n){var r;e.a.length>0&&(ge(t.b,new ote(e.a,n)),r=e.a.length,0r&&(e.a+=uJt(Vt(Yh,Zd,28,-r,15,1))))}function zle(t,e,n){var r,s,o;if(!n[e.d])for(n[e.d]=!0,s=new G(s5(e));s.a=t.b>>1)for(r=t.c,n=t.b;n>e;--n)r=r.b;else for(r=t.a.a,n=0;n=0?t.Wh(s):Vot(t,r)):n<0?Vot(t,r):u(r,69).wk().Bk(t,t.hi(),n)}function Ule(t){var e,n,r;for(r=(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),t.o),n=r.c.Kc();n.e!=n.i.gc();)e=u(n.Yj(),44),e.md();return RI(r)}function Se(t){var e;if(Lt(t.a,4)){if(e=nxt(t.a),e==null)throw at(new Ro(gwe+t.b+"'. "+dwe+(wg(UP),UP.k)+lTt));return e}else return t.a}function imn(t,e){var n,r;if(t.j.length!=e.j.length)return!1;for(n=0,r=t.j.length;n=64&&e<128&&(s=T1(s,Rf(1,e-64)));return s}function SH(t,e){var n,r;return r=null,qi(t,(ai(),Zk))&&(n=u(X(t,Zk),96),n.pf(e)&&(r=n.of(e))),r==null&&Pa(t)&&(r=X(Pa(t),e)),r}function smn(t,e){var n;return n=u(X(t,(De(),Vo)),75),eit(e,d4e)?n?nh(n):(n=new Qu,Zt(t,Vo,n)):n&&Zt(t,Vo,null),n}function b_(){b_=V,cCt=(ai(),$Mt),Xht=yMt,f3e=sx,oCt=Yp,b3e=(RH(),$9t),p3e=R9t,w3e=q9t,g3e=B9t,d3e=(Mat(),iCt),Yht=u3e,aCt=l3e,HU=h3e}function _H(t){switch(Iwt(),this.c=new fe,this.d=t,t.g){case 0:case 2:this.a=$yt(_Ct),this.b=Zi;break;case 3:case 1:this.a=_Ct,this.b=Vs}}function amn(t){var e;q6(u(X(t,(De(),bs)),101))&&(e=t.b,N1e((vn(0,e.c.length),u(e.c[0],30))),N1e(u(Oe(e,e.c.length-1),30)))}function omn(t,e){e.Ug("Self-Loop post-processing",1),ms(_i(_i(fc(new ln(null,new gn(t.b,16)),new RQ),new jQ),new $Q),new KB),e.Vg()}function Gle(t,e,n){var r,s;if(t.c)Su(t.c,t.c.i+e),_u(t.c,t.c.j+n);else for(s=new G(t.b);s.a=0&&(n.d=t.t);break;case 3:t.t>=0&&(n.a=t.t)}t.C&&(n.b=t.C.b,n.c=t.C.c)}function w_(){w_=V,DAt=new GM(y7t,0),y1t=new GM(qut,1),x1t=new GM("LINEAR_SEGMENTS",2),zA=new GM("BRANDES_KOEPF",3),qA=new GM(q2e,4)}function m_(){m_=V,HN=new P$(_V,0),zU=new P$(kut,1),qU=new P$(Eut,2),VN=new P$(Tut,3),HN.a=!1,zU.a=!0,qU.a=!1,VN.a=!0}function dk(){dk=V,$N=new N$(_V,0),jN=new N$(kut,1),zN=new N$(Eut,2),qN=new N$(Tut,3),$N.a=!1,jN.a=!0,zN.a=!1,qN.a=!0}function gk(t,e,n,r){var s;return n>=0?t.Sh(e,n,r):(t.Ph()&&(r=(s=t.Fh(),s>=0?t.Ah(r):t.Ph().Th(t,-1-s,null,r))),t.Ch(e,n,r))}function axt(t,e){switch(e){case 7:!t.e&&(t.e=new kn(Ts,t,7,4)),Ir(t.e);return;case 8:!t.d&&(t.d=new kn(Ts,t,8,5)),Ir(t.d);return}K5t(t,e)}function Mi(t,e,n){return n==null?(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),yH(t.o,e)):(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),SO(t.o,e,n)),t}function Xle(t,e){mn();var n,r,s,o;for(n=t,o=e,Lt(t,21)&&!Lt(e,21)&&(n=e,o=t),s=n.Kc();s.Ob();)if(r=s.Pb(),o.Hc(r))return!1;return!0}function fmn(t,e,n,r){if(e.an.b)return!0}return!1}function aot(t,e){return ba(t)?!!Bve[e]:t.Sm?!!t.Sm[e]:Cy(t)?!!Fve[e]:Ty(t)?!!Pve[e]:!1}function dmn(t){var e;e=t.a;do e=u(dr(new rr(sr(ua(e).a.Kc(),new z))),18).c.i,e.k==(Un(),fa)&&t.b.Fc(e);while(e.k==(Un(),fa));t.b=Bh(t.b)}function Qle(t,e){var n,r,s;for(s=t,r=new rr(sr(ua(e).a.Kc(),new z));Mr(r);)n=u(dr(r),18),n.c.i.c&&(s=b.Math.max(s,n.c.i.c.p));return s}function gmn(t,e){var n,r,s;for(s=0,r=u(u(Ai(t.r,e),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s+=n.d.d+n.b.Mf().b+n.d.a,r.Ob()&&(s+=t.w);return s}function pmn(t,e){var n,r,s;for(s=0,r=u(u(Ai(t.r,e),21),87).Kc();r.Ob();)n=u(r.Pb(),117),s+=n.d.b+n.b.Mf().a+n.d.c,r.Ob()&&(s+=t.w);return s}function Jle(t){var e,n,r,s;if(r=0,s=n3(t),s.c.length==0)return 1;for(n=new G(s);n.a=0?t.Lh(h,n,!0):tv(t,o,n)):u(o,69).wk().yk(t,t.hi(),s,n,r)}function vmn(t,e,n,r){var s,o;o=e.pf((ai(),ux))?u(e.of(ux),21):t.j,s=r2n(o),s!=(yV(),Uht)&&(n&&!Z5t(s)||h6t(n6n(t,s,r),e))}function ymn(t){switch(t.g){case 1:return Gm(),RN;case 3:return Gm(),BN;case 2:return Gm(),Kht;case 4:return Gm(),Ght;default:return null}}function xmn(t,e,n){if(t.e)switch(t.b){case 1:hhn(t.c,e,n);break;case 0:fhn(t.c,e,n)}else vie(t.c,e,n);t.a[e.p][n.p]=t.c.i,t.a[n.p][e.p]=t.c.e}function Zle(t){var e,n;if(t==null)return null;for(n=Vt(V0,ue,199,t.length,0,2),e=0;e=0)return s;if(t.ol()){for(r=0;r=s)throw at(new Dy(e,s));if(t.Si()&&(r=t.dd(n),r>=0&&r!=e))throw at(new zn(AN));return t.Xi(e,n)}function oxt(t,e){if(this.a=u(Hr(t),253),this.b=u(Hr(e),253),t.Ed(e)>0||t==(Knt(),xht)||e==(Wnt(),kht))throw at(new zn("Invalid range: "+kie(t,e)))}function the(t){var e,n;for(this.b=new fe,this.c=t,this.a=!1,n=new G(t.a);n.a0),(e&-e)==e)return Ys(e*Dl(t,31)*4656612873077393e-25);do n=Dl(t,31),r=n%e;while(n-r+(e-1)<0);return Ys(r)}function _mn(t,e,n){switch(n.g){case 1:t.a=e.a/2,t.b=0;break;case 2:t.a=e.a,t.b=e.b/2;break;case 3:t.a=e.a/2,t.b=e.b;break;case 4:t.a=0,t.b=e.b/2}}function xO(t,e,n,r){var s,o;for(s=e;s1&&(o=Emn(t,e)),o}function rhe(t){var e;return e=Rt(Ht(ne(t,(ai(),MP))))*b.Math.sqrt((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a).i),new ae(e,e/Rt(Ht(ne(t,DK))))}function cot(t){var e;return t.f&&t.f.Vh()&&(e=u(t.f,54),t.f=u(jb(t,e),84),t.f!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,8,e,t.f))),t.f}function uot(t){var e;return t.i&&t.i.Vh()&&(e=u(t.i,54),t.i=u(jb(t,e),84),t.i!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,7,e,t.i))),t.i}function yo(t){var e;return t.b&&t.b.Db&64&&(e=t.b,t.b=u(jb(t,e),19),t.b!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,21,e,t.b))),t.b}function IH(t,e){var n,r,s;t.d==null?(++t.e,++t.f):(r=e.Bi(),X6n(t,t.f+1),s=(r&xi)%t.d.length,n=t.d[s],!n&&(n=t.d[s]=t.dk()),n.Fc(e),++t.f)}function lxt(t,e,n){var r;return e.tk()?!1:e.Ik()!=-2?(r=e.ik(),r==null?n==null:Ti(r,n)):e.qk()==t.e.Dh()&&n==null}function OH(){var t;oh(16,pbe),t=zoe(16),this.b=Vt(Tht,iN,302,t,0,1),this.c=Vt(Tht,iN,302,t,0,1),this.a=null,this.e=null,this.i=0,this.f=t-1,this.g=0}function Ig(t){bvt.call(this),this.k=(Un(),xs),this.j=(oh(6,c3),new wu(6)),this.b=(oh(2,c3),new wu(2)),this.d=new qnt,this.f=new Q2t,this.a=t}function Lmn(t){var e,n;t.c.length<=1||(e=c0e(t,(ve(),Er)),Wfe(t,u(e.a,17).a,u(e.b,17).a),n=c0e(t,Gn),Wfe(t,u(n.a,17).a,u(n.b,17).a))}function Dmn(t,e,n){var r,s;for(s=t.a.b,r=s.c.length;r102?-1:t<=57?t-48:t<65?-1:t<=70?t-65+10:t<97?-1:t-97+10}function got(t,e){if(t==null)throw at(new A6("null key in entry: null="+e));if(e==null)throw at(new A6("null value in entry: "+t+"=null"))}function Omn(t,e){for(var n,r;t.Ob();)if(!e.Ob()||(n=t.Pb(),r=e.Pb(),!($t(n)===$t(r)||n!=null&&Ti(n,r))))return!1;return!e.Ob()}function ahe(t,e){var n;return n=lt(ut(ma,1),No,28,15,[Oat(t.a[0],e),Oat(t.a[1],e),Oat(t.a[2],e)]),t.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function ohe(t,e){var n;return n=lt(ut(ma,1),No,28,15,[oH(t.a[0],e),oH(t.a[1],e),oH(t.a[2],e)]),t.d&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function fxt(t,e,n){q6(u(X(e,(De(),bs)),101))||(S3t(t,e,Pp(e,n)),S3t(t,e,Pp(e,(ve(),Er))),S3t(t,e,Pp(e,Hn)),mn(),Ds(e.j,new dUt(t)))}function che(t){var e,n;for(t.c||JTn(t),n=new Qu,e=new G(t.a),et(e);e.a0&&(qn(0,e.length),e.charCodeAt(0)==43)?(qn(1,e.length+1),e.substr(1)):e))}function Kmn(t){var e;return t==null?null:new Sb((e=su(t,!0),e.length>0&&(qn(0,e.length),e.charCodeAt(0)==43)?(qn(1,e.length+1),e.substr(1)):e))}function gxt(t,e,n,r,s,o,h,d){var m,k;r&&(m=r.a[0],m&&gxt(t,e,n,m,s,o,h,d),Eot(t,n,r.d,s,o,h,d)&&e.Fc(r),k=r.a[1],k&&gxt(t,e,n,k,s,o,h,d))}function u5(t,e,n){try{return vm(iat(t,e,n),1)}catch(r){throw r=es(r),Lt(r,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(r)}}function dhe(t,e,n){try{return vm(iat(t,e,n),0)}catch(r){throw r=es(r),Lt(r,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(r)}}function ghe(t,e,n){try{return vm(iat(t,e,n),2)}catch(r){throw r=es(r),Lt(r,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(r)}}function phe(t,e){if(t.g==-1)throw at(new Xu);t.Xj();try{t.d.hd(t.g,e),t.f=t.d.j}catch(n){throw n=es(n),Lt(n,77)?at(new Th):at(n)}}function Wmn(t){var e,n,r,s,o;for(r=new G(t.b);r.ao&&ls(e,o,null),e}function Ymn(t,e){var n,r;if(r=t.gc(),e==null){for(n=0;n0&&(m+=s),k[T]=h,h+=d*(m+r)}function whe(t){var e,n,r;for(r=t.f,t.n=Vt(ma,No,28,r,15,1),t.d=Vt(ma,No,28,r,15,1),e=0;e0?t.c:0),++s;t.b=r,t.d=o}function khe(t,e){var n;return n=lt(ut(ma,1),No,28,15,[uxt(t,(A1(),Ac),e),uxt(t,xu,e),uxt(t,Lc,e)]),t.f&&(n[0]=b.Math.max(n[0],n[2]),n[2]=n[0]),n}function rvn(t,e,n){var r;try{cV(t,e+t.j,n+t.k,!1,!0)}catch(s){throw s=es(s),Lt(s,77)?(r=s,at(new Bo(r.g+LV+e+ao+n+")."))):at(s)}}function ivn(t,e,n){var r;try{cV(t,e+t.j,n+t.k,!0,!1)}catch(s){throw s=es(s),Lt(s,77)?(r=s,at(new Bo(r.g+LV+e+ao+n+")."))):at(s)}}function Ehe(t){var e;qi(t,(De(),Tv))&&(e=u(X(t,Tv),21),e.Hc((e3(),Qf))?(e.Mc(Qf),e.Fc(Jf)):e.Hc(Jf)&&(e.Mc(Jf),e.Fc(Qf)))}function The(t){var e;qi(t,(De(),Tv))&&(e=u(X(t,Tv),21),e.Hc((e3(),t1))?(e.Mc(t1),e.Fc(bf)):e.Hc(bf)&&(e.Mc(bf),e.Fc(t1)))}function yot(t,e,n,r){var s,o,h,d;return t.a==null&&a4n(t,e),h=e.b.j.c.length,o=n.d.p,d=r.d.p,s=d-1,s<0&&(s=h-1),o<=s?t.a[s]-t.a[o]:t.a[h-1]-t.a[o]+t.a[s]}function svn(t){var e,n;if(!t.b)for(t.b=hq(u(t.f,27).kh().i),n=new Zn(u(t.f,27).kh());n.e!=n.i.gc();)e=u(ar(n),135),ge(t.b,new Qnt(e));return t.b}function avn(t){var e,n;if(!t.e)for(t.e=hq(Jit(u(t.f,27)).i),n=new Zn(Jit(u(t.f,27)));n.e!=n.i.gc();)e=u(ar(n),123),ge(t.e,new wGt(e));return t.e}function Che(t){var e,n;if(!t.a)for(t.a=hq(Jz(u(t.f,27)).i),n=new Zn(Jz(u(t.f,27)));n.e!=n.i.gc();)e=u(ar(n),27),ge(t.a,new sit(t,e));return t.a}function Jm(t){var e;if(!t.C&&(t.D!=null||t.B!=null))if(e=K9n(t),e)t.hl(e);else try{t.hl(null)}catch(n){if(n=es(n),!Lt(n,63))throw at(n)}return t.C}function ovn(t){switch(t.q.g){case 5:Yhe(t,(ve(),Hn)),Yhe(t,Er);break;case 4:Jge(t,(ve(),Hn)),Jge(t,Er);break;default:t1e(t,(ve(),Hn)),t1e(t,Er)}}function cvn(t){switch(t.q.g){case 5:Xhe(t,(ve(),Jn)),Xhe(t,Gn);break;case 4:Zge(t,(ve(),Jn)),Zge(t,Gn);break;default:e1e(t,(ve(),Jn)),e1e(t,Gn)}}function l5(t,e){var n,r,s;for(s=new Sa,r=t.Kc();r.Ob();)n=u(r.Pb(),36),B7(n,s.a,0),s.a+=n.f.a+e,s.b=b.Math.max(s.b,n.f.b);return s.b>0&&(s.b+=e),s}function FH(t,e){var n,r,s;for(s=new Sa,r=t.Kc();r.Ob();)n=u(r.Pb(),36),B7(n,0,s.b),s.b+=n.f.b+e,s.a=b.Math.max(s.a,n.f.a);return s.a>0&&(s.a+=e),s}function She(t){var e,n,r;for(r=xi,n=new G(t.a);n.a>16==6?t.Cb.Th(t,5,F1,e):(r=yo(u(En((n=u(jn(t,16),29),n||t.ii()),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function uvn(t){$E();var e=t.e;if(e&&e.stack){var n=e.stack,r=e+` +`;return n.substring(0,r.length)==r&&(n=n.substring(r.length)),n.split(` +`)}return[]}function lvn(t){var e;return e=(Doe(),Yve),e[t>>>28]|e[t>>24&15]<<4|e[t>>20&15]<<8|e[t>>16&15]<<12|e[t>>12&15]<<16|e[t>>8&15]<<20|e[t>>4&15]<<24|e[t&15]<<28}function Lhe(t){var e,n,r;t.b==t.c&&(r=t.a.length,n=W4t(b.Math.max(8,r))<<1,t.b!=0?(e=Ff(t.a,n),Uoe(t,e,r),t.a=e,t.b=0):wy(t.a,n),t.c=r)}function hvn(t,e){var n;return n=t.b,n.pf((ai(),Pl))?n.ag()==(ve(),Gn)?-n.Mf().a-Rt(Ht(n.of(Pl))):e+Rt(Ht(n.of(Pl))):n.ag()==(ve(),Gn)?-n.Mf().a:e}function EO(t){var e;return t.b.c.length!=0&&u(Oe(t.b,0),72).a?u(Oe(t.b,0),72).a:(e=Zit(t),e??""+(t.c?Xo(t.c.a,t,0):-1))}function BH(t){var e;return t.f.c.length!=0&&u(Oe(t.f,0),72).a?u(Oe(t.f,0),72).a:(e=Zit(t),e??""+(t.i?Xo(t.i.j,t,0):-1))}function fvn(t,e){var n,r;if(e<0||e>=t.gc())return null;for(n=e;n0?t.c:0),s=b.Math.max(s,e.d),++r;t.e=o,t.b=s}function gvn(t){var e,n;if(!t.b)for(t.b=hq(u(t.f,123).kh().i),n=new Zn(u(t.f,123).kh());n.e!=n.i.gc();)e=u(ar(n),135),ge(t.b,new Qnt(e));return t.b}function pvn(t,e){var n,r,s;if(e.dc())return _E(),_E(),GP;for(n=new fZt(t,e.gc()),s=new Zn(t);s.e!=s.i.gc();)r=ar(s),e.Hc(r)&&Or(n,r);return n}function mxt(t,e,n,r){return e==0?r?(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),t.o):(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),RI(t.o)):AH(t,e,n,r)}function kot(t){var e,n;if(t.rb)for(e=0,n=t.rb.i;e>22),s+=r>>22,s<0)?!1:(t.l=n&Il,t.m=r&Il,t.h=s&Fg,!0)}function Eot(t,e,n,r,s,o,h){var d,m;return!(e.Te()&&(m=t.a.Ne(n,r),m<0||!s&&m==0)||e.Ue()&&(d=t.a.Ne(n,o),d>0||!h&&d==0))}function vvn(t,e){g7();var n;if(n=t.j.g-e.j.g,n!=0)return 0;switch(t.j.g){case 2:return Hat(e,ySt)-Hat(t,ySt);case 4:return Hat(t,vSt)-Hat(e,vSt)}return 0}function yvn(t){switch(t.g){case 0:return Oft;case 1:return Nft;case 2:return Pft;case 3:return Fft;case 4:return kG;case 5:return Bft;default:return null}}function qo(t,e,n){var r,s;return r=(s=new Unt,uw(s,e),mu(s,n),Or((!t.c&&(t.c=new Jt(Ov,t,12,10)),t.c),s),s),Sp(r,0),Hy(r,1),Mp(r,!0),Dp(r,!0),r}function pk(t,e){var n,r;if(e>=t.i)throw at(new Grt(e,t.i));return++t.j,n=t.g[e],r=t.i-e-1,r>0&&Xc(t.g,e+1,t.g,e,r),ls(t.g,--t.i,null),t.Qi(e,n),t.Ni(),n}function Dhe(t,e){var n,r;return t.Db>>16==17?t.Cb.Th(t,21,mf,e):(r=yo(u(En((n=u(jn(t,16),29),n||t.ii()),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function xvn(t){var e,n,r,s;for(mn(),Ds(t.c,t.a),s=new G(t.c);s.an.a.c.length))throw at(new zn("index must be >= 0 and <= layer node count"));t.c&&zu(t.c.a,t),t.c=n,n&&Sm(n.a,e,t)}function Phe(t,e){var n,r,s;for(r=new rr(sr(Dg(t).a.Kc(),new z));Mr(r);)return n=u(dr(r),18),s=u(e.Kb(n),10),new FC(Hr(s.n.b+s.o.b/2));return UC(),UC(),yht}function Fhe(t,e){this.c=new _r,this.a=t,this.b=e,this.d=u(X(t,(oe(),G5)),312),$t(X(t,(De(),iAt)))===$t((qI(),EG))?this.e=new MKt:this.e=new DKt}function y_(t,e){var n,r;return r=null,t.pf((ai(),Zk))&&(n=u(t.of(Zk),96),n.pf(e)&&(r=n.of(e))),r==null&&t.Tf()&&(r=t.Tf().of(e)),r==null&&(r=Se(e)),r}function Tot(t,e){var n,r;n=t.fd(e);try{return r=n.Pb(),n.Qb(),r}catch(s){throw s=es(s),Lt(s,112)?at(new Bo("Can't remove element "+e)):at(s)}}function Lvn(t,e){var n,r,s;if(r=new x$,s=new Q4t(r.q.getFullYear()-Wb,r.q.getMonth(),r.q.getDate()),n=$7n(t,e,s),n==0||n0?e:0),++n;return new ae(r,s)}function Ext(t,e){var n,r;return t.Db>>16==6?t.Cb.Th(t,6,Ts,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),$K)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Txt(t,e){var n,r;return t.Db>>16==7?t.Cb.Th(t,1,zP,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),SIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Cxt(t,e){var n,r;return t.Db>>16==9?t.Cb.Th(t,9,bi,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),AIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function jhe(t,e){var n,r;return t.Db>>16==5?t.Cb.Th(t,9,YK,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),Zp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function $he(t,e){var n,r;return t.Db>>16==7?t.Cb.Th(t,6,F1,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),eb)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Sxt(t,e){var n,r;return t.Db>>16==3?t.Cb.Th(t,0,HP,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),Jp)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function zhe(){this.a=new WR,this.g=new OH,this.j=new OH,this.b=new _r,this.d=new OH,this.i=new OH,this.k=new _r,this.c=new _r,this.e=new _r,this.f=new _r}function Ivn(t,e,n){var r,s,o;for(n<0&&(n=0),o=t.i,s=n;suut)return _7(t,r);if(r==t)return!0}}return!1}function Nvn(t){switch(hz(),t.q.g){case 5:T1e(t,(ve(),Hn)),T1e(t,Er);break;case 4:Cde(t,(ve(),Hn)),Cde(t,Er);break;default:Ape(t,(ve(),Hn)),Ape(t,Er)}}function Pvn(t){switch(hz(),t.q.g){case 5:H1e(t,(ve(),Jn)),H1e(t,Gn);break;case 4:Kle(t,(ve(),Jn)),Kle(t,Gn);break;default:Lpe(t,(ve(),Jn)),Lpe(t,Gn)}}function Fvn(t){var e,n;e=u(X(t,(Vf(),N3e)),17),e?(n=e.a,n==0?Zt(t,(Pb(),WU),new Kat):Zt(t,(Pb(),WU),new pq(n))):Zt(t,(Pb(),WU),new pq(1))}function Bvn(t,e){var n;switch(n=t.i,e.g){case 1:return-(t.n.b+t.o.b);case 2:return t.n.a-n.o.a;case 3:return t.n.b-n.o.b;case 4:return-(t.n.a+t.o.a)}return 0}function Rvn(t,e){switch(t.g){case 0:return e==(Rh(),s2)?gG:pG;case 1:return e==(Rh(),s2)?gG:YN;case 2:return e==(Rh(),s2)?YN:pG;default:return YN}}function CO(t,e){var n,r,s;for(zu(t.a,e),t.e-=e.r+(t.a.c.length==0?0:t.c),s=O7t,r=new G(t.a);r.a>16==3?t.Cb.Th(t,12,bi,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),CIt)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Axt(t,e){var n,r;return t.Db>>16==11?t.Cb.Th(t,10,bi,e):(r=yo(u(En((n=u(jn(t,16),29),n||(zc(),_It)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function qhe(t,e){var n,r;return t.Db>>16==10?t.Cb.Th(t,11,mf,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),tb)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function Hhe(t,e){var n,r;return t.Db>>16==10?t.Cb.Th(t,12,vf,e):(r=yo(u(En((n=u(jn(t,16),29),n||(wn(),K3)),t.Db>>16),19)),t.Cb.Th(t,r.n,r.f,e))}function of(t){var e;return!(t.Bb&1)&&t.r&&t.r.Vh()&&(e=u(t.r,54),t.r=u(jb(t,e),142),t.r!=e&&t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,9,8,e,t.r))),t.r}function Cot(t,e,n){var r;return r=lt(ut(ma,1),No,28,15,[t6t(t,(A1(),Ac),e,n),t6t(t,xu,e,n),t6t(t,Lc,e,n)]),t.f&&(r[0]=b.Math.max(r[0],r[2]),r[2]=r[0]),r}function jvn(t,e){var n,r,s;if(s=umn(t,e),s.c.length!=0)for(Ds(s,new Z9),n=s.c.length,r=0;r>19,k=e.h>>19,m!=k?k-m:(s=t.h,d=e.h,s!=d?s-d:(r=t.m,h=e.m,r!=h?r-h:(n=t.l,o=e.l,n-o)))}function RH(){RH=V,H9t=(aV(),Hht),q9t=new un(_8t,H9t),z9t=(Mq(),qht),$9t=new un(A8t,z9t),j9t=(TH(),zht),R9t=new un(L8t,j9t),B9t=new un(D8t,(Pn(),!0))}function x_(t,e,n){var r,s;r=e*n,Lt(t.g,154)?(s=ek(t),s.f.d?s.f.a||(t.d.a+=r+gd):(t.d.d-=r+gd,t.d.a+=r+gd)):Lt(t.g,10)&&(t.d.d-=r,t.d.a+=2*r)}function Vhe(t,e,n){var r,s,o,h,d;for(s=t[n.g],d=new G(e.d);d.a0?t.b:0),++n;e.b=r,e.e=s}function Uhe(t){var e,n,r;if(r=t.b,FYt(t.i,r.length)){for(n=r.length*2,t.b=Vt(Tht,iN,302,n,0,1),t.c=Vt(Tht,iN,302,n,0,1),t.f=n-1,t.i=0,e=t.a;e;e=e.c)NO(t,e,e);++t.g}}function Gvn(t,e,n,r){var s,o,h,d;for(s=0;sh&&(d=h/r),s>o&&(m=o/s),qd(t,b.Math.min(d,m)),t}function Wvn(){fV();var t,e;try{if(e=u(jxt((Eb(),yf),hT),2113),e)return e}catch(n){if(n=es(n),Lt(n,103))t=n,Ayt((Ur(),t));else throw at(n)}return new W8}function Yvn(){fV();var t,e;try{if(e=u(jxt((Eb(),yf),hf),2040),e)return e}catch(n){if(n=es(n),Lt(n,103))t=n,Ayt((Ur(),t));else throw at(n)}return new l6}function Xvn(){eae();var t,e;try{if(e=u(jxt((Eb(),yf),Cw),2122),e)return e}catch(n){if(n=es(n),Lt(n,103))t=n,Ayt((Ur(),t));else throw at(n)}return new Z8}function Qvn(t,e,n){var r,s;return s=t.e,t.e=e,t.Db&4&&!(t.Db&1)&&(r=new ha(t,1,4,s,e),n?n.nj(r):n=r),s!=e&&(e?n=H7(t,QH(t,e),n):n=H7(t,t.a,n)),n}function Ghe(){x$.call(this),this.e=-1,this.a=!1,this.p=Ga,this.k=-1,this.c=-1,this.b=-1,this.g=!1,this.f=-1,this.j=-1,this.n=-1,this.i=-1,this.d=-1,this.o=Ga}function Jvn(t,e){var n,r,s;if(r=t.b.d.d,t.a||(r+=t.b.d.a),s=e.b.d.d,e.a||(s+=e.b.d.a),n=Bi(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function Zvn(t,e){var n,r,s;if(r=t.b.b.d,t.a||(r+=t.b.b.a),s=e.b.b.d,e.a||(s+=e.b.b.a),n=Bi(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function tyn(t,e){var n,r,s;if(r=t.b.g.d,t.a||(r+=t.b.g.a),s=e.b.g.d,e.a||(s+=e.b.g.a),n=Bi(r,s),n==0){if(!t.a&&e.a)return-1;if(!e.a&&t.a)return 1}return n}function Dxt(){Dxt=V,J3e=el(ri(ri(ri(new Fs,(Ua(),cu),(Za(),sSt)),cu,aSt),Zo,oSt),Zo,WCt),t4e=ri(ri(new Fs,cu,zCt),cu,YCt),Z3e=el(new Fs,Zo,QCt)}function eyn(t){var e,n,r,s,o;for(e=u(X(t,(oe(),MA)),85),o=t.n,r=e.Cc().Kc();r.Ob();)n=u(r.Pb(),314),s=n.i,s.c+=o.a,s.d+=o.b,n.c?f0e(n):d0e(n);Zt(t,MA,null)}function nyn(t,e,n){var r,s;switch(s=t.b,r=s.d,e.g){case 1:return-r.d-n;case 2:return s.o.a+r.c+n;case 3:return s.o.b+r.a+n;case 4:return-r.b-n;default:return-1}}function ryn(t,e,n){var r,s;for(n.Ug("Interactive node placement",1),t.a=u(X(e,(oe(),G5)),312),s=new G(e.b);s.a0&&(h=(o&xi)%t.d.length,s=I6t(t,h,o,e),s)?(d=s.nd(n),d):(r=t.ck(o,e,n),t.c.Fc(r),null)}function Oxt(t,e){var n,r,s,o;switch(Lp(t,e).Kl()){case 3:case 2:{for(n=v5(e),s=0,o=n.i;s=0;r--)if(hn(t[r].d,e)||hn(t[r].d,n)){t.length>=r+1&&t.splice(0,r+1);break}return t}function _O(t,e){var n;return ec(t)&&ec(e)&&(n=t/e,oN0&&(t.b+=2,t.a+=r):(t.b+=1,t.a+=b.Math.min(r,s))}function Zhe(t){var e;e=u(X(u(jh(t.b,0),39),(Cc(),SLt)),107),Zt(t,(ji(),zT),new ae(0,0)),U0e(new FI,t,e.b+e.c-Rt(Ht(X(t,R1t))),e.d+e.a-Rt(Ht(X(t,j1t))))}function tfe(t,e){var n,r;if(r=!1,ba(e)&&(r=!0,Y6(t,new Oy(Gr(e)))),r||Lt(e,242)&&(r=!0,Y6(t,(n=_vt(u(e,242)),new cE(n)))),!r)throw at(new Znt(LTt))}function yyn(t,e,n,r){var s,o,h;return s=new Tg(t.e,1,10,(h=e.c,Lt(h,90)?u(h,29):(wn(),xf)),(o=n.c,Lt(o,90)?u(o,29):(wn(),xf)),Np(t,e),!1),r?r.nj(s):r=s,r}function Fxt(t){var e,n;switch(u(X(Pa(t),(De(),Q_t)),429).g){case 0:return e=t.n,n=t.o,new ae(e.a+n.a/2,e.b+n.b/2);case 1:return new io(t.n);default:return null}}function AO(){AO=V,TG=new uS(r0,0),FSt=new uS("LEFTUP",1),RSt=new uS("RIGHTUP",2),PSt=new uS("LEFTDOWN",3),BSt=new uS("RIGHTDOWN",4),Rft=new uS("BALANCED",5)}function xyn(t,e,n){var r,s,o;if(r=Bi(t.a[e.p],t.a[n.p]),r==0){if(s=u(X(e,(oe(),Uk)),15),o=u(X(n,Uk),15),s.Hc(n))return-1;if(o.Hc(e))return 1}return r}function kyn(t){switch(t.g){case 1:return new mtt;case 2:return new vtt;case 3:return new wtt;case 0:return null;default:throw at(new zn(Clt+(t.f!=null?t.f:""+t.g)))}}function Bxt(t,e,n){switch(e){case 1:!t.n&&(t.n=new Jt(Po,t,1,7)),Ir(t.n),!t.n&&(t.n=new Jt(Po,t,1,7)),gs(t.n,u(n,16));return;case 2:n7(t,Gr(n));return}r5t(t,e,n)}function Rxt(t,e,n){switch(e){case 3:zm(t,Rt(Ht(n)));return;case 4:qm(t,Rt(Ht(n)));return;case 5:Su(t,Rt(Ht(n)));return;case 6:_u(t,Rt(Ht(n)));return}Bxt(t,e,n)}function jH(t,e,n){var r,s,o;o=(r=new Unt,r),s=hd(o,e,null),s&&s.oj(),mu(o,n),Or((!t.c&&(t.c=new Jt(Ov,t,12,10)),t.c),o),Sp(o,0),Hy(o,1),Mp(o,!0),Dp(o,!0)}function jxt(t,e){var n,r,s;return n=iS(t.i,e),Lt(n,241)?(s=u(n,241),s.zi()==null,s.wi()):Lt(n,507)?(r=u(n,2037),s=r.b,s):null}function Eyn(t,e,n,r){var s,o;return Hr(e),Hr(n),o=u(_S(t.d,e),17),_ae(!!o,"Row %s not in %s",e,t.e),s=u(_S(t.b,n),17),_ae(!!s,"Column %s not in %s",n,t.c),Rce(t,o.a,s.a,r)}function efe(t,e,n,r,s,o,h){var d,m,k,T,A;if(T=s[o],k=o==h-1,d=k?r:0,A=yhe(d,T),r!=10&<(ut(t,h-o),e[o],n[o],d,A),!k)for(++o,m=0;m1||d==-1?(o=u(m,15),s.Wb(awn(t,o))):s.Wb(lct(t,u(m,58)))))}function Dyn(t,e,n,r){hYt();var s=vht;function o(){for(var h=0;h0)return!1;return!0}function Oyn(t){var e,n,r,s,o;for(r=new sw(new mr(t.b).a);r.b;)n=Um(r),e=u(n.ld(),10),o=u(u(n.md(),42).a,10),s=u(u(n.md(),42).b,8),ki(k1(e.n),ki(Oa(o.n),s))}function Nyn(t){switch(u(X(t.b,(De(),V_t)),387).g){case 1:ms(Wo(fc(new ln(null,new gn(t.d,16)),new WD),new y4),new vJ);break;case 2:L8n(t);break;case 0:o5n(t)}}function Pyn(t,e,n){var r,s,o;for(r=n,!r&&(r=new S6),r.Ug("Layout",t.a.c.length),o=new G(t.a);o.axlt)return n;s>-1e-6&&++n}return n}function zxt(t,e){var n;e!=t.b?(n=null,t.b&&(n=nq(t.b,t,-4,n)),e&&(n=gk(e,t,-4,n)),n=Mue(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,e,e))}function ife(t,e){var n;e!=t.f?(n=null,t.f&&(n=nq(t.f,t,-1,n)),e&&(n=gk(e,t,-1,n)),n=Due(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,0,e,e))}function jyn(t,e,n,r){var s,o,h,d;return Hl(t.e)&&(s=e.Lk(),d=e.md(),o=n.md(),h=Ib(t,1,s,d,o,s.Jk()?$7(t,s,o,Lt(s,102)&&(u(s,19).Bb&po)!=0):-1,!0),r?r.nj(h):r=h),r}function sfe(t){var e,n,r;if(t==null)return null;if(n=u(t,15),n.dc())return"";for(r=new dp,e=n.Kc();e.Ob();)Mo(r,(Ni(),Gr(e.Pb()))),r.a+=" ";return Wrt(r,r.a.length-1)}function afe(t){var e,n,r;if(t==null)return null;if(n=u(t,15),n.dc())return"";for(r=new dp,e=n.Kc();e.Ob();)Mo(r,(Ni(),Gr(e.Pb()))),r.a+=" ";return Wrt(r,r.a.length-1)}function $yn(t,e,n){var r,s;return r=t.c[e.c.p][e.p],s=t.c[n.c.p][n.p],r.a!=null&&s.a!=null?Fit(r.a,s.a):r.a!=null?-1:s.a!=null?1:0}function zyn(t,e,n){return n.Ug("Tree layout",1),EI(t.b),E1(t.b,(bk(),sK),sK),E1(t.b,WA,WA),E1(t.b,YA,YA),E1(t.b,XA,XA),t.a=XO(t.b,e),Pyn(t,e,n.eh(1)),n.Vg(),e}function qyn(t,e){var n,r,s,o,h,d;if(e)for(o=e.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Tb(),y2):new _b(n);d.Ob();)h=u(d.Pb(),17),s=qE(e,h.a),r=new _Gt(t),Xln(r.a,s)}function Hyn(t,e){var n,r,s,o,h,d;if(e)for(o=e.a.length,n=new W2(o),d=(n.b-n.a)*n.c<0?(Tb(),y2):new _b(n);d.Ob();)h=u(d.Pb(),17),s=qE(e,h.a),r=new mGt(t),Yln(r.a,s)}function Vyn(t){var e;if(t!=null&&t.length>0&&Va(t,t.length-1)==33)try{return e=pde(Lh(t,0,t.length-1)),e.e==null}catch(n){if(n=es(n),!Lt(n,33))throw at(n)}return!1}function Uyn(t,e,n){var r,s,o;switch(r=Pa(e),s=fH(r),o=new Yc,hc(o,e),n.g){case 1:Xs(o,bO(hk(s)));break;case 2:Xs(o,hk(s))}return Zt(o,(De(),D3),Ht(X(t,D3))),o}function qxt(t){var e,n;return e=u(dr(new rr(sr(ua(t.a).a.Kc(),new z))),18),n=u(dr(new rr(sr(_s(t.a).a.Kc(),new z))),18),Ie(Me(X(e,(oe(),vd))))||Ie(Me(X(n,vd)))}function Qy(){Qy=V,XN=new HM("ONE_SIDE",0),mG=new HM("TWO_SIDES_CORNER",1),vG=new HM("TWO_SIDES_OPPOSING",2),wG=new HM("THREE_SIDES",3),bG=new HM("FOUR_SIDES",4)}function ofe(t,e){var n,r,s,o;for(o=new fe,s=0,r=e.Kc();r.Ob();){for(n=he(u(r.Pb(),17).a+s);n.a=t.f)break;In(o.c,n)}return o}function Gyn(t,e){var n,r,s,o,h;for(o=new G(e.a);o.a0&&Mhe(this,this.c-1,(ve(),Jn)),this.c0&&t[0].length>0&&(this.c=Ie(Me(X(Pa(t[0][0]),(oe(),ZSt))))),this.a=Vt(nke,ue,2117,t.length,0,2),this.b=Vt(rke,ue,2118,t.length,0,2),this.d=new Cue}function Qyn(t){return t.c.length==0?!1:(vn(0,t.c.length),u(t.c[0],18)).c.i.k==(Un(),fa)?!0:t5(Wo(new ln(null,new gn(t,16)),new WJ),new YJ)}function lfe(t,e){var n,r,s,o,h,d,m;for(d=n3(e),o=e.f,m=e.g,h=b.Math.sqrt(o*o+m*m),s=0,r=new G(d);r.a=0?(n=_O(t,EV),r=mO(t,EV)):(e=Ab(t,1),n=_O(e,5e8),r=mO(e,5e8),r=Qa(Rf(r,1),sa(t,1))),T1(Rf(r,32),sa(n,So))}function dfe(t,e,n){var r,s;switch(r=(ur(e.b!=0),u(Oh(e,e.a.a),8)),n.g){case 0:r.b=0;break;case 2:r.b=t.f;break;case 3:r.a=0;break;default:r.a=t.g}return s=Dr(e,0),kI(s,r),e}function gfe(t,e,n,r){var s,o,h,d,m;switch(m=t.b,o=e.d,h=o.j,d=sxt(h,m.d[h.g],n),s=ki(Oa(o.n),o.a),o.j.g){case 1:case 3:d.a+=s.a;break;case 2:case 4:d.b+=s.b}hs(r,d,r.c.b,r.c)}function u3n(t,e,n){var r,s,o,h;for(h=Xo(t.e,e,0),o=new W2t,o.b=n,r=new La(t.e,h);r.b1;e>>=1)e&1&&(r=Z4(r,n)),n.d==1?n=Z4(n,n):n=new Dle(Q0e(n.a,n.d,Vt(Fr,ii,28,n.d<<1,15,1)));return r=Z4(r,n),r}function Qxt(){Qxt=V;var t,e,n,r;for(L9t=Vt(ma,No,28,25,15,1),D9t=Vt(ma,No,28,33,15,1),r=152587890625e-16,e=32;e>=0;e--)D9t[e]=r,r*=.5;for(n=1,t=24;t>=0;t--)L9t[t]=n,n*=.5}function p3n(t){var e,n;if(Ie(Me(ne(t,(De(),L3))))){for(n=new rr(sr(Og(t).a.Kc(),new z));Mr(n);)if(e=u(dr(n),74),Zm(e)&&Ie(Me(ne(e,Mw))))return!0}return!1}function pfe(t,e){var n,r,s;qs(t.f,e)&&(e.b=t,r=e.c,Xo(t.j,r,0)!=-1||ge(t.j,r),s=e.d,Xo(t.j,s,0)!=-1||ge(t.j,s),n=e.a.b,n.c.length!=0&&(!t.i&&(t.i=new Fle(t)),ypn(t.i,n)))}function b3n(t){var e,n,r,s,o;return n=t.c.d,r=n.j,s=t.d.d,o=s.j,r==o?n.p=0&&hn(t.substr(e,3),"GMT")||e>=0&&hn(t.substr(e,3),"UTC"))&&(n[0]=e+3),Lkt(t,n,r)}function m3n(t,e){var n,r,s,o,h;for(o=t.g.a,h=t.g.b,r=new G(t.d);r.an;o--)t[o]|=e[o-n-1]>>>h,t[o-1]=e[o-n-1]<0&&Xc(t.g,e,t.g,e+r,d),h=n.Kc(),t.i+=r,s=0;s>4&15,o=t[r]&15,h[s++]=LIt[n],h[s++]=LIt[o];return af(h,0,h.length)}function Hu(t){var e,n;return t>=po?(e=cN+(t-po>>10&1023)&js,n=56320+(t-po&1023)&js,String.fromCharCode(e)+(""+String.fromCharCode(n))):String.fromCharCode(t&js)}function L3n(t,e){Ay();var n,r,s,o;return s=u(u(Ai(t.r,e),21),87),s.gc()>=2?(r=u(s.Kc().Pb(),117),n=t.u.Hc((wl(),yL)),o=t.u.Hc(n8),!r.a&&!n&&(s.gc()==2||o)):!1}function mfe(t,e,n,r,s){var o,h,d;for(o=i0e(t,e,n,r,s),d=!1;!o;)YH(t,s,!0),d=!0,o=i0e(t,e,n,r,s);d&&YH(t,s,!1),h=mat(s),h.c.length!=0&&(t.d&&t.d.Gg(h),mfe(t,s,n,r,h))}function HH(){HH=V,Gdt=new dS(r0,0),ZMt=new dS("DIRECTED",1),eIt=new dS("UNDIRECTED",2),QMt=new dS("ASSOCIATION",3),tIt=new dS("GENERALIZATION",4),JMt=new dS("DEPENDENCY",5)}function D3n(t,e){var n;if(!ed(t))throw at(new Ro(Pwe));switch(n=ed(t),e.g){case 1:return-(t.j+t.f);case 2:return t.i-n.g;case 3:return t.j-n.f;case 4:return-(t.i+t.g)}return 0}function M3n(t,e,n){var r,s,o;return r=e.Lk(),o=e.md(),s=r.Jk()?Ib(t,4,r,o,null,$7(t,r,o,Lt(r,102)&&(u(r,19).Bb&po)!=0),!0):Ib(t,r.tk()?2:1,r,o,r.ik(),-1,!0),n?n.nj(s):n=s,n}function D7(t,e){var n,r;for(Wn(e),r=t.b.c.length,ge(t.b,e);r>0;){if(n=r,r=(r-1)/2|0,t.a.Ne(Oe(t.b,r),e)<=0)return Mh(t.b,n,e),!0;Mh(t.b,n,Oe(t.b,r))}return Mh(t.b,r,e),!0}function t6t(t,e,n,r){var s,o;if(s=0,n)s=oH(t.a[n.g][e.g],r);else for(o=0;o=d)}function vfe(t){switch(t.g){case 0:return new Stt;case 1:return new _tt;default:throw at(new zn("No implementation is available for the width approximator "+(t.f!=null?t.f:""+t.g)))}}function e6t(t,e,n,r){var s;if(s=!1,ba(r)&&(s=!0,ME(e,n,Gr(r))),s||Ty(r)&&(s=!0,e6t(t,e,n,r)),s||Lt(r,242)&&(s=!0,Q2(e,n,u(r,242))),!s)throw at(new Znt(LTt))}function O3n(t,e){var n,r,s;if(n=e.qi(t.a),n&&(s=L1((!n.b&&(n.b=new Ul((wn(),wo),Mc,n)),n.b),lf),s!=null)){for(r=1;r<(il(),ZIt).length;++r)if(hn(ZIt[r],s))return r}return 0}function N3n(t,e){var n,r,s;if(n=e.qi(t.a),n&&(s=L1((!n.b&&(n.b=new Ul((wn(),wo),Mc,n)),n.b),lf),s!=null)){for(r=1;r<(il(),tOt).length;++r)if(hn(tOt[r],s))return r}return 0}function yfe(t,e){var n,r,s,o;if(Wn(e),o=t.a.gc(),o0?1:0;o.a[s]!=n;)o=o.a[s],s=t.a.Ne(n.d,o.d)>0?1:0;o.a[s]=r,r.b=n.b,r.a[0]=n.a[0],r.a[1]=n.a[1],n.a[0]=null,n.a[1]=null}function B3n(t){var e,n,r,s;for(e=new fe,n=Vt(Fl,$0,28,t.a.c.length,16,1),Eyt(n,n.length),s=new G(t.a);s.a0&&K0e((vn(0,n.c.length),u(n.c[0],30)),t),n.c.length>1&&K0e(u(Oe(n,n.c.length-1),30),t),e.Vg()}function j3n(t){wl();var e,n;return e=Hi(Hg,lt(ut(OK,1),te,279,0,[g2])),!(tO(iq(e,t))>1||(n=Hi(yL,lt(ut(OK,1),te,279,0,[vL,n8])),tO(iq(n,t))>1))}function r6t(t,e){var n;n=nu((Eb(),yf),t),Lt(n,507)?jo(yf,t,new fQt(this,e)):jo(yf,t,this),Fot(this,e),e==(bE(),zIt)?(this.wb=u(this,2038),u(e,2040)):this.wb=(Lb(),Fn)}function $3n(t){var e,n,r;if(t==null)return null;for(e=null,n=0;n=Rp?"error":r>=900?"warn":r>=800?"info":"log"),Oee(n,t.a),t.b&&ikt(e,n,t.b,"Exception: ",!0))}function X(t,e){var n,r;return r=(!t.q&&(t.q=new _r),tr(t.q,e)),r??(n=e.Sg(),Lt(n,4)&&(n==null?(!t.q&&(t.q=new _r),rk(t.q,e)):(!t.q&&(t.q=new _r),hi(t.q,e,n))),n)}function Ua(){Ua=V,Wf=new qM("P1_CYCLE_BREAKING",0),H0=new qM("P2_LAYERING",1),Qc=new qM("P3_NODE_ORDERING",2),cu=new qM("P4_NODE_PLACEMENT",3),Zo=new qM("P5_EDGE_ROUTING",4)}function z3n(t,e){YS();var n;if(t.c==e.c){if(t.b==e.b||Wgn(t.b,e.b)){if(n=vin(t.b)?1:-1,t.a&&!e.a)return n;if(!t.a&&e.a)return-n}return jc(t.b.g,e.b.g)}else return Bi(t.c,e.c)}function Cfe(t,e){var n,r,s;if(s6t(t,e))return!0;for(r=new G(e);r.a=s||e<0)throw at(new Bo(Zlt+e+Ew+s));if(n>=s||n<0)throw at(new Bo(tht+n+Ew+s));return e!=n?r=(o=t.Cj(n),t.qj(e,o),o):r=t.xj(n),r}function Afe(t){var e,n,r;if(r=t,t)for(e=0,n=t.Eh();n;n=n.Eh()){if(++e>uut)return Afe(n);if(r=n,n==t)throw at(new Ro("There is a cycle in the containment hierarchy of "+t))}return r}function Hb(t){var e,n,r;for(r=new aw(ao,"[","]"),n=t.Kc();n.Ob();)e=n.Pb(),Eg(r,$t(e)===$t(t)?"(this Collection)":e==null?Vu:rc(e));return r.a?r.e.length==0?r.a.a:r.a.a+(""+r.e):r.c}function s6t(t,e){var n,r;if(r=!1,e.gc()<2)return!1;for(n=0;n1&&(t.j.b+=t.e)):(t.j.a+=n.a,t.j.b=b.Math.max(t.j.b,n.b),t.d.c.length>1&&(t.j.a+=t.e))}function Vb(){Vb=V,$4e=lt(ut(bo,1),qc,64,0,[(ve(),Hn),Jn,Er]),j4e=lt(ut(bo,1),qc,64,0,[Jn,Er,Gn]),z4e=lt(ut(bo,1),qc,64,0,[Er,Gn,Hn]),q4e=lt(ut(bo,1),qc,64,0,[Gn,Hn,Jn])}function H3n(t,e,n,r){var s,o,h,d,m,k,T;if(h=t.c.d,d=t.d.d,h.j!=d.j)for(T=t.b,s=h.j,m=null;s!=d.j;)m=e==0?hH(s):C5t(s),o=sxt(s,T.d[s.g],n),k=sxt(m,T.d[m.g],n),Zr(r,ki(o,k)),s=m}function V3n(t,e,n,r){var s,o,h,d,m;return h=Ihe(t.a,e,n),d=u(h.a,17).a,o=u(h.b,17).a,r&&(m=u(X(e,(oe(),ml)),10),s=u(X(n,ml),10),m&&s&&(vie(t.b,m,s),d+=t.b.i,o+=t.b.e)),d>o}function Dfe(t){var e,n,r,s,o,h,d,m,k;for(this.a=Zle(t),this.b=new fe,n=t,r=0,s=n.length;rhit(t.d).c?(t.i+=t.g.c,Qat(t.d)):hit(t.d).c>hit(t.g).c?(t.e+=t.d.c,Qat(t.g)):(t.i+=zte(t.g),t.e+=zte(t.d),Qat(t.g),Qat(t.d))}function W3n(t,e,n){var r,s,o,h;for(o=e.q,h=e.r,new J2((C1(),o2),e,o,1),new J2(o2,o,h,1),s=new G(n);s.ad&&(m=d/r),s>o&&(k=o/s),h=b.Math.min(m,k),t.a+=h*(e.a-t.a),t.b+=h*(e.b-t.b)}function J3n(t,e,n,r,s){var o,h;for(h=!1,o=u(Oe(n.b,0),27);_7n(t,e,o,r,s)&&(h=!0,Ayn(n,o),n.b.c.length!=0);)o=u(Oe(n.b,0),27);return n.b.c.length==0&&CO(n.j,n),h&&PH(e.q),h}function Z3n(t,e){w5();var n,r,s,o;if(e.b<2)return!1;for(o=Dr(e,0),n=u(Ar(o),8),r=n;o.b!=o.d.c;){if(s=u(Ar(o),8),Jot(t,r,s))return!0;r=s}return!!Jot(t,r,n)}function o6t(t,e,n,r){var s,o;return n==0?(!t.o&&(t.o=new nl((zc(),X0),Qp,t,0)),pz(t.o,e,r)):(o=u(En((s=u(jn(t,16),29),s||t.ii()),n),69),o.wk().Ak(t,Au(t),n-fr(t.ii()),e,r))}function Fot(t,e){var n;e!=t.sb?(n=null,t.sb&&(n=u(t.sb,54).Th(t,1,EL,n)),e&&(n=u(e,54).Rh(t,1,EL,n)),n=v5t(t,e,n),n&&n.oj()):t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,4,e,e))}function t4n(t,e){var n,r,s,o;if(e)s=_g(e,"x"),n=new TGt(t),XE(n.a,(Wn(s),s)),o=_g(e,"y"),r=new CGt(t),JE(r.a,(Wn(o),o));else throw at(new Rd("All edge sections need an end point."))}function e4n(t,e){var n,r,s,o;if(e)s=_g(e,"x"),n=new xGt(t),QE(n.a,(Wn(s),s)),o=_g(e,"y"),r=new kGt(t),ZE(r.a,(Wn(o),o));else throw at(new Rd("All edge sections need a start point."))}function n4n(t,e){var n,r,s,o,h,d,m;for(r=aue(t),o=0,d=r.length;o>22-e,s=t.h<>22-e):e<44?(n=0,r=t.l<>44-e):(n=0,r=0,s=t.l<t)throw at(new zn("k must be smaller than n"));return e==0||e==t?1:t==0?0:Nxt(t)/(Nxt(e)*Nxt(t-e))}function c6t(t,e){var n,r,s,o;for(n=new Tmt(t);n.g==null&&!n.c?n3t(n):n.g==null||n.i!=0&&u(n.g[n.i-1],51).Ob();)if(o=u(XH(n),58),Lt(o,167))for(r=u(o,167),s=0;s>4],e[n*2+1]=tW[o&15];return af(e,0,e.length)}function m4n(t){Gz();var e,n,r;switch(r=t.c.length,r){case 0:return Rve;case 1:return e=u(m1e(new G(t)),44),hun(e.ld(),e.md());default:return n=u(ld(t,Vt(Sw,xV,44,t.c.length,0,1)),173),new owt(n)}}function v4n(t){var e,n,r,s,o,h;for(e=new K4,n=new K4,Ob(e,t),Ob(n,t);n.b!=n.c;)for(s=u(K6(n),36),h=new G(s.a);h.a0&&VO(t,n,e),s):oxn(t,e,n)}function Ub(){Ub=V,H8e=(ai(),Jk),V8e=$w,j8e=jw,$8e=lx,z8e=l2,R8e=ux,GLt=LP,q8e=j3,tdt=(xkt(),_8e),edt=A8e,WLt=I8e,ndt=P8e,YLt=O8e,XLt=N8e,KLt=L8e,dK=D8e,gK=M8e,wP=F8e,QLt=B8e,ULt=S8e}function Rfe(t,e){var n,r,s,o,h;if(t.e<=e||Hfn(t,t.g,e))return t.g;for(o=t.r,r=t.g,h=t.r,s=(o-r)/2+r;r+11&&(t.e.b+=t.a)):(t.e.a+=n.a,t.e.b=b.Math.max(t.e.b,n.b),t.d.c.length>1&&(t.e.a+=t.a))}function T4n(t){var e,n,r,s;switch(s=t.i,e=s.b,r=s.j,n=s.g,s.a.g){case 0:n.a=(t.g.b.o.a-r.a)/2;break;case 1:n.a=e.d.n.a+e.d.a.a;break;case 2:n.a=e.d.n.a+e.d.a.a-r.a;break;case 3:n.b=e.d.n.b+e.d.a.b}}function C4n(t,e,n){var r,s,o;for(s=new rr(sr(Dg(n).a.Kc(),new z));Mr(s);)r=u(dr(s),18),!go(r)&&!(!go(r)&&r.c.i.c==r.d.i.c)&&(o=Lde(t,r,n,new IKt),o.c.length>1&&In(e.c,o))}function $fe(t,e,n,r,s){if(rr&&(t.a=r),t.bs&&(t.b=s),t}function S4n(t){if(Lt(t,143))return rkn(u(t,143));if(Lt(t,233))return K2n(u(t,233));if(Lt(t,23))return i4n(u(t,23));throw at(new zn(DTt+Hb(new hl(lt(ut(aa,1),Ln,1,5,[t])))))}function _4n(t,e,n,r,s){var o,h,d;for(o=!0,h=0;h>>s|n[h+r+1]<>>s,++h}return o}function f6t(t,e,n,r){var s,o,h;if(e.k==(Un(),fa)){for(o=new rr(sr(ua(e).a.Kc(),new z));Mr(o);)if(s=u(dr(o),18),h=s.c.i.k,h==fa&&t.c.a[s.c.i.c.p]==r&&t.c.a[e.c.p]==n)return!0}return!1}function A4n(t,e){var n,r,s,o;return e&=63,n=t.h&Fg,e<22?(o=n>>>e,s=t.m>>e|n<<22-e,r=t.l>>e|t.m<<22-e):e<44?(o=0,s=n>>>e-22,r=t.m>>e-22|t.h<<44-e):(o=0,s=0,r=n>>>e-44),Eu(r&Il,s&Il,o&Fg)}function zfe(t,e,n,r){var s;this.b=r,this.e=t==(Hm(),UA),s=e[n],this.d=G2(Fl,[ue,$0],[183,28],16,[s.length,s.length],2),this.a=G2(Fr,[ue,ii],[53,28],15,[s.length,s.length],2),this.c=new Kxt(e,n)}function L4n(t){var e,n,r;for(t.k=new s3t((ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])).length,t.j.c.length),r=new G(t.j);r.a=n)return I7(t,e,r.p),!0;return!1}function d5(t,e,n,r){var s,o,h,d,m,k;for(h=n.length,o=0,s=-1,k=Nae((qn(e,t.length+1),t.substr(e)),(bit(),_9t)),d=0;do&&nln(k,Nae(n[d],_9t))&&(s=d,o=m);return s>=0&&(r[0]=e+o),s}function Hfe(t){var e;return t.Db&64?Bot(t):(e=new eh(vTt),!t.a||ni(ni((e.a+=' "',e),t.a),'"'),ni(pm(ni(pm(ni(pm(ni(pm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function Vfe(t,e,n){var r,s,o,h,d;for(d=Lu(t.e.Dh(),e),s=u(t.g,124),r=0,h=0;hn?x6t(t,n,"start index"):e<0||e>n?x6t(e,n,"end index"):M_("end index (%s) must not be less than start index (%s)",lt(ut(aa,1),Ln,1,5,[he(e),he(t)]))}function Gfe(t,e){var n,r,s,o;for(r=0,s=t.length;r0&&Kfe(t,o,n));e.p=0}function He(t){var e;this.c=new Ki,this.f=t.e,this.e=t.d,this.i=t.g,this.d=t.c,this.b=t.b,this.k=t.j,this.a=t.a,t.i?this.j=t.i:this.j=(e=u(y1(G0),9),new _h(e,u(Ff(e,e.length),9),0)),this.g=t.f}function P4n(t){var e,n,r,s;for(e=Db(ni(new eh("Predicates."),"and"),40),n=!0,s=new gr(t);s.b0?d[h-1]:Vt(V0,jp,10,0,0,1),s=d[h],k=h=0?t.ki(s):C6t(t,r);else throw at(new zn(Jb+r.xe()+aA));else throw at(new zn(Gwe+e+Kwe));else Ph(t,n,r)}function d6t(t){var e,n;if(n=null,e=!1,Lt(t,211)&&(e=!0,n=u(t,211).a),e||Lt(t,263)&&(e=!0,n=""+u(t,263).a),e||Lt(t,492)&&(e=!0,n=""+u(t,492).a),!e)throw at(new Znt(LTt));return n}function g6t(t,e,n){var r,s,o,h,d,m;for(m=Lu(t.e.Dh(),e),r=0,d=t.i,s=u(t.g,124),h=0;h=t.d.b.c.length&&(e=new eu(t.d),e.p=r.p-1,ge(t.d.b,e),n=new eu(t.d),n.p=r.p,ge(t.d.b,n)),Aa(r,u(Oe(t.d.b,r.p),30))}function w6t(t,e,n){var r,s,o;if(!t.b[e.g]){for(t.b[e.g]=!0,r=n,!r&&(r=new FI),Zr(r.b,e),o=t.a[e.g].Kc();o.Ob();)s=u(o.Pb(),65),s.b!=e&&w6t(t,s.b,r),s.c!=e&&w6t(t,s.c,r),Zr(r.a,s);return r}return null}function j4n(t){switch(t.g){case 0:case 1:case 2:return ve(),Hn;case 3:case 4:case 5:return ve(),Er;case 6:case 7:case 8:return ve(),Gn;case 9:case 10:case 11:return ve(),Jn;default:return ve(),bc}}function $4n(t,e){var n;return t.c.length==0?!1:(n=hle((vn(0,t.c.length),u(t.c[0],18)).c.i),rh(),n==(Yy(),J5)||n==Q5?!0:t5(Wo(new ln(null,new gn(t,16)),new XJ),new MUt(e)))}function zot(t,e){if(Lt(e,207))return Nin(t,u(e,27));if(Lt(e,193))return Pin(t,u(e,123));if(Lt(e,451))return Oin(t,u(e,166));throw at(new zn(DTt+Hb(new hl(lt(ut(aa,1),Ln,1,5,[e])))))}function Zfe(t,e,n){var r,s;if(this.f=t,r=u(tr(t.b,e),260),s=r?r.a:0,P3t(n,s),n>=(s/2|0))for(this.e=r?r.c:null,this.d=s;n++0;)s4t(this);this.b=e,this.a=null}function z4n(t,e){var n,r;e.a?xkn(t,e):(n=u(lrt(t.b,e.b),60),n&&n==t.a[e.b.f]&&n.a&&n.a!=e.b.a&&n.c.Fc(e.b),r=u(urt(t.b,e.b),60),r&&t.a[r.f]==e.b&&r.a&&r.a!=e.b.a&&e.b.c.Fc(r),rit(t.b,e.b))}function t1e(t,e){var n,r;if(n=u(Io(t.b,e),127),u(u(Ai(t.r,e),21),87).dc()){n.n.b=0,n.n.c=0;return}n.n.b=t.C.b,n.n.c=t.C.c,t.A.Hc((Yl(),qw))&&_0e(t,e),r=pmn(t,e),tct(t,e)==(o5(),f2)&&(r+=2*t.w),n.a.a=r}function e1e(t,e){var n,r;if(n=u(Io(t.b,e),127),u(u(Ai(t.r,e),21),87).dc()){n.n.d=0,n.n.a=0;return}n.n.d=t.C.d,n.n.a=t.C.a,t.A.Hc((Yl(),qw))&&A0e(t,e),r=gmn(t,e),tct(t,e)==(o5(),f2)&&(r+=2*t.w),n.a.b=r}function q4n(t,e){var n,r,s,o;for(o=new fe,r=new G(e);r.ar&&(qn(e-1,t.length),t.charCodeAt(e-1)<=32);)--e;return r>0||en.a&&(r.Hc((fw(),cL))?s=(e.a-n.a)/2:r.Hc(uL)&&(s=e.a-n.a)),e.b>n.b&&(r.Hc((fw(),hL))?o=(e.b-n.b)/2:r.Hc(lL)&&(o=e.b-n.b)),n6t(t,s,o)}function u1e(t,e,n,r,s,o,h,d,m,k,T,A,P){Lt(t.Cb,90)&&t3(_l(u(t.Cb,90)),4),mu(t,n),t.f=h,v7(t,d),x7(t,m),m7(t,k),y7(t,T),Mp(t,A),k7(t,P),Dp(t,!0),Sp(t,s),t.Zk(o),uw(t,e),r!=null&&(t.i=null,Gq(t,r))}function x6t(t,e,n){if(t<0)return M_(abe,lt(ut(aa,1),Ln,1,5,[n,he(t)]));if(e<0)throw at(new zn(obe+e));return M_("%s (%s) must not be greater than size (%s)",lt(ut(aa,1),Ln,1,5,[n,he(t),he(e)]))}function k6t(t,e,n,r,s,o){var h,d,m,k;if(h=r-n,h<7){F2n(e,n,r,o);return}if(m=n+s,d=r+s,k=m+(d-m>>1),k6t(e,t,m,k,-s,o),k6t(e,t,k,d,-s,o),o.Ne(t[k-1],t[k])<=0){for(;n=0?t.bi(o,n):J6t(t,s,n);else throw at(new zn(Jb+s.xe()+aA));else throw at(new zn(Gwe+e+Kwe));else Fh(t,r,s,n)}function l1e(t){var e,n;if(t.f){for(;t.n>0;){if(e=u(t.k.Xb(t.n-1),76),n=e.Lk(),Lt(n,102)&&u(n,19).Bb&Fc&&(!t.e||n.pk()!=QT||n.Lj()!=0)&&e.md()!=null)return!0;--t.n}return!1}else return t.n>0}function h1e(t){var e,n,r,s;if(n=u(t,54)._h(),n)try{if(r=null,e=N7((Eb(),yf),X0e(W2n(n))),e&&(s=e.ai(),s&&(r=s.Fl(Ynn(n.e)))),r&&r!=t)return h1e(r)}catch(o){if(o=es(o),!Lt(o,63))throw at(o)}return t}function i5n(t,e,n){var r,s,o;n.Ug("Remove overlaps",1),n.dh(e,I7t),r=u(ne(e,(Y4(),ex)),27),t.f=r,t.a=oot(u(ne(e,(Ub(),wP)),299)),s=Ht(ne(e,(ai(),$w))),St(t,(Wn(s),s)),o=n3(r),mpe(t,e,o,n),n.dh(e,iU)}function s5n(t){var e,n,r;if(Ie(Me(ne(t,(ai(),_P))))){for(r=new fe,n=new rr(sr(Og(t).a.Kc(),new z));Mr(n);)e=u(dr(n),74),Zm(e)&&Ie(Me(ne(e,Ndt)))&&In(r.c,e);return r}else return mn(),mn(),co}function f1e(t){if(!t)return hWt(),Kve;var e=t.valueOf?t.valueOf():t;if(e!==t){var n=Lht[typeof e];return n?n(e):f5t(typeof e)}else return t instanceof Array||t instanceof b.Array?new Xj(t):new uE(t)}function d1e(t,e,n){var r,s,o;switch(o=t.o,r=u(Io(t.p,n),252),s=r.i,s.b=FO(r),s.a=PO(r),s.b=b.Math.max(s.b,o.a),s.b>o.a&&!e&&(s.b=o.a),s.c=-(s.b-o.a)/2,n.g){case 1:s.d=-s.a;break;case 3:s.d=o.b}dct(r),gct(r)}function g1e(t,e,n){var r,s,o;switch(o=t.o,r=u(Io(t.p,n),252),s=r.i,s.b=FO(r),s.a=PO(r),s.a=b.Math.max(s.a,o.b),s.a>o.b&&!e&&(s.a=o.b),s.d=-(s.a-o.b)/2,n.g){case 4:s.c=-s.b;break;case 2:s.c=o.a}dct(r),gct(r)}function a5n(t,e){var n,r,s,o,h;if(!e.dc()){if(s=u(e.Xb(0),131),e.gc()==1){Ude(t,s,s,1,0,e);return}for(n=1;n0)try{s=lh(e,Ga,xi)}catch(o){throw o=es(o),Lt(o,130)?(r=o,at(new _q(r))):at(o)}return n=(!t.a&&(t.a=new Bnt(t)),t.a),s=0?u(Dt(n,s),58):null}function l5n(t,e){if(t<0)return M_(abe,lt(ut(aa,1),Ln,1,5,["index",he(t)]));if(e<0)throw at(new zn(obe+e));return M_("%s (%s) must be less than size (%s)",lt(ut(aa,1),Ln,1,5,["index",he(t),he(e)]))}function h5n(t){var e,n,r,s,o;if(t==null)return Vu;for(o=new aw(ao,"[","]"),n=t,r=0,s=n.length;r=0?t.Lh(n,!0,!0):tv(t,s,!0),160)),u(r,220).Zl(e);else throw at(new zn(Jb+e.xe()+aA))}function S6t(t){var e,n;return t>-0x800000000000&&t<0x800000000000?t==0?0:(e=t<0,e&&(t=-t),n=Ys(b.Math.floor(b.Math.log(t)/.6931471805599453)),(!e||t!=b.Math.pow(2,n))&&++n,n):Dce(Pc(t))}function S5n(t){var e,n,r,s,o,h,d;for(o=new zd,n=new G(t);n.a2&&d.e.b+d.j.b<=2&&(s=d,r=h),o.a.zc(s,o),s.q=r);return o}function _5n(t,e,n){n.Ug("Eades radial",1),n.dh(e,iU),t.d=u(ne(e,(Y4(),ex)),27),t.c=Rt(Ht(ne(e,(Ub(),gK)))),t.e=oot(u(ne(e,wP),299)),t.a=nwn(u(ne(e,QLt),434)),t.b=kyn(u(ne(e,KLt),354)),iyn(t),n.dh(e,iU)}function A5n(t,e){if(e.Ug("Target Width Setter",1),ad(t,(fd(),ddt)))Mi(t,(N0(),B3),Ht(ne(t,ddt)));else throw at(new fp("A target width has to be set if the TargetWidthWidthApproximator should be used."));e.Vg()}function v1e(t,e){var n,r,s;return r=new Ig(t),Qo(r,e),Zt(r,(oe(),MG),e),Zt(r,(De(),bs),(ka(),hu)),Zt(r,u0,(I0(),SK)),y(r,(Un(),Ms)),n=new Yc,hc(n,r),Xs(n,(ve(),Gn)),s=new Yc,hc(s,r),Xs(s,Jn),r}function y1e(t){switch(t.g){case 0:return new Xnt((Hm(),hP));case 1:return new Zet;case 2:return new tnt;default:throw at(new zn("No implementation is available for the crossing minimizer "+(t.f!=null?t.f:""+t.g)))}}function x1e(t,e){var n,r,s,o,h;for(t.c[e.p]=!0,ge(t.a,e),h=new G(e.j);h.a=o)h.$b();else for(s=h.Kc(),r=0;r0?fwt():h<0&&C1e(t,e,-h),!0):!1}function PO(t){var e,n,r,s,o,h,d;if(d=0,t.b==0){for(h=ahe(t,!0),e=0,r=h,s=0,o=r.length;s0&&(d+=n,++e);e>1&&(d+=t.c*(e-1))}else d=EWt(lat(Ny(_i(xyt(t.a),new Ea),new gu)));return d>0?d+t.n.d+t.n.a:0}function FO(t){var e,n,r,s,o,h,d;if(d=0,t.b==0)d=EWt(lat(Ny(_i(xyt(t.a),new Ic),new wc)));else{for(h=ohe(t,!0),e=0,r=h,s=0,o=r.length;s0&&(d+=n,++e);e>1&&(d+=t.c*(e-1))}return d>0?d+t.n.b+t.n.c:0}function P5n(t){var e,n;if(t.c.length!=2)throw at(new Ro("Order only allowed for two paths."));e=(vn(0,t.c.length),u(t.c[0],18)),n=(vn(1,t.c.length),u(t.c[1],18)),e.d.i!=n.c.i&&(t.c.length=0,In(t.c,n),In(t.c,e))}function S1e(t,e,n){var r;for(H4(n,e.g,e.f),Ch(n,e.i,e.j),r=0;r<(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i;r++)S1e(t,u(Dt((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a),r),27),u(Dt((!n.a&&(n.a=new Jt(bi,n,10,11)),n.a),r),27))}function F5n(t,e){var n,r,s,o;for(o=u(Io(t.b,e),127),n=o.a,s=u(u(Ai(t.r,e),21),87).Kc();s.Ob();)r=u(s.Pb(),117),r.c&&(n.a=b.Math.max(n.a,Jvt(r.c)));if(n.a>0)switch(e.g){case 2:o.n.c=t.s;break;case 4:o.n.b=t.s}}function B5n(t,e){var n,r,s;return n=u(X(e,(Vf(),jk)),17).a-u(X(t,jk),17).a,n==0?(r=ia(Oa(u(X(t,(Pb(),UN)),8)),u(X(t,TA),8)),s=ia(Oa(u(X(e,UN),8)),u(X(e,TA),8)),Bi(r.a*r.b,s.a*s.b)):n}function R5n(t,e){var n,r,s;return n=u(X(e,(Cc(),uK)),17).a-u(X(t,uK),17).a,n==0?(r=ia(Oa(u(X(t,(ji(),gP)),8)),u(X(t,zT),8)),s=ia(Oa(u(X(e,gP),8)),u(X(e,zT),8)),Bi(r.a*r.b,s.a*s.b)):n}function _1e(t){var e,n;return n=new yb,n.a+="e_",e=Mpn(t),e!=null&&(n.a+=""+e),t.c&&t.d&&(ni((n.a+=" ",n),BH(t.c)),ni(tu((n.a+="[",n),t.c.i),"]"),ni((n.a+=But,n),BH(t.d)),ni(tu((n.a+="[",n),t.d.i),"]")),n.a}function A1e(t){switch(t.g){case 0:return new cnt;case 1:return new rE;case 2:return new ont;case 3:return new ant;default:throw at(new zn("No implementation is available for the layout phase "+(t.f!=null?t.f:""+t.g)))}}function L6t(t,e,n,r,s){var o;switch(o=0,s.g){case 1:o=b.Math.max(0,e.b+t.b-(n.b+r));break;case 3:o=b.Math.max(0,-t.b-r);break;case 2:o=b.Math.max(0,-t.a-r);break;case 4:o=b.Math.max(0,e.a+t.a-(n.a+r))}return o}function j5n(t,e,n){var r,s,o,h,d;if(n)for(s=n.a.length,r=new W2(s),d=(r.b-r.a)*r.c<0?(Tb(),y2):new _b(r);d.Ob();)h=u(d.Pb(),17),o=qE(n,h.a),ETt in o.a||Qlt in o.a?Z8n(t,o,e):mSn(t,o,e),wsn(u(tr(t.b,T7(o)),74))}function D6t(t){var e,n;switch(t.b){case-1:return!0;case 0:return n=t.t,n>1||n==-1?(t.b=-1,!0):(e=of(t),e&&(vo(),e.lk()==Wme)?(t.b=-1,!0):(t.b=1,!1));default:case 1:return!1}}function M6t(t,e){var n,r,s,o;if(wi(t),t.c!=0||t.a!=123)throw at(new Yr(Qr((Ur(),bme))));if(o=e==112,r=t.d,n=TE(t.i,125,r),n<0)throw at(new Yr(Qr((Ur(),wme))));return s=Lh(t.i,r,n),t.d=n+1,Qse(s,o,(t.e&512)==512)}function L1e(t){var e,n,r,s,o,h,d;if(r=t.a.c.length,r>0)for(h=t.c.d,d=t.d.d,s=qd(ia(new ae(d.a,d.b),h),1/(r+1)),o=new ae(h.a,h.b),n=new G(t.a);n.a=0&&r=0?t.Lh(n,!0,!0):tv(t,s,!0),160)),u(r,220).Wl(e);throw at(new zn(Jb+e.xe()+qlt))}function H5n(){Nwt();var t;return ITe?u(N7((Eb(),yf),hf),2038):(ui(Sw,new gM),R9n(),t=u(Lt(nu((Eb(),yf),hf),560)?nu(yf,hf):new Uee,560),ITe=!0,jSn(t),GSn(t),hi((Owt(),$It),t,new K1),jo(yf,hf,t),t)}function V5n(t,e){var n,r,s,o;t.j=-1,Hl(t.e)?(n=t.i,o=t.i!=0,PI(t,e),r=new Tg(t.e,3,t.c,null,e,n,o),s=e.zl(t.e,t.c,null),s=cfe(t,e,s),s?(s.nj(r),s.oj()):Ei(t.e,r)):(PI(t,e),s=e.zl(t.e,t.c,null),s&&s.oj())}function KH(t,e){var n,r,s;if(s=0,r=e[0],r>=t.length)return-1;for(n=(qn(r,t.length),t.charCodeAt(r));n>=48&&n<=57&&(s=s*10+(n-48),++r,!(r>=t.length));)n=(qn(r,t.length),t.charCodeAt(r));return r>e[0]?e[0]=r:s=-1,s}function U5n(t){var e,n,r,s,o;return s=u(t.a,17).a,o=u(t.b,17).a,n=s,r=o,e=b.Math.max(b.Math.abs(s),b.Math.abs(o)),s<=0&&s==o?(n=0,r=o-1):s==-e&&o!=e?(n=o,r=s,o>=0&&++n):(n=-o,r=s),new Ws(he(n),he(r))}function G5n(t,e,n,r){var s,o,h,d,m,k;for(s=0;s=0&&k>=0&&m=t.i)throw at(new Bo(Zlt+e+Ew+t.i));if(n>=t.i)throw at(new Bo(tht+n+Ew+t.i));return r=t.g[n],e!=n&&(e>16),e=r>>16&16,n=16-e,t=t>>e,r=t-256,e=r>>16&8,n+=e,t<<=e,r=t-u3,e=r>>16&4,n+=e,t<<=e,r=t-Jd,e=r>>16&2,n+=e,t<<=e,r=t>>14,e=r&~(r>>1),n+2-e)}function W5n(t){J6();var e,n,r,s;for(VU=new fe,Jht=new _r,Qht=new fe,e=(!t.a&&(t.a=new Jt(bi,t,10,11)),t.a),RCn(e),s=new Zn(e);s.e!=s.i.gc();)r=u(ar(s),27),Xo(VU,r,0)==-1&&(n=new fe,ge(Qht,n),Ile(r,n));return Qht}function Y5n(t,e,n){var r,s,o,h;t.a=n.b.d,Lt(e,326)?(s=b5(u(e,74),!1,!1),o=MO(s),r=new jC(t),Fa(o,r),KO(o,s),e.of((ai(),Iv))!=null&&Fa(u(e.of(Iv),75),r)):(h=u(e,422),h.rh(h.nh()+t.a.a),h.sh(h.oh()+t.a.b))}function X5n(t,e){var n,r,s;for(s=new fe,r=Dr(e.a,0);r.b!=r.d.c;)n=u(Ar(r),65),n.c.g==t.g&&$t(X(n.b,(Cc(),h0)))!==$t(X(n.c,h0))&&!t5(new ln(null,new gn(s,16)),new HUt(n))&&In(s.c,n);return Ds(s,new DZ),s}function M1e(t,e,n){var r,s,o,h;return Lt(e,153)&&Lt(n,153)?(o=u(e,153),h=u(n,153),t.a[o.a][h.a]+t.a[h.a][o.a]):Lt(e,250)&&Lt(n,250)&&(r=u(e,250),s=u(n,250),r.a==s.a)?u(X(s.a,(Vf(),jk)),17).a:0}function I1e(t,e){var n,r,s,o,h,d,m,k;for(k=Rt(Ht(X(e,(De(),jA)))),m=t[0].n.a+t[0].o.a+t[0].d.c+k,d=1;d=0?n:(d=RS(ia(new ae(h.c+h.b/2,h.d+h.a/2),new ae(o.c+o.b/2,o.d+o.a/2))),-(ige(o,h)-1)*d)}function J5n(t,e,n){var r;ms(new ln(null,(!n.a&&(n.a=new Jt(Wi,n,6,6)),new gn(n.a,16))),new GXt(t,e)),ms(new ln(null,(!n.n&&(n.n=new Jt(Po,n,1,7)),new gn(n.n,16))),new KXt(t,e)),r=u(ne(n,(ai(),Iv)),75),r&&P4t(r,t,e)}function tv(t,e,n){var r,s,o;if(o=y5((il(),ja),t.Dh(),e),o)return vo(),u(o,69).xk()||(o=tk($o(ja,o))),s=(r=t.Ih(o),u(r>=0?t.Lh(r,!0,!0):tv(t,o,!0),160)),u(s,220).Sl(e,n);throw at(new zn(Jb+e.xe()+qlt))}function I6t(t,e,n,r){var s,o,h,d,m;if(s=t.d[e],s){if(o=s.g,m=s.i,r!=null){for(d=0;d=n&&(r=e,k=(m.c+m.a)/2,h=k-n,m.c<=k-n&&(s=new yit(m.c,h),Sm(t,r++,s)),d=k+n,d<=m.a&&(o=new yit(d,m.a),Fy(r,t.c.length),sS(t.c,r,o)))}function P1e(t,e,n){var r,s,o,h,d,m;if(!e.dc()){for(s=new Ki,m=e.Kc();m.Ob();)for(d=u(m.Pb(),39),hi(t.a,he(d.g),he(n)),h=(r=Dr(new gg(d).a.d,0),new M4(r));IM(h.a);)o=u(Ar(h.a),65).c,hs(s,o,s.c.b,s.c);P1e(t,s,n+1)}}function O6t(t){var e;if(!t.c&&t.g==null)t.d=t.bj(t.f),Or(t,t.d),e=t.d;else{if(t.g==null)return!0;if(t.i==0)return!1;e=u(t.g[t.i-1],51)}return e==t.b&&null.Vm>=null.Um()?(XH(t),O6t(t)):e.Ob()}function F1e(t){if(this.a=t,t.c.i.k==(Un(),Ms))this.c=t.c,this.d=u(X(t.c.i,(oe(),Dc)),64);else if(t.d.i.k==Ms)this.c=t.d,this.d=u(X(t.d.i,(oe(),Dc)),64);else throw at(new zn("Edge "+t+" is not an external edge."))}function B1e(t,e){var n,r,s;s=t.b,t.b=e,t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,s,t.b)),e?e!=t&&(mu(t,e.zb),Zst(t,e.d),n=(r=e.c,r??e.zb),eat(t,n==null||hn(n,e.zb)?null:n)):(mu(t,null),Zst(t,0),eat(t,null))}function R1e(t,e){var n;this.e=(Dm(),Hr(t),Dm(),W5t(t)),this.c=(Hr(e),W5t(e)),Bmt(this.e.Rd().dc()==this.c.Rd().dc()),this.d=Jue(this.e),this.b=Jue(this.c),n=G2(aa,[ue,Ln],[5,1],5,[this.e.Rd().gc(),this.c.Rd().gc()],2),this.a=n,_gn(this)}function j1e(t){!_ht&&(_ht=XCn());var e=t.replace(/[\x00-\x1f\xad\u0600-\u0603\u06dd\u070f\u17b4\u17b5\u200b-\u200f\u2028-\u202e\u2060-\u2064\u206a-\u206f\ufeff\ufff9-\ufffb"\\]/g,function(n){return tfn(n)});return'"'+e+'"'}function N6t(t,e,n,r,s,o){var h,d,m,k,T;if(s!=0)for($t(t)===$t(n)&&(t=t.slice(e,e+s),e=0),m=n,d=e,k=e+s;d=h)throw at(new Dy(e,h));return s=n[e],h==1?r=null:(r=Vt(e0t,sht,424,h-1,0,1),Xc(n,0,r,0,e),o=h-e-1,o>0&&Xc(n,e+1,r,e,o)),C7(t,r),o1e(t,e,s),s}function z1e(t){var e,n;if(t.f){for(;t.n0?o=hk(n):o=bO(hk(n))),Mi(e,NT,o)}function sxn(t,e){var n;e.Ug("Partition preprocessing",1),n=u(nc(_i(fc(_i(new ln(null,new gn(t.a,16)),new AQ),new LQ),new HB),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),ms(n.Oc(),new Jx),e.Vg()}function axn(t,e){var n,r,s,o,h;for(h=t.j,e.a!=e.b&&Ds(h,new aC),s=h.c.length/2|0,r=0;r0&&VO(t,n,e),o):r.a!=null?(VO(t,e,n),-1):s.a!=null?(VO(t,n,e),1):0}function cxn(t,e){var n,r,s,o,h;for(s=e.b.b,t.a=Vt(Vh,l3,15,s,0,1),t.b=Vt(Fl,$0,28,s,16,1),h=Dr(e.b,0);h.b!=h.d.c;)o=u(Ar(h),39),t.a[o.g]=new Ki;for(r=Dr(e.a,0);r.b!=r.d.c;)n=u(Ar(r),65),t.a[n.b.g].Fc(n),t.a[n.c.g].Fc(n)}function U1e(t,e){var n,r,s,o;t.Pj()?(n=t.Ej(),o=t.Qj(),++t.j,t.qj(n,t.Zi(n,e)),r=t.Ij(3,null,e,n,o),t.Mj()?(s=t.Nj(e,null),s?(s.nj(r),s.oj()):t.Jj(r)):t.Jj(r)):(Nee(t,e),t.Mj()&&(s=t.Nj(e,null),s&&s.oj()))}function P6t(t,e,n){var r,s,o;t.Pj()?(o=t.Qj(),fO(t,e,n),r=t.Ij(3,null,n,e,o),t.Mj()?(s=t.Nj(n,null),t.Tj()&&(s=t.Uj(n,s)),s?(s.nj(r),s.oj()):t.Jj(r)):t.Jj(r)):(fO(t,e,n),t.Mj()&&(s=t.Nj(n,null),s&&s.oj()))}function WH(t,e){var n,r,s,o,h;for(h=Lu(t.e.Dh(),e),s=new pb,n=u(t.g,124),o=t.i;--o>=0;)r=n[o],h.am(r.Lk())&&Or(s,r);!$pe(t,s)&&Hl(t.e)&&hE(t,e.Jk()?Ib(t,6,e,(mn(),co),null,-1,!1):Ib(t,e.tk()?2:1,e,null,null,-1,!1))}function uxn(t,e){var n,r,s,o,h;return t.a==(M7(),AA)?!0:(o=e.a.c,n=e.a.c+e.a.b,!(e.j&&(r=e.A,h=r.c.c.a-r.o.a/2,s=o-(r.n.a+r.o.a),s>h)||e.q&&(r=e.C,h=r.c.c.a-r.o.a/2,s=r.n.a-n,s>h)))}function G1e(t){gst();var e,n,r,s,o,h,d;for(n=new kp,s=new G(t.e.b);s.a1?t.e*=Rt(t.a):t.f/=Rt(t.a),Mbn(t),Bwn(t),N8n(t),Zt(t.b,(b_(),HU),t.g)}function X1e(t,e,n){var r,s,o,h,d,m;for(r=0,m=n,e||(r=n*(t.c.length-1),m*=-1),o=new G(t);o.a=0?t.Ah(null):t.Ph().Th(t,-1-e,null,null)),t.Bh(u(s,54),n),r&&r.oj(),t.vh()&&t.wh()&&n>-1&&Ei(t,new ha(t,9,n,o,s)),s):o}function R6t(t,e){var n,r,s,o,h;for(o=t.b.Ce(e),r=(n=t.a.get(o),n??Vt(aa,Ln,1,0,5,1)),h=0;h>5,s>=t.d)return t.e<0;if(n=t.a[s],e=1<<(e&31),t.e<0){if(r=uce(t),s>16)),15).dd(o),d0&&(!(bg(t.a.c)&&e.n.d)&&!(q4(t.a.c)&&e.n.b)&&(e.g.d+=b.Math.max(0,r/2-.5)),!(bg(t.a.c)&&e.n.a)&&!(q4(t.a.c)&&e.n.c)&&(e.g.a-=r-1))}function sde(t){var e,n,r,s,o;if(s=new fe,o=tge(t,s),e=u(X(t,(oe(),ml)),10),e)for(r=new G(e.j);r.a>e,o=t.m>>e|n<<22-e,s=t.l>>e|t.m<<22-e):e<44?(h=r?Fg:0,o=n>>e-22,s=t.m>>e-22|n<<44-e):(h=r?Fg:0,o=r?Il:0,s=n>>e-44),Eu(s&Il,o&Il,h&Fg)}function Wot(t){var e,n,r,s,o,h;for(this.c=new fe,this.d=t,r=Zi,s=Zi,e=Vs,n=Vs,h=Dr(t,0);h.b!=h.d.c;)o=u(Ar(h),8),r=b.Math.min(r,o.a),s=b.Math.min(s,o.b),e=b.Math.max(e,o.a),n=b.Math.max(n,o.b);this.a=new Ah(r,s,e-r,n-s)}function ode(t,e){var n,r,s,o,h,d;for(o=new G(t.b);o.a0&&Lt(e,44)&&(t.a._j(),k=u(e,44),m=k.ld(),o=m==null?0:$i(m),h=lvt(t.a,o),n=t.a.d[h],n)){for(r=u(n.g,379),T=n.i,d=0;d=2)for(n=s.Kc(),e=Ht(n.Pb());n.Ob();)o=e,e=Ht(n.Pb()),r=b.Math.min(r,(Wn(e),e-(Wn(o),o)));return r}function Mxn(t,e){var n,r,s;for(s=new fe,r=Dr(e.a,0);r.b!=r.d.c;)n=u(Ar(r),65),n.b.g==t.g&&!hn(n.b.c,nU)&&$t(X(n.b,(Cc(),h0)))!==$t(X(n.c,h0))&&!t5(new ln(null,new gn(s,16)),new VUt(n))&&In(s.c,n);return Ds(s,new NZ),s}function Ixn(t,e){var n,r,s;if($t(e)===$t(Hr(t)))return!0;if(!Lt(e,15)||(r=u(e,15),s=t.gc(),s!=r.gc()))return!1;if(Lt(r,59)){for(n=0;n0&&(s=n),h=new G(t.f.e);h.a0?(e-=1,n-=1):r>=0&&s<0?(e+=1,n+=1):r>0&&s>=0?(e-=1,n+=1):(e+=1,n-=1),new Ws(he(e),he(n))}function Gxn(t,e){return t.ce.c?1:t.be.b?1:t.a!=e.a?$i(t.a)-$i(e.a):t.d==(US(),KA)&&e.d==GA?-1:t.d==GA&&e.d==KA?1:0}function gde(t,e){var n,r,s,o,h;return o=e.a,o.c.i==e.b?h=o.d:h=o.c,o.c.i==e.b?r=o.c:r=o.d,s=gwn(t.a,h,r),s>0&&s0):s<0&&-s0):!1}function Kxn(t,e,n,r){var s,o,h,d,m,k,T,A;for(s=(e-t.d)/t.c.c.length,o=0,t.a+=n,t.d=e,A=new G(t.c);A.a>24;return h}function Yxn(t){if(t.ze()){var e=t.c;e.Ae()?t.o="["+e.n:e.ze()?t.o="["+e.xe():t.o="[L"+e.xe()+";",t.b=e.we()+"[]",t.k=e.ye()+"[]";return}var n=t.j,r=t.d;r=r.split("/"),t.o=Jat(".",[n,Jat("$",r)]),t.b=Jat(".",[n,Jat(".",r)]),t.k=r[r.length-1]}function Xxn(t,e){var n,r,s,o,h;for(h=null,o=new G(t.e.a);o.a=0;e-=2)for(n=0;n<=e;n+=2)(t.b[n]>t.b[n+2]||t.b[n]===t.b[n+2]&&t.b[n+1]>t.b[n+3])&&(r=t.b[n+2],t.b[n+2]=t.b[n],t.b[n]=r,r=t.b[n+3],t.b[n+3]=t.b[n+1],t.b[n+1]=r);t.c=!0}}function Zxn(t,e){var n,r,s,o,h,d,m,k,T;for(k=-1,T=0,h=t,d=0,m=h.length;d0&&++T;++k}return T}function qf(t){var e,n;return n=new eh(V2(t.Rm)),n.a+="@",ni(n,(e=$i(t)>>>0,e.toString(16))),t.Vh()?(n.a+=" (eProxyURI: ",tu(n,t._h()),t.Kh()&&(n.a+=" eClass: ",tu(n,t.Kh())),n.a+=")"):t.Kh()&&(n.a+=" (eClass: ",tu(n,t.Kh()),n.a+=")"),n.a}function __(t){var e,n,r,s;if(t.e)throw at(new Ro((wg($ht),wut+$ht.k+mut)));for(t.d==(Rs(),Ed)&&bV(t,Uo),n=new G(t.a.a);n.a>24}return n}function n6n(t,e,n){var r,s,o;if(s=u(Io(t.i,e),314),!s)if(s=new Zae(t.d,e,n),W6(t.i,e,s),Z5t(e))asn(t.a,e.c,e.b,s);else switch(o=j4n(e),r=u(Io(t.p,o),252),o.g){case 1:case 3:s.j=!0,Jnt(r,e.b,s);break;case 4:case 2:s.k=!0,Jnt(r,e.c,s)}return s}function r6n(t,e){var n,r,s,o,h,d,m,k,T;for(m=C0(t.c-t.b&t.a.length-1),k=null,T=null,o=new $S(t);o.a!=o.b;)s=u(cH(o),10),n=(d=u(X(s,(oe(),N1)),12),d?d.i:null),r=(h=u(X(s,gf),12),h?h.i:null),(k!=n||T!=r)&&(Q1e(m,e),k=n,T=r),In(m.c,s);Q1e(m,e)}function i6n(t,e,n,r){var s,o,h,d,m,k;if(d=new pb,m=Lu(t.e.Dh(),e),s=u(t.g,124),vo(),u(e,69).xk())for(h=0;h=0)return s;for(o=1,d=new G(e.j);d.a=0)return s;for(o=1,d=new G(e.j);d.a0&&e.Ne((vn(s-1,t.c.length),u(t.c[s-1],10)),o)>0;)Mh(t,s,(vn(s-1,t.c.length),u(t.c[s-1],10))),--s;vn(s,t.c.length),t.c[s]=o}n.a=new _r,n.b=new _r}function s6n(t,e,n){var r,s,o,h,d,m,k,T;for(T=(r=u(e.e&&e.e(),9),new _h(r,u(Ff(r,r.length),9),0)),m=s3(n,"[\\[\\]\\s,]+"),o=m,h=0,d=o.length;h=0?(e||(e=new YC,r>0&&Mo(e,(Da(0,r,t.length),t.substr(0,r)))),e.a+="\\",PE(e,n&js)):e&&PE(e,n&js);return e?e.a:t}function o6n(t){var e,n,r;for(n=new G(t.a.a.b);n.a0&&(!(bg(t.a.c)&&e.n.d)&&!(q4(t.a.c)&&e.n.b)&&(e.g.d-=b.Math.max(0,r/2-.5)),!(bg(t.a.c)&&e.n.a)&&!(q4(t.a.c)&&e.n.c)&&(e.g.a+=b.Math.max(0,r-1)))}function Ede(t,e,n){var r,s;if((t.c-t.b&t.a.length-1)==2)e==(ve(),Hn)||e==Jn?(Nq(u(r_(t),15),(uh(),K0)),Nq(u(r_(t),15),h2)):(Nq(u(r_(t),15),(uh(),h2)),Nq(u(r_(t),15),K0));else for(s=new $S(t);s.a!=s.b;)r=u(cH(s),15),Nq(r,n)}function c6n(t,e){var n,r,s,o,h,d,m;for(s=DE(new O2t(t)),d=new La(s,s.c.length),o=DE(new O2t(e)),m=new La(o,o.c.length),h=null;d.b>0&&m.b>0&&(n=(ur(d.b>0),u(d.a.Xb(d.c=--d.b),27)),r=(ur(m.b>0),u(m.a.Xb(m.c=--m.b),27)),n==r);)h=n;return h}function Tde(t,e,n){var r,s,o,h;Tre(t,e)>Tre(t,n)?(r=gc(n,(ve(),Jn)),t.d=r.dc()?0:Sit(u(r.Xb(0),12)),h=gc(e,Gn),t.b=h.dc()?0:Sit(u(h.Xb(0),12))):(s=gc(n,(ve(),Gn)),t.d=s.dc()?0:Sit(u(s.Xb(0),12)),o=gc(e,Jn),t.b=o.dc()?0:Sit(u(o.Xb(0),12)))}function Cde(t,e){var n,r,s,o;for(n=t.o.a,o=u(u(Ai(t.r,e),21),87).Kc();o.Ob();)s=u(o.Pb(),117),s.e.a=n*Rt(Ht(s.b.of($U))),s.e.b=(r=s.b,r.pf((ai(),Pl))?r.ag()==(ve(),Hn)?-r.Mf().b-Rt(Ht(r.of(Pl))):Rt(Ht(r.of(Pl))):r.ag()==(ve(),Hn)?-r.Mf().b:0)}function u6n(t,e){var n,r,s,o;for(e.Ug("Self-Loop pre-processing",1),r=new G(t.a);r.at.c));h++)s.a>=t.s&&(o<0&&(o=h),d=h);return m=(t.s+t.c)/2,o>=0&&(r=Q8n(t,e,o,d),m=Yrn((vn(r,e.c.length),u(e.c[r],339))),nxn(e,r,n)),m}function zr(t,e,n){var r,s,o,h,d,m,k;for(h=(o=new aM,o),_4t(h,(Wn(e),e)),k=(!h.b&&(h.b=new Ul((wn(),wo),Mc,h)),h.b),m=1;m0&&KTn(this,s)}function Y6t(t,e,n,r,s,o){var h,d,m;if(!s[e.a]){for(s[e.a]=!0,h=r,!h&&(h=new mq),ge(h.e,e),m=o[e.a].Kc();m.Ob();)d=u(m.Pb(),289),!(d.d==n||d.c==n)&&(d.c!=e&&Y6t(t,d.c,e,h,s,o),d.d!=e&&Y6t(t,d.d,e,h,s,o),ge(h.c,d),Hs(h.d,d.b));return h}return null}function f6n(t){var e,n,r,s,o,h,d;for(e=0,s=new G(t.e);s.a=2}function d6n(t,e,n,r,s){var o,h,d,m,k,T;for(o=t.c.d.j,h=u(jh(n,0),8),T=1;T1||(e=Hi(Qf,lt(ut(Lo,1),te,95,0,[qg,Jf])),tO(iq(e,t))>1)||(r=Hi(t1,lt(ut(Lo,1),te,95,0,[W0,bf])),tO(iq(r,t))>1))}function X6t(t,e,n){var r,s,o;for(o=new G(t.t);o.a0&&(r.b.n-=r.c,r.b.n<=0&&r.b.u>0&&Zr(e,r.b));for(s=new G(t.i);s.a0&&(r.a.u-=r.c,r.a.u<=0&&r.a.n>0&&Zr(n,r.a))}function XH(t){var e,n,r,s,o;if(t.g==null&&(t.d=t.bj(t.f),Or(t,t.d),t.c))return o=t.f,o;if(e=u(t.g[t.i-1],51),s=e.Pb(),t.e=e,n=t.bj(s),n.Ob())t.d=n,Or(t,n);else for(t.d=null;!e.Ob()&&(ls(t.g,--t.i,null),t.i!=0);)r=u(t.g[t.i-1],51),e=r;return s}function p6n(t,e){var n,r,s,o,h,d;if(r=e,s=r.Lk(),Ng(t.e,s)){if(s.Si()&&dq(t,s,r.md()))return!1}else for(d=Lu(t.e.Dh(),s),n=u(t.g,124),o=0;o1||n>1)return 2;return e+n==1?2:0}function Dl(t,e){var n,r,s,o,h,d;return o=t.a*dut+t.b*1502,d=t.b*dut+11,n=b.Math.floor(d*lN),o+=n,d-=n*y8t,o%=y8t,t.a=o,t.b=d,e<=24?b.Math.floor(t.a*L9t[e]):(s=t.a*(1<=2147483648&&(r-=4294967296),r)}function Dde(t,e,n){var r,s,o,h,d,m,k;for(o=new fe,k=new Ki,h=new Ki,B7n(t,k,h,e),p9n(t,k,h,e,n),m=new G(t);m.ar.b.g&&In(o.c,r);return o}function x6n(t,e,n){var r,s,o,h,d,m;for(d=t.c,h=(n.q?n.q:(mn(),mn(),q0)).vc().Kc();h.Ob();)o=u(h.Pb(),44),r=!wE(_i(new ln(null,new gn(d,16)),new Sl(new jXt(e,o)))).Bd((U2(),Rk)),r&&(m=o.md(),Lt(m,4)&&(s=nxt(m),s!=null&&(m=s)),e.qf(u(o.ld(),149),m))}function k6n(t,e,n){var r,s;if(EI(t.b),E1(t.b,(pO(),vK),(tS(),kP)),E1(t.b,yK,e.g),E1(t.b,xK,e.a),t.a=XO(t.b,e),n.Ug("Compaction by shrinking a tree",t.a.c.length),e.i.c.length>1)for(s=new G(t.a);s.a=0?t.Lh(r,!0,!0):tv(t,o,!0),160)),u(s,220).Xl(e,n)}else throw at(new zn(Jb+e.xe()+aA))}function QH(t,e){var n,r,s,o,h;if(e){for(o=Lt(t.Cb,90)||Lt(t.Cb,102),h=!o&&Lt(t.Cb,331),r=new Zn((!e.a&&(e.a=new DS(e,Do,e)),e.a));r.e!=r.i.gc();)if(n=u(ar(r),89),s=lV(n),o?Lt(s,90):h?Lt(s,156):s)return s;return o?(wn(),xf):(wn(),Sd)}else return null}function E6n(t,e){var n,r,s,o;for(e.Ug("Resize child graph to fit parent.",1),r=new G(t.b);r.a=2*e&&ge(n,new yit(h[r-1]+e,h[r]-e));return n}function S6n(t,e,n){var r,s,o,h,d,m,k,T;if(n)for(o=n.a.length,r=new W2(o),d=(r.b-r.a)*r.c<0?(Tb(),y2):new _b(r);d.Ob();)h=u(d.Pb(),17),s=qE(n,h.a),s&&(m=ndn(t,(k=(kb(),T=new J2t,T),e&&Z6t(k,e),k),s),n7(m,yg(s,a0)),qH(s,m),E6t(s,m),xat(t,s,m))}function JH(t){var e,n,r,s,o,h;if(!t.j){if(h=new bC,e=_L,o=e.a.zc(t,e),o==null){for(r=new Zn(Yo(t));r.e!=r.i.gc();)n=u(ar(r),29),s=JH(n),gs(h,s),Or(h,n);e.a.Bc(t)!=null}Uy(h),t.j=new $4((u(Dt(Qt((Lb(),Fn).o),11),19),h.i),h.g),_l(t).b&=-33}return t.j}function _6n(t){var e,n,r,s;if(t==null)return null;if(r=su(t,!0),s=NN.length,hn(r.substr(r.length-s,s),NN)){if(n=r.length,n==4){if(e=(qn(0,r.length),r.charCodeAt(0)),e==43)return aOt;if(e==45)return ZTe}else if(n==3)return aOt}return new z2t(r)}function A6n(t){var e,n,r;return n=t.l,n&n-1||(r=t.m,r&r-1)||(e=t.h,e&e-1)||e==0&&r==0&&n==0?-1:e==0&&r==0&&n!=0?w4t(n):e==0&&r!=0&&n==0?w4t(r)+22:e!=0&&r==0&&n==0?w4t(e)+44:-1}function p5(t,e){var n,r,s,o,h;for(s=e.a&t.f,o=null,r=t.b[s];;r=r.b){if(r==e){o?o.b=e.b:t.b[s]=e.b;break}o=r}for(h=e.f&t.f,o=null,n=t.c[h];;n=n.d){if(n==e){o?o.d=e.d:t.c[h]=e.d;break}o=n}e.e?e.e.c=e.c:t.a=e.c,e.c?e.c.e=e.e:t.e=e.e,--t.i,++t.g}function L6n(t,e){var n;e.d?e.d.b=e.b:t.a=e.b,e.b?e.b.d=e.d:t.e=e.d,!e.e&&!e.c?(n=u(nf(u(rk(t.b,e.a),260)),260),n.a=0,++t.c):(n=u(nf(u(tr(t.b,e.a),260)),260),--n.a,e.e?e.e.c=e.c:n.b=u(nf(e.c),511),e.c?e.c.e=e.e:n.c=u(nf(e.e),511)),--t.d}function D6n(t){var e,n,r,s,o,h,d,m,k,T;for(n=t.o,e=t.p,h=xi,s=Ga,d=xi,o=Ga,k=0;k0),o.a.Xb(o.c=--o.b),Ly(o,s),ur(o.b3&&M0(t,0,e-3))}function I6n(t){var e,n,r,s;return $t(X(t,(De(),A3)))===$t((Ag(),Xp))?!t.e&&$t(X(t,iP))!==$t((c7(),JN)):(r=u(X(t,e1t),298),s=Ie(Me(X(t,n1t)))||$t(X(t,FA))===$t((QS(),QN)),e=u(X(t,R_t),17).a,n=t.a.c.length,!s&&r!=(c7(),JN)&&(e==0||e>n))}function O6n(t){var e,n;for(n=0;n0);n++);if(n>0&&n0);e++);return e>0&&n>16!=6&&e){if(_7(t,e))throw at(new zn(oA+K1e(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Ext(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,6,r)),r=ovt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,6,e,e))}function ZH(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=3&&e){if(_7(t,e))throw at(new zn(oA+Nge(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?_xt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,12,r)),r=cvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,e,e))}function Z6t(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=9&&e){if(_7(t,e))throw at(new zn(oA+I0e(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Cxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,9,r)),r=uvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,9,e,e))}function P7(t){var e,n,r,s,o;if(r=of(t),o=t.j,o==null&&r)return t.Jk()?null:r.ik();if(Lt(r,156)){if(n=r.jk(),n&&(s=n.wi(),s!=t.i)){if(e=u(r,156),e.nk())try{t.g=s.ti(e,o)}catch(h){if(h=es(h),Lt(h,82))t.g=null;else throw at(h)}t.i=s}return t.g}return null}function Nde(t){var e;return e=new fe,ge(e,new O6(new ae(t.c,t.d),new ae(t.c+t.b,t.d))),ge(e,new O6(new ae(t.c,t.d),new ae(t.c,t.d+t.a))),ge(e,new O6(new ae(t.c+t.b,t.d+t.a),new ae(t.c+t.b,t.d))),ge(e,new O6(new ae(t.c+t.b,t.d+t.a),new ae(t.c,t.d+t.a))),e}function N6n(t){var e,n,r;if(t==null)return Vu;try{return rc(t)}catch(s){if(s=es(s),Lt(s,103))return e=s,r=V2(Wl(t))+"@"+(n=(pg(),ext(t)>>>0),n.toString(16)),Wwn(Opn(),(xE(),"Exception during lenientFormat for "+r),e),"<"+r+" threw "+V2(e.Rm)+">";throw at(s)}}function P6n(t,e,n){var r,s,o;for(o=e.a.ec().Kc();o.Ob();)s=u(o.Pb(),74),r=u(tr(t.b,s),272),!r&&(Ji(O0(s))==Ji(qb(s))?kkn(t,s,n):O0(s)==Ji(qb(s))?tr(t.c,s)==null&&tr(t.b,qb(s))!=null&&fpe(t,s,n,!1):tr(t.d,s)==null&&tr(t.b,O0(s))!=null&&fpe(t,s,n,!0))}function F6n(t,e){var n,r,s,o,h,d,m;for(s=t.Kc();s.Ob();)for(r=u(s.Pb(),10),d=new Yc,hc(d,r),Xs(d,(ve(),Jn)),Zt(d,(oe(),IG),(Pn(),!0)),h=e.Kc();h.Ob();)o=u(h.Pb(),10),m=new Yc,hc(m,o),Xs(m,Gn),Zt(m,IG,!0),n=new Pm,Zt(n,IG,!0),Xa(n,d),xa(n,m)}function B6n(t,e,n,r){var s,o,h,d;s=wle(t,e,n),o=wle(t,n,e),h=u(tr(t.c,e),118),d=u(tr(t.c,n),118),s1)for(e=km((n=new H2,++t.b,n),t.d),d=Dr(o,0);d.b!=d.d.c;)h=u(Ar(d),125),Hf(Of(If(Nf(Mf(new tf,1),0),e),h))}function $6n(t,e,n){var r,s,o,h,d;for(n.Ug("Breaking Point Removing",1),t.a=u(X(e,(De(),zg)),223),o=new G(e.b);o.a>16!=11&&e){if(_7(t,e))throw at(new zn(oA+vkt(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Axt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=gk(e,t,10,r)),r=mvt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,11,e,e))}function z6n(t){var e,n,r,s;for(r=new sw(new mr(t.b).a);r.b;)n=Um(r),s=u(n.ld(),12),e=u(n.md(),10),Zt(e,(oe(),Li),s),Zt(s,ml,e),Zt(s,eP,(Pn(),!0)),Xs(s,u(X(e,Dc),64)),X(e,Dc),Zt(s.i,(De(),bs),(ka(),YT)),u(X(Pa(s.i),lu),21).Fc((Co(),DT))}function q6n(t,e,n){var r,s,o,h,d,m;if(o=0,h=0,t.c)for(m=new G(t.d.i.j);m.ao.a?-1:s.am){for(T=t.d,t.d=Vt(MIt,jTt,66,2*m+4,0,1),o=0;o=9223372036854776e3?(WE(),a9t):(s=!1,t<0&&(s=!0,t=-t),r=0,t>=bw&&(r=Ys(t/bw),t-=r*bw),n=0,t>=Sk&&(n=Ys(t/Sk),t-=n*Sk),e=Ys(t),o=Eu(e,n,r),s&&kat(o),o)}function Z6n(t){var e,n,r,s,o;if(o=new fe,Cu(t.b,new E0(o)),t.b.c.length=0,o.c.length!=0){for(e=(vn(0,o.c.length),u(o.c[0],82)),n=1,r=o.c.length;n=-e&&r==e?new Ws(he(n-1),he(r)):new Ws(he(n),he(r-1))}function Bde(){return Za(),lt(ut(h_n,1),te,81,0,[KCt,VCt,B5,gft,fSt,nG,fG,E3,lSt,eSt,cSt,k3,hSt,JCt,dSt,RCt,aG,pft,tG,uG,pSt,cG,jCt,uSt,bSt,lG,gSt,eG,YCt,aSt,sSt,dG,qCt,ZU,iG,zCt,vT,rSt,ZCt,oSt,CA,UCt,HCt,iSt,tSt,sG,hG,$Ct,oG,nSt,rG,XCt,WCt,WN,JU,QCt,GCt])}function nkn(t,e,n){t.d=0,t.b=0,e.k==(Un(),uu)&&n.k==uu&&u(X(e,(oe(),Li)),10)==u(X(n,Li),10)&&(qst(e).j==(ve(),Hn)?Tde(t,e,n):Tde(t,n,e)),e.k==uu&&n.k==fa?qst(e).j==(ve(),Hn)?t.d=1:t.b=1:n.k==uu&&e.k==fa&&(qst(n).j==(ve(),Hn)?t.b=1:t.d=1),$mn(t,e,n)}function rkn(t){var e,n,r,s,o,h,d,m,k,T,A;return A=Jxt(t),e=t.a,m=e!=null,m&&ME(A,"category",t.a),s=NM(new cr(t.d)),h=!s,h&&(k=new cp,_1(A,"knownOptions",k),n=new qGt(k),Fa(new cr(t.d),n)),o=NM(t.g),d=!o,d&&(T=new cp,_1(A,"supportedFeatures",T),r=new HGt(T),Fa(t.g,r)),A}function ikn(t){var e,n,r,s,o,h,d,m,k;for(r=!1,e=336,n=0,o=new CZt(t.length),d=t,m=0,k=d.length;m>16!=7&&e){if(_7(t,e))throw at(new zn(oA+Hfe(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Txt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=u(e,54).Rh(t,1,zP,r)),r=hyt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,7,e,e))}function Rde(t,e){var n,r;if(e!=t.Cb||t.Db>>16!=3&&e){if(_7(t,e))throw at(new zn(oA+zue(t)));r=null,t.Cb&&(r=(n=t.Db>>16,n>=0?Sxt(t,r):t.Cb.Th(t,-1-n,null,r))),e&&(r=u(e,54).Rh(t,0,HP,r)),r=fyt(t,e,r),r&&r.oj()}else t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,3,e,e))}function Zot(t,e){F7();var n,r,s,o,h,d,m,k,T;return e.d>t.d&&(d=t,t=e,e=d),e.d<63?Gkn(t,e):(h=(t.d&-2)<<4,k=M3t(t,h),T=M3t(e,h),r=vct(t,nk(k,h)),s=vct(e,nk(T,h)),m=Zot(k,T),n=Zot(r,s),o=Zot(vct(k,r),vct(s,T)),o=Sct(Sct(o,m),n),o=nk(o,h),m=nk(m,h<<1),Sct(Sct(m,o),n))}function Bp(){Bp=V,b1t=new F4(q2e,0),TAt=new F4("LONGEST_PATH",1),CAt=new F4("LONGEST_PATH_SOURCE",2),p1t=new F4("COFFMAN_GRAHAM",3),EAt=new F4(qut,4),SAt=new F4("STRETCH_WIDTH",5),XG=new F4("MIN_WIDTH",6),RT=new F4("BF_MODEL_ORDER",7),jT=new F4("DF_MODEL_ORDER",8)}function akn(t,e,n){var r,s,o,h,d;for(h=c_(t,n),d=Vt(V0,jp,10,e.length,0,1),r=0,o=h.Kc();o.Ob();)s=u(o.Pb(),12),Ie(Me(X(s,(oe(),eP))))&&(d[r++]=u(X(s,ml),10));if(r=0;o+=n?1:-1)h=h|e.c.lg(m,o,n,r&&!Ie(Me(X(e.j,(oe(),i2))))&&!Ie(Me(X(e.j,(oe(),U5))))),h=h|e.q.ug(m,o,n),h=h|C0e(t,m[o],n,r);return qs(t.c,e),h}function nV(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(T=rie(t.j),A=0,P=T.length;A1&&(t.a=!0),jun(u(n.b,68),ki(Oa(u(e.b,68).c),qd(ia(Oa(u(n.b,68).a),u(e.b,68).a),s))),lre(t,e),jde(t,n)}function $de(t){var e,n,r,s,o,h,d;for(o=new G(t.a.a);o.a0&&o>0?h.p=e++:r>0?h.p=n++:o>0?h.p=s++:h.p=n++}mn(),Ds(t.j,new R8)}function hkn(t){var e,n;n=null,e=u(Oe(t.g,0),18);do{if(n=e.d.i,qi(n,(oe(),gf)))return u(X(n,gf),12).i;if(n.k!=(Un(),xs)&&Mr(new rr(sr(_s(n).a.Kc(),new z))))e=u(dr(new rr(sr(_s(n).a.Kc(),new z))),18);else if(n.k!=xs)return null}while(n&&n.k!=(Un(),xs));return n}function fkn(t,e){var n,r,s,o,h,d,m,k,T;for(d=e.j,h=e.g,m=u(Oe(d,d.c.length-1),113),T=(vn(0,d.c.length),u(d.c[0],113)),k=yot(t,h,m,T),o=1;ok&&(m=n,T=s,k=r);e.a=T,e.c=m}function dkn(t,e,n){var r,s,o,h,d,m,k;for(k=new pp(new SUt(t)),h=lt(ut(w4e,1),f2e,12,0,[e,n]),d=0,m=h.length;dm-t.b&&dm-t.a&&d0?o.a?(d=o.b.Mf().a,n>d&&(s=(n-d)/2,o.d.b=s,o.d.c=s)):o.d.c=t.s+n:IS(t.u)&&(r=Zxt(o.b),r.c<0&&(o.d.b=-r.c),r.c+r.b>o.b.Mf().a&&(o.d.c=r.c+r.b-o.b.Mf().a))}function Dkn(t,e){var n,r,s,o,h;h=new fe,n=e;do o=u(tr(t.b,n),131),o.B=n.c,o.D=n.d,In(h.c,o),n=u(tr(t.k,n),18);while(n);return r=(vn(0,h.c.length),u(h.c[0],131)),r.j=!0,r.A=u(r.d.a.ec().Kc().Pb(),18).c.i,s=u(Oe(h,h.c.length-1),131),s.q=!0,s.C=u(s.d.a.ec().Kc().Pb(),18).d.i,h}function Mkn(t){var e,n;if(e=u(t.a,17).a,n=u(t.b,17).a,e>=0){if(e==n)return new Ws(he(-e-1),he(-e-1));if(e==-n)return new Ws(he(-e),he(n+1))}return b.Math.abs(e)>b.Math.abs(n)?e<0?new Ws(he(-e),he(n)):new Ws(he(-e),he(n+1)):new Ws(he(e+1),he(n))}function Ikn(t){var e,n;n=u(X(t,(De(),Iu)),171),e=u(X(t,(oe(),Aw)),311),n==(Rh(),s2)?(Zt(t,Iu,rP),Zt(t,Aw,(Cg(),H5))):n==S3?(Zt(t,Iu,rP),Zt(t,Aw,(Cg(),qk))):e==(Cg(),H5)?(Zt(t,Iu,s2),Zt(t,Aw,ZN)):e==qk&&(Zt(t,Iu,S3),Zt(t,Aw,ZN))}function rV(){rV=V,fP=new pZ,Dke=ri(new Fs,(Ua(),Qc),(Za(),tG)),Oke=el(ri(new Fs,Qc,cG),Zo,oG),Nke=Yd(Yd(nS(el(ri(new Fs,Wf,fG),Zo,hG),cu),lG),dG),Mke=el(ri(ri(ri(new Fs,H0,nG),cu,iG),cu,vT),Zo,rG),Ike=el(ri(ri(new Fs,cu,vT),cu,ZU),Zo,JU)}function D_(){D_=V,Bke=ri(el(new Fs,(Ua(),Zo),(Za(),XCt)),Qc,tG),zke=Yd(Yd(nS(el(ri(new Fs,Wf,fG),Zo,hG),cu),lG),dG),Rke=el(ri(ri(ri(new Fs,H0,nG),cu,iG),cu,vT),Zo,rG),$ke=ri(ri(new Fs,Qc,cG),Zo,oG),jke=el(ri(ri(new Fs,cu,vT),cu,ZU),Zo,JU)}function Okn(t,e,n,r,s){var o,h;(!go(e)&&e.c.i.c==e.d.i.c||!qoe(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])),n))&&!go(e)&&(e.c==s?CE(e.a,0,new io(n)):Zr(e.a,new io(n)),r&&!x1(t.a,n)&&(h=u(X(e,(De(),Vo)),75),h||(h=new Qu,Zt(e,Vo,h)),o=new io(n),hs(h,o,h.c.b,h.c),qs(t.a,o)))}function Hde(t,e){var n,r,s,o;for(o=qr(Ja(B0,L0(qr(Ja(e==null?0:$i(e),R0)),15))),n=o&t.b.length-1,s=null,r=t.b[n];r;s=r,r=r.a)if(r.d==o&&Ud(r.i,e))return s?s.a=r.a:t.b[n]=r.a,vWt(u(nf(r.c),604),u(nf(r.f),604)),LM(u(nf(r.b),227),u(nf(r.e),227)),--t.f,++t.e,!0;return!1}function Nkn(t){var e,n;for(n=new rr(sr(ua(t).a.Kc(),new z));Mr(n);)if(e=u(dr(n),18),e.c.i.k!=(Un(),Vc))throw at(new fp(zut+EO(t)+"' has its layer constraint set to FIRST, but has at least one incoming edge that does not come from a FIRST_SEPARATE node. That must not happen."))}function Pkn(t,e,n){var r,s,o,h,d,m,k;if(s=Gue(t.Db&254),s==0)t.Eb=n;else{if(s==1)d=Vt(aa,Ln,1,2,5,1),o=vot(t,e),o==0?(d[0]=n,d[1]=t.Eb):(d[0]=t.Eb,d[1]=n);else for(d=Vt(aa,Ln,1,s+1,5,1),h=nw(t.Eb),r=2,m=0,k=0;r<=128;r<<=1)r==e?d[k++]=n:t.Db&r&&(d[k++]=h[m++]);t.Eb=d}t.Db|=e}function Vde(t,e,n){var r,s,o,h;for(this.b=new fe,s=0,r=0,h=new G(t);h.a0&&(o=u(Oe(this.b,0),176),s+=o.o,r+=o.p),s*=2,r*=2,e>1?s=Ys(b.Math.ceil(s*e)):r=Ys(b.Math.ceil(r/e)),this.a=new U5t(s,r)}function Ude(t,e,n,r,s,o){var h,d,m,k,T,A,P,$,U,J,tt,ht;for(T=r,e.j&&e.o?($=u(tr(t.f,e.A),60),J=$.d.c+$.d.b,--T):J=e.a.c+e.a.b,A=s,n.q&&n.o?($=u(tr(t.f,n.C),60),k=$.d.c,++A):k=n.a.c,tt=k-J,m=b.Math.max(2,A-T),d=tt/m,U=J+d,P=T;P=0;h+=s?1:-1){for(d=e[h],m=r==(ve(),Jn)?s?gc(d,r):Bh(gc(d,r)):s?Bh(gc(d,r)):gc(d,r),o&&(t.c[d.p]=m.gc()),A=m.Kc();A.Ob();)T=u(A.Pb(),12),t.d[T.p]=k++;Hs(n,m)}}function Kde(t,e,n){var r,s,o,h,d,m,k,T;for(o=Rt(Ht(t.b.Kc().Pb())),k=Rt(Ht(Ipn(e.b))),r=qd(Oa(t.a),k-n),s=qd(Oa(e.a),n-o),T=ki(r,s),qd(T,1/(k-o)),this.a=T,this.b=new fe,d=!0,h=t.b.Kc(),h.Pb();h.Ob();)m=Rt(Ht(h.Pb())),d&&m-n>xlt&&(this.b.Fc(n),d=!1),this.b.Fc(m);d&&this.b.Fc(n)}function Fkn(t){var e,n,r,s;if(tEn(t,t.n),t.d.c.length>0){for(KC(t.c);z6t(t,u(et(new G(t.e.a)),125))>5,e&=31,r>=t.d)return t.e<0?(Xd(),Zve):(Xd(),yA);if(o=t.d-r,s=Vt(Fr,ii,28,o+1,15,1),_4n(s,o,t.a,r,e),t.e<0){for(n=0;n0&&t.a[n]<<32-e){for(n=0;n=0?!1:(n=y5((il(),ja),s,e),n?(r=n.Ik(),(r>1||r==-1)&&Om($o(ja,n))!=3):!0)):!1}function $kn(t,e,n,r){var s,o,h,d,m;return d=Jo(u(Dt((!e.b&&(e.b=new kn(vr,e,4,7)),e.b),0),84)),m=Jo(u(Dt((!e.c&&(e.c=new kn(vr,e,5,8)),e.c),0),84)),Ji(d)==Ji(m)||qy(m,d)?null:(h=AI(e),h==n?r:(o=u(tr(t.a,h),10),o&&(s=o.e,s)?s:null))}function zkn(t,e,n){var r,s,o,h,d;for(n.Ug("Longest path to source layering",1),t.a=e,d=t.a.a,t.b=Vt(Fr,ii,28,d.c.length,15,1),r=0,h=new G(d);h.a0&&(n[0]+=t.d,h-=n[0]),n[2]>0&&(n[2]+=t.d,h-=n[2]),o=b.Math.max(0,h),n[1]=b.Math.max(n[1],h),O3t(t,xu,s.c+r.b+n[0]-(n[1]-h)/2,n),e==xu&&(t.c.b=o,t.c.c=s.c+r.b+(o-h)/2)}function r0e(){this.c=Vt(ma,No,28,(ve(),lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn])).length,15,1),this.b=Vt(ma,No,28,lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn]).length,15,1),this.a=Vt(ma,No,28,lt(ut(bo,1),qc,64,0,[bc,Hn,Jn,Er,Gn]).length,15,1),Fwt(this.c,Zi),Fwt(this.b,Vs),Fwt(this.a,Vs)}function iu(t,e,n){var r,s,o,h;if(e<=n?(s=e,o=n):(s=n,o=e),r=0,t.b==null)t.b=Vt(Fr,ii,28,2,15,1),t.b[0]=s,t.b[1]=o,t.c=!0;else{if(r=t.b.length,t.b[r-1]+1==s){t.b[r-1]=o;return}h=Vt(Fr,ii,28,r+2,15,1),Xc(t.b,0,h,0,r),t.b=h,t.b[r-1]>=s&&(t.c=!1,t.a=!1),t.b[r++]=s,t.b[r]=o,t.c||g5(t)}}function Kkn(t,e,n){var r,s,o,h,d,m,k;for(k=e.d,t.a=new wu(k.c.length),t.c=new _r,d=new G(k);d.a=0?t.Lh(k,!1,!0):tv(t,n,!1),61));t:for(o=A.Kc();o.Ob();){for(s=u(o.Pb(),58),T=0;T1;)r3(s,s.i-1);return r}function s0e(t,e){var n,r,s,o,h,d,m;for(n=new K4,o=new G(t.b);o.at.d[h.p]&&(n+=C3t(t.b,o),Ob(t.a,he(o)));for(;!WC(t.a);)i4t(t.b,u(K6(t.a),17).a)}return n}function Zkn(t){var e,n,r,s,o,h,d,m,k;for(t.a=new wvt,k=0,s=0,r=new G(t.i.b);r.ad.d&&(T=d.d+d.a+k));n.c.d=T,e.a.zc(n,e),m=b.Math.max(m,n.c.d+n.c.a)}return m}function Co(){Co=V,CG=new ky("COMMENTS",0),Uh=new ky("EXTERNAL_PORTS",1),LA=new ky("HYPEREDGES",2),SG=new ky("HYPERNODES",3),DT=new ky("NON_FREE_PORTS",4),q5=new ky("NORTH_SOUTH_PORTS",5),DA=new ky(D2e,6),AT=new ky("CENTER_LABELS",7),LT=new ky("END_LABELS",8),_G=new ky("PARTITIONS",9)}function e8n(t,e,n,r,s){return r<0?(r=d5(t,s,lt(ut(Pe,1),ue,2,6,[qct,Hct,Vct,Uct,Tk,Gct,Kct,Wct,Yct,Xct,Qct,Jct]),e),r<0&&(r=d5(t,s,lt(ut(Pe,1),ue,2,6,["Jan","Feb","Mar","Apr",Tk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function n8n(t,e,n,r,s){return r<0?(r=d5(t,s,lt(ut(Pe,1),ue,2,6,[qct,Hct,Vct,Uct,Tk,Gct,Kct,Wct,Yct,Xct,Qct,Jct]),e),r<0&&(r=d5(t,s,lt(ut(Pe,1),ue,2,6,["Jan","Feb","Mar","Apr",Tk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"]),e)),r<0?!1:(n.k=r,!0)):r>0?(n.k=r-1,!0):!1}function r8n(t,e,n,r,s,o){var h,d,m,k;if(d=32,r<0){if(e[0]>=t.length||(d=Va(t,e[0]),d!=43&&d!=45)||(++e[0],r=KH(t,e),r<0))return!1;d==45&&(r=-r)}return d==32&&e[0]-n==2&&s.b==2&&(m=new x$,k=m.q.getFullYear()-Wb+Wb-80,h=k%100,o.a=r==h,r+=(k/100|0)*100+(r=0?zb(t):FS(zb(Cp(t)))),xA[e]=J$(Rf(t,e),0)?zb(Rf(t,e)):FS(zb(Cp(Rf(t,e)))),t=Ja(t,5);for(;e=k&&(m=r);m&&(T=b.Math.max(T,m.a.o.a)),T>P&&(A=k,P=T)}return A}function u8n(t){var e,n,r,s,o,h,d;for(o=new pp(u(Hr(new kh),50)),d=Vs,n=new G(t.d);n.anwe?Ds(m,t.b):r<=nwe&&r>rwe?Ds(m,t.d):r<=rwe&&r>iwe?Ds(m,t.c):r<=iwe&&Ds(m,t.a),o=l0e(t,m,o);return s}function h0e(t,e,n,r){var s,o,h,d,m,k;for(s=(r.c+r.a)/2,nh(e.j),Zr(e.j,s),nh(n.e),Zr(n.e,s),k=new IWt,d=new G(t.f);d.a1,d&&(r=new ae(s,n.b),Zr(e.a,r)),XS(e.a,lt(ut(la,1),ue,8,0,[P,A]))}function lkt(t,e,n){var r,s;for(e=48;n--)ML[n]=n-48<<24>>24;for(r=70;r>=65;r--)ML[r]=r-65+10<<24>>24;for(s=102;s>=97;s--)ML[s]=s-97+10<<24>>24;for(o=0;o<10;o++)tW[o]=48+o&js;for(t=10;t<=15;t++)tW[t]=65+t-10&js}function d8n(t,e){e.Ug("Process graph bounds",1),Zt(t,(ji(),R1t),KM(hat(Ny(new ln(null,new gn(t.b,16)),new zZ)))),Zt(t,j1t,KM(hat(Ny(new ln(null,new gn(t.b,16)),new qZ)))),Zt(t,pLt,KM(lat(Ny(new ln(null,new gn(t.b,16)),new HZ)))),Zt(t,bLt,KM(lat(Ny(new ln(null,new gn(t.b,16)),new VZ)))),e.Vg()}function g8n(t){var e,n,r,s,o;s=u(X(t,(De(),Ow)),21),o=u(X(t,GG),21),n=new ae(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),e=new io(n),s.Hc((Yl(),z3))&&(r=u(X(t,IT),8),o.Hc((Ml(),XT))&&(r.a<=0&&(r.a=20),r.b<=0&&(r.b=20)),e.a=b.Math.max(n.a,r.a),e.b=b.Math.max(n.b,r.b)),Ie(Me(X(t,c1t)))||V7n(t,n,e)}function p8n(t,e){var n,r,s,o;for(o=gc(e,(ve(),Er)).Kc();o.Ob();)r=u(o.Pb(),12),n=u(X(r,(oe(),ml)),10),n&&Hf(Of(If(Nf(Mf(new tf,0),.1),t.i[e.p].d),t.i[n.p].a));for(s=gc(e,Hn).Kc();s.Ob();)r=u(s.Pb(),12),n=u(X(r,(oe(),ml)),10),n&&Hf(Of(If(Nf(Mf(new tf,0),.1),t.i[n.p].d),t.i[e.p].a))}function ect(t){var e,n,r,s,o,h;if(!t.c){if(h=new Oc,e=_L,o=e.a.zc(t,e),o==null){for(r=new Zn(Wc(t));r.e!=r.i.gc();)n=u(ar(r),89),s=lV(n),Lt(s,90)&&gs(h,ect(u(s,29))),Or(h,n);e.a.Bc(t)!=null,e.a.gc()==0}lwn(h),Uy(h),t.c=new $4((u(Dt(Qt((Lb(),Fn).o),15),19),h.i),h.g),_l(t).b&=-33}return t.c}function fkt(t){var e;if(t.c!=10)throw at(new Yr(Qr((Ur(),pU))));switch(e=t.a,e){case 110:e=10;break;case 114:e=13;break;case 116:e=9;break;case 92:case 124:case 46:case 94:case 45:case 63:case 42:case 43:case 123:case 125:case 40:case 41:case 91:case 93:break;default:throw at(new Yr(Qr((Ur(),Hh))))}return e}function p0e(t){var e,n,r,s,o;if(t.l==0&&t.m==0&&t.h==0)return"0";if(t.h==aN&&t.m==0&&t.l==0)return"-9223372036854775808";if(t.h>>19)return"-"+p0e(h7(t));for(n=t,r="";!(n.l==0&&n.m==0&&n.h==0);){if(s=Mst(EV),n=Gkt(n,s,!0),e=""+RWt(Zb),!(n.l==0&&n.m==0&&n.h==0))for(o=9-e.length;o>0;o--)e="0"+e;r=e+r}return r}function b8n(t){var e,n,r,s,o,h,d;for(e=!1,n=0,s=new G(t.d.b);s.a=t.a||!Yxt(e,n))return-1;if(HE(u(r.Kb(e),20)))return 1;for(s=0,h=u(r.Kb(e),20).Kc();h.Ob();)if(o=u(h.Pb(),18),m=o.c.i==e?o.d.i:o.c.i,d=dkt(t,m,n,r),d==-1||(s=b.Math.max(s,d),s>t.c-1))return-1;return s+1}function b0e(t,e){var n,r,s,o,h,d;if($t(e)===$t(t))return!0;if(!Lt(e,15)||(r=u(e,15),d=t.gc(),r.gc()!=d))return!1;if(h=r.Kc(),t.Yi()){for(n=0;n0){if(t._j(),e!=null){for(o=0;o>24;case 97:case 98:case 99:case 100:case 101:case 102:return t-97+10<<24>>24;case 65:case 66:case 67:case 68:case 69:case 70:return t-65+10<<24>>24;default:throw at(new jd("Invalid hexadecimal"))}}function aV(){aV=V,Q9t=new P4("SPIRAL",0),K9t=new P4("LINE_BY_LINE",1),W9t=new P4("MANHATTAN",2),G9t=new P4("JITTER",3),Hht=new P4("QUADRANTS_LINE_BY_LINE",4),X9t=new P4("QUADRANTS_MANHATTAN",5),Y9t=new P4("QUADRANTS_JITTER",6),U9t=new P4("COMBINE_LINE_BY_LINE_MANHATTAN",7),V9t=new P4("COMBINE_JITTER_MANHATTAN",8)}function m0e(t,e,n,r){var s,o,h,d,m,k;for(m=Sot(t,n),k=Sot(e,n),s=!1;m&&k&&(r||dvn(m,k,n));)h=Sot(m,n),d=Sot(k,n),HI(e),HI(t),o=m.c,_ct(m,!1),_ct(k,!1),n?(Xy(e,k.p,o),e.p=k.p,Xy(t,m.p+1,o),t.p=m.p):(Xy(t,m.p,o),t.p=m.p,Xy(e,k.p+1,o),e.p=k.p),Aa(m,null),Aa(k,null),m=h,k=d,s=!0;return s}function v0e(t){switch(t.g){case 0:return new Wet;case 1:return new NC;case 3:return new GYt;case 4:return new zJ;case 5:return new yZt;case 6:return new yM;case 2:return new OC;case 7:return new Dj;case 8:return new vM;default:throw at(new zn("No implementation is available for the layerer "+(t.f!=null?t.f:""+t.g)))}}function k8n(t,e,n,r){var s,o,h,d,m;for(s=!1,o=!1,d=new G(r.j);d.a=e.length)throw at(new Bo("Greedy SwitchDecider: Free layer not in graph."));this.c=e[t],this.e=new dI(r),aat(this.e,this.c,(ve(),Gn)),this.i=new dI(r),aat(this.i,this.c,Jn),this.f=new Bte(this.c),this.a=!o&&s.i&&!s.s&&this.c[0].k==(Un(),Ms),this.a&&F4n(this,t,e.length)}function x0e(t,e){var n,r,s,o,h,d;o=!t.B.Hc((Ml(),jP)),h=t.B.Hc(Kdt),t.a=new ale(h,o,t.c),t.n&&Gyt(t.a.n,t.n),Jnt(t.g,(A1(),xu),t.a),e||(r=new p_(1,o,t.c),r.n.a=t.k,W6(t.p,(ve(),Hn),r),s=new p_(1,o,t.c),s.n.d=t.k,W6(t.p,Er,s),d=new p_(0,o,t.c),d.n.c=t.k,W6(t.p,Gn,d),n=new p_(0,o,t.c),n.n.b=t.k,W6(t.p,Jn,n))}function T8n(t){var e,n,r;switch(e=u(X(t.d,(De(),zg)),223),e.g){case 2:n=fSn(t);break;case 3:n=(r=new fe,ms(_i(Wo(fc(fc(new ln(null,new gn(t.d.b,16)),new dJ),new gJ),new pJ),new rC),new nUt(r)),r);break;default:throw at(new Ro("Compaction not supported for "+e+" edges."))}NTn(t,n),Fa(new cr(t.g),new tUt(t))}function C8n(t,e){var n,r,s,o,h,d,m;if(e.Ug("Process directions",1),n=u(X(t,(Cc(),Mv)),88),n!=(Rs(),kd))for(s=Dr(t.b,0);s.b!=s.d.c;){switch(r=u(Ar(s),39),d=u(X(r,(ji(),pP)),17).a,m=u(X(r,bP),17).a,n.g){case 4:m*=-1;break;case 1:o=d,d=m,m=o;break;case 2:h=d,d=-m,m=h}Zt(r,pP,he(d)),Zt(r,bP,he(m))}e.Vg()}function S8n(t,e){var n;return n=new As,e&&Qo(n,u(tr(t.a,zP),96)),Lt(e,422)&&Qo(n,u(tr(t.a,qP),96)),Lt(e,366)?(Qo(n,u(tr(t.a,Po),96)),n):(Lt(e,84)&&Qo(n,u(tr(t.a,vr),96)),Lt(e,207)?(Qo(n,u(tr(t.a,bi),96)),n):Lt(e,193)?(Qo(n,u(tr(t.a,kl),96)),n):(Lt(e,326)&&Qo(n,u(tr(t.a,Ts),96)),n))}function _8n(t){var e,n,r,s,o,h,d,m;for(m=new tse,d=new G(t.a);d.a0&&e=0)return!1;if(e.p=n.b,ge(n.e,e),s==(Un(),fa)||s==uu){for(h=new G(e.j);h.at.d[d.p]&&(n+=C3t(t.b,o),Ob(t.a,he(o)))):++h;for(n+=t.b.d*h;!WC(t.a);)i4t(t.b,u(K6(t.a),17).a)}return n}function M0e(t){var e,n,r,s,o,h;return o=0,e=of(t),e.kk()&&(o|=4),t.Bb&ol&&(o|=2),Lt(t,102)?(n=u(t,19),s=yo(n),n.Bb&Fc&&(o|=32),s&&(fr(Py(s)),o|=8,h=s.t,(h>1||h==-1)&&(o|=16),s.Bb&Fc&&(o|=64)),n.Bb&po&&(o|=b3),o|=Uf):Lt(e,468)?o|=512:(r=e.kk(),r&&r.i&1&&(o|=256)),t.Bb&512&&(o|=128),o}function j8n(t,e){var n;return t.f==a0t?(n=Om($o((il(),ja),e)),t.e?n==4&&e!=(vk(),s8)&&e!=(vk(),i8)&&e!=(vk(),o0t)&&e!=(vk(),c0t):n==2):t.d&&(t.d.Hc(e)||t.d.Hc(tk($o((il(),ja),e)))||t.d.Hc(y5((il(),ja),t.b,e)))?!0:t.f&&tkt((il(),t.f),TI($o(ja,e)))?(n=Om($o(ja,e)),t.e?n==4:n==2):!1}function $8n(t){var e,n,r,s,o,h,d,m,k,T,A,P,$;for(P=-1,$=0,k=t,T=0,A=k.length;T0&&++$;++P}return $}function z8n(t,e,n,r){var s,o,h,d,m,k,T,A;return h=u(ne(n,(ai(),Jk)),8),m=h.a,T=h.b+t,s=b.Math.atan2(T,m),s<0&&(s+=xw),s+=e,s>xw&&(s-=xw),d=u(ne(r,Jk),8),k=d.a,A=d.b+t,o=b.Math.atan2(A,k),o<0&&(o+=xw),o+=e,o>xw&&(o-=xw),Z1(),$f(1e-10),b.Math.abs(s-o)<=1e-10||s==o||isNaN(s)&&isNaN(o)?0:so?1:ym(isNaN(s),isNaN(o))}function ict(t){var e,n,r,s,o,h,d;for(d=new _r,r=new G(t.a.b);r.a=t.o)throw at(new Y2t);d=e>>5,h=e&31,o=Rf(1,qr(Rf(h,1))),s?t.n[n][d]=T1(t.n[n][d],o):t.n[n][d]=sa(t.n[n][d],Gvt(o)),o=Rf(o,1),r?t.n[n][d]=T1(t.n[n][d],o):t.n[n][d]=sa(t.n[n][d],Gvt(o))}catch(m){throw m=es(m),Lt(m,333)?at(new Bo(Cut+t.o+"*"+t.p+Sut+e+ao+n+_ut)):at(m)}}function V8n(t,e,n,r){var s,o,h,d,m,k,T,A,P;for(P=new pp(new CUt(t)),d=lt(ut(V0,1),jp,10,0,[e,n]),m=0,k=d.length;m0&&(r=(!t.n&&(t.n=new Jt(Po,t,1,7)),u(Dt(t.n,0),135)).a,!r||ni(ni((e.a+=' "',e),r),'"'))),ni(pm(ni(pm(ni(pm(ni(pm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function I0e(t){var e,n,r;return t.Db&64?Bot(t):(e=new eh(xTt),n=t.k,n?ni(ni((e.a+=' "',e),n),'"'):(!t.n&&(t.n=new Jt(Po,t,1,7)),t.n.i>0&&(r=(!t.n&&(t.n=new Jt(Po,t,1,7)),u(Dt(t.n,0),135)).a,!r||ni(ni((e.a+=' "',e),r),'"'))),ni(pm(ni(pm(ni(pm(ni(pm((e.a+=" (",e),t.i),","),t.j)," | "),t.g),","),t.f),")"),e.a)}function K8n(t,e){var n,r,s,o,h;for(e==(i_(),_1t)&&IO(u(Ai(t.a,(Qy(),XN)),15)),s=u(Ai(t.a,(Qy(),XN)),15).Kc();s.Ob();)switch(r=u(s.Pb(),105),n=u(Oe(r.j,0),113).d.j,o=new fl(r.j),Ds(o,new cR),e.g){case 2:Mot(t,o,n,(Vm(),r2),1);break;case 1:case 0:h=O6n(o),Mot(t,new xp(o,0,h),n,(Vm(),r2),0),Mot(t,new xp(o,h,o.c.length),n,r2,1)}}function act(t,e){var n,r,s,o,h,d,m;if(e==null||e.length==0)return null;if(s=u(nu(t.a,e),143),!s){for(r=(d=new si(t.b).a.vc().Kc(),new Qi(d));r.a.Ob();)if(n=(o=u(r.a.Pb(),44),u(o.md(),143)),h=n.c,m=e.length,hn(h.substr(h.length-m,m),e)&&(e.length==h.length||Va(h,h.length-e.length-1)==46)){if(s)return null;s=n}s&&jo(t.a,e,s)}return s}function W8n(t,e){var n,r,s,o;return n=new Gi,r=u(nc(Wo(new ln(null,new gn(t.f,16)),n),jy(new we,new Fi,new Nn,new Bn,lt(ut(Ho,1),te,108,0,[(bl(),w3),sc]))),21),s=r.gc(),r=u(nc(Wo(new ln(null,new gn(e.f,16)),n),jy(new we,new Fi,new Nn,new Bn,lt(ut(Ho,1),te,108,0,[w3,sc]))),21),o=r.gc(),ss.p?(Xs(o,Er),o.d&&(d=o.o.b,e=o.a.b,o.a.b=d-e)):o.j==Er&&s.p>t.p&&(Xs(o,Hn),o.d&&(d=o.o.b,e=o.a.b,o.a.b=-(d-e)));break}return s}function HO(t,e,n,r,s){var o,h,d,m,k,T,A;if(!(Lt(e,207)||Lt(e,366)||Lt(e,193)))throw at(new zn("Method only works for ElkNode-, ElkLabel and ElkPort-objects."));return h=t.a/2,m=e.i+r-h,T=e.j+s-h,k=m+e.g+t.a,A=T+e.f+t.a,o=new Qu,Zr(o,new ae(m,T)),Zr(o,new ae(m,A)),Zr(o,new ae(k,A)),Zr(o,new ae(k,T)),d=new Wot(o),Qo(d,e),n&&hi(t.b,e,d),d}function B7(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(o=new ae(e,n),T=new G(t.a);T.a1,d&&(r=new ae(s,n.b),Zr(e.a,r)),XS(e.a,lt(ut(la,1),ue,8,0,[P,A]))}function cf(){cf=V,ZG=new Ey(r0,0),cP=new Ey("NIKOLOV",1),uP=new Ey("NIKOLOV_PIXEL",2),OAt=new Ey("NIKOLOV_IMPROVED",3),NAt=new Ey("NIKOLOV_IMPROVED_PIXEL",4),IAt=new Ey("DUMMYNODE_PERCENTAGE",5),PAt=new Ey("NODECOUNT_PERCENTAGE",6),tK=new Ey("NO_BOUNDARY",7),Lv=new Ey("MODEL_ORDER_LEFT_TO_RIGHT",8),N3=new Ey("MODEL_ORDER_RIGHT_TO_LEFT",9)}function iEn(t){var e,n,r,s,o;for(r=t.length,e=new YC,o=0;o=40,h&&s7n(t),gTn(t),Fkn(t),n=Xue(t),r=0;n&&r0&&Zr(t.f,o)):(t.c[h]-=k+1,t.c[h]<=0&&t.a[h]>0&&Zr(t.e,o))))}function U0e(t,e,n,r){var s,o,h,d,m,k,T;for(m=new ae(n,r),ia(m,u(X(e,(ji(),zT)),8)),T=Dr(e.b,0);T.b!=T.d.c;)k=u(Ar(T),39),ki(k.e,m),Zr(t.b,k);for(d=u(nc(r3t(new ln(null,new gn(e.a,16))),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15).Kc();d.Ob();){for(h=u(d.Pb(),65),o=Dr(h.a,0);o.b!=o.d.c;)s=u(Ar(o),8),s.a+=m.a,s.b+=m.b;Zr(t.a,h)}}function Akt(t,e){var n,r,s,o;if(0<(Lt(t,16)?u(t,16).gc():xg(t.Kc()))){if(s=e,1=0&&mo*2?(T=new Fq(A),k=tl(h)/Gl(h),m=Mct(T,e,new C6,n,r,s,k),ki(k1(T.e),m),A.c.length=0,o=0,In(A.c,T),In(A.c,h),o=tl(T)*Gl(T)+tl(h)*Gl(h)):(In(A.c,h),o+=tl(h)*Gl(h));return A}function K0e(t,e){var n,r,s,o,h,d;if(d=u(X(e,(De(),bs)),101),d==(ka(),Y0)||d==hu)for(s=new ae(e.f.a+e.d.b+e.d.c,e.f.b+e.d.d+e.d.a).b,h=new G(t.a);h.an?e:n;k<=A;++k)k==n?d=r++:(o=s[k],T=U.am(o.Lk()),k==e&&(m=k==A&&!T?r-1:r),T&&++r);return P=u(f_(t,e,n),76),d!=m&&hE(t,new jI(t.e,7,h,he(d),$.md(),m)),P}}else return u(Uot(t,e,n),76);return u(f_(t,e,n),76)}function TEn(t,e){var n,r,s,o,h,d,m;for(e.Ug("Port order processing",1),m=u(X(t,(De(),hAt)),430),r=new G(t.b);r.a=0&&(d=mvn(t,h),!(d&&(k<22?m.l|=1<>>1,h.m=T>>>1|(A&1)<<21,h.l=P>>>1|(T&1)<<21,--k;return n&&kat(m),o&&(r?(Zb=h7(t),s&&(Zb=Mce(Zb,(WE(),o9t)))):Zb=Eu(t.l,t.m,t.h)),m}function _En(t,e){var n,r,s,o,h,d,m,k,T,A;for(k=t.e[e.c.p][e.p]+1,m=e.c.a.c.length+1,d=new G(t.a);d.a0&&(qn(0,t.length),t.charCodeAt(0)==45||(qn(0,t.length),t.charCodeAt(0)==43))?1:0,r=h;rn)throw at(new jd(av+t+'"'));return d}function AEn(t){var e,n,r,s,o,h,d;for(h=new Ki,o=new G(t.a);o.a1)&&e==1&&u(t.a[t.b],10).k==(Un(),Vc)?xk(u(t.a[t.b],10),(uh(),K0)):r&&(!n||(t.c-t.b&t.a.length-1)>1)&&e==1&&u(t.a[t.c-1&t.a.length-1],10).k==(Un(),Vc)?xk(u(t.a[t.c-1&t.a.length-1],10),(uh(),h2)):(t.c-t.b&t.a.length-1)==2?(xk(u(r_(t),10),(uh(),K0)),xk(u(r_(t),10),h2)):r6n(t,s),E3t(t)}function MEn(t,e,n){var r,s,o,h,d;for(o=0,s=new Zn((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a));s.e!=s.i.gc();)r=u(ar(s),27),h="",(!r.n&&(r.n=new Jt(Po,r,1,7)),r.n).i==0||(h=u(Dt((!r.n&&(r.n=new Jt(Po,r,1,7)),r.n),0),135).a),d=new Eat(o++,e,h),Qo(d,r),Zt(d,(ji(),JA),r),d.e.b=r.j+r.f/2,d.f.a=b.Math.max(r.g,1),d.e.a=r.i+r.g/2,d.f.b=b.Math.max(r.f,1),Zr(e.b,d),yu(n.f,r,d)}function IEn(t){var e,n,r,s,o;r=u(X(t,(oe(),Li)),27),o=u(ne(r,(De(),Ow)),181).Hc((Yl(),qw)),t.e||(s=u(X(t,lu),21),e=new ae(t.f.a+t.d.b+t.d.c,t.f.b+t.d.d+t.d.a),s.Hc((Co(),Uh))?(Mi(r,bs,(ka(),hu)),rv(r,e.a,e.b,!1,!0)):Ie(Me(ne(r,c1t)))||rv(r,e.a,e.b,!0,!0)),o?Mi(r,Ow,en(qw)):Mi(r,Ow,(n=u(y1(xL),9),new _h(n,u(Ff(n,n.length),9),0)))}function Lkt(t,e,n){var r,s,o,h;if(e[0]>=t.length)return n.o=0,!0;switch(Va(t,e[0])){case 43:s=1;break;case 45:s=-1;break;default:return n.o=0,!0}if(++e[0],o=e[0],h=KH(t,e),h==0&&e[0]==o)return!1;if(e[0]d&&(d=s,T.c.length=0),s==d&&ge(T,new Ws(n.c.i,n)));mn(),Ds(T,t.c),Sm(t.b,m.p,T)}}function FEn(t,e){var n,r,s,o,h,d,m,k,T;for(h=new G(e.b);h.ad&&(d=s,T.c.length=0),s==d&&ge(T,new Ws(n.d.i,n)));mn(),Ds(T,t.c),Sm(t.f,m.p,T)}}function BEn(t,e){var n,r,s,o,h,d,m,k;if(k=Me(X(e,(Cc(),l8e))),k==null||(Wn(k),k)){for(cxn(t,e),s=new fe,m=Dr(e.b,0);m.b!=m.d.c;)h=u(Ar(m),39),n=w6t(t,h,null),n&&(Qo(n,e),In(s.c,n));if(t.a=null,t.b=null,s.c.length>1)for(r=new G(s);r.a=0&&d!=n&&(o=new ha(t,1,d,h,null),r?r.nj(o):r=o),n>=0&&(o=new ha(t,1,n,d==n?h:null,e),r?r.nj(o):r=o)),r}function X0e(t){var e,n,r;if(t.b==null){if(r=new dp,t.i!=null&&(Mo(r,t.i),r.a+=":"),t.f&256){for(t.f&256&&t.a!=null&&(ehn(t.i)||(r.a+="//"),Mo(r,t.a)),t.d!=null&&(r.a+="/",Mo(r,t.d)),t.f&16&&(r.a+="/"),e=0,n=t.j.length;eP?!1:(A=(m=B_(r,P,!1),m.a),T+d+A<=e.b&&($I(n,o-n.s),n.c=!0,$I(r,o-n.s),kO(r,n.s,n.t+n.d+d),r.k=!0,R4t(n.q,r),$=!0,s&&(zq(e,r),r.j=e,t.c.length>h&&(CO((vn(h,t.c.length),u(t.c[h],186)),r),(vn(h,t.c.length),u(t.c[h],186)).a.c.length==0&&Ep(t,h)))),$)}function VEn(t,e){var n,r,s,o,h,d;if(e.Ug("Partition midprocessing",1),s=new Fm,ms(_i(new ln(null,new gn(t.a,16)),new qB),new HVt(s)),s.d!=0){for(d=u(nc(a3t((o=s.i,new ln(null,(o||(s.i=new W4(s,s.c))).Nc()))),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),r=d.Kc(),n=u(r.Pb(),17);r.Ob();)h=u(r.Pb(),17),F6n(u(Ai(s,n),21),u(Ai(s,h),21)),n=h;e.Vg()}}function Z0e(t,e,n){var r,s,o,h,d,m,k,T;if(e.p==0){for(e.p=1,h=n,h||(s=new fe,o=(r=u(y1(bo),9),new _h(r,u(Ff(r,r.length),9),0)),h=new Ws(s,o)),u(h.a,15).Fc(e),e.k==(Un(),Ms)&&u(h.b,21).Fc(u(X(e,(oe(),Dc)),64)),m=new G(e.j);m.a0){if(s=u(t.Ab.g,2033),e==null){for(o=0;on.s&&dh)return ve(),Jn;break;case 4:case 3:if(T<0)return ve(),Hn;if(T+n>o)return ve(),Er}return m=(k+d/2)/h,r=(T+n/2)/o,m+r<=1&&m-r<=0?(ve(),Gn):m+r>=1&&m-r>=0?(ve(),Jn):r<.5?(ve(),Hn):(ve(),Er)}function YEn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(n=!1,T=Rt(Ht(X(e,(De(),Av)))),U=Kb*T,s=new G(e.b);s.am+U&&(J=A.g+P.g,P.a=(P.g*P.a+A.g*A.a)/J,P.g=J,A.f=P,n=!0)),o=d,A=P;return n}function rge(t,e,n,r,s,o,h){var d,m,k,T,A,P;for(P=new B6,k=e.Kc();k.Ob();)for(d=u(k.Pb(),853),A=new G(d.Rf());A.a0?d.a?(k=d.b.Mf().b,s>k&&(t.v||d.c.d.c.length==1?(h=(s-k)/2,d.d.d=h,d.d.a=h):(n=u(Oe(d.c.d,0),187).Mf().b,r=(n-k)/2,d.d.d=b.Math.max(0,r),d.d.a=s-r-k))):d.d.a=t.t+s:IS(t.u)&&(o=Zxt(d.b),o.d<0&&(d.d.d=-o.d),o.d+o.a>d.b.Mf().b&&(d.d.a=o.d+o.a-d.b.Mf().b))}function Vf(){Vf=V,jk=new _a((ai(),DP),he(1)),KU=new _a($w,80),F3e=new _a(zMt,5),S3e=new _a(sx,tT),N3e=new _a(qdt,he(1)),P3e=new _a(Hdt,(Pn(),!0)),gCt=new xm(50),I3e=new _a(Yp,gCt),hCt=AP,pCt=fL,_3e=new _a(Idt,!1),dCt=LP,D3e=R3,M3e=l2,L3e=jw,A3e=ux,O3e=j3,fCt=(u6t(),v3e),eft=E3e,GU=m3e,tft=y3e,bCt=k3e,j3e=dL,$3e=MK,R3e=MP,B3e=DK,wCt=(lk(),q3),new _a(t8,wCt)}function JEn(t,e){var n;switch(WI(t)){case 6:return ba(e);case 7:return Cy(e);case 8:return Ty(e);case 3:return Array.isArray(e)&&(n=WI(e),!(n>=14&&n<=16));case 11:return e!=null&&typeof e===Pct;case 12:return e!=null&&(typeof e===ZO||typeof e==Pct);case 0:return aot(e,t.__elementTypeId$);case 2:return $it(e)&&e.Tm!==yt;case 1:return $it(e)&&e.Tm!==yt||aot(e,t.__elementTypeId$);default:return!0}}function ige(t,e){var n,r,s,o;return r=b.Math.min(b.Math.abs(t.c-(e.c+e.b)),b.Math.abs(t.c+t.b-e.c)),o=b.Math.min(b.Math.abs(t.d-(e.d+e.a)),b.Math.abs(t.d+t.a-e.d)),n=b.Math.abs(t.c+t.b/2-(e.c+e.b/2)),n>t.b/2+e.b/2||(s=b.Math.abs(t.d+t.a/2-(e.d+e.a/2)),s>t.a/2+e.a/2)?1:n==0&&s==0?0:n==0?o/s+1:s==0?r/n+1:b.Math.min(r/n,o/s)+1}function ZEn(t,e){var n,r,s,o,h,d,m;for(o=0,d=0,m=0,s=new G(t.f.e);s.a0&&t.d!=(WS(),ift)&&(d+=h*(r.d.a+t.a[e.a][r.a]*(e.d.a-r.d.a)/n)),n>0&&t.d!=(WS(),nft)&&(m+=h*(r.d.b+t.a[e.a][r.a]*(e.d.b-r.d.b)/n)));switch(t.d.g){case 1:return new ae(d/o,e.d.b);case 2:return new ae(e.d.a,m/o);default:return new ae(d/o,m/o)}}function sge(t){var e,n,r,s,o,h;for(n=(!t.a&&(t.a=new Ps(vh,t,5)),t.a).i+2,h=new wu(n),ge(h,new ae(t.j,t.k)),ms(new ln(null,(!t.a&&(t.a=new Ps(vh,t,5)),new gn(t.a,16))),new pGt(h)),ge(h,new ae(t.b,t.c)),e=1;e0&&(aO(m,!1,(Rs(),Uo)),aO(m,!0,tc)),Cu(e.g,new mXt(t,n)),hi(t.g,e,n)}function cge(){cge=V;var t;for(p9t=lt(ut(Fr,1),ii,28,15,[-1,-1,30,19,15,13,11,11,10,9,9,8,8,8,8,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5]),Dht=Vt(Fr,ii,28,37,15,1),Xve=lt(ut(Fr,1),ii,28,15,[-1,-1,63,40,32,28,25,23,21,20,19,19,18,18,17,17,16,16,16,15,15,15,15,14,14,14,14,14,14,13,13,13,13,13,13,13,13]),b9t=Vt(x2,cut,28,37,14,1),t=2;t<=36;t++)Dht[t]=Ys(b.Math.pow(t,p9t[t])),b9t[t]=_O(rN,Dht[t])}function t7n(t){var e;if((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i!=1)throw at(new zn(Fwe+(!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i));return e=new Qu,iO(u(Dt((!t.b&&(t.b=new kn(vr,t,4,7)),t.b),0),84))&&Ma(e,Xpe(t,iO(u(Dt((!t.b&&(t.b=new kn(vr,t,4,7)),t.b),0),84)),!1)),iO(u(Dt((!t.c&&(t.c=new kn(vr,t,5,8)),t.c),0),84))&&Ma(e,Xpe(t,iO(u(Dt((!t.c&&(t.c=new kn(vr,t,5,8)),t.c),0),84)),!0)),e}function uge(t,e){var n,r,s,o,h;for(e.d?s=t.a.c==(Gd(),Dv)?ua(e.b):_s(e.b):s=t.a.c==(Gd(),Gp)?ua(e.b):_s(e.b),o=!1,r=new rr(sr(s.a.Kc(),new z));Mr(r);)if(n=u(dr(r),18),h=Ie(t.a.f[t.a.g[e.b.p].p]),!(!h&&!go(n)&&n.c.i.c==n.d.i.c)&&!(Ie(t.a.n[t.a.g[e.b.p].p])||Ie(t.a.n[t.a.g[e.b.p].p]))&&(o=!0,x1(t.b,t.a.g[tvn(n,e.b).p])))return e.c=!0,e.a=n,e;return e.c=o,e.a=null,e}function Mkt(t,e,n){var r,s,o,h,d,m,k;if(r=n.gc(),r==0)return!1;if(t.Pj())if(m=t.Qj(),z5t(t,e,n),h=r==1?t.Ij(3,null,n.Kc().Pb(),e,m):t.Ij(5,null,n,e,m),t.Mj()){for(d=r<100?null:new xb(r),o=e+r,s=e;s0){for(h=0;h>16==-15&&t.Cb.Yh()&&Vst(new jst(t.Cb,9,13,n,t.c,Np(Al(u(t.Cb,62)),t))):Lt(t.Cb,90)&&t.Db>>16==-23&&t.Cb.Yh()&&(e=t.c,Lt(e,90)||(e=(wn(),xf)),Lt(n,90)||(n=(wn(),xf)),Vst(new jst(t.Cb,9,10,n,e,Np(Wc(u(t.Cb,29)),t)))))),t.c}function r7n(t,e,n){var r,s,o,h,d,m,k,T,A;for(n.Ug("Hyperedge merging",1),_xn(t,e),m=new La(e.b,0);m.b0,d=gH(e,o),Umt(n?d.b:d.g,e),s5(d).c.length==1&&hs(r,d,r.c.b,r.c),s=new Ws(o,e),Ob(t.o,s),zu(t.e.a,o))}function bge(t,e){var n,r,s,o,h,d,m;return r=b.Math.abs(zz(t.b).a-zz(e.b).a),d=b.Math.abs(zz(t.b).b-zz(e.b).b),s=0,m=0,n=1,h=1,r>t.b.b/2+e.b.b/2&&(s=b.Math.min(b.Math.abs(t.b.c-(e.b.c+e.b.b)),b.Math.abs(t.b.c+t.b.b-e.b.c)),n=1-s/r),d>t.b.a/2+e.b.a/2&&(m=b.Math.min(b.Math.abs(t.b.d-(e.b.d+e.b.a)),b.Math.abs(t.b.d+t.b.a-e.b.d)),h=1-m/d),o=b.Math.min(n,h),(1-o)*b.Math.sqrt(r*r+d*d)}function a7n(t){var e,n,r,s;for(Dct(t,t.e,t.f,(Bm(),c2),!0,t.c,t.i),Dct(t,t.e,t.f,c2,!1,t.c,t.i),Dct(t,t.e,t.f,Z5,!0,t.c,t.i),Dct(t,t.e,t.f,Z5,!1,t.c,t.i),n7n(t,t.c,t.e,t.f,t.i),r=new La(t.i,0);r.b=65;n--)_d[n]=n-65<<24>>24;for(r=122;r>=97;r--)_d[r]=r-97+26<<24>>24;for(s=57;s>=48;s--)_d[s]=s-48+52<<24>>24;for(_d[43]=62,_d[47]=63,o=0;o<=25;o++)nb[o]=65+o&js;for(h=26,m=0;h<=51;++h,m++)nb[h]=97+m&js;for(t=52,d=0;t<=61;++t,d++)nb[t]=48+d&js;nb[62]=43,nb[63]=47}function wge(t,e){var n,r,s,o,h,d;return s=O4t(t),d=O4t(e),s==d?t.e==e.e&&t.a<54&&e.a<54?t.fe.f?1:0:(r=t.e-e.e,n=(t.d>0?t.d:b.Math.floor((t.a-1)*Tbe)+1)-(e.d>0?e.d:b.Math.floor((e.a-1)*Tbe)+1),n>r+1?s:n0&&(h=Z4(h,Age(r))),Sle(o,h))):sk&&(P=0,$+=m+e,m=0),B7(h,P,$),n=b.Math.max(n,P+T.a),m=b.Math.max(m,T.b),P+=T.a+e;return new ae(n+e,$+m+e)}function Pkt(t,e){var n,r,s,o,h,d,m;if(!ed(t))throw at(new Ro(Pwe));if(r=ed(t),o=r.g,s=r.f,o<=0&&s<=0)return ve(),bc;switch(d=t.i,m=t.j,e.g){case 2:case 1:if(d<0)return ve(),Gn;if(d+t.g>o)return ve(),Jn;break;case 4:case 3:if(m<0)return ve(),Hn;if(m+t.f>s)return ve(),Er}return h=(d+t.g/2)/o,n=(m+t.f/2)/s,h+n<=1&&h-n<=0?(ve(),Gn):h+n>=1&&h-n>=0?(ve(),Jn):n<.5?(ve(),Hn):(ve(),Er)}function u7n(t,e,n,r,s){var o,h;if(o=Qa(sa(e[0],So),sa(r[0],So)),t[0]=qr(o),o=_m(o,32),n>=s){for(h=1;h0&&(s.b[h++]=0,s.b[h++]=o.b[0]-1),e=1;e0&&(H(m,m.d-s.d),s.c==(C1(),o2)&&N(m,m.a-s.d),m.d<=0&&m.i>0&&hs(e,m,e.c.b,e.c)));for(o=new G(t.f);o.a0&&(q(d,d.i-s.d),s.c==(C1(),o2)&&j(d,d.b-s.d),d.i<=0&&d.d>0&&hs(n,d,n.c.b,n.c)))}function f7n(t,e,n,r,s){var o,h,d,m,k,T,A,P,$;for(mn(),Ds(t,new U8),h=bI(t),$=new fe,P=new fe,d=null,m=0;h.b!=0;)o=u(h.b==0?null:(ur(h.b!=0),Oh(h,h.a.a)),163),!d||tl(d)*Gl(d)/21&&(m>tl(d)*Gl(d)/2||h.b==0)&&(A=new Fq(P),T=tl(d)/Gl(d),k=Mct(A,e,new C6,n,r,s,T),ki(k1(A.e),k),d=A,In($.c,A),m=0,P.c.length=0));return Hs($,P),$}function Xc(t,e,n,r,s){pg();var o,h,d,m,k,T,A;if(Syt(t,"src"),Syt(n,"dest"),A=Wl(t),m=Wl(n),Uvt((A.i&4)!=0,"srcType is not an array"),Uvt((m.i&4)!=0,"destType is not an array"),T=A.c,h=m.c,Uvt(T.i&1?T==h:(h.i&1)==0,"Array types don't match"),Jpn(t,e,n,r,s),!(T.i&1)&&A!=m)if(k=nw(t),o=nw(n),$t(t)===$t(n)&&er;)ls(o,d,k[--e]);else for(d=r+s;r0),r.a.Xb(r.c=--r.b),A>P+m&&Kl(r);for(h=new G($);h.a0),r.a.Xb(r.c=--r.b)}}function g7n(){yi();var t,e,n,r,s,o;if(l0t)return l0t;for(t=new ih(4),a3(t,Gb(wht,!0)),$_(t,Gb("M",!0)),$_(t,Gb("C",!0)),o=new ih(4),r=0;r<11;r++)iu(o,r,r);return e=new ih(4),a3(e,Gb("M",!0)),iu(e,4448,4607),iu(e,65438,65439),s=new yS(2),gw(s,t),gw(s,OL),n=new yS(2),n.Jm(Mz(o,Gb("L",!0))),n.Jm(e),n=new By(3,n),n=new Cyt(s,n),l0t=n,l0t}function s3(t,e){var n,r,s,o,h,d,m,k;for(n=new RegExp(e,"g"),m=Vt(Pe,ue,2,0,6,1),r=0,k=t,o=null;;)if(d=n.exec(k),d==null||k==""){m[r]=k;break}else h=d.index,m[r]=(Da(0,h,k.length),k.substr(0,h)),k=Lh(k,h+d[0].length,k.length),n.lastIndex=0,o==k&&(m[r]=(Da(0,1,k.length),k.substr(0,1)),k=(qn(1,k.length+1),k.substr(1))),o=k,++r;if(t.length>0){for(s=m.length;s>0&&m[s-1]=="";)--s;s0&&(A-=r[0]+t.c,r[0]+=t.c),r[2]>0&&(A-=r[2]+t.c),r[1]=b.Math.max(r[1],A),Pz(t.a[1],n.c+e.b+r[0]-(r[1]-A)/2,r[1]);for(o=t.a,d=0,k=o.length;d0?(t.n.c.length-1)*t.i:0,r=new G(t.n);r.a1)for(r=Dr(s,0);r.b!=r.d.c;)for(n=u(Ar(r),235),o=0,m=new G(n.e);m.a0&&(e[0]+=t.c,A-=e[0]),e[2]>0&&(A-=e[2]+t.c),e[1]=b.Math.max(e[1],A),Fz(t.a[1],r.d+n.d+e[0]-(e[1]-A)/2,e[1]);else for(U=r.d+n.d,$=r.a-n.d-n.a,h=t.a,m=0,T=h.length;m0||Wm(s.b.d,t.b.d+t.b.a)==0&&r.b<0||Wm(s.b.d+s.b.a,t.b.d)==0&&r.b>0){d=0;break}}else d=b.Math.min(d,b1e(t,s,r));d=b.Math.min(d,xge(t,o,d,r))}return d}function KO(t,e){var n,r,s,o,h,d,m;if(t.b<2)throw at(new zn("The vector chain must contain at least a source and a target point."));for(s=(ur(t.b!=0),u(t.a.a.c,8)),rI(e,s.a,s.b),m=new j6((!e.a&&(e.a=new Ps(vh,e,5)),e.a)),h=Dr(t,1);h.a=0&&o!=n))throw at(new zn(AN));for(s=0,m=0;mRt(td(h.g,h.d[0]).a)?(ur(m.b>0),m.a.Xb(m.c=--m.b),Ly(m,h),s=!0):d.e&&d.e.gc()>0&&(o=(!d.e&&(d.e=new fe),d.e).Mc(e),k=(!d.e&&(d.e=new fe),d.e).Mc(n),(o||k)&&((!d.e&&(d.e=new fe),d.e).Fc(h),++h.c));s||In(r.c,h)}function x7n(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;return A=t.a.i+t.a.g/2,P=t.a.i+t.a.g/2,U=e.i+e.g/2,tt=e.j+e.f/2,d=new ae(U,tt),k=u(ne(e,(ai(),Jk)),8),k.a=k.a+A,k.b=k.b+P,o=(d.b-k.b)/(d.a-k.a),r=d.b-o*d.a,J=n.i+n.g/2,ht=n.j+n.f/2,m=new ae(J,ht),T=u(ne(n,Jk),8),T.a=T.a+A,T.b=T.b+P,h=(m.b-T.b)/(m.a-T.a),s=m.b-h*m.a,$=(r-s)/(h-o),k.a<$&&d.a<$||$>>0,"0"+e.toString(16)),r="\\x"+Lh(n,n.length-2,n.length)):t>=po?(n=(e=t>>>0,"0"+e.toString(16)),r="\\v"+Lh(n,n.length-6,n.length)):r=""+String.fromCharCode(t&js)}return r}function Cge(t){var e,n,r;if(z4(u(X(t,(De(),bs)),101)))for(n=new G(t.j);n.a=e.o&&n.f<=e.f||e.a*.5<=n.f&&e.a*1.5>=n.f){if(h=u(Oe(e.n,e.n.c.length-1),209),h.e+h.d+n.g+s<=r&&(o=u(Oe(e.n,e.n.c.length-1),209),o.f-t.f+n.f<=t.b||t.a.c.length==1))return O5t(e,n),!0;if(e.s+n.g<=r&&(e.t+e.d+n.f+s<=t.b||t.a.c.length==1))return ge(e.b,n),d=u(Oe(e.n,e.n.c.length-1),209),ge(e.n,new aq(e.s,d.f+d.a+e.i,e.i)),dxt(u(Oe(e.n,e.n.c.length-1),209),n),vge(e,n),!0}return!1}function _ge(t,e,n){var r,s,o,h;return t.Pj()?(s=null,o=t.Qj(),r=t.Ij(1,h=Kst(t,e,n),n,e,o),t.Mj()&&!(t.Yi()&&h!=null?Ti(h,n):$t(h)===$t(n))?(h!=null&&(s=t.Oj(h,s)),s=t.Nj(n,s),t.Tj()&&(s=t.Wj(h,n,s)),s?(s.nj(r),s.oj()):t.Jj(r)):(t.Tj()&&(s=t.Wj(h,n,s)),s?(s.nj(r),s.oj()):t.Jj(r)),h):(h=Kst(t,e,n),t.Mj()&&!(t.Yi()&&h!=null?Ti(h,n):$t(h)===$t(n))&&(s=null,h!=null&&(s=t.Oj(h,null)),s=t.Nj(n,s),s&&s.oj()),h)}function A7n(t,e){var n,r,s,o,h;if(e.Ug("Path-Like Graph Wrapping",1),t.b.c.length==0){e.Vg();return}if(s=new q6t(t),h=(s.i==null&&(s.i=N4t(s,new bR)),Rt(s.i)*s.f),n=h/(s.i==null&&(s.i=N4t(s,new bR)),Rt(s.i)),s.b>n){e.Vg();return}switch(u(X(t,(De(),d1t)),351).g){case 2:o=new mR;break;case 0:o=new oC;break;default:o=new vR}if(r=o.og(t,s),!o.pg())switch(u(X(t,WG),352).g){case 2:r=w1e(s,r);break;case 1:r=ofe(s,r)}TTn(t,s,r),e.Vg()}function N_(t,e){var n,r,s,o,h,d,m,k;e%=24,t.q.getHours()!=e&&(r=new b.Date(t.q.getTime()),r.setDate(r.getDate()+1),d=t.q.getTimezoneOffset()-r.getTimezoneOffset(),d>0&&(m=d/60|0,k=d%60,s=t.q.getDate(),n=t.q.getHours(),n+m>=24&&++s,o=new b.Date(t.q.getFullYear(),t.q.getMonth(),s,e+m,t.q.getMinutes()+k,t.q.getSeconds(),t.q.getMilliseconds()),t.q.setTime(o.getTime()))),h=t.q.getTime(),t.q.setTime(h+36e5),t.q.getHours()!=e&&t.q.setTime(h)}function L7n(t,e){var n,r,s,o;if(qfn(t.d,t.e),t.c.a.$b(),Rt(Ht(X(e.j,(De(),FG))))!=0||Rt(Ht(X(e.j,FG)))!=0)for(n=S5,$t(X(e.j,U0))!==$t((Wd(),Up))&&Zt(e.j,(oe(),i2),(Pn(),!0)),o=u(X(e.j,$A),17).a,s=0;ss&&++k,ge(h,(vn(d+k,e.c.length),u(e.c[d+k],17))),m+=(vn(d+k,e.c.length),u(e.c[d+k],17)).a-r,++n;n=tt&&t.e[m.p]>U*t.b||At>=n*tt)&&(In(P.c,d),d=new fe,Ma(h,o),o.a.$b(),k-=T,$=b.Math.max($,k*t.b+J),k+=At,Tt=At,At=0,T=0,J=0);return new Ws($,P)}function pct(t){var e,n,r,s,o,h,d;if(!t.d){if(d=new Jtt,e=_L,o=e.a.zc(t,e),o==null){for(r=new Zn(Yo(t));r.e!=r.i.gc();)n=u(ar(r),29),gs(d,pct(n));e.a.Bc(t)!=null,e.a.gc()==0}for(h=d.i,s=(!t.q&&(t.q=new Jt(vf,t,11,10)),new Zn(t.q));s.e!=s.i.gc();++h)u(ar(s),411);gs(d,(!t.q&&(t.q=new Jt(vf,t,11,10)),t.q)),Uy(d),t.d=new $4((u(Dt(Qt((Lb(),Fn).o),9),19),d.i),d.g),t.e=u(d.g,688),t.e==null&&(t.e=DTe),_l(t).b&=-17}return t.d}function $7(t,e,n,r){var s,o,h,d,m,k;if(k=Lu(t.e.Dh(),e),m=0,s=u(t.g,124),vo(),u(e,69).xk()){for(h=0;h1||U==-1)if(A=u(J,71),P=u(T,71),A.dc())P.$b();else for(h=!!yo(e),o=0,d=t.a?A.Kc():A.Ii();d.Ob();)k=u(d.Pb(),58),s=u(od(t,k),58),s?(h?(m=P.dd(s),m==-1?P.Gi(o,s):o!=m&&P.Ui(o,s)):P.Gi(o,s),++o):t.b&&!h&&(P.Gi(o,k),++o);else J==null?T.Wb(null):(s=od(t,J),s==null?t.b&&!yo(e)&&T.Wb(J):T.Wb(s))}function N7n(t,e){var n,r,s,o,h,d,m,k;for(n=new gQ,s=new rr(sr(ua(e).a.Kc(),new z));Mr(s);)if(r=u(dr(s),18),!go(r)&&(d=r.c.i,Yxt(d,QU))){if(k=dkt(t,d,QU,XU),k==-1)continue;n.b=b.Math.max(n.b,k),!n.a&&(n.a=new fe),ge(n.a,d)}for(h=new rr(sr(_s(e).a.Kc(),new z));Mr(h);)if(o=u(dr(h),18),!go(o)&&(m=o.d.i,Yxt(m,XU))){if(k=dkt(t,m,XU,QU),k==-1)continue;n.d=b.Math.max(n.d,k),!n.c&&(n.c=new fe),ge(n.c,m)}return n}function P7n(t,e,n,r){var s,o,h,d,m,k,T;if(n.d.i!=e.i){for(s=new Ig(t),y(s,(Un(),fa)),Zt(s,(oe(),Li),n),Zt(s,(De(),bs),(ka(),hu)),In(r.c,s),h=new Yc,hc(h,s),Xs(h,(ve(),Gn)),d=new Yc,hc(d,s),Xs(d,Jn),T=n.d,xa(n,h),o=new Pm,Qo(o,n),Zt(o,Vo,null),Xa(o,d),xa(o,T),k=new La(n.b,0);k.b1e6)throw at(new f$("power of ten too big"));if(t<=xi)return nk(RO(Bk[1],e),e);for(r=RO(Bk[1],xi),s=r,n=Pc(t-xi),e=Ys(t%xi);$c(n,xi)>0;)s=Z4(s,r),n=sf(n,xi);for(s=Z4(s,RO(Bk[1],e)),s=nk(s,xi),n=Pc(t-xi);$c(n,xi)>0;)s=nk(s,xi),n=sf(n,xi);return s=nk(s,e),s}function Lge(t){var e,n,r,s,o,h,d,m,k,T;for(m=new G(t.a);m.ak&&r>k)T=d,k=Rt(e.p[d.p])+Rt(e.d[d.p])+d.o.b+d.d.a;else{s=!1,n._g()&&n.bh("bk node placement breaks on "+d+" which should have been after "+T);break}if(!s)break}return n._g()&&n.bh(e+" is feasible: "+s),s}function jkt(t,e,n,r){var s,o,h,d,m,k,T,A,P;if(o=new Ig(t),y(o,(Un(),uu)),Zt(o,(De(),bs),(ka(),hu)),s=0,e){for(h=new Yc,Zt(h,(oe(),Li),e),Zt(o,Li,e.i),Xs(h,(ve(),Gn)),hc(h,o),P=Kd(e.e),k=P,T=0,A=k.length;T0){if(s<0&&T.a&&(s=m,o=k[0],r=0),s>=0){if(d=T.b,m==s&&(d-=r++,d==0))return 0;if(!Ope(e,k,T,d,h)){m=s-1,k[0]=o;continue}}else if(s=-1,!Ope(e,k,T,0,h))return 0}else{if(s=-1,Va(T.c,0)==32){if(A=k[0],Oae(e,k),k[0]>A)continue}else if(Ehn(e,T.c,k[0])){k[0]+=T.c.length;continue}return 0}return CCn(h,n)?k[0]:0}function z7n(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(T=new Rz(new e$(n)),d=Vt(Fl,$0,28,t.f.e.c.length,16,1),Eyt(d,d.length),n[e.a]=0,k=new G(t.f.e);k.a=0&&!u5(t,T,A);)--A;s[T]=A}for($=0;$=0&&!u5(t,d,U);)--d;o[U]=d}for(m=0;me[P]&&Pr[m]&&cV(t,m,P,!1,!0)}function $kt(t){var e,n,r,s,o,h,d,m;n=Ie(Me(X(t,(Vf(),_3e)))),o=t.a.c.d,d=t.a.d.d,n?(h=qd(ia(new ae(d.a,d.b),o),.5),m=qd(Oa(t.e),.5),e=ia(ki(new ae(o.a,o.b),h),m),Xmt(t.d,e)):(s=Rt(Ht(X(t.a,F3e))),r=t.d,o.a>=d.a?o.b>=d.b?(r.a=d.a+(o.a-d.a)/2+s,r.b=d.b+(o.b-d.b)/2-s-t.e.b):(r.a=d.a+(o.a-d.a)/2+s,r.b=o.b+(d.b-o.b)/2+s):o.b>=d.b?(r.a=o.a+(d.a-o.a)/2+s,r.b=d.b+(o.b-d.b)/2+s):(r.a=o.a+(d.a-o.a)/2+s,r.b=o.b+(d.b-o.b)/2-s-t.e.b))}function F_(t){var e,n,r,s,o,h,d,m;if(!t.f){if(m=new cM,d=new cM,e=_L,h=e.a.zc(t,e),h==null){for(o=new Zn(Yo(t));o.e!=o.i.gc();)s=u(ar(o),29),gs(m,F_(s));e.a.Bc(t)!=null,e.a.gc()==0}for(r=(!t.s&&(t.s=new Jt(Wu,t,21,17)),new Zn(t.s));r.e!=r.i.gc();)n=u(ar(r),179),Lt(n,102)&&Or(d,u(n,19));Uy(d),t.r=new yte(t,(u(Dt(Qt((Lb(),Fn).o),6),19),d.i),d.g),gs(m,t.r),Uy(m),t.f=new $4((u(Dt(Qt(Fn.o),5),19),m.i),m.g),_l(t).b&=-3}return t.f}function Mge(t){wm(t,new dw(gm(hm(dm(fm(new G1,vw),"ELK DisCo"),"Layouter for arranging unconnected subgraphs. The subgraphs themselves are, by default, not laid out."),new g1))),le(t,vw,Lut,Se(cCt)),le(t,vw,Dut,Se(Xht)),le(t,vw,Dk,Se(f3e)),le(t,vw,ov,Se(oCt)),le(t,vw,A8t,Se(b3e)),le(t,vw,L8t,Se(p3e)),le(t,vw,_8t,Se(w3e)),le(t,vw,D8t,Se(g3e)),le(t,vw,B8t,Se(d3e)),le(t,vw,R8t,Se(Yht)),le(t,vw,j8t,Se(aCt)),le(t,vw,$8t,Se(HU))}function fV(){fV=V,LIt=lt(ut(Yh,1),Zd,28,15,[48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70]),aTe=new RegExp(`[ +\r\f]+`);try{TL=lt(ut(E_n,1),Ln,2114,0,[new AM((wmt(),mH("yyyy-MM-dd'T'HH:mm:ss'.'SSSZ",hI((h$(),h$(),mA))))),new AM(mH("yyyy-MM-dd'T'HH:mm:ss'.'SSS",hI(mA))),new AM(mH("yyyy-MM-dd'T'HH:mm:ss",hI(mA))),new AM(mH("yyyy-MM-dd'T'HH:mm",hI(mA))),new AM(mH("yyyy-MM-dd",hI(mA)))])}catch(t){if(t=es(t),!Lt(t,82))throw at(t)}}function H7n(t,e){var n,r,s,o;if(s=Dl(t.d,1)!=0,r=ykt(t,e),r==0&&Ie(Me(X(e.j,(oe(),i2)))))return 0;!Ie(Me(X(e.j,(oe(),i2))))&&!Ie(Me(X(e.j,U5)))||$t(X(e.j,(De(),U0)))===$t((Wd(),Up))?e.c.mg(e.e,s):s=Ie(Me(X(e.j,i2))),qO(t,e,s,!0),Ie(Me(X(e.j,U5)))&&Zt(e.j,U5,(Pn(),!1)),Ie(Me(X(e.j,i2)))&&(Zt(e.j,i2,(Pn(),!1)),Zt(e.j,U5,!0)),n=ykt(t,e);do{if(I4t(t),n==0)return 0;s=!s,o=n,qO(t,e,s,!1),n=ykt(t,e)}while(o>n);return o}function Ige(t,e){var n,r,s,o;if(s=Dl(t.d,1)!=0,r=GH(t,e),r==0&&Ie(Me(X(e.j,(oe(),i2)))))return 0;!Ie(Me(X(e.j,(oe(),i2))))&&!Ie(Me(X(e.j,U5)))||$t(X(e.j,(De(),U0)))===$t((Wd(),Up))?e.c.mg(e.e,s):s=Ie(Me(X(e.j,i2))),qO(t,e,s,!0),Ie(Me(X(e.j,U5)))&&Zt(e.j,U5,(Pn(),!1)),Ie(Me(X(e.j,i2)))&&(Zt(e.j,i2,(Pn(),!1)),Zt(e.j,U5,!0)),n=GH(t,e);do{if(I4t(t),n==0)return 0;s=!s,o=n,qO(t,e,s,!1),n=GH(t,e)}while(o>n);return o}function zkt(t,e,n,r){var s,o,h,d,m,k,T,A,P;return m=ia(new ae(n.a,n.b),t),k=m.a*e.b-m.b*e.a,T=e.a*r.b-e.b*r.a,A=(m.a*r.b-m.b*r.a)/T,P=k/T,T==0?k==0?(s=ki(new ae(n.a,n.b),qd(new ae(r.a,r.b),.5)),o=Nb(t,s),h=Nb(ki(new ae(t.a,t.b),e),s),d=b.Math.sqrt(r.a*r.a+r.b*r.b)*.5,o=0&&A<=1&&P>=0&&P<=1?ki(new ae(t.a,t.b),qd(new ae(e.a,e.b),A)):null}function V7n(t,e,n){var r,s,o,h,d;if(r=u(X(t,(De(),t1t)),21),n.a>e.a&&(r.Hc((fw(),cL))?t.c.a+=(n.a-e.a)/2:r.Hc(uL)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(r.Hc((fw(),hL))?t.c.b+=(n.b-e.b)/2:r.Hc(lL)&&(t.c.b+=n.b-e.b)),u(X(t,(oe(),lu)),21).Hc((Co(),Uh))&&(n.a>e.a||n.b>e.b))for(d=new G(t.a);d.ae.a&&(r.Hc((fw(),cL))?t.c.a+=(n.a-e.a)/2:r.Hc(uL)&&(t.c.a+=n.a-e.a)),n.b>e.b&&(r.Hc((fw(),hL))?t.c.b+=(n.b-e.b)/2:r.Hc(lL)&&(t.c.b+=n.b-e.b)),u(X(t,(oe(),lu)),21).Hc((Co(),Uh))&&(n.a>e.a||n.b>e.b))for(h=new G(t.a);h.a0?t.i:0)>e&&m>0&&(o=0,h+=m+t.i,s=b.Math.max(s,P),r+=m+t.i,m=0,P=0,n&&(++A,ge(t.n,new aq(t.s,h,t.i))),d=0),P+=k.g+(d>0?t.i:0),m=b.Math.max(m,k.f),n&&dxt(u(Oe(t.n,A),209),k),o+=k.g+(d>0?t.i:0),++d;return s=b.Math.max(s,P),r+=m,n&&(t.r=s,t.d=r,wxt(t.j)),new Ah(t.s,t.t,s,r)}function bct(t){var e,n,r,s,o,h,d,m,k,T,A,P;for(t.b=!1,A=Zi,m=Vs,P=Zi,k=Vs,r=t.e.a.ec().Kc();r.Ob();)for(n=u(r.Pb(),272),s=n.a,A=b.Math.min(A,s.c),m=b.Math.max(m,s.c+s.b),P=b.Math.min(P,s.d),k=b.Math.max(k,s.d+s.a),h=new G(n.c);h.at.o.a&&(T=(m-t.o.a)/2,d.b=b.Math.max(d.b,T),d.c=b.Math.max(d.c,T))}}function W7n(t){var e,n,r,s,o,h,d,m;for(o=new Sre,Cin(o,(ck(),KEe)),r=(s=cat(t,Vt(Pe,ue,2,0,6,1)),new gr(new hl(new crt(t,s).b)));r.bd?1:-1:o5t(t.a,e.a,o),s==-1)A=-m,T=h==m?Ost(e.a,d,t.a,o):Pst(e.a,d,t.a,o);else if(A=h,h==m){if(s==0)return Xd(),yA;T=Ost(t.a,o,e.a,d)}else T=Pst(t.a,o,e.a,d);return k=new Y2(A,T.length,T),qS(k),k}function Y7n(t,e){var n,r,s,o;if(o=pge(e),!e.c&&(e.c=new Jt(kl,e,9,9)),ms(new ln(null,(!e.c&&(e.c=new Jt(kl,e,9,9)),new gn(e.c,16))),new xVt(o)),s=u(X(o,(oe(),lu)),21),z9n(e,s),s.Hc((Co(),Uh)))for(r=new Zn((!e.c&&(e.c=new Jt(kl,e,9,9)),e.c));r.e!=r.i.gc();)n=u(ar(r),123),bCn(t,e,o,n);return u(ne(e,(De(),Ow)),181).gc()!=0&&o0e(e,o),Ie(Me(X(o,cAt)))&&s.Fc(_G),qi(o,sP)&&pWt(new V5t(Rt(Ht(X(o,sP)))),o),$t(ne(e,A3))===$t((Ag(),Xp))?$Sn(t,e,o):TSn(t,e,o),o}function X7n(t){var e,n,r,s,o,h,d,m;for(s=new G(t.b);s.a0?Lh(n.a,0,o-1):""):(Da(0,o-1,t.length),t.substr(0,o-1)):n?n.a:t}function Q7n(t,e){var n,r,s,o,h,d,m;for(e.Ug("Sort By Input Model "+X(t,(De(),U0)),1),s=0,r=new G(t.b);r.a=t.b.length?(o[s++]=h.b[r++],o[s++]=h.b[r++]):r>=h.b.length?(o[s++]=t.b[n++],o[s++]=t.b[n++]):h.b[r]0?t.i:0)),++e;for(_5t(t.n,m),t.d=n,t.r=r,t.g=0,t.f=0,t.e=0,t.o=Zi,t.p=Zi,o=new G(t.b);o.a0&&(s=(!t.n&&(t.n=new Jt(Po,t,1,7)),u(Dt(t.n,0),135)).a,!s||ni(ni((e.a+=' "',e),s),'"'))),n=(!t.b&&(t.b=new kn(vr,t,4,7)),!(t.b.i<=1&&(!t.c&&(t.c=new kn(vr,t,5,8)),t.c.i<=1))),n?e.a+=" [":e.a+=" ",ni(e,Fmt(new ert,new Zn(t.b))),n&&(e.a+="]"),e.a+=But,n&&(e.a+="["),ni(e,Fmt(new ert,new Zn(t.c))),n&&(e.a+="]"),e.a)}function Z7n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(Wt=t.c,se=e.c,n=Xo(Wt.a,t,0),r=Xo(se.a,e,0),At=u(Ym(t,(To(),vl)).Kc().Pb(),12),Ze=u(Ym(t,ku).Kc().Pb(),12),Bt=u(Ym(e,vl).Kc().Pb(),12),On=u(Ym(e,ku).Kc().Pb(),12),ht=Kd(At.e),Ce=Kd(Ze.g),Tt=Kd(Bt.e),rn=Kd(On.g),Xy(t,r,se),h=Tt,T=0,U=h.length;TT?new J2((C1(),F3),n,e,k-T):k>0&&T>0&&(new J2((C1(),F3),e,n,0),new J2(F3,n,e,0))),h)}function nTn(t,e,n){var r,s,o;for(t.a=new fe,o=Dr(e.b,0);o.b!=o.d.c;){for(s=u(Ar(o),39);u(X(s,(Cc(),h0)),17).a>t.a.c.length-1;)ge(t.a,new Ws(S5,E7t));r=u(X(s,h0),17).a,n==(Rs(),Uo)||n==tc?(s.e.aRt(Ht(u(Oe(t.a,r),42).b))&&re(u(Oe(t.a,r),42),s.e.a+s.f.a)):(s.e.bRt(Ht(u(Oe(t.a,r),42).b))&&re(u(Oe(t.a,r),42),s.e.b+s.f.b))}}function Pge(t,e,n,r){var s,o,h,d,m,k,T;if(o=fH(r),d=Ie(Me(X(r,(De(),nAt)))),(d||Ie(Me(X(t,zG))))&&!z4(u(X(t,bs),101)))s=hk(o),m=Dkt(t,n,n==(To(),ku)?s:bO(s));else switch(m=new Yc,hc(m,t),e?(T=m.n,T.a=e.a-t.n.a,T.b=e.b-t.n.b,$fe(T,0,0,t.o.a,t.o.b),Xs(m,nge(m,o))):(s=hk(o),Xs(m,n==(To(),ku)?s:bO(s))),h=u(X(r,(oe(),lu)),21),k=m.j,o.g){case 2:case 1:(k==(ve(),Hn)||k==Er)&&h.Fc((Co(),q5));break;case 4:case 3:(k==(ve(),Jn)||k==Gn)&&h.Fc((Co(),q5))}return m}function Fge(t,e){var n,r,s,o,h,d;for(h=new sw(new mr(t.f.b).a);h.b;){if(o=Um(h),s=u(o.ld(),602),e==1){if(s.Af()!=(Rs(),Gh)&&s.Af()!=kd)continue}else if(s.Af()!=(Rs(),Uo)&&s.Af()!=tc)continue;switch(r=u(u(o.md(),42).b,86),d=u(u(o.md(),42).a,194),n=d.c,s.Af().g){case 2:r.g.c=t.e.a,r.g.b=b.Math.max(1,r.g.b+n);break;case 1:r.g.c=r.g.c+n,r.g.b=b.Math.max(1,r.g.b-n);break;case 4:r.g.d=t.e.b,r.g.a=b.Math.max(1,r.g.a+n);break;case 3:r.g.d=r.g.d+n,r.g.a=b.Math.max(1,r.g.a-n)}}}function rTn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(d=Vt(Fr,ii,28,e.b.c.length,15,1),k=Vt(fft,te,273,e.b.c.length,0,1),m=Vt(V0,jp,10,e.b.c.length,0,1),A=t.a,P=0,$=A.length;P<$;++P){for(T=A[P],J=0,h=new G(T.e);h.a0&&m[r]&&(U=U4(t.b,m[r],s)),J=b.Math.max(J,s.c.c.b+U);for(o=new G(T.e);o.a1)throw at(new zn(ON));m||(o=D0(e,r.Kc().Pb()),h.Fc(o))}return K4t(t,g6t(t,e,n),h)}function gV(t,e,n){var r,s,o,h,d,m,k,T;if(Ng(t.e,e))m=(vo(),u(e,69).xk()?new Sz(e,t):new eI(e,t)),WH(m.c,m.b),xS(m,u(n,16));else{for(T=Lu(t.e.Dh(),e),r=u(t.g,124),h=0;h"}m!=null&&(e.a+=""+m)}else t.e?(d=t.e.zb,d!=null&&(e.a+=""+d)):(e.a+="?",t.b?(e.a+=" super ",xct(t.b,e)):t.f&&(e.a+=" extends ",xct(t.f,e)))}function uTn(t){t.b=null,t.a=null,t.o=null,t.q=null,t.v=null,t.w=null,t.B=null,t.p=null,t.Q=null,t.R=null,t.S=null,t.T=null,t.U=null,t.V=null,t.W=null,t.bb=null,t.eb=null,t.ab=null,t.H=null,t.db=null,t.c=null,t.d=null,t.f=null,t.n=null,t.r=null,t.s=null,t.u=null,t.G=null,t.J=null,t.e=null,t.j=null,t.i=null,t.g=null,t.k=null,t.t=null,t.F=null,t.I=null,t.L=null,t.M=null,t.O=null,t.P=null,t.$=null,t.N=null,t.Z=null,t.cb=null,t.K=null,t.D=null,t.A=null,t.C=null,t._=null,t.fb=null,t.X=null,t.Y=null,t.gb=!1,t.hb=!1}function lTn(t){var e,n,r,s;if(r=Oct((!t.c&&(t.c=DI(Pc(t.f))),t.c),0),t.e==0||t.a==0&&t.f!=-1&&t.e<0)return r;if(e=O4t(t)<0?1:0,n=t.e,s=(r.length+1+b.Math.abs(Ys(t.e)),new I4),e==1&&(s.a+="-"),t.e>0)if(n-=r.length-e,n>=0){for(s.a+="0.";n>_w.length;n-=_w.length)Dte(s,_w);gZt(s,_w,Ys(n)),ni(s,(qn(e,r.length+1),r.substr(e)))}else n=e-n,ni(s,Lh(r,e,Ys(n))),s.a+=".",ni(s,Iyt(r,Ys(n)));else{for(ni(s,(qn(e,r.length+1),r.substr(e)));n<-_w.length;n+=_w.length)Dte(s,_w);gZt(s,_w,Ys(-n))}return s.a}function kct(t){var e,n,r,s,o,h,d,m,k;return!(t.k!=(Un(),xs)||t.j.c.length<=1||(o=u(X(t,(De(),bs)),101),o==(ka(),hu))||(s=(Yy(),(t.q?t.q:(mn(),mn(),q0))._b(Cv)?r=u(X(t,Cv),203):r=u(X(Pa(t),RA),203),r),s==JG)||!(s==J5||s==Q5)&&(h=Rt(Ht(Wy(t,jA))),e=u(X(t,oP),140),!e&&(e=new pvt(h,h,h,h)),k=gc(t,(ve(),Gn)),m=e.d+e.a+(k.gc()-1)*h,m>t.o.b||(n=gc(t,Jn),d=e.d+e.a+(n.gc()-1)*h,d>t.o.b)))}function hTn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;e.Ug("Orthogonal edge routing",1),k=Rt(Ht(X(t,(De(),X5)))),n=Rt(Ht(X(t,W5))),r=Rt(Ht(X(t,Pw))),P=new Uit(0,n),tt=0,h=new La(t.b,0),d=null,T=null,m=null,A=null;do T=h.b0?($=(U-1)*n,d&&($+=r),T&&($+=r),$e||Ie(Me(ne(m,(fd(),yP)))))&&(s=0,o+=T.b+n,In(A.c,T),T=new l3t(o,n),r=new Tat(0,T.f,T,n),zq(T,r),s=0),r.b.c.length==0||!Ie(Me(ne(Ji(m),(fd(),fdt))))&&(m.f>=r.o&&m.f<=r.f||r.a*.5<=m.f&&r.a*1.5>=m.f)?O5t(r,m):(h=new Tat(r.s+r.r+n,T.f,T,n),zq(T,h),O5t(h,m)),s=m.i+m.g;return In(A.c,T),A}function R_(t){var e,n,r,s;if(!(t.b==null||t.b.length<=2)&&!t.a){for(e=0,s=0;s=t.b[s+1])s+=2;else if(n0)for(r=new fl(u(Ai(t.a,o),21)),mn(),Ds(r,new _M(e)),s=new La(o.b,0);s.b0&&r>=-6?r>=0?iI(o,n-Ys(t.e),String.fromCharCode(46)):(dat(o,e-1,e-1,"0."),iI(o,e+1,af(_w,0,-Ys(r)-1))):(n-e>=1&&(iI(o,e,String.fromCharCode(46)),++n),iI(o,n,String.fromCharCode(69)),r>0&&iI(o,++n,String.fromCharCode(43)),iI(o,++n,""+OS(Pc(r)))),t.g=o.a,t.g))}function xTn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;r=Rt(Ht(X(e,(De(),sAt)))),Wt=u(X(e,$A),17).a,P=4,s=3,se=20/Wt,$=!1,m=0,h=xi;do{for(o=m!=1,A=m!=0,Ce=0,tt=t.a,Tt=0,Bt=tt.length;TtWt)?(m=2,h=xi):m==0?(m=1,h=Ce):(m=0,h=Ce)):($=Ce>=h||h-Ce0?1:ym(isNaN(r),isNaN(0)))>=0^($f(s0),(b.Math.abs(d)<=s0||d==0||isNaN(d)&&isNaN(0)?0:d<0?-1:d>0?1:ym(isNaN(d),isNaN(0)))>=0)?b.Math.max(d,r):($f(s0),(b.Math.abs(r)<=s0||r==0||isNaN(r)&&isNaN(0)?0:r<0?-1:r>0?1:ym(isNaN(r),isNaN(0)))>0?b.Math.sqrt(d*d+r*r):-b.Math.sqrt(d*d+r*r))}function gw(t,e){var n,r,s,o,h,d;if(e){if(!t.a&&(t.a=new u$),t.e==2){c$(t.a,e);return}if(e.e==1){for(s=0;s=po?Mo(n,I5t(r)):PE(n,r&js),h=new lst(10,null,0),sln(t.a,h,d-1)):(n=(h.Mm().length+o,new YC),Mo(n,h.Mm())),e.e==0?(r=e.Km(),r>=po?Mo(n,I5t(r)):PE(n,r&js)):Mo(n,e.Mm()),u(h,530).b=n.a}}function TTn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!n.dc()){for(d=0,P=0,r=n.Kc(),U=u(r.Pb(),17).a;d1&&(m=k.Hg(m,t.a,d));return m.c.length==1?u(Oe(m,m.c.length-1),238):m.c.length==2?dTn((vn(0,m.c.length),u(m.c[0],238)),(vn(1,m.c.length),u(m.c[1],238)),h,o):null}function ATn(t,e,n){var r,s,o,h,d,m,k;for(n.Ug("Find roots",1),t.a.c.length=0,s=Dr(e.b,0);s.b!=s.d.c;)r=u(Ar(s),39),r.b.b==0&&(Zt(r,(ji(),u2),(Pn(),!0)),ge(t.a,r));switch(t.a.c.length){case 0:o=new Eat(0,e,"DUMMY_ROOT"),Zt(o,(ji(),u2),(Pn(),!0)),Zt(o,F1t,!0),Zr(e.b,o);break;case 1:break;default:for(h=new Eat(0,e,nU),m=new G(t.a);m.a=b.Math.abs(r.b)?(r.b=0,o.d+o.a>h.d&&o.dh.c&&o.c0){if(e=new dmt(t.i,t.g),n=t.i,o=n<100?null:new xb(n),t.Tj())for(r=0;r0){for(d=t.g,k=t.i,KS(t),o=k<100?null:new xb(k),r=0;r>13|(t.m&15)<<9,s=t.m>>4&8191,o=t.m>>17|(t.h&255)<<5,h=(t.h&1048320)>>8,d=e.l&8191,m=e.l>>13|(e.m&15)<<9,k=e.m>>4&8191,T=e.m>>17|(e.h&255)<<5,A=(e.h&1048320)>>8,rn=n*d,Ze=r*d,On=s*d,Dn=o*d,er=h*d,m!=0&&(Ze+=n*m,On+=r*m,Dn+=s*m,er+=o*m),k!=0&&(On+=n*k,Dn+=r*k,er+=s*k),T!=0&&(Dn+=n*T,er+=r*T),A!=0&&(er+=n*A),$=rn&Il,U=(Ze&511)<<13,P=$+U,tt=rn>>22,ht=Ze>>9,Tt=(On&262143)<<4,At=(Dn&31)<<17,J=tt+ht+Tt+At,Wt=On>>18,se=Dn>>5,Ce=(er&4095)<<8,Bt=Wt+se+Ce,J+=P>>22,P&=Il,Bt+=J>>22,J&=Il,Bt&=Fg,Eu(P,J,Bt)}function Kge(t){var e,n,r,s,o,h,d;if(d=u(Oe(t.j,0),12),d.g.c.length!=0&&d.e.c.length!=0)throw at(new Ro("Interactive layout does not support NORTH/SOUTH ports with incoming _and_ outgoing edges."));if(d.g.c.length!=0){for(o=Zi,n=new G(d.g);n.a4)if(t.fk(e)){if(t.al()){if(s=u(e,54),r=s.Eh(),m=r==t.e&&(t.ml()?s.yh(s.Fh(),t.il())==t.jl():-1-s.Fh()==t.Lj()),t.nl()&&!m&&!r&&s.Jh()){for(o=0;o0&&Kfe(t,d,A);for(s=new G(A);s.at.d[h.p]&&(n+=C3t(t.b,o)*u(m.b,17).a,Ob(t.a,he(o)));for(;!WC(t.a);)i4t(t.b,u(K6(t.a),17).a)}return n}function OTn(t,e){var n,r,s,o,h,d,m,k,T,A;if(T=u(X(t,(oe(),Dc)),64),r=u(Oe(t.j,0),12),T==(ve(),Hn)?Xs(r,Er):T==Er&&Xs(r,Hn),u(X(e,(De(),Ow)),181).Hc((Yl(),qw))){if(m=Rt(Ht(X(t,FT))),k=Rt(Ht(X(t,BT))),h=Rt(Ht(X(t,O3))),d=u(X(e,M3),21),d.Hc((wl(),Hg)))for(n=k,A=t.o.a/2-r.n.a,o=new G(r.f);o.a0&&(k=t.n.a/o);break;case 2:case 4:s=t.i.o.b,s>0&&(k=t.n.b/s)}Zt(t,(oe(),xv),k)}if(m=t.o,h=t.a,r)h.a=r.a,h.b=r.b,t.d=!0;else if(e!=Td&&e!=d2&&d!=bc)switch(d.g){case 1:h.a=m.a/2;break;case 2:h.a=m.a,h.b=m.b/2;break;case 3:h.a=m.a/2,h.b=m.b;break;case 4:h.b=m.b/2}else h.a=m.a/2,h.b=m.b/2}function j_(t){var e,n,r,s,o,h,d,m,k,T;if(t.Pj())if(T=t.Ej(),m=t.Qj(),T>0)if(e=new B4t(t.pj()),n=T,o=n<100?null:new xb(n),uI(t,n,e.g),s=n==1?t.Ij(4,Dt(e,0),null,0,m):t.Ij(6,e,null,-1,m),t.Mj()){for(r=new Zn(e);r.e!=r.i.gc();)o=t.Oj(ar(r),o);o?(o.nj(s),o.oj()):t.Jj(s)}else o?(o.nj(s),o.oj()):t.Jj(s);else uI(t,t.Ej(),t.Fj()),t.Jj(t.Ij(6,(mn(),co),null,-1,m));else if(t.Mj())if(T=t.Ej(),T>0){for(d=t.Fj(),k=T,uI(t,T,d),o=k<100?null:new xb(k),r=0;r1&&tl(h)*Gl(h)/2>d[0]){for(o=0;od[o];)++o;U=new xp(J,0,o+1),A=new Fq(U),T=tl(h)/Gl(h),m=Mct(A,e,new C6,n,r,s,T),ki(k1(A.e),m),V6(D7(P,A),X7),$=new xp(J,o+1,J.c.length),xxt(P,$),J.c.length=0,k=0,Kte(d,d.length,0)}else tt=P.b.c.length==0?null:Oe(P.b,0),tt!=null&&sat(P,0),k>0&&(d[k]=d[k-1]),d[k]+=tl(h)*Gl(h),++k,In(J.c,h);return J}function jTn(t,e){var n,r,s,o;n=e.b,o=new fl(n.j),s=0,r=n.j,r.c.length=0,Am(u(iw(t.b,(ve(),Hn),(Vm(),mv)),15),n),s=xO(o,s,new am,r),Am(u(iw(t.b,Hn,r2),15),n),s=xO(o,s,new bJ,r),Am(u(iw(t.b,Hn,wv),15),n),Am(u(iw(t.b,Jn,mv),15),n),Am(u(iw(t.b,Jn,r2),15),n),s=xO(o,s,new lR,r),Am(u(iw(t.b,Jn,wv),15),n),Am(u(iw(t.b,Er,mv),15),n),s=xO(o,s,new hR,r),Am(u(iw(t.b,Er,r2),15),n),s=xO(o,s,new fR,r),Am(u(iw(t.b,Er,wv),15),n),Am(u(iw(t.b,Gn,mv),15),n),s=xO(o,s,new aR,r),Am(u(iw(t.b,Gn,r2),15),n),Am(u(iw(t.b,Gn,wv),15),n)}function $Tn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$;for(d=new G(e);d.a.5?ht-=h*2*(U-.5):U<.5&&(ht+=o*2*(.5-U)),s=d.d.b,httt.a-J-T&&(ht=tt.a-J-T),d.n.a=e+ht}}function VTn(t){var e,n,r,s,o;if(r=u(X(t,(De(),Iu)),171),r==(Rh(),s2)){for(n=new rr(sr(ua(t).a.Kc(),new z));Mr(n);)if(e=u(dr(n),18),!ose(e))throw at(new fp(zut+EO(t)+"' has its layer constraint set to FIRST_SEPARATE, but has at least one incoming edge. FIRST_SEPARATE nodes must not have incoming edges."))}else if(r==S3){for(o=new rr(sr(_s(t).a.Kc(),new z));Mr(o);)if(s=u(dr(o),18),!ose(s))throw at(new fp(zut+EO(t)+"' has its layer constraint set to LAST_SEPARATE, but has at least one outgoing edge. LAST_SEPARATE nodes must not have outgoing edges."))}}function XO(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U;if(t.e&&t.c.c>19&&(e=h7(e),m=!m),h=A6n(e),o=!1,s=!1,r=!1,t.h==aN&&t.m==0&&t.l==0)if(s=!0,o=!0,h==-1)t=OQt((WE(),a9t)),r=!0,m=!m;else return d=H6t(t,h),m&&kat(d),n&&(Zb=Eu(0,0,0)),d;else t.h>>19&&(o=!0,t=h7(t),r=!0,m=!m);return h!=-1?rbn(t,h,m,o,n):Lxt(t,e)<0?(n&&(o?Zb=h7(t):Zb=Eu(t.l,t.m,t.h)),Eu(0,0,0)):SEn(r?t:Eu(t.l,t.m,t.h),e,m,o,s,n)}function Sct(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U;if(h=t.e,m=e.e,h==0)return e;if(m==0)return t;if(o=t.d,d=e.d,o+d==2)return n=sa(t.a[0],So),r=sa(e.a[0],So),h==m?(T=Qa(n,r),U=qr(T),$=qr(Ab(T,32)),$==0?new kg(h,U):new Y2(h,2,lt(ut(Fr,1),ii,28,15,[U,$]))):(Xd(),J$(h<0?sf(r,n):sf(n,r),0)?zb(h<0?sf(r,n):sf(n,r)):FS(zb(Cp(h<0?sf(r,n):sf(n,r)))));if(h==m)P=h,A=o>=d?Pst(t.a,o,e.a,d):Pst(e.a,d,t.a,o);else{if(s=o!=d?o>d?1:-1:o5t(t.a,e.a,o),s==0)return Xd(),yA;s==1?(P=h,A=Ost(t.a,o,e.a,d)):(P=m,A=Ost(e.a,d,t.a,o))}return k=new Y2(P,A.length,A),qS(k),k}function GTn(t,e){var n,r,s,o,h,d,m;if(!(t.g>e.f||e.g>t.f)){for(n=0,r=0,h=t.w.a.ec().Kc();h.Ob();)s=u(h.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&++n;for(d=t.r.a.ec().Kc();d.Ob();)s=u(d.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,e.g,e.f)&&--n;for(m=e.w.a.ec().Kc();m.Ob();)s=u(m.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&++r;for(o=e.r.a.ec().Kc();o.Ob();)s=u(o.Pb(),12),Nat(dc(lt(ut(la,1),ue,8,0,[s.i.n,s.n,s.a])).b,t.g,t.f)&&--r;n=0)return n;switch(Om($o(t,n))){case 2:{if(hn("",Lp(t,n.qk()).xe())){if(m=TI($o(t,n)),d=RE($o(t,n)),T=K6t(t,e,m,d),T)return T;for(s=Ekt(t,e),h=0,A=s.gc();h1)throw at(new zn(ON));for(T=Lu(t.e.Dh(),e),r=u(t.g,124),h=0;h1,k=new sd(P.b);lc(k.a)||lc(k.b);)m=u(lc(k.a)?et(k.a):et(k.b),18),A=m.c==P?m.d:m.c,b.Math.abs(dc(lt(ut(la,1),ue,8,0,[A.i.n,A.n,A.a])).b-h.b)>1&&Okn(t,m,h,o,P)}}function JTn(t){var e,n,r,s,o,h;if(s=new La(t.e,0),r=new La(t.a,0),t.d)for(n=0;nxlt;){for(o=e,h=0;b.Math.abs(e-o)0),s.a.Xb(s.c=--s.b),d7n(t,t.b-h,o,r,s),ur(s.b0),r.a.Xb(r.c=--r.b)}if(!t.d)for(n=0;n0?(t.f[T.p]=$/(T.e.c.length+T.g.c.length),t.c=b.Math.min(t.c,t.f[T.p]),t.b=b.Math.max(t.b,t.f[T.p])):d&&(t.f[T.p]=$)}}function t9n(t){t.b=null,t.bb=null,t.fb=null,t.qb=null,t.a=null,t.c=null,t.d=null,t.e=null,t.f=null,t.n=null,t.M=null,t.L=null,t.Q=null,t.R=null,t.K=null,t.db=null,t.eb=null,t.g=null,t.i=null,t.j=null,t.k=null,t.gb=null,t.o=null,t.p=null,t.q=null,t.r=null,t.$=null,t.ib=null,t.S=null,t.T=null,t.t=null,t.s=null,t.u=null,t.v=null,t.w=null,t.B=null,t.A=null,t.C=null,t.D=null,t.F=null,t.G=null,t.H=null,t.I=null,t.J=null,t.P=null,t.Z=null,t.U=null,t.V=null,t.W=null,t.X=null,t.Y=null,t._=null,t.ab=null,t.cb=null,t.hb=null,t.nb=null,t.lb=null,t.mb=null,t.ob=null,t.pb=null,t.jb=null,t.kb=null,t.N=!1,t.O=!1}function e9n(t,e,n){var r,s,o,h;for(n.Ug("Graph transformation ("+t.a+")",1),h=Rm(e.a),o=new G(e.b);o.a=d.b.c)&&(d.b=e),(!d.c||e.c<=d.c.c)&&(d.d=d.c,d.c=e),(!d.e||e.d>=d.e.d)&&(d.e=e),(!d.f||e.d<=d.f.d)&&(d.f=e);return r=new _H((u7(),bv)),MI(t,l4e,new hl(lt(ut(GN,1),Ln,382,0,[r]))),h=new _H(y3),MI(t,u4e,new hl(lt(ut(GN,1),Ln,382,0,[h]))),s=new _H(v3),MI(t,c4e,new hl(lt(ut(GN,1),Ln,382,0,[s]))),o=new _H(F5),MI(t,o4e,new hl(lt(ut(GN,1),Ln,382,0,[o]))),Qot(r.c,bv),Qot(s.c,v3),Qot(o.c,F5),Qot(h.c,y3),d.a.c.length=0,Hs(d.a,r.c),Hs(d.a,Bh(s.c)),Hs(d.a,o.c),Hs(d.a,Bh(h.c)),d}function i9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U;for(e.Ug(cwe,1),$=Rt(Ht(ne(t,(N0(),B3)))),h=Rt(Ht(ne(t,(fd(),iL)))),d=u(ne(t,rL),107),M4t((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a)),T=Hge((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a),$,h),!t.a&&(t.a=new Jt(bi,t,10,11)),k=new G(T);k.a0&&(t.a=m+($-1)*o,e.c.b+=t.a,e.f.b+=t.a)),U.a.gc()!=0&&(P=new Uit(1,o),$=Xkt(P,e,U,J,e.f.b+m-e.c.b),$>0&&(e.f.b+=m+($-1)*o))}function Xge(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(T=Rt(Ht(X(t,(De(),_v)))),r=Rt(Ht(X(t,pAt))),P=new iM,Zt(P,_v,T+r),k=e,ht=k.d,J=k.c.i,Tt=k.d.i,tt=ymt(J.c),At=ymt(Tt.c),s=new fe,A=tt;A<=At;A++)d=new Ig(t),y(d,(Un(),fa)),Zt(d,(oe(),Li),k),Zt(d,bs,(ka(),hu)),Zt(d,KG,P),$=u(Oe(t.b,A),30),A==tt?Xy(d,$.a.c.length-n,$):Aa(d,$),Bt=Rt(Ht(X(k,Hp))),Bt<0&&(Bt=0,Zt(k,Hp,Bt)),d.o.b=Bt,U=b.Math.floor(Bt/2),h=new Yc,Xs(h,(ve(),Gn)),hc(h,d),h.n.b=U,m=new Yc,Xs(m,Jn),hc(m,d),m.n.b=U,xa(k,h),o=new Pm,Qo(o,k),Zt(o,Vo,null),Xa(o,m),xa(o,ht),Kvn(d,k,o),In(s.c,o),k=o;return s}function _ct(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;for(m=u(Pp(t,(ve(),Gn)).Kc().Pb(),12).e,$=u(Pp(t,Jn).Kc().Pb(),12).g,d=m.c.length,At=rd(u(Oe(t.j,0),12));d-- >0;){for(J=(vn(0,m.c.length),u(m.c[0],18)),s=(vn(0,$.c.length),u($.c[0],18)),Tt=s.d.e,o=Xo(Tt,s,0),A1n(J,s.d,o),Xa(s,null),xa(s,null),U=J.a,e&&Zr(U,new io(At)),r=Dr(s.a,0);r.b!=r.d.c;)n=u(Ar(r),8),Zr(U,new io(n));for(ht=J.b,P=new G(s.b);P.ah)&&qs(t.b,u(tt.b,18));++d}o=h}}}function Kkt(t,e){var n;if(e==null||hn(e,Vu)||e.length==0&&t.k!=(Fp(),Qk))return null;switch(t.k.g){case 1:return kH(e,uT)?(Pn(),bT):kH(e,jlt)?(Pn(),t2):null;case 2:try{return he(lh(e,Ga,xi))}catch(r){if(r=es(r),Lt(r,130))return null;throw at(r)}case 4:try{return Jy(e)}catch(r){if(r=es(r),Lt(r,130))return null;throw at(r)}case 3:return e;case 5:return bue(t),D1e(t,e);case 6:return bue(t),s6n(t,t.a,e);case 7:try{return n=bxn(t),n.cg(e),n}catch(r){if(r=es(r),Lt(r,33))return null;throw at(r)}default:throw at(new Ro("Invalid type set for this layout option."))}}function Wkt(t){var e;switch(t.d){case 1:{if(t.Sj())return t.o!=-2;break}case 2:{if(t.Sj())return t.o==-2;break}case 3:case 5:case 4:case 6:case 7:return t.o>-2;default:return!1}switch(e=t.Rj(),t.p){case 0:return e!=null&&Ie(Me(e))!=bS(t.k,0);case 1:return e!=null&&u(e,222).a!=qr(t.k)<<24>>24;case 2:return e!=null&&u(e,180).a!=(qr(t.k)&js);case 6:return e!=null&&bS(u(e,168).a,t.k);case 5:return e!=null&&u(e,17).a!=qr(t.k);case 7:return e!=null&&u(e,191).a!=qr(t.k)<<16>>16;case 3:return e!=null&&Rt(Ht(e))!=t.j;case 4:return e!=null&&u(e,161).a!=t.j;default:return e==null?t.n!=null:!Ti(e,t.n)}}function QO(t,e,n){var r,s,o,h;return t.ol()&&t.nl()&&(h=jit(t,u(n,58)),$t(h)!==$t(n))?(t.xj(e),t.Dj(e,Zse(t,e,h)),t.al()&&(o=(s=u(n,54),t.ml()?t.kl()?s.Th(t.b,yo(u(En($u(t.b),t.Lj()),19)).n,u(En($u(t.b),t.Lj()).Hk(),29).kk(),null):s.Th(t.b,ns(s.Dh(),yo(u(En($u(t.b),t.Lj()),19))),null,null):s.Th(t.b,-1-t.Lj(),null,null)),!u(h,54).Ph()&&(o=(r=u(h,54),t.ml()?t.kl()?r.Rh(t.b,yo(u(En($u(t.b),t.Lj()),19)).n,u(En($u(t.b),t.Lj()).Hk(),29).kk(),o):r.Rh(t.b,ns(r.Dh(),yo(u(En($u(t.b),t.Lj()),19))),null,o):r.Rh(t.b,-1-t.Lj(),null,o))),o&&o.oj()),Hl(t.b)&&t.Jj(t.Ij(9,n,h,e,!1)),h):n}function Qge(t){var e,n,r,s,o,h,d,m,k,T;for(r=new fe,h=new G(t.e.a);h.a0&&(h=b.Math.max(h,ece(t.C.b+r.d.b,s))),T=r,A=s,P=o;t.C&&t.C.c>0&&($=P+t.C.c,k&&($+=T.d.c),h=b.Math.max(h,(Z1(),$f(gd),b.Math.abs(A-1)<=gd||A==1||isNaN(A)&&isNaN(1)?0:$/(1-A)))),n.n.b=0,n.a.a=h}function Zge(t,e){var n,r,s,o,h,d,m,k,T,A,P,$;if(n=u(Io(t.b,e),127),m=u(u(Ai(t.r,e),21),87),m.dc()){n.n.d=0,n.n.a=0;return}for(k=t.u.Hc((wl(),Hg)),h=0,t.A.Hc((Yl(),qw))&&A0e(t,e),d=m.Kc(),T=null,P=0,A=0;d.Ob();)r=u(d.Pb(),117),o=Rt(Ht(r.b.of((hz(),$U)))),s=r.b.Mf().b,T?($=A+T.d.a+t.w+r.d.d,h=b.Math.max(h,(Z1(),$f(gd),b.Math.abs(P-o)<=gd||P==o||isNaN(P)&&isNaN(o)?0:$/(o-P)))):t.C&&t.C.d>0&&(h=b.Math.max(h,ece(t.C.d+r.d.d,o))),T=r,P=o,A=s;t.C&&t.C.a>0&&($=A+t.C.a,k&&($+=T.d.a),h=b.Math.max(h,(Z1(),$f(gd),b.Math.abs(P-1)<=gd||P==1||isNaN(P)&&isNaN(1)?0:$/(1-P)))),n.n.d=0,n.a.b=h}function o9n(t,e,n,r,s,o,h,d){var m,k,T,A,P,$,U,J,tt,ht;if(U=!1,k=ekt(n.q,e.f+e.b-n.q.f),$=r.f>e.b&&d,ht=s-(n.q.e+k-h),A=(m=B_(r,ht,!1),m.a),$&&A>r.f)return!1;if($){for(P=0,tt=new G(e.d);tt.a=(vn(o,t.c.length),u(t.c[o],186)).e,!$&&A>e.b&&!T)?!1:((T||$||A<=e.b)&&(T&&A>e.b?(n.d=A,$I(n,Rfe(n,A))):(nfe(n.q,k),n.c=!0),$I(r,s-(n.s+n.r)),kO(r,n.q.e+n.q.d,e.f),zq(e,r),t.c.length>o&&(CO((vn(o,t.c.length),u(t.c[o],186)),r),(vn(o,t.c.length),u(t.c[o],186)).a.c.length==0&&Ep(t,o)),U=!0),U)}function tpe(t,e,n){var r,s,o,h,d,m;for(this.g=t,d=e.d.length,m=n.d.length,this.d=Vt(V0,jp,10,d+m,0,1),h=0;h0?Jst(this,this.f/this.a):td(e.g,e.d[0]).a!=null&&td(n.g,n.d[0]).a!=null?Jst(this,(Rt(td(e.g,e.d[0]).a)+Rt(td(n.g,n.d[0]).a))/2):td(e.g,e.d[0]).a!=null?Jst(this,td(e.g,e.d[0]).a):td(n.g,n.d[0]).a!=null&&Jst(this,td(n.g,n.d[0]).a)}function c9n(t,e){var n,r,s,o,h,d,m,k,T,A;for(t.a=new Iee(Vpn(gL)),r=new G(e.a);r.a=1&&(tt-h>0&&A>=0?(m.n.a+=J,m.n.b+=o*h):tt-h<0&&T>=0&&(m.n.a+=J*tt,m.n.b+=o));t.o.a=e.a,t.o.b=e.b,Zt(t,(De(),Ow),(Yl(),r=u(y1(xL),9),new _h(r,u(Ff(r,r.length),9),0)))}function h9n(t,e,n,r,s,o){var h;if(!(e==null||!Uat(e,BIt,RIt)))throw at(new zn("invalid scheme: "+e));if(!t&&!(n!=null&&$d(n,Hu(35))==-1&&n.length>0&&(qn(0,n.length),n.charCodeAt(0)!=47)))throw at(new zn("invalid opaquePart: "+n));if(t&&!(e!=null&&BM(WK,e.toLowerCase()))&&!(n==null||!Uat(n,CL,SL)))throw at(new zn(Fme+n));if(t&&e!=null&&BM(WK,e.toLowerCase())&&!Vyn(n))throw at(new zn(Fme+n));if(!X2n(r))throw at(new zn("invalid device: "+r));if(!Nbn(s))throw h=s==null?"invalid segments: null":"invalid segment: "+Dbn(s),at(new zn(h));if(!(o==null||$d(o,Hu(35))==-1))throw at(new zn("invalid query: "+o))}function f9n(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;if(n.Ug("Network simplex layering",1),t.b=e,ht=u(X(e,(De(),$A)),17).a*4,tt=t.b.a,tt.c.length<1){n.Vg();return}for(o=lEn(t,tt),J=null,s=Dr(o,0);s.b!=s.d.c;){for(r=u(Ar(s),15),d=ht*Ys(b.Math.sqrt(r.gc())),h=CEn(r),uct(pwt(frn(bwt(mit(h),d),J),!0),n.eh(1)),P=t.b.b,U=new G(h.a);U.a1)for(J=Vt(Fr,ii,28,t.b.b.c.length,15,1),A=0,k=new G(t.b.b);k.a0){EH(t,n,0),n.a+=String.fromCharCode(r),s=Nwn(e,o),EH(t,n,s),o+=s-1;continue}r==39?o+10&&U.a<=0){m.c.length=0,In(m.c,U);break}$=U.i-U.d,$>=d&&($>d&&(m.c.length=0,d=$),In(m.c,U))}m.c.length!=0&&(h=u(Oe(m,MH(s,m.c.length)),118),At.a.Bc(h)!=null,h.g=T++,Fkt(h,e,n,r),m.c.length=0)}for(tt=t.c.length+1,P=new G(t);P.aVs||e.o==Fw&&T=d&&s<=m)d<=s&&o<=m?(n[T++]=s,n[T++]=o,r+=2):d<=s?(n[T++]=s,n[T++]=m,t.b[r]=m+1,h+=2):o<=m?(n[T++]=d,n[T++]=o,r+=2):(n[T++]=d,n[T++]=m,t.b[r]=m+1);else if(mKb)&&d<10);mwt(t.c,new Gx),ipe(t),oln(t.c),n9n(t.f)}function x9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(n=u(X(t,(De(),bs)),101),h=t.f,o=t.d,d=h.a+o.b+o.c,m=0-o.d-t.c.b,T=h.b+o.d+o.a-t.c.b,k=new fe,A=new fe,s=new G(e);s.a=2){for(m=Dr(n,0),h=u(Ar(m),8),d=u(Ar(m),8);d.a0&&aO(k,!0,(Rs(),tc)),d.k==(Un(),Ms)&&zee(k),hi(t.f,d,e)}}function T9n(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(s=u(X(t,(ji(),JA)),27),k=xi,T=xi,d=Ga,m=Ga,At=Dr(t.b,0);At.b!=At.d.c;)ht=u(Ar(At),39),$=ht.e,U=ht.f,k=b.Math.min(k,$.a-U.a/2),T=b.Math.min(T,$.b-U.b/2),d=b.Math.max(d,$.a+U.a/2),m=b.Math.max(m,$.b+U.b/2);for(P=u(ne(s,(Cc(),SLt)),107),Tt=Dr(t.b,0);Tt.b!=Tt.d.c;)ht=u(Ar(Tt),39),A=X(ht,JA),Lt(A,207)&&(o=u(A,27),Ch(o,ht.e.a,ht.e.b),$O(o,ht));for(tt=Dr(t.a,0);tt.b!=tt.d.c;)J=u(Ar(tt),65),r=u(X(J,JA),74),r&&(e=J.a,n=b5(r,!0,!0),KO(e,n));Bt=d-k+(P.b+P.c),h=m-T+(P.d+P.a),Ie(Me(ne(s,(ai(),R3))))||rv(s,Bt,h,!1,!1),Mi(s,ox,Bt-(P.b+P.c)),Mi(s,ax,h-(P.d+P.a))}function ape(t,e){var n,r,s,o,h,d,m,k,T,A;for(m=!0,s=0,k=t.g[e.p],T=e.o.b+t.o,n=t.d[e.p][2],Mh(t.b,k,he(u(Oe(t.b,k),17).a-1+n)),Mh(t.c,k,Rt(Ht(Oe(t.c,k)))-T+n*t.f),++k,k>=t.j?(++t.j,ge(t.b,he(1)),ge(t.c,T)):(r=t.d[e.p][1],Mh(t.b,k,he(u(Oe(t.b,k),17).a+1-r)),Mh(t.c,k,Rt(Ht(Oe(t.c,k)))+T-r*t.f)),(t.r==(cf(),cP)&&(u(Oe(t.b,k),17).a>t.k||u(Oe(t.b,k-1),17).a>t.k)||t.r==uP&&(Rt(Ht(Oe(t.c,k)))>t.n||Rt(Ht(Oe(t.c,k-1)))>t.n))&&(m=!1),h=new rr(sr(ua(e).a.Kc(),new z));Mr(h);)o=u(dr(h),18),d=o.c.i,t.g[d.p]==k&&(A=ape(t,d),s=s+u(A.a,17).a,m=m&&Ie(Me(A.b)));return t.g[e.p]=k,s=s+t.d[e.p][0],new Ws(he(s),(Pn(),!!m))}function ope(t,e){var n,r,s,o,h;n=Rt(Ht(X(e,(De(),Yf)))),n<2&&Zt(e,Yf,2),r=u(X(e,ph),88),r==(Rs(),Ed)&&Zt(e,ph,fH(e)),s=u(X(e,T6e),17),s.a==0?Zt(e,(oe(),Kk),new Kat):Zt(e,(oe(),Kk),new pq(s.a)),o=Me(X(e,BA)),o==null&&Zt(e,BA,(Pn(),$t(X(e,zg))===$t((Lg(),WT)))),ms(new ln(null,new gn(e.a,16)),new lp(t)),ms(fc(new ln(null,new gn(e.b,16)),new p4),new $C(t)),h=new epe(e),Zt(e,(oe(),G5),h),EI(t.a),E1(t.a,(Ua(),Wf),u(X(e,Dw),188)),E1(t.a,H0,u(X(e,Iw),188)),E1(t.a,Qc,u(X(e,FA),188)),E1(t.a,cu,u(X(e,UG),188)),E1(t.a,Zo,Tpn(u(X(e,zg),223))),kmt(t.a,vSn(e)),Zt(e,Yft,XO(t.a,e))}function Xkt(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht;for(A=new _r,h=new fe,s1e(t,n,t.d.Ag(),h,A),s1e(t,r,t.d.Bg(),h,A),t.b=.2*(J=hde(fc(new ln(null,new gn(h,16)),new TZ)),tt=hde(fc(new ln(null,new gn(h,16)),new CZ)),b.Math.min(J,tt)),o=0,d=0;d=2&&(ht=Dde(h,!0,P),!t.e&&(t.e=new $Ut(t)),Dwn(t.e,ht,h,t.b)),ffe(h,P),D9n(h),$=-1,T=new G(h);T.ad)}function cpe(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;for(k=Zi,T=Zi,d=Vs,m=Vs,P=new G(e.i);P.a-1){for(s=Dr(d,0);s.b!=s.d.c;)r=u(Ar(s),131),r.v=h;for(;d.b!=0;)for(r=u(Tot(d,0),131),n=new G(r.i);n.a-1){for(o=new G(d);o.a0)&&(W(m,b.Math.min(m.o,s.o-1)),q(m,m.i-1),m.i==0&&In(d.c,m))}}function lpe(t,e,n,r,s){var o,h,d,m;return m=Zi,h=!1,d=zkt(t,ia(new ae(e.a,e.b),t),ki(new ae(n.a,n.b),s),ia(new ae(r.a,r.b),n)),o=!!d&&!(b.Math.abs(d.a-t.a)<=lv&&b.Math.abs(d.b-t.b)<=lv||b.Math.abs(d.a-e.a)<=lv&&b.Math.abs(d.b-e.b)<=lv),d=zkt(t,ia(new ae(e.a,e.b),t),n,s),d&&((b.Math.abs(d.a-t.a)<=lv&&b.Math.abs(d.b-t.b)<=lv)==(b.Math.abs(d.a-e.a)<=lv&&b.Math.abs(d.b-e.b)<=lv)||o?m=b.Math.min(m,RS(ia(d,n))):h=!0),d=zkt(t,ia(new ae(e.a,e.b),t),r,s),d&&(h||(b.Math.abs(d.a-t.a)<=lv&&b.Math.abs(d.b-t.b)<=lv)==(b.Math.abs(d.a-e.a)<=lv&&b.Math.abs(d.b-e.b)<=lv)||o)&&(m=b.Math.min(m,RS(ia(d,r)))),m}function hpe(t){wm(t,new dw(p$(gm(hm(dm(fm(new G1,Yb),c2e),"Minimizes the stress within a layout using stress majorization. Stress exists if the euclidean distance between a pair of nodes doesn't match their graph theoretic distance, that is, the shortest path between the two nodes. The method allows to specify individual edge lengths."),new U1),Du))),le(t,Yb,Y_,Se(kCt)),le(t,Yb,OV,(Pn(),!0)),le(t,Yb,_5,Se(K3e)),le(t,Yb,Ik,Se(W3e)),le(t,Yb,Mk,Se(Y3e)),le(t,Yb,nT,Se(G3e)),le(t,Yb,X_,Se(TCt)),le(t,Yb,rT,Se(X3e)),le(t,Yb,K8t,Se(xCt)),le(t,Yb,Y8t,Se(vCt)),le(t,Yb,X8t,Se(yCt)),le(t,Yb,Q8t,Se(ECt)),le(t,Yb,W8t,Se(YU))}function M9n(t){var e,n,r,s,o,h,d,m;for(e=null,r=new G(t);r.a0&&n.c==0&&(!e&&(e=new fe),In(e.c,n));if(e)for(;e.c.length!=0;){if(n=u(Ep(e,0),239),n.b&&n.b.c.length>0){for(o=(!n.b&&(n.b=new fe),new G(n.b));o.aXo(t,n,0))return new Ws(s,n)}else if(Rt(td(s.g,s.d[0]).a)>Rt(td(n.g,n.d[0]).a))return new Ws(s,n)}for(d=(!n.e&&(n.e=new fe),n.e).Kc();d.Ob();)h=u(d.Pb(),239),m=(!h.b&&(h.b=new fe),h.b),Fy(0,m.c.length),sS(m.c,0,n),h.c==m.c.length&&In(e.c,h)}return null}function I9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;for(e.Ug("Interactive crossing minimization",1),h=0,o=new G(t.b);o.a0&&(n+=m.n.a+m.o.a/2,++A),U=new G(m.j);U.a0&&(n/=A),ht=Vt(ma,No,28,r.a.c.length,15,1),d=0,k=new G(r.a);k.a=d&&s<=m)d<=s&&o<=m?r+=2:d<=s?(t.b[r]=m+1,h+=2):o<=m?(n[T++]=s,n[T++]=d-1,r+=2):(n[T++]=s,n[T++]=d-1,t.b[r]=m+1,h+=2);else if(m2?(T=new fe,Hs(T,new xp(ht,1,ht.b)),o=Jpe(T,At+t.a),Tt=new Wot(o),Qo(Tt,e),In(n.c,Tt)):r?Tt=u(tr(t.b,O0(e)),272):Tt=u(tr(t.b,qb(e)),272),m=O0(e),r&&(m=qb(e)),h=M4n(tt,m),k=At+t.a,h.a?(k+=b.Math.abs(tt.b-A.b),J=new ae(A.a,(A.b+tt.b)/2)):(k+=b.Math.abs(tt.a-A.a),J=new ae((A.a+tt.a)/2,A.b)),r?hi(t.d,e,new pxt(Tt,h,J,k)):hi(t.c,e,new pxt(Tt,h,J,k)),hi(t.b,e,Tt),U=(!e.n&&(e.n=new Jt(Po,e,1,7)),e.n),$=new Zn(U);$.e!=$.i.gc();)P=u(ar($),135),s=HO(t,P,!0,0,0),In(n.c,s)}function O9n(t){var e,n,r,s,o,h,d;if(!t.A.dc()){if(t.A.Hc((Yl(),RP))&&(u(Io(t.b,(ve(),Hn)),127).k=!0,u(Io(t.b,Er),127).k=!0,e=t.q!=(ka(),Y0)&&t.q!=hu,Qj(u(Io(t.b,Jn),127),e),Qj(u(Io(t.b,Gn),127),e),Qj(t.g,e),t.A.Hc(qw)&&(u(Io(t.b,Hn),127).j=!0,u(Io(t.b,Er),127).j=!0,u(Io(t.b,Jn),127).k=!0,u(Io(t.b,Gn),127).k=!0,t.g.k=!0)),t.A.Hc(BP))for(t.a.j=!0,t.a.k=!0,t.g.j=!0,t.g.k=!0,d=t.B.Hc((Ml(),kL)),s=not(),o=0,h=s.length;o0),u(T.a.Xb(T.c=--T.b),18));o!=r&&T.b>0;)t.a[o.p]=!0,t.a[r.p]=!0,o=(ur(T.b>0),u(T.a.Xb(T.c=--T.b),18));T.b>0&&Kl(T)}}function dpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$;if(!t.b)return!1;for(h=null,P=null,m=new Rst(null,null),s=1,m.a[1]=t.b,A=m;A.a[s];)k=s,d=P,P=A,A=A.a[s],r=t.a.Ne(e,A.d),s=r<0?0:1,r==0&&(!n.c||Nc(A.e,n.d))&&(h=A),!(A&&A.b)&&!vy(A.a[s])&&(vy(A.a[1-s])?P=P.a[k]=Wq(A,s):vy(A.a[1-s])||($=P.a[1-k],$&&(!vy($.a[1-k])&&!vy($.a[k])?(P.b=!1,$.b=!0,A.b=!0):(o=d.a[1]==P?1:0,vy($.a[k])?d.a[o]=qre(P,k):vy($.a[1-k])&&(d.a[o]=Wq(P,k)),A.b=d.a[o].b=!0,d.a[o].a[0].b=!1,d.a[o].a[1].b=!1))));return h&&(n.b=!0,n.d=h.e,A!=h&&(T=new Rst(A.d,A.e),F3n(t,m,h,T),P==h&&(P=T)),P.a[P.a[1]==A?1:0]=A.a[A.a[0]?0:1],--t.c),t.b=m.a[1],t.b&&(t.b.b=!1),n.b}function F9n(t){var e,n,r,s,o,h,d,m,k,T,A,P;for(s=new G(t.a.a.b);s.a0?s-=864e5:s+=864e5,m=new avt(Qa(Pc(e.q.getTime()),s))),T=new I4,k=t.a.length,o=0;o=97&&r<=122||r>=65&&r<=90){for(h=o+1;h=k)throw at(new zn("Missing trailing '"));h+1=14&&T<=16))?e.a._b(r)?(n.a?ni(n.a,n.b):n.a=new eh(n.d),mS(n.a,"[...]")):(d=nw(r),k=new LS(e),Eg(n,ppe(d,k))):Lt(r,183)?Eg(n,g5n(u(r,183))):Lt(r,195)?Eg(n,Zyn(u(r,195))):Lt(r,201)?Eg(n,u4n(u(r,201))):Lt(r,2111)?Eg(n,t3n(u(r,2111))):Lt(r,53)?Eg(n,d5n(u(r,53))):Lt(r,376)?Eg(n,M5n(u(r,376))):Lt(r,846)?Eg(n,f5n(u(r,846))):Lt(r,109)&&Eg(n,h5n(u(r,109))):Eg(n,r==null?Vu:rc(r));return n.a?n.e.length==0?n.a.a:n.a.a+(""+n.e):n.c}function q7(t,e){var n,r,s,o;o=t.F,e==null?(t.F=null,p7(t,null)):(t.F=(Wn(e),e),r=$d(e,Hu(60)),r!=-1?(s=(Da(0,r,e.length),e.substr(0,r)),$d(e,Hu(46))==-1&&!hn(s,kk)&&!hn(s,lA)&&!hn(s,wU)&&!hn(s,hA)&&!hn(s,fA)&&!hn(s,dA)&&!hn(s,gA)&&!hn(s,pA)&&(s=Yme),n=cz(e,Hu(62)),n!=-1&&(s+=""+(qn(n+1,e.length+1),e.substr(n+1))),p7(t,s)):(s=e,$d(e,Hu(46))==-1&&(r=$d(e,Hu(91)),r!=-1&&(s=(Da(0,r,e.length),e.substr(0,r))),!hn(s,kk)&&!hn(s,lA)&&!hn(s,wU)&&!hn(s,hA)&&!hn(s,fA)&&!hn(s,dA)&&!hn(s,gA)&&!hn(s,pA)?(s=Yme,r!=-1&&(s+=""+(qn(r,e.length+1),e.substr(r)))):s=e),p7(t,s),s==e&&(t.F=t.D))),t.Db&4&&!(t.Db&1)&&Ei(t,new ha(t,1,5,o,e))}function bpe(t,e){var n,r,s,o,h,d,m,k,T,A;if(m=e.length-1,d=(qn(m,e.length),e.charCodeAt(m)),d==93){if(h=$d(e,Hu(91)),h>=0)return s=z2n(t,(Da(1,h,e.length),e.substr(1,h-1))),T=(Da(h+1,m,e.length),e.substr(h+1,m-(h+1))),dSn(t,T,s)}else{if(n=-1,h9t==null&&(h9t=new RegExp("\\d")),h9t.test(String.fromCharCode(d))&&(n=Tvt(e,Hu(46),m-1),n>=0)){r=u(Ist(t,roe(t,(Da(1,n,e.length),e.substr(1,n-1))),!1),61),k=0;try{k=lh((qn(n+1,e.length+1),e.substr(n+1)),Ga,xi)}catch(P){throw P=es(P),Lt(P,130)?(o=P,at(new _q(o))):at(P)}if(k>16==-10?n=u(t.Cb,291).Yk(e,n):t.Db>>16==-15&&(!e&&(e=(wn(),Sd)),!k&&(k=(wn(),Sd)),t.Cb.Yh()&&(m=new Tg(t.Cb,1,13,k,e,Np(Al(u(t.Cb,62)),t),!1),n?n.nj(m):n=m));else if(Lt(t.Cb,90))t.Db>>16==-23&&(Lt(e,90)||(e=(wn(),xf)),Lt(k,90)||(k=(wn(),xf)),t.Cb.Yh()&&(m=new Tg(t.Cb,1,10,k,e,Np(Wc(u(t.Cb,29)),t),!1),n?n.nj(m):n=m));else if(Lt(t.Cb,456))for(d=u(t.Cb,850),h=(!d.b&&(d.b=new s$(new Gnt)),d.b),o=(r=new sw(new mr(h.a).a),new a$(r));o.a.b;)s=u(Um(o.a).ld(),89),n=H7(s,QH(s,d),n)}return n}function z9n(t,e){var n,r,s,o,h,d,m,k,T,A,P;for(h=Ie(Me(ne(t,(De(),L3)))),P=u(ne(t,M3),21),m=!1,k=!1,A=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));A.e!=A.i.gc()&&(!m||!k);){for(o=u(ar(A),123),d=0,s=A0(ah(lt(ut(gh,1),Ln,20,0,[(!o.d&&(o.d=new kn(Ts,o,8,5)),o.d),(!o.e&&(o.e=new kn(Ts,o,7,4)),o.e)])));Mr(s)&&(r=u(dr(s),74),T=h&&Zm(r)&&Ie(Me(ne(r,Mw))),n=Wge((!r.b&&(r.b=new kn(vr,r,4,7)),r.b),o)?t==Ji(Jo(u(Dt((!r.c&&(r.c=new kn(vr,r,5,8)),r.c),0),84))):t==Ji(Jo(u(Dt((!r.b&&(r.b=new kn(vr,r,4,7)),r.b),0),84))),!((T||n)&&(++d,d>1))););(d>0||P.Hc((wl(),Hg))&&(!o.n&&(o.n=new Jt(Po,o,1,7)),o.n).i>0)&&(m=!0),d>1&&(k=!0)}m&&e.Fc((Co(),Uh)),k&&e.Fc((Co(),LA))}function wpe(t){var e,n,r,s,o,h,d,m,k,T,A,P;if(P=u(ne(t,(ai(),jw)),21),P.dc())return null;if(d=0,h=0,P.Hc((Yl(),RP))){for(T=u(ne(t,fL),101),r=2,n=2,s=2,o=2,e=Ji(t)?u(ne(Ji(t),Rw),88):u(ne(t,Rw),88),k=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));k.e!=k.i.gc();)if(m=u(ar(k),123),A=u(ne(m,hx),64),A==(ve(),bc)&&(A=Pkt(m,e),Mi(m,hx,A)),T==(ka(),hu))switch(A.g){case 1:r=b.Math.max(r,m.i+m.g);break;case 2:n=b.Math.max(n,m.j+m.f);break;case 3:s=b.Math.max(s,m.i+m.g);break;case 4:o=b.Math.max(o,m.j+m.f)}else switch(A.g){case 1:r+=m.g+2;break;case 2:n+=m.f+2;break;case 3:s+=m.g+2;break;case 4:o+=m.f+2}d=b.Math.max(r,s),h=b.Math.max(n,o)}return rv(t,d,h,!0,!0)}function Act(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(Tt=u(nc(Pq(_i(new ln(null,new gn(e.d,16)),new aUt(n)),new oUt(n)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),A=xi,T=Ga,m=new G(e.b.j);m.a0,k?k&&(P=ht.p,h?++P:--P,A=u(Oe(ht.c.a,P),10),r=$ce(A),$=!(Jot(r,se,n[0])||lee(r,se,n[0]))):$=!0),U=!1,Wt=e.D.i,Wt&&Wt.c&&d.e&&(T=h&&Wt.p>0||!h&&Wt.p=0){for(m=null,d=new La(T.a,k+1);d.bh?1:ym(isNaN(0),isNaN(h)))<0&&($f(s0),(b.Math.abs(h-1)<=s0||h==1||isNaN(h)&&isNaN(1)?0:h<1?-1:h>1?1:ym(isNaN(h),isNaN(1)))<0)&&($f(s0),(b.Math.abs(0-d)<=s0||d==0||isNaN(0)&&isNaN(d)?0:0d?1:ym(isNaN(0),isNaN(d)))<0)&&($f(s0),(b.Math.abs(d-1)<=s0||d==1||isNaN(d)&&isNaN(1)?0:d<1?-1:d>1?1:ym(isNaN(d),isNaN(1)))<0)),o)}function K9n(t){var e,n,r,s;if(n=t.D!=null?t.D:t.B,e=$d(n,Hu(91)),e!=-1){r=(Da(0,e,n.length),n.substr(0,e)),s=new dp;do s.a+="[";while((e=TE(n,91,++e))!=-1);hn(r,kk)?s.a+="Z":hn(r,lA)?s.a+="B":hn(r,wU)?s.a+="C":hn(r,hA)?s.a+="D":hn(r,fA)?s.a+="F":hn(r,dA)?s.a+="I":hn(r,gA)?s.a+="J":hn(r,pA)?s.a+="S":(s.a+="L",s.a+=""+r,s.a+=";");try{return null}catch(o){if(o=es(o),!Lt(o,63))throw at(o)}}else if($d(n,Hu(46))==-1){if(hn(n,kk))return Fl;if(hn(n,lA))return ul;if(hn(n,wU))return Yh;if(hn(n,hA))return ma;if(hn(n,fA))return Y3;if(hn(n,dA))return Fr;if(hn(n,gA))return x2;if(hn(n,pA))return wx}return null}function W9n(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;for(t.e=e,d=W5n(e),se=new fe,r=new G(d);r.a=0&&J=k.c.c.length?T=k3t((Un(),xs),fa):T=k3t((Un(),fa),fa),T*=2,o=n.a.g,n.a.g=b.Math.max(o,o+(T-o)),h=n.b.g,n.b.g=b.Math.max(h,h+(T-h)),s=e}}function J9n(t){var e,n,r,s;for(ms(_i(new ln(null,new gn(t.a.b,16)),new rR),new aJ),Oyn(t),ms(_i(new ln(null,new gn(t.a.b,16)),new oJ),new cJ),t.c==(Lg(),e8)&&(ms(_i(fc(new ln(null,new gn(new cr(t.f),1)),new uJ),new lJ),new ZVt(t)),ms(_i(Wo(fc(fc(new ln(null,new gn(t.d.b,16)),new hJ),new iR),new fJ),new sR),new eUt(t))),s=new ae(Zi,Zi),e=new ae(Vs,Vs),r=new G(t.a.b);r.a0&&(e.a+=ao),wV(u(ar(d),167),e);for(e.a+=But,m=new j6((!r.c&&(r.c=new kn(vr,r,5,8)),r.c));m.e!=m.i.gc();)m.e>0&&(e.a+=ao),wV(u(ar(m),167),e);e.a+=")"}}function Z9n(t,e,n){var r,s,o,h,d,m,k,T;for(m=new Zn((!t.a&&(t.a=new Jt(bi,t,10,11)),t.a));m.e!=m.i.gc();)for(d=u(ar(m),27),s=new rr(sr(Og(d).a.Kc(),new z));Mr(s);){if(r=u(dr(s),74),!r.b&&(r.b=new kn(vr,r,4,7)),!(r.b.i<=1&&(!r.c&&(r.c=new kn(vr,r,5,8)),r.c.i<=1)))throw at(new L6("Graph must not contain hyperedges."));if(!S_(r)&&d!=Jo(u(Dt((!r.c&&(r.c=new kn(vr,r,5,8)),r.c),0),84)))for(k=new mZt,Qo(k,r),Zt(k,(Pb(),$k),r),Dnt(k,u(Ko(Eo(n.f,d)),153)),v6(k,u(tr(n,Jo(u(Dt((!r.c&&(r.c=new kn(vr,r,5,8)),r.c),0),84))),153)),ge(e.c,k),h=new Zn((!r.n&&(r.n=new Jt(Po,r,1,7)),r.n));h.e!=h.i.gc();)o=u(ar(h),135),T=new yie(k,o.a),Qo(T,o),Zt(T,$k,o),T.e.a=b.Math.max(o.g,1),T.e.b=b.Math.max(o.f,1),$kt(T),ge(e.d,T)}}function tCn(t,e,n){var r,s,o,h,d,m,k,T,A,P;switch(n.Ug("Node promotion heuristic",1),t.i=e,t.r=u(X(e,(De(),a2)),243),t.r!=(cf(),Lv)&&t.r!=N3?_Cn(t):Zkn(t),T=u(X(t.i,eAt),17).a,o=new Fd,t.r.g){case 2:case 1:z7(t,o);break;case 3:for(t.r=tK,z7(t,o),m=0,d=new G(t.b);d.at.k&&(t.r=cP,z7(t,o));break;case 4:for(t.r=tK,z7(t,o),k=0,s=new G(t.c);s.at.n&&(t.r=uP,z7(t,o));break;case 6:P=Ys(b.Math.ceil(t.g.length*T/100)),z7(t,new zVt(P));break;case 5:A=Ys(b.Math.ceil(t.e*T/100)),z7(t,new qVt(A));break;case 8:ebe(t,!0);break;case 9:ebe(t,!1);break;default:z7(t,o)}t.r!=Lv&&t.r!=N3?Ekn(t,e):H8n(t,e),n.Vg()}function eCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;for(A=t.b,T=new La(A,0),Ly(T,new eu(t)),Tt=!1,h=1;T.b0&&(P.d+=T.n.d,P.d+=T.d),P.a>0&&(P.a+=T.n.a,P.a+=T.d),P.b>0&&(P.b+=T.n.b,P.b+=T.d),P.c>0&&(P.c+=T.n.c,P.c+=T.d),P}function vpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U;for(P=n.d,A=n.c,o=new ae(n.f.a+n.d.b+n.d.c,n.f.b+n.d.d+n.d.a),h=o.b,k=new G(t.a);k.a0&&(t.c[e.c.p][e.p].d+=Dl(t.i,24)*lN*.07000000029802322-.03500000014901161,t.c[e.c.p][e.p].a=t.c[e.c.p][e.p].d/t.c[e.c.p][e.p].b)}}function iCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;for(U=new G(t);U.ar.d,r.d=b.Math.max(r.d,e),d&&n&&(r.d=b.Math.max(r.d,r.a),r.a=r.d+s);break;case 3:n=e>r.a,r.a=b.Math.max(r.a,e),d&&n&&(r.a=b.Math.max(r.a,r.d),r.d=r.a+s);break;case 2:n=e>r.c,r.c=b.Math.max(r.c,e),d&&n&&(r.c=b.Math.max(r.b,r.c),r.b=r.c+s);break;case 4:n=e>r.b,r.b=b.Math.max(r.b,e),d&&n&&(r.b=b.Math.max(r.b,r.c),r.c=r.b+s)}}}function xpe(t,e){var n,r,s,o,h,d,m,k,T;return k="",e.length==0?t.ne(b8t,$ct,-1,-1):(T=Zy(e),hn(T.substr(0,3),"at ")&&(T=(qn(3,T.length+1),T.substr(3))),T=T.replace(/\[.*?\]/g,""),h=T.indexOf("("),h==-1?(h=T.indexOf("@"),h==-1?(k=T,T=""):(k=Zy((qn(h+1,T.length+1),T.substr(h+1))),T=Zy((Da(0,h,T.length),T.substr(0,h))))):(n=T.indexOf(")",h),k=(Da(h+1,n,T.length),T.substr(h+1,n-(h+1))),T=Zy((Da(0,h,T.length),T.substr(0,h)))),h=$d(T,Hu(46)),h!=-1&&(T=(qn(h+1,T.length+1),T.substr(h+1))),(T.length==0||hn(T,"Anonymous function"))&&(T=$ct),d=cz(k,Hu(58)),s=Tvt(k,Hu(58),d-1),m=-1,r=-1,o=b8t,d!=-1&&s!=-1&&(o=(Da(0,s,k.length),k.substr(0,s)),m=BJt((Da(s+1,d,k.length),k.substr(s+1,d-(s+1)))),r=BJt((qn(d+1,k.length+1),k.substr(d+1)))),t.ne(o,T,m,r))}function oCn(t){var e,n,r,s,o,h,d,m,k,T,A;for(k=new G(t);k.a0||T.j==Gn&&T.e.c.length-T.g.c.length<0)){e=!1;break}for(s=new G(T.g);s.a=k&&Wt>=tt&&(P+=U.n.b+J.n.b+J.a.b-Bt,++d));if(n)for(h=new G(Tt.e);h.a=k&&Wt>=tt&&(P+=U.n.b+J.n.b+J.a.b-Bt,++d))}d>0&&(se+=P/d,++$)}$>0?(e.a=s*se/$,e.g=$):(e.a=0,e.g=0)}function uCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;for(o=t.f.b,P=o.a,T=o.b,U=t.e.g,$=t.e.f,H4(t.e,o.a,o.b),se=P/U,Ce=T/$,k=new Zn(Kz(t.e));k.e!=k.i.gc();)m=u(ar(k),135),Su(m,m.i*se),_u(m,m.j*Ce);for(Tt=new Zn(Jit(t.e));Tt.e!=Tt.i.gc();)ht=u(ar(Tt),123),Bt=ht.i,Wt=ht.j,Bt>0&&Su(ht,Bt*se),Wt>0&&_u(ht,Wt*Ce);for(e_(t.b,new fg),e=new fe,d=new sw(new mr(t.c).a);d.b;)h=Um(d),r=u(h.ld(),74),n=u(h.md(),407).a,s=b5(r,!1,!1),A=dfe(O0(r),MO(s),n),KO(A,s),At=Sfe(r),At&&Xo(e,At,0)==-1&&(In(e.c,At),ene(At,(ur(A.b!=0),u(A.a.a.c,8)),n));for(tt=new sw(new mr(t.d).a);tt.b;)J=Um(tt),r=u(J.ld(),74),n=u(J.md(),407).a,s=b5(r,!1,!1),A=dfe(qb(r),cO(MO(s)),n),A=cO(A),KO(A,s),At=_fe(r),At&&Xo(e,At,0)==-1&&(In(e.c,At),ene(At,(ur(A.b!=0),u(A.c.b.c,8)),n))}function kpe(t,e,n,r){var s,o,h,d,m;return d=new Zkt(e),tkn(d,r),s=!0,t&&t.pf((ai(),Rw))&&(o=u(t.of((ai(),Rw)),88),s=o==(Rs(),Ed)||o==Uo||o==tc),x0e(d,!1),Cu(d.e.Rf(),new Mvt(d,!1,s)),hst(d,d.f,(A1(),Ac),(ve(),Hn)),hst(d,d.f,Lc,Er),hst(d,d.g,Ac,Gn),hst(d,d.g,Lc,Jn),Yle(d,Hn),Yle(d,Er),Jee(d,Jn),Jee(d,Gn),Ay(),h=d.A.Hc((Yl(),z3))&&d.B.Hc((Ml(),$P))?dle(d):null,h&&urn(d.a,h),aCn(d),ovn(d),cvn(d),O9n(d),oEn(d),Nvn(d),tot(d,Hn),tot(d,Er),R8n(d),oTn(d),n&&(q2n(d),Pvn(d),tot(d,Jn),tot(d,Gn),m=d.B.Hc((Ml(),kL)),d1e(d,m,Hn),d1e(d,m,Er),g1e(d,m,Jn),g1e(d,m,Gn),ms(new ln(null,new gn(new si(d.i),0)),new mc),ms(_i(new ln(null,Lyt(d.r).a.oc()),new ca),new ya),Yyn(d),d.e.Pf(d.o),ms(new ln(null,Lyt(d.r).a.oc()),new ea)),d.o}function lCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(k=Zi,r=new G(t.a.b);r.a1)for($=new Vkt(U,At,r),Fa(At,new MXt(t,$)),In(h.c,$),A=At.a.ec().Kc();A.Ob();)T=u(A.Pb(),42),zu(o,T.b);if(d.a.gc()>1)for($=new Vkt(U,d,r),Fa(d,new IXt(t,$)),In(h.c,$),A=d.a.ec().Kc();A.Ob();)T=u(A.Pb(),42),zu(o,T.b)}}function gCn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;if(J=t.n,tt=t.o,P=t.d,A=Rt(Ht(Wy(t,(De(),u1t)))),e){for(T=A*(e.gc()-1),$=0,m=e.Kc();m.Ob();)h=u(m.Pb(),10),T+=h.o.a,$=b.Math.max($,h.o.b);for(ht=J.a-(T-tt.a)/2,o=J.b-P.d+$,r=tt.a/(e.gc()+1),s=r,d=e.Kc();d.Ob();)h=u(d.Pb(),10),h.n.a=ht,h.n.b=o-h.o.b,ht+=h.o.a+A,k=Mde(h),k.n.a=h.o.a/2-k.a.a,k.n.b=h.o.b,U=u(X(h,(oe(),AG)),12),U.e.c.length+U.g.c.length==1&&(U.n.a=s-U.a.a,U.n.b=0,hc(U,t)),s+=r}if(n){for(T=A*(n.gc()-1),$=0,m=n.Kc();m.Ob();)h=u(m.Pb(),10),T+=h.o.a,$=b.Math.max($,h.o.b);for(ht=J.a-(T-tt.a)/2,o=J.b+tt.b+P.a-$,r=tt.a/(n.gc()+1),s=r,d=n.Kc();d.Ob();)h=u(d.Pb(),10),h.n.a=ht,h.n.b=o,ht+=h.o.a+A,k=Mde(h),k.n.a=h.o.a/2-k.a.a,k.n.b=0,U=u(X(h,(oe(),AG)),12),U.e.c.length+U.g.c.length==1&&(U.n.a=s-U.a.a,U.n.b=tt.b,hc(U,t)),s+=r}}function pCn(t,e){var n,r,s,o,h,d;if(u(X(e,(oe(),lu)),21).Hc((Co(),Uh))){for(d=new G(e.a);d.a=0&&h0&&(u(Io(t.b,e),127).a.b=n)}function yCn(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J;if(P=Rt(Ht(X(t,(De(),FT)))),$=Rt(Ht(X(t,BT))),A=Rt(Ht(X(t,O3))),d=t.o,o=u(Oe(t.j,0),12),h=o.n,J=B4n(o,A),!!J){if(e.Hc((wl(),Hg)))switch(u(X(t,(oe(),Dc)),64).g){case 1:J.c=(d.a-J.b)/2-h.a,J.d=$;break;case 3:J.c=(d.a-J.b)/2-h.a,J.d=-$-J.a;break;case 2:n&&o.e.c.length==0&&o.g.c.length==0?(T=r?J.a:u(Oe(o.f,0),72).o.b,J.d=(d.b-T)/2-h.b):J.d=d.b+$-h.b,J.c=-P-J.b;break;case 4:n&&o.e.c.length==0&&o.g.c.length==0?(T=r?J.a:u(Oe(o.f,0),72).o.b,J.d=(d.b-T)/2-h.b):J.d=d.b+$-h.b,J.c=P}else if(e.Hc(g2))switch(u(X(t,(oe(),Dc)),64).g){case 1:case 3:J.c=h.a+P;break;case 2:case 4:n&&!o.c?(T=r?J.a:u(Oe(o.f,0),72).o.b,J.d=(d.b-T)/2-h.b):J.d=h.b+$}for(s=J.d,k=new G(o.f);k.a=e.length)return{done:!0};var s=e[r++];return{value:[s,n.get(s)],done:!1}}}},w8n()||(t.prototype.createObject=function(){return{}},t.prototype.get=function(e){return this.obj[":"+e]},t.prototype.set=function(e,n){this.obj[":"+e]=n},t.prototype[fut]=function(e){delete this.obj[":"+e]},t.prototype.keys=function(){var e=[];for(var n in this.obj)n.charCodeAt(0)==58&&e.push(n.substring(1));return e}),t}function ji(){ji=V,JA=new Oi(G8t),new rs("DEPTH",he(0)),B1t=new rs("FAN",he(0)),gLt=new rs(W2e,he(0)),u2=new rs("ROOT",(Pn(),!1)),$1t=new rs("LEFTNEIGHBOR",null),Kke=new rs("RIGHTNEIGHBOR",null),oK=new rs("LEFTSIBLING",null),z1t=new rs("RIGHTSIBLING",null),F1t=new rs("DUMMY",!1),new rs("LEVEL",he(0)),wLt=new rs("REMOVABLE_EDGES",new Ki),pP=new rs("XCOOR",he(0)),bP=new rs("YCOOR",he(0)),cK=new rs("LEVELHEIGHT",0),P1=new rs("LEVELMIN",0),Xf=new rs("LEVELMAX",0),R1t=new rs("GRAPH_XMIN",0),j1t=new rs("GRAPH_YMIN",0),pLt=new rs("GRAPH_XMAX",0),bLt=new rs("GRAPH_YMAX",0),dLt=new rs("COMPACT_LEVEL_ASCENSION",!1),P1t=new rs("COMPACT_CONSTRAINTS",new fe),QA=new rs("ID",""),ZA=new rs("POSITION",he(0)),Kp=new rs("PRELIM",0),qT=new rs("MODIFIER",0),zT=new Oi(a2e),gP=new Oi(o2e)}function TCn(t){Nkt();var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(t==null)return null;if(A=t.length*8,A==0)return"";for(d=A%24,$=A/24|0,P=d!=0?$+1:$,o=null,o=Vt(Yh,Zd,28,P*4,15,1),k=0,T=0,e=0,n=0,r=0,h=0,s=0,m=0;m<$;m++)e=t[s++],n=t[s++],r=t[s++],T=(n&15)<<24>>24,k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,J=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,tt=r&-128?(r>>6^252)<<24>>24:r>>6<<24>>24,o[h++]=nb[U],o[h++]=nb[J|k<<4],o[h++]=nb[T<<2|tt],o[h++]=nb[r&63];return d==8?(e=t[s],k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,o[h++]=nb[U],o[h++]=nb[k<<4],o[h++]=61,o[h++]=61):d==16&&(e=t[s],n=t[s+1],T=(n&15)<<24>>24,k=(e&3)<<24>>24,U=e&-128?(e>>2^192)<<24>>24:e>>2<<24>>24,J=n&-128?(n>>4^240)<<24>>24:n>>4<<24>>24,o[h++]=nb[U],o[h++]=nb[J|k<<4],o[h++]=nb[T<<2],o[h++]=61),af(o,0,o.length)}function CCn(t,e){var n,r,s,o,h,d,m;if(t.e==0&&t.p>0&&(t.p=-(t.p-1)),t.p>Ga&&x3t(e,t.p-Wb),h=e.q.getDate(),LI(e,1),t.k>=0&&dfn(e,t.k),t.c>=0?LI(e,t.c):t.k>=0?(m=new Q4t(e.q.getFullYear()-Wb,e.q.getMonth(),35),r=35-m.q.getDate(),LI(e,b.Math.min(r,h))):LI(e,h),t.f<0&&(t.f=e.q.getHours()),t.b>0&&t.f<12&&(t.f+=12),isn(e,t.f==24&&t.g?0:t.f),t.j>=0&&Ydn(e,t.j),t.n>=0&&o0n(e,t.n),t.i>=0&&DQt(e,Qa(Ja(_O(Pc(e.q.getTime()),Rp),Rp),t.i)),t.a&&(s=new x$,x3t(s,s.q.getFullYear()-Wb-80),grt(Pc(e.q.getTime()),Pc(s.q.getTime()))&&x3t(e,s.q.getFullYear()-Wb+100)),t.d>=0){if(t.c==-1)n=(7+t.d-e.q.getDay())%7,n>3&&(n-=7),d=e.q.getMonth(),LI(e,e.q.getDate()+n),e.q.getMonth()!=d&&LI(e,e.q.getDate()+(n>0?-7:7));else if(e.q.getDay()!=t.d)return!1}return t.o>Ga&&(o=e.q.getTimezoneOffset(),DQt(e,Qa(Pc(e.q.getTime()),(t.o-o)*60*Rp))),!0}function _pe(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;if(s=X(e,(oe(),Li)),!!Lt(s,207)){for(U=u(s,27),J=e.e,P=new io(e.c),o=e.d,P.a+=o.b,P.b+=o.d,Bt=u(ne(U,(De(),GG)),181),Zu(Bt,(Ml(),NK))&&($=u(ne(U,aAt),107),Snt($,o.a),D2t($,o.d),_nt($,o.b),m6($,o.c)),n=new fe,T=new G(e.a);T.ar.c.length-1;)ge(r,new Ws(S5,E7t));n=u(X(s,h0),17).a,bg(u(X(t,Mv),88))?(s.e.aRt(Ht((vn(n,r.c.length),u(r.c[n],42)).b))&&re((vn(n,r.c.length),u(r.c[n],42)),s.e.a+s.f.a)):(s.e.bRt(Ht((vn(n,r.c.length),u(r.c[n],42)).b))&&re((vn(n,r.c.length),u(r.c[n],42)),s.e.b+s.f.b))}for(o=Dr(t.b,0);o.b!=o.d.c;)s=u(Ar(o),39),n=u(X(s,(Cc(),h0)),17).a,Zt(s,(ji(),P1),Ht((vn(n,r.c.length),u(r.c[n],42)).a)),Zt(s,Xf,Ht((vn(n,r.c.length),u(r.c[n],42)).b));e.Vg()}function _Cn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J;for(t.o=Rt(Ht(X(t.i,(De(),Av)))),t.f=Rt(Ht(X(t.i,Pw))),t.j=t.i.b.c.length,d=t.j-1,P=0,t.k=0,t.n=0,t.b=id(Vt(Ra,ue,17,t.j,0,1)),t.c=id(Vt(zs,ue,345,t.j,7,1)),h=new G(t.i.b);h.a0&&ge(t.q,T),ge(t.p,T);e-=r,$=m+e,k+=e*t.f,Mh(t.b,d,he($)),Mh(t.c,d,k),t.k=b.Math.max(t.k,$),t.n=b.Math.max(t.n,k),t.e+=e,e+=J}}function ve(){ve=V;var t;bc=new tI(G_,0),Hn=new tI(_V,1),Jn=new tI(kut,2),Er=new tI(Eut,3),Gn=new tI(Tut,4),Cd=(mn(),new dE((t=u(y1(bo),9),new _h(t,u(Ff(t,t.length),9),0)))),e1=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[]))),Kh=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[]))),wh=Ap(Hi(Er,lt(ut(bo,1),qc,64,0,[]))),wf=Ap(Hi(Gn,lt(ut(bo,1),qc,64,0,[]))),Gu=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Er]))),Ou=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[Gn]))),n1=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Gn]))),yl=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn]))),mh=Ap(Hi(Er,lt(ut(bo,1),qc,64,0,[Gn]))),Wh=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[Er]))),xl=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn,Gn]))),Uu=Ap(Hi(Jn,lt(ut(bo,1),qc,64,0,[Er,Gn]))),Ku=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Er,Gn]))),cl=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn,Er]))),fu=Ap(Hi(Hn,lt(ut(bo,1),qc,64,0,[Jn,Er,Gn])))}function ACn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce;for(e.Ug(_2e,1),J=new fe,se=new fe,k=new G(t.b);k.a0&&(At-=$),Ukt(h,At),T=0,P=new G(h.a);P.a0),d.a.Xb(d.c=--d.b)),m=.4*r*T,!o&&d.b0&&(m=(qn(0,e.length),e.charCodeAt(0)),m!=64)){if(m==37&&(A=e.lastIndexOf("%"),k=!1,A!=0&&(A==P-1||(k=(qn(A+1,e.length),e.charCodeAt(A+1)==46))))){if(h=(Da(1,A,e.length),e.substr(1,A-1)),At=hn("%",h)?null:n8t(h),r=0,k)try{r=lh((qn(A+2,e.length+1),e.substr(A+2)),Ga,xi)}catch(Bt){throw Bt=es(Bt),Lt(Bt,130)?(d=Bt,at(new _q(d))):at(Bt)}for(tt=D4t(t.Gh());tt.Ob();)if(U=eH(tt),Lt(U,519)&&(s=u(U,598),Tt=s.d,(At==null?Tt==null:hn(At,Tt))&&r--==0))return s;return null}if(T=e.lastIndexOf("."),$=T==-1?e:(Da(0,T,e.length),e.substr(0,T)),n=0,T!=-1)try{n=lh((qn(T+1,e.length+1),e.substr(T+1)),Ga,xi)}catch(Bt){if(Bt=es(Bt),Lt(Bt,130))$=e;else throw at(Bt)}for($=hn("%",$)?null:n8t($),J=D4t(t.Gh());J.Ob();)if(U=eH(J),Lt(U,197)&&(o=u(U,197),ht=o.xe(),($==null?ht==null:hn($,ht))&&n--==0))return o;return null}return bpe(t,e)}function FCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;for(T=new _r,m=new Fm,r=new G(t.a.a.b);r.ae.d.c){if($=t.c[e.a.d],tt=t.c[A.a.d],$==tt)continue;Hf(Of(If(Nf(Mf(new tf,1),100),$),tt))}}}}}function BCn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;if(P=u(u(Ai(t.r,e),21),87),e==(ve(),Jn)||e==Gn){Tpe(t,e);return}for(o=e==Hn?(Gm(),BN):(Gm(),RN),Bt=e==Hn?(qu(),O1):(qu(),Kf),n=u(Io(t.b,e),127),r=n.i,s=r.c+e5(lt(ut(ma,1),No,28,15,[n.n.b,t.C.b,t.k])),ht=r.c+r.b-e5(lt(ut(ma,1),No,28,15,[n.n.c,t.C.c,t.k])),h=wwt(Ovt(o),t.t),Tt=e==Hn?Vs:Zi,A=P.Kc();A.Ob();)k=u(A.Pb(),117),!(!k.c||k.c.d.c.length<=0)&&(tt=k.b.Mf(),J=k.e,$=k.c,U=$.i,U.b=(m=$.n,$.e.a+m.b+m.c),U.a=(d=$.n,$.e.b+d.d+d.a),SI(Bt,I8t),$.f=Bt,S1($,(pl(),Gf)),U.c=J.a-(U.b-tt.a)/2,Wt=b.Math.min(s,J.a),se=b.Math.max(ht,J.a+tt.a),U.cse&&(U.c=se-U.b),ge(h.d,new Oit(U,T5t(h,U))),Tt=e==Hn?b.Math.max(Tt,J.b+k.b.Mf().b):b.Math.min(Tt,J.b));for(Tt+=e==Hn?t.t:-t.t,At=H5t((h.e=Tt,h)),At>0&&(u(Io(t.b,e),127).a.b=At),T=P.Kc();T.Ob();)k=u(T.Pb(),117),!(!k.c||k.c.d.c.length<=0)&&(U=k.c.i,U.c-=k.e.a,U.d-=k.e.b)}function RCn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$;for(e=new _r,m=new Zn(t);m.e!=m.i.gc();){for(d=u(ar(m),27),n=new Os,hi(Jht,d,n),$=new ip,s=u(nc(new ln(null,new Lm(new rr(sr(jO(d).a.Kc(),new z)))),Gte($,gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)])))),85),Soe(n,u(s.xc((Pn(),!0)),16),new sy),r=u(nc(_i(u(s.xc(!1),15).Lc(),new D8),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),h=r.Kc();h.Ob();)o=u(h.Pb(),74),P=Sfe(o),P&&(k=u(Ko(Eo(e.f,P)),21),k||(k=Xde(P),yu(e.f,P,k)),Ma(n,k));for(s=u(nc(new ln(null,new Lm(new rr(sr(Og(d).a.Kc(),new z)))),Gte($,gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc])))),85),Soe(n,u(s.xc(!0),16),new g4),r=u(nc(_i(u(s.xc(!1),15).Lc(),new th),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),A=r.Kc();A.Ob();)T=u(A.Pb(),74),P=_fe(T),P&&(k=u(Ko(Eo(e.f,P)),21),k||(k=Xde(P),yu(e.f,P,k)),Ma(n,k))}}function jCn(t,e){mct();var n,r,s,o,h,d,m,k,T,A,P,$,U,J;if(m=$c(t,0)<0,m&&(t=Cp(t)),$c(t,0)==0)switch(e){case 0:return"0";case 1:return Y7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return $=new yb,e<0?$.a+="0E+":$.a+="0E",$.a+=e==Ga?"2147483648":""+-e,$.a}T=18,A=Vt(Yh,Zd,28,T+1,15,1),n=T,J=t;do k=J,J=_O(J,10),A[--n]=qr(Qa(48,sf(k,Ja(J,10))))&js;while($c(J,0)!=0);if(s=sf(sf(sf(T,n),e),1),e==0)return m&&(A[--n]=45),af(A,n,T-n);if(e>0&&$c(s,-6)>=0){if($c(s,0)>=0){for(o=n+qr(s),d=T-1;d>=o;d--)A[d+1]=A[d];return A[++o]=46,m&&(A[--n]=45),af(A,n,T-n+1)}for(h=2;grt(h,Qa(Cp(s),1));h++)A[--n]=48;return A[--n]=46,A[--n]=48,m&&(A[--n]=45),af(A,n,T-n)}return U=n+1,r=T,P=new I4,m&&(P.a+="-"),r-U>=1?(Db(P,A[n]),P.a+=".",P.a+=af(A,n+1,T-n-1)):P.a+=af(A,n,T-n),P.a+="E",$c(s,0)>0&&(P.a+="+"),P.a+=""+OS(s),P.a}function rv(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;if(tt=new ae(t.g,t.f),J=v6t(t),J.a=b.Math.max(J.a,e),J.b=b.Math.max(J.b,n),se=J.a/tt.a,T=J.b/tt.b,Bt=J.a-tt.a,m=J.b-tt.b,r)for(h=Ji(t)?u(ne(Ji(t),(ai(),Rw)),88):u(ne(t,(ai(),Rw)),88),d=$t(ne(t,(ai(),fL)))===$t((ka(),hu)),Tt=new Zn((!t.c&&(t.c=new Jt(kl,t,9,9)),t.c));Tt.e!=Tt.i.gc();)switch(ht=u(ar(Tt),123),At=u(ne(ht,hx),64),At==(ve(),bc)&&(At=Pkt(ht,h),Mi(ht,hx,At)),At.g){case 1:d||Su(ht,ht.i*se);break;case 2:Su(ht,ht.i+Bt),d||_u(ht,ht.j*T);break;case 3:d||Su(ht,ht.i*se),_u(ht,ht.j+m);break;case 4:d||_u(ht,ht.j*T)}if(H4(t,J.a,J.b),s)for(P=new Zn((!t.n&&(t.n=new Jt(Po,t,1,7)),t.n));P.e!=P.i.gc();)A=u(ar(P),135),$=A.i+A.g/2,U=A.j+A.f/2,Wt=$/tt.a,k=U/tt.b,Wt+k>=1&&(Wt-k>0&&U>=0?(Su(A,A.i+Bt),_u(A,A.j+m*k)):Wt-k<0&&$>=0&&(Su(A,A.i+Bt*Wt),_u(A,A.j+m)));return Mi(t,(ai(),jw),(Yl(),o=u(y1(xL),9),new _h(o,u(Ff(o,o.length),9),0))),new ae(se,T)}function Mpe(t){wm(t,new dw(p$(gm(hm(dm(fm(new G1,zh),"ELK Radial"),'A radial layout provider which is based on the algorithm of Peter Eades published in "Drawing free trees.", published by International Institute for Advanced Study of Social Information Science, Fujitsu Limited in 1991. The radial layouter takes a tree and places the nodes in radial order around the root. The nodes of the same tree level are placed on the same radius.'),new Kc),zh))),le(t,zh,JV,Se(H8e)),le(t,zh,h3,Se(V8e)),le(t,zh,_5,Se(j8e)),le(t,zh,Ik,Se($8e)),le(t,zh,Mk,Se(z8e)),le(t,zh,nT,Se(R8e)),le(t,zh,X_,Se(GLt)),le(t,zh,rT,Se(q8e)),le(t,zh,_lt,Se(tdt)),le(t,zh,Slt,Se(edt)),le(t,zh,sU,Se(WLt)),le(t,zh,Alt,Se(ndt)),le(t,zh,Llt,Se(YLt)),le(t,zh,q7t,Se(XLt)),le(t,zh,z7t,Se(KLt)),le(t,zh,B7t,Se(dK)),le(t,zh,R7t,Se(gK)),le(t,zh,j7t,Se(wP)),le(t,zh,$7t,Se(QLt)),le(t,zh,F7t,Se(ULt))}function mV(t){var e,n,r,s,o,h,d,m,k,T,A;if(t==null)throw at(new jd(Vu));if(k=t,o=t.length,m=!1,o>0&&(e=(qn(0,t.length),t.charCodeAt(0)),(e==45||e==43)&&(t=(qn(1,t.length+1),t.substr(1)),--o,m=e==45)),o==0)throw at(new jd(av+k+'"'));for(;t.length>0&&(qn(0,t.length),t.charCodeAt(0)==48);)t=(qn(1,t.length+1),t.substr(1)),--o;if(o>(cge(),Xve)[10])throw at(new jd(av+k+'"'));for(s=0;s0&&(A=-parseInt((Da(0,r,t.length),t.substr(0,r)),10),t=(qn(r,t.length+1),t.substr(r)),o-=r,n=!1);o>=h;){if(r=parseInt((Da(0,h,t.length),t.substr(0,h)),10),t=(qn(h,t.length+1),t.substr(h)),o-=h,n)n=!1;else{if($c(A,d)<0)throw at(new jd(av+k+'"'));A=Ja(A,T)}A=sf(A,r)}if($c(A,0)>0)throw at(new jd(av+k+'"'));if(!m&&(A=Cp(A),$c(A,0)<0))throw at(new jd(av+k+'"'));return A}function n8t(t){Tct();var e,n,r,s,o,h,d,m;if(t==null)return null;if(s=$d(t,Hu(37)),s<0)return t;for(m=new eh((Da(0,s,t.length),t.substr(0,s))),e=Vt(ul,M5,28,4,15,1),d=0,r=0,h=t.length;ss+2&&vat((qn(s+1,t.length),t.charCodeAt(s+1)),PIt,FIt)&&vat((qn(s+2,t.length),t.charCodeAt(s+2)),PIt,FIt))if(n=aun((qn(s+1,t.length),t.charCodeAt(s+1)),(qn(s+2,t.length),t.charCodeAt(s+2))),s+=2,r>0?(n&192)==128?e[d++]=n<<24>>24:r=0:n>=128&&((n&224)==192?(e[d++]=n<<24>>24,r=2):(n&240)==224?(e[d++]=n<<24>>24,r=3):(n&248)==240&&(e[d++]=n<<24>>24,r=4)),r>0){if(d==r){switch(d){case 2:{Db(m,((e[0]&31)<<6|e[1]&63)&js);break}case 3:{Db(m,((e[0]&15)<<12|(e[1]&63)<<6|e[2]&63)&js);break}}d=0,r=0}}else{for(o=0;o=2){if((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i==0)n=(kb(),s=new K8,s),Or((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),n);else if((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i>1)for(P=new j6((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a));P.e!=P.i.gc();)E_(P);KO(e,u(Dt((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),0),166))}if(A)for(r=new Zn((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a));r.e!=r.i.gc();)for(n=u(ar(r),166),k=new Zn((!n.a&&(n.a=new Ps(vh,n,5)),n.a));k.e!=k.i.gc();)m=u(ar(k),377),d.a=b.Math.max(d.a,m.a),d.b=b.Math.max(d.b,m.b);for(h=new Zn((!t.n&&(t.n=new Jt(Po,t,1,7)),t.n));h.e!=h.i.gc();)o=u(ar(h),135),T=u(ne(o,pL),8),T&&Ch(o,T.a,T.b),A&&(d.a=b.Math.max(d.a,o.i+o.g),d.b=b.Math.max(d.b,o.j+o.f));return d}function Ope(t,e,n,r,s){var o,h,d;if(Oae(t,e),h=e[0],o=Va(n.c,0),d=-1,t5t(n))if(r>0){if(h+r>t.length)return!1;d=KH((Da(0,h+r,t.length),t.substr(0,h+r)),e)}else d=KH(t,e);switch(o){case 71:return d=d5(t,h,lt(ut(Pe,1),ue,2,6,[mbe,vbe]),e),s.e=d,!0;case 77:return e8n(t,e,s,d,h);case 76:return n8n(t,e,s,d,h);case 69:return K4n(t,e,h,s);case 99:return W4n(t,e,h,s);case 97:return d=d5(t,h,lt(ut(Pe,1),ue,2,6,["AM","PM"]),e),s.b=d,!0;case 121:return r8n(t,e,h,d,n,s);case 100:return d<=0?!1:(s.c=d,!0);case 83:return d<0?!1:uwn(d,h,e[0],s);case 104:d==12&&(d=0);case 75:case 72:return d<0?!1:(s.f=d,s.g=!1,!0);case 107:return d<0?!1:(s.f=d,s.g=!0,!0);case 109:return d<0?!1:(s.j=d,!0);case 115:return d<0?!1:(s.n=d,!0);case 90:if(hrn[m]&&(tt=m),A=new G(t.a.b);A.a1;){if(s=W6n(e),A=o.g,U=u(ne(e,rL),107),J=Rt(Ht(ne(e,mK))),(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i>1&&Rt(Ht(ne(e,(N0(),ldt))))!=Zi&&(o.c+(U.b+U.c))/(o.b+(U.d+U.a))1&&Rt(Ht(ne(e,(N0(),udt))))!=Zi&&(o.c+(U.b+U.c))/(o.b+(U.d+U.a))>J&&Mi(s,(N0(),B3),b.Math.max(Rt(Ht(ne(e,nL))),Rt(Ht(ne(s,B3)))-Rt(Ht(ne(e,udt))))),$=new lmt(r,T),m=Zpe($,s,P),k=m.g,k>=A&&k==k){for(h=0;h<(!s.a&&(s.a=new Jt(bi,s,10,11)),s.a).i;h++)S1e(t,u(Dt((!s.a&&(s.a=new Jt(bi,s,10,11)),s.a),h),27),u(Dt((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a),h),27));soe(e,$),Jhn(o,m.c),Qhn(o,m.b)}--d}Mi(e,(N0(),eL),o.b),Mi(e,HT,o.c),n.Vg()}function HCn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;for(e.Ug("Interactive node layering",1),n=new fe,P=new G(t.a);P.a=d){ur(Tt.b>0),Tt.a.Xb(Tt.c=--Tt.b);break}else tt.a>m&&(r?(Hs(r.b,tt.b),r.a=b.Math.max(r.a,tt.a),Kl(Tt)):(ge(tt.b,T),tt.c=b.Math.min(tt.c,m),tt.a=b.Math.max(tt.a,d),r=tt));r||(r=new _Kt,r.c=m,r.a=d,Ly(Tt,r),ge(r.b,T))}for(h=t.b,k=0,ht=new G(n);ht.a$&&(o&&(ro(se,P),ro(rn,he(k.b-1))),Jr=n.b,is+=P+e,P=0,T=b.Math.max(T,n.b+n.c+er)),Su(d,Jr),_u(d,is),T=b.Math.max(T,Jr+er+n.c),P=b.Math.max(P,A),Jr+=er+e;if(T=b.Math.max(T,r),Dn=is+P+n.a,Dnn0,Ze=b.Math.abs(P.b-U.b)>n0,(!n&&rn&&Ze||n&&(rn||Ze))&&Zr(tt.a,Bt)),Ma(tt.a,r),r.b==0?P=Bt:P=(ur(r.b!=0),u(r.c.b.c,8)),Lpn($,A,J),ice(s)==Ce&&(Pa(Ce.i)!=s.a&&(J=new Sa,p6t(J,Pa(Ce.i),Tt)),Zt(tt,Qft,J)),h4n($,tt,Tt),T.a.zc($,T);Xa(tt,Wt),xa(tt,Ce)}for(k=T.a.ec().Kc();k.Ob();)m=u(k.Pb(),18),Xa(m,null),xa(m,null);e.Vg()}function GCn(t,e){var n,r,s,o,h,d,m,k,T,A,P;for(s=u(X(t,(Cc(),Mv)),88),T=s==(Rs(),Uo)||s==tc?kd:tc,n=u(nc(_i(new ln(null,new gn(t.b,16)),new XD),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),m=u(nc(Wo(n.Oc(),new WUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),m.Gc(u(nc(Wo(n.Oc(),new YUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),16)),m.jd(new XUt(T)),P=new pp(new QUt(s)),r=new _r,d=m.Kc();d.Ob();)h=u(d.Pb(),240),k=u(h.a,39),Ie(Me(h.c))?(P.a.zc(k,(Pn(),t2))==null,new ra(P.a.Zc(k,!1)).a.gc()>0&&hi(r,k,u(new ra(P.a.Zc(k,!1)).a.Vc(),39)),new ra(P.a.ad(k,!0)).a.gc()>1&&hi(r,cle(P,k),k)):(new ra(P.a.Zc(k,!1)).a.gc()>0&&(o=u(new ra(P.a.Zc(k,!1)).a.Vc(),39),$t(o)===$t(Ko(Eo(r.f,k)))&&u(X(k,(ji(),P1t)),15).Fc(o)),new ra(P.a.ad(k,!0)).a.gc()>1&&(A=cle(P,k),$t(Ko(Eo(r.f,A)))===$t(k)&&u(X(A,(ji(),P1t)),15).Fc(k)),P.a.Bc(k)!=null)}function Npe(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;if(t.gc()==1)return u(t.Xb(0),235);if(t.gc()<=0)return new mq;for(s=t.Kc();s.Ob();){for(n=u(s.Pb(),235),U=0,T=xi,A=xi,m=Ga,k=Ga,$=new G(n.e);$.a<$.c.c.length;)P=u(et($),153),U+=u(X(P,(Vf(),jk)),17).a,T=b.Math.min(T,P.d.a-P.e.a/2),A=b.Math.min(A,P.d.b-P.e.b/2),m=b.Math.max(m,P.d.a+P.e.a/2),k=b.Math.max(k,P.d.b+P.e.b/2);Zt(n,(Vf(),jk),he(U)),Zt(n,(Pb(),TA),new ae(T,A)),Zt(n,UN,new ae(m,k))}for(mn(),t.jd(new M8),J=new mq,Qo(J,u(t.Xb(0),96)),d=0,Tt=0,o=t.Kc();o.Ob();)n=u(o.Pb(),235),tt=ia(Oa(u(X(n,(Pb(),UN)),8)),u(X(n,TA),8)),d=b.Math.max(d,tt.a),Tt+=tt.a*tt.b;for(d=b.Math.max(d,b.Math.sqrt(Tt)*Rt(Ht(X(J,(Vf(),S3e))))),ht=Rt(Ht(X(J,KU))),At=0,Bt=0,h=0,e=ht,r=t.Kc();r.Ob();)n=u(r.Pb(),235),tt=ia(Oa(u(X(n,(Pb(),UN)),8)),u(X(n,TA),8)),At+tt.a>d&&(At=0,Bt+=h+ht,h=0),vEn(J,n,At,Bt),e=b.Math.max(e,At+tt.a),h=b.Math.max(h,tt.b),At+=tt.a+ht;return J}function KCn(t){Nkt();var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(t==null||(o=Lq(t),U=x2n(o),U%4!=0))return null;if(J=U/4|0,J==0)return Vt(ul,M5,28,0,15,1);for(A=null,e=0,n=0,r=0,s=0,h=0,d=0,m=0,k=0,$=0,P=0,T=0,A=Vt(ul,M5,28,J*3,15,1);$>4)<<24>>24,A[P++]=((n&15)<<4|r>>2&15)<<24>>24,A[P++]=(r<<6|s)<<24>>24}return!PM(h=o[T++])||!PM(d=o[T++])?null:(e=_d[h],n=_d[d],m=o[T++],k=o[T++],_d[m]==-1||_d[k]==-1?m==61&&k==61?n&15?null:(tt=Vt(ul,M5,28,$*3+1,15,1),Xc(A,0,tt,0,$*3),tt[P]=(e<<2|n>>4)<<24>>24,tt):m!=61&&k==61?(r=_d[m],r&3?null:(tt=Vt(ul,M5,28,$*3+2,15,1),Xc(A,0,tt,0,$*3),tt[P++]=(e<<2|n>>4)<<24>>24,tt[P]=((n&15)<<4|r>>2&15)<<24>>24,tt)):null:(r=_d[m],s=_d[k],A[P++]=(e<<2|n>>4)<<24>>24,A[P++]=((n&15)<<4|r>>2&15)<<24>>24,A[P++]=(r<<6|s)<<24>>24,A))}function WCn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt;for(e.Ug(_2e,1),U=u(X(t,(De(),zg)),223),s=new G(t.b);s.a=2){for(J=!0,P=new G(o.j),n=u(et(P),12),$=null;P.a0)if(r=A.gc(),k=Ys(b.Math.floor((r+1)/2))-1,s=Ys(b.Math.ceil((r+1)/2))-1,e.o==yd)for(T=s;T>=k;T--)e.a[Bt.p]==Bt&&(J=u(A.Xb(T),42),U=u(J.a,10),!x1(n,J.b)&&$>t.b.e[U.p]&&(e.a[U.p]=Bt,e.g[Bt.p]=e.g[U.p],e.a[Bt.p]=e.g[Bt.p],e.f[e.g[Bt.p].p]=(Pn(),!!(Ie(e.f[e.g[Bt.p].p])&Bt.k==(Un(),fa))),$=t.b.e[U.p]));else for(T=k;T<=s;T++)e.a[Bt.p]==Bt&&(ht=u(A.Xb(T),42),tt=u(ht.a,10),!x1(n,ht.b)&&$0&&(s=u(Oe(tt.c.a,se-1),10),h=t.i[s.p],rn=b.Math.ceil(U4(t.n,s,tt)),o=Wt.a.e-tt.d.d-(h.a.e+s.o.b+s.d.a)-rn),k=Zi,se0&&Ce.a.e.e-Ce.a.a-(Ce.b.e.e-Ce.b.a)<0,U=At.a.e.e-At.a.a-(At.b.e.e-At.b.a)<0&&Ce.a.e.e-Ce.a.a-(Ce.b.e.e-Ce.b.a)>0,$=At.a.e.e+At.b.aCe.b.e.e+Ce.a.a,Bt=0,!J&&!U&&(P?o+A>0?Bt=A:k-r>0&&(Bt=r):$&&(o+d>0?Bt=d:k-Tt>0&&(Bt=Tt))),Wt.a.e+=Bt,Wt.b&&(Wt.d.e+=Bt),!1))}function Fpe(t,e,n){var r,s,o,h,d,m,k,T,A,P;if(r=new Ah(e.Lf().a,e.Lf().b,e.Mf().a,e.Mf().b),s=new B6,t.c)for(h=new G(e.Rf());h.ak&&(r.a+=uJt(Vt(Yh,Zd,28,-k,15,1))),r.a+="Is",$d(m,Hu(32))>=0)for(s=0;s=r.o.b/2}else Tt=!A;Tt?(ht=u(X(r,(oe(),Wk)),15),ht?P?o=ht:(s=u(X(r,Hk),15),s?ht.gc()<=s.gc()?o=ht:o=s:(o=new fe,Zt(r,Hk,o))):(o=new fe,Zt(r,Wk,o))):(s=u(X(r,(oe(),Hk)),15),s?A?o=s:(ht=u(X(r,Wk),15),ht?s.gc()<=ht.gc()?o=s:o=ht:(o=new fe,Zt(r,Wk,o))):(o=new fe,Zt(r,Hk,o))),o.Fc(t),Zt(t,(oe(),AG),n),e.d==n?(xa(e,null),n.e.c.length+n.g.c.length==0&&hc(n,null),fbn(n)):(Xa(e,null),n.e.c.length+n.g.c.length==0&&hc(n,null)),nh(e.a)}function JCn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is;for(n.Ug("MinWidth layering",1),$=e.b,Ce=e.a,is=u(X(e,(De(),Z_t)),17).a,d=u(X(e,tAt),17).a,t.b=Rt(Ht(X(e,Yf))),t.d=Zi,Bt=new G(Ce);Bt.a0?(k=0,tt&&(k+=d),k+=(Ze-1)*h,At&&(k+=d),rn&&At&&(k=b.Math.max(k,mkn(At,h,Tt,Ce))),k=t.a&&(r=N7n(t,Tt),T=b.Math.max(T,r.b),Bt=b.Math.max(Bt,r.d),ge(d,new Ws(Tt,r)));for(rn=new fe,k=0;k0),tt.a.Xb(tt.c=--tt.b),Ze=new eu(t.b),Ly(tt,Ze),ur(tt.b0){for(P=T<100?null:new xb(T),k=new B4t(e),U=k.g,ht=Vt(Fr,ii,28,T,15,1),r=0,Bt=new $m(T),s=0;s=0;)if($!=null?Ti($,U[m]):$t($)===$t(U[m])){ht.length<=r&&(tt=ht,ht=Vt(Fr,ii,28,2*ht.length,15,1),Xc(tt,0,ht,0,r)),ht[r++]=s,Or(Bt,U[m]);break t}if($=$,$t($)===$t(d))break}}if(k=Bt,U=Bt.g,T=r,r>ht.length&&(tt=ht,ht=Vt(Fr,ii,28,r,15,1),Xc(tt,0,ht,0,r)),r>0){for(At=!0,o=0;o=0;)pk(t,ht[h]);if(r!=T){for(s=T;--s>=r;)pk(k,s);tt=ht,ht=Vt(Fr,ii,28,r,15,1),Xc(tt,0,ht,0,r)}e=k}}}else for(e=pvn(t,e),s=t.i;--s>=0;)e.Hc(t.g[s])&&(pk(t,s),At=!0);if(At){if(ht!=null){for(n=e.gc(),A=n==1?zS(t,4,e.Kc().Pb(),null,ht[0],J):zS(t,6,e,ht,ht[0],J),P=n<100?null:new xb(n),s=e.Kc();s.Ob();)$=s.Pb(),P=Svt(t,u($,76),P);P?(P.nj(A),P.oj()):Ei(t.e,A)}else{for(P=xan(e.gc()),s=e.Kc();s.Ob();)$=s.Pb(),P=Svt(t,u($,76),P);P&&P.oj()}return!0}else return!1}function eSn(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;for(n=new the(e),n.a||DEn(e),k=_8n(e),m=new Fm,tt=new r0e,J=new G(e.a);J.a0||n.o==yd&&s=n}function rSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er;for(At=e,Tt=new Fm,Bt=new Fm,T=jm(At,TTt),r=new une(t,n,Tt,Bt),E4n(r.a,r.b,r.c,r.d,T),m=(Ce=Tt.i,Ce||(Tt.i=new W4(Tt,Tt.c))),Ze=m.Kc();Ze.Ob();)for(rn=u(Ze.Pb(),166),s=u(Ai(Tt,rn),21),J=s.Kc();J.Ob();)if(U=J.Pb(),Wt=u(n5(t.d,U),166),Wt)d=(!rn.e&&(rn.e=new kn(Wi,rn,10,9)),rn.e),Or(d,Wt);else throw h=yg(At,a0),P=tme+U+eme+h,$=P+fT,at(new Rd($));for(k=(se=Bt.i,se||(Bt.i=new W4(Bt,Bt.c))),Dn=k.Kc();Dn.Ob();)for(On=u(Dn.Pb(),166),o=u(Ai(Bt,On),21),ht=o.Kc();ht.Ob();)if(tt=ht.Pb(),Wt=u(n5(t.d,tt),166),Wt)A=(!On.g&&(On.g=new kn(Wi,On,9,10)),On.g),Or(A,Wt);else throw h=yg(At,a0),P=tme+tt+eme+h,$=P+fT,at(new Rd($));!n.b&&(n.b=new kn(vr,n,4,7)),n.b.i!=0&&(!n.c&&(n.c=new kn(vr,n,5,8)),n.c.i!=0)&&(!n.b&&(n.b=new kn(vr,n,4,7)),n.b.i<=1&&(!n.c&&(n.c=new kn(vr,n,5,8)),n.c.i<=1))&&(!n.a&&(n.a=new Jt(Wi,n,6,6)),n.a).i==1&&(er=u(Dt((!n.a&&(n.a=new Jt(Wi,n,6,6)),n.a),0),166),!cot(er)&&!uot(er)&&(Vq(er,u(Dt((!n.b&&(n.b=new kn(vr,n,4,7)),n.b),0),84)),Uq(er,u(Dt((!n.c&&(n.c=new kn(vr,n,5,8)),n.c),0),84))))}function iSn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(At=t.a,Bt=0,Wt=At.length;Bt0?(A=u(Oe(P.c.a,h-1),10),rn=U4(t.b,P,A),tt=P.n.b-P.d.d-(A.n.b+A.o.b+A.d.a+rn)):tt=P.n.b-P.d.d,k=b.Math.min(tt,k),h1&&(h=b.Math.min(h,b.Math.abs(u(jh(d.a,1),8).b-T.b)))));else for(J=new G(e.j);J.as&&(o=P.a-s,h=xi,r.c.length=0,s=P.a),P.a>=s&&(In(r.c,d),d.a.b>1&&(h=b.Math.min(h,b.Math.abs(u(jh(d.a,d.a.b-2),8).b-P.b)))));if(r.c.length!=0&&o>e.o.a/2&&h>e.o.b/2){for($=new Yc,hc($,e),Xs($,(ve(),Hn)),$.n.a=e.o.a/2,ht=new Yc,hc(ht,e),Xs(ht,Er),ht.n.a=e.o.a/2,ht.n.b=e.o.b,m=new G(r);m.a=k.b?Xa(d,ht):Xa(d,$)):(k=u(Ycn(d.a),8),tt=d.a.b==0?rd(d.c):u(Pf(d.a),8),tt.b>=k.b?xa(d,ht):xa(d,$)),A=u(X(d,(De(),Vo)),75),A&&Ky(A,k,!0);e.n.a=s-e.o.a/2}}function aSn(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(d=Dr(t.b,0);d.b!=d.d.c;)if(h=u(Ar(d),39),!hn(h.c,nU))for(k=Mxn(h,t),e==(Rs(),Uo)||e==tc?Ds(k,new ttt):Ds(k,new ett),m=k.c.length,r=0;r=0?$=hk(d):$=bO(hk(d)),t.qf(NT,$)),k=new Sa,P=!1,t.pf(Sv)?(Xmt(k,u(t.of(Sv),8)),P=!0):bsn(k,h.a/2,h.b/2),$.g){case 4:Zt(T,Iu,(Rh(),s2)),Zt(T,DG,(ow(),z5)),T.o.b=h.b,J<0&&(T.o.a=-J),Xs(A,(ve(),Jn)),P||(k.a=h.a),k.a-=h.a;break;case 2:Zt(T,Iu,(Rh(),S3)),Zt(T,DG,(ow(),_T)),T.o.b=h.b,J<0&&(T.o.a=-J),Xs(A,(ve(),Gn)),P||(k.a=0);break;case 1:Zt(T,Aw,(Cg(),H5)),T.o.a=h.a,J<0&&(T.o.b=-J),Xs(A,(ve(),Er)),P||(k.b=h.b),k.b-=h.b;break;case 3:Zt(T,Aw,(Cg(),qk)),T.o.a=h.a,J<0&&(T.o.b=-J),Xs(A,(ve(),Hn)),P||(k.b=0)}if(Xmt(A.n,k),Zt(T,Sv,k),e==zw||e==Y0||e==hu){if(U=0,e==zw&&t.pf(Vp))switch($.g){case 1:case 2:U=u(t.of(Vp),17).a;break;case 3:case 4:U=-u(t.of(Vp),17).a}else switch($.g){case 4:case 2:U=o.b,e==Y0&&(U/=s.b);break;case 1:case 3:U=o.a,e==Y0&&(U/=s.a)}Zt(T,xv,U)}return Zt(T,Dc,$),T}function oSn(){xwt();function t(r){var s=this;this.dispatch=function(o){var h=o.data;switch(h.cmd){case"algorithms":var d=q5t((mn(),new Ta(new si(b2.b))));r.postMessage({id:h.id,data:d});break;case"categories":var m=q5t((mn(),new Ta(new si(b2.c))));r.postMessage({id:h.id,data:m});break;case"options":var k=q5t((mn(),new Ta(new si(b2.d))));r.postMessage({id:h.id,data:k});break;case"register":l9n(h.algorithms),r.postMessage({id:h.id});break;case"layout":j7n(h.graph,h.layoutOptions||{},h.options||{}),r.postMessage({id:h.id,data:h.graph});break}},this.saveDispatch=function(o){try{s.dispatch(o)}catch(h){r.postMessage({id:o.data.id,error:h})}}}function e(r){var s=this;this.dispatcher=new t({postMessage:function(o){s.onmessage({data:o})}}),this.postMessage=function(o){setTimeout(function(){s.dispatcher.saveDispatch({data:o})},0)}}if(typeof document===but&&typeof self!==but){var n=new t(self);self.onmessage=n.saveDispatch}else typeof g!==but&&g.exports&&(Object.defineProperty(w,"__esModule",{value:!0}),g.exports={default:e,Worker:e})}function qpe(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(T=new Ig(n),Qo(T,e),Zt(T,(oe(),Li),e),T.o.a=e.g,T.o.b=e.f,T.n.a=e.i,T.n.b=e.j,ge(n.a,T),hi(t.a,e,T),((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i!=0||Ie(Me(ne(e,(De(),L3)))))&&Zt(T,YSt,(Pn(),!0)),k=u(X(n,lu),21),A=u(X(T,(De(),bs)),101),A==(ka(),d2)?Zt(T,bs,Td):A!=Td&&k.Fc((Co(),DT)),P=0,r=u(X(n,ph),88),m=new Zn((!e.c&&(e.c=new Jt(kl,e,9,9)),e.c));m.e!=m.i.gc();)d=u(ar(m),123),s=Ji(e),($t(ne(s,U0))!==$t((Wd(),Up))||$t(ne(s,Dw))===$t((Ip(),ST))||$t(ne(s,Dw))===$t((Ip(),CT))||Ie(Me(ne(s,Ev)))||$t(ne(s,_3))!==$t((lw(),x3))||$t(ne(s,a2))===$t((cf(),Lv))||$t(ne(s,a2))===$t((cf(),N3))||$t(ne(s,Iw))===$t((Bp(),RT))||$t(ne(s,Iw))===$t((Bp(),jT)))&&!Ie(Me(ne(e,BG)))&&Mi(d,Pi,he(P++)),Ie(Me(ne(d,Nw)))||wCn(t,d,T,k,r,A);for(h=new Zn((!e.n&&(e.n=new Jt(Po,e,1,7)),e.n));h.e!=h.i.gc();)o=u(ar(h),135),!Ie(Me(ne(o,Nw)))&&o.a&&ge(T.b,Pat(o));return Ie(Me(X(T,PA)))&&k.Fc((Co(),CG)),Ie(Me(X(T,zG)))&&(k.Fc((Co(),SG)),k.Fc(LA),Zt(T,bs,Td)),T}function Mct(t,e,n,r,s,o,h){var d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is;for(J=0,On=0,k=new G(t.b);k.aJ&&(o&&(ro(se,$),ro(rn,he(T.b-1)),ge(t.d,U),d.c.length=0),Jr=n.b,is+=$+e,$=0,A=b.Math.max(A,n.b+n.c+er)),In(d.c,m),Gle(m,Jr,is),A=b.Math.max(A,Jr+er+n.c),$=b.Math.max($,P),Jr+=er+e,U=m;if(Hs(t.a,d),ge(t.d,u(Oe(d,d.c.length-1),163)),A=b.Math.max(A,r),Dn=is+$+n.a,Dns.d.d+s.d.a?T.f.d=!0:(T.f.d=!0,T.f.a=!0))),r.b!=r.d.c&&(e=n);T&&(o=u(tr(t.f,h.d.i),60),e.bo.d.d+o.d.a?T.f.d=!0:(T.f.d=!0,T.f.a=!0))}for(d=new rr(sr(ua($).a.Kc(),new z));Mr(d);)h=u(dr(d),18),h.a.b!=0&&(e=u(Pf(h.a),8),h.d.j==(ve(),Hn)&&(tt=new P_(e,new ae(e.a,s.d.d),s,h),tt.f.a=!0,tt.a=h.d,In(J.c,tt)),h.d.j==Er&&(tt=new P_(e,new ae(e.a,s.d.d+s.d.a),s,h),tt.f.d=!0,tt.a=h.d,In(J.c,tt)))}return J}function dSn(t,e,n){var r,s,o,h,d,m,k,T,A,P;for(m=new fe,A=e.length,h=Z4t(n),k=0;k=U&&(Tt>U&&($.c.length=0,U=Tt),In($.c,h));$.c.length!=0&&(P=u(Oe($,MH(e,$.c.length)),131),Dn.a.Bc(P)!=null,P.s=J++,X6t(P,Ze,se),$.c.length=0)}for(Bt=t.c.length+1,d=new G(t);d.aOn.s&&(Kl(n),zu(On.i,r),r.c>0&&(r.a=On,ge(On.t,r),r.b=Ce,ge(Ce.i,r)))}function Hpe(t,e,n,r,s){var o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn;for(J=new wu(e.b),Bt=new wu(e.b),P=new wu(e.b),rn=new wu(e.b),tt=new wu(e.b),Ce=Dr(e,0);Ce.b!=Ce.d.c;)for(Wt=u(Ar(Ce),12),d=new G(Wt.g);d.a0,ht=Wt.g.c.length>0,k&&ht?In(P.c,Wt):k?In(J.c,Wt):ht&&In(Bt.c,Wt);for(U=new G(J);U.aTt.nh()-k.b&&(P=Tt.nh()-k.b),$>Tt.oh()-k.d&&($=Tt.oh()-k.d),T0){for(At=Dr(t.f,0);At.b!=At.d.c;)Tt=u(Ar(At),10),Tt.p+=P-t.e;b6t(t),nh(t.f),lkt(t,r,$)}else{for(Zr(t.f,$),$.p=r,t.e=b.Math.max(t.e,r),o=new rr(sr(ua($).a.Kc(),new z));Mr(o);)s=u(dr(o),18),!s.c.i.c&&s.c.i.k==(Un(),Vc)&&(Zr(t.f,s.c.i),s.c.i.p=r-1);t.c=r}else b6t(t),nh(t.f),r=0,Mr(new rr(sr(ua($).a.Kc(),new z)))?(P=0,P=Qle(P,$),r=P+2,lkt(t,r,$)):(Zr(t.f,$),$.p=0,t.e=b.Math.max(t.e,0),t.b=u(Oe(t.d.b,0),30),t.c=0);for(t.f.b==0||b6t(t),t.d.a.c.length=0,ht=new fe,k=new G(t.d.b);k.a=48&&e<=57){for(r=e-48;s=48&&e<=57;)if(r=r*10+e-48,r<0)throw at(new Yr(Qr((Ur(),BTt))))}else throw at(new Yr(Qr((Ur(),_me))));if(n=r,e==44){if(s>=t.j)throw at(new Yr(Qr((Ur(),Lme))));if((e=Va(t.i,s++))>=48&&e<=57){for(n=e-48;s=48&&e<=57;)if(n=n*10+e-48,n<0)throw at(new Yr(Qr((Ur(),BTt))));if(r>n)throw at(new Yr(Qr((Ur(),Dme))))}else n=-1}if(e!=125)throw at(new Yr(Qr((Ur(),Ame))));t.bm(s)?(o=(yi(),yi(),new By(9,o)),t.d=s+1):(o=(yi(),yi(),new By(3,o)),t.d=s),o.Om(r),o.Nm(n),wi(t)}}return o}function vSn(t){var e,n,r,s,o;switch(n=u(X(t,(oe(),lu)),21),e=rz(J3e),s=u(X(t,(De(),A3)),346),s==(Ag(),Xp)&&ch(e,Z3e),Ie(Me(X(t,a1t)))?ri(e,(Ua(),Wf),(Za(),pft)):ri(e,(Ua(),Qc),(Za(),pft)),X(t,(kq(),oL))!=null&&ch(e,t4e),(Ie(Me(X(t,X_t)))||Ie(Me(X(t,G_t))))&&el(e,(Ua(),Zo),(Za(),UCt)),u(X(t,ph),88).g){case 2:case 3:case 4:el(ri(e,(Ua(),Wf),(Za(),KCt)),Zo,GCt)}switch(n.Hc((Co(),CG))&&el(ri(ri(e,(Ua(),Wf),(Za(),VCt)),cu,qCt),Zo,HCt),$t(X(t,a2))!==$t((cf(),ZG))&&ri(e,(Ua(),Qc),(Za(),cSt)),n.Hc(_G)&&(ri(e,(Ua(),Wf),(Za(),fSt)),ri(e,H0,lSt),ri(e,Qc,hSt)),$t(X(t,PG))!==$t((M7(),AA))&&$t(X(t,zg))!==$t((Lg(),IP))&&el(e,(Ua(),Zo),(Za(),nSt)),Ie(Me(X(t,W_t)))&&ri(e,(Ua(),Qc),(Za(),eSt)),Ie(Me(X(t,n1t)))&&ri(e,(Ua(),Qc),(Za(),dSt)),I6n(t)&&($t(X(t,A3))===$t(Xp)?r=u(X(t,iP),298):r=u(X(t,e1t),298),o=r==(c7(),$ft)?(Za(),uSt):(Za(),bSt),ri(e,(Ua(),cu),o)),u(X(t,kAt),388).g){case 1:ri(e,(Ua(),cu),(Za(),gSt));break;case 2:el(ri(ri(e,(Ua(),Qc),(Za(),RCt)),cu,jCt),Zo,$Ct)}return $t(X(t,U0))!==$t((Wd(),Up))&&ri(e,(Ua(),Qc),(Za(),pSt)),e}function Kpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At;if(Tu(t.a,e)){if(x1(u(tr(t.a,e),49),n))return 1}else hi(t.a,e,new Os);if(Tu(t.a,n)){if(x1(u(tr(t.a,n),49),e))return-1}else hi(t.a,n,new Os);if(Tu(t.e,e)){if(x1(u(tr(t.e,e),49),n))return-1}else hi(t.e,e,new Os);if(Tu(t.e,n)){if(x1(u(tr(t.a,n),49),e))return 1}else hi(t.e,n,new Os);if(t.c==(Wd(),k1t)||!qi(e,(oe(),Pi))||!qi(n,(oe(),Pi))){for(A=null,k=new G(e.j);k.ah?R7(t,e,n):R7(t,n,e),sh?1:0}return r=u(X(e,(oe(),Pi)),17).a,o=u(X(n,Pi),17).a,r>o?R7(t,e,n):R7(t,n,e),ro?1:0}function iv(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(n==null)return null;if(t.a!=e.jk())throw at(new zn(lT+e.xe()+fv));if(Lt(e,468)){if(tt=l8n(u(e,685),n),!tt)throw at(new zn(Hlt+n+"' is not a valid enumerator of '"+e.xe()+"'"));return tt}switch(Lp((il(),ja),e).Nl()){case 2:{n=su(n,!1);break}case 3:{n=su(n,!0);break}}if(r=Lp(ja,e).Jl(),r)return r.jk().wi().ti(r,n);if(P=Lp(ja,e).Ll(),P){for(tt=new fe,k=Sat(n),T=0,A=k.length;T1)for(U=new j6((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a));U.e!=U.i.gc();)E_(U);for(h=u(Dt((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),0),166),tt=Jr,Jr>Wt+Bt?tt=Wt+Bt:Jrse+J?ht=se+J:isWt-Bt&&ttse-J&&htJr+er?rn=Jr+er:Wtis+Ce?Ze=is+Ce:seJr-er&&rnis-Ce&&Zen&&(P=n-1),$=rb+Dl(e,24)*lN*A-A/2,$<0?$=1:$>r&&($=r-1),s=(kb(),m=new fC,m),Rq(s,P),Bq(s,$),Or((!h.a&&(h.a=new Ps(vh,h,5)),h.a),s)}function Wpe(t){wm(t,new dw(gm(hm(dm(fm(new G1,Ol),"ELK Rectangle Packing"),"Algorithm for packing of unconnected boxes, i.e. graphs without edges. The given order of the boxes is always preserved and the main reading direction of the boxes is left to right. The algorithm is divided into two phases. One phase approximates the width in which the rectangles can be placed. The next phase places the rectangles in rows using the previously calculated width as bounding width and bundles rectangles with a similar height in blocks. A compaction step reduces the size of the drawing. Finally, the rectangles are expanded to fill their bounding box and eliminate empty unused spaces."),new s6))),le(t,Ol,Dk,1.3),le(t,Ol,eT,(Pn(),!1)),le(t,Ol,ov,wDt),le(t,Ol,h3,15),le(t,Ol,QV,Se(hEe)),le(t,Ol,_5,Se(gEe)),le(t,Ol,Ik,Se(bEe)),le(t,Ol,Mk,Se(wEe)),le(t,Ol,nT,Se(dEe)),le(t,Ol,X_,Se(gDt)),le(t,Ol,rT,Se(mEe)),le(t,Ol,Q7t,Se(xDt)),le(t,Ol,J7t,Se(yDt)),le(t,Ol,X7t,Se(ddt)),le(t,Ol,Y7t,Se(kDt)),le(t,Ol,Z7t,Se(bDt)),le(t,Ol,tTt,Se(fdt)),le(t,Ol,eTt,Se(pDt)),le(t,Ol,nTt,Se(vDt)),le(t,Ol,Y_,Se(dDt)),le(t,Ol,ZV,Se(fEe)),le(t,Ol,K7t,Se(vP)),le(t,Ol,G7t,Se(fDt)),le(t,Ol,W7t,Se(yP)),le(t,Ol,U7t,Se(mDt))}function Oct(t,e){mct();var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr;if(rn=t.e,U=t.d,s=t.a,rn==0)switch(e){case 0:return"0";case 1:return Y7;case 2:return"0.00";case 3:return"0.000";case 4:return"0.0000";case 5:return"0.00000";case 6:return"0.000000";default:return se=new yb,e<0?se.a+="0E+":se.a+="0E",se.a+=-e,se.a}if(At=U*10+1+7,Bt=Vt(Yh,Zd,28,At+1,15,1),n=At,U==1)if(d=s[0],d<0){Jr=sa(d,So);do J=Jr,Jr=_O(Jr,10),Bt[--n]=48+qr(sf(J,Ja(Jr,10)))&js;while($c(Jr,0)!=0)}else{Jr=d;do J=Jr,Jr=Jr/10|0,Bt[--n]=48+(J-Jr*10)&js;while(Jr!=0)}else{On=Vt(Fr,ii,28,U,15,1),er=U,Xc(s,0,On,0,er);t:for(;;){for(Ce=0,k=er-1;k>=0;k--)Dn=Qa(Rf(Ce,32),sa(On[k],So)),ht=c3n(Dn),On[k]=qr(ht),Ce=qr(_m(ht,32));Tt=qr(Ce),tt=n;do Bt[--n]=48+Tt%10&js;while((Tt=Tt/10|0)!=0&&n!=0);for(r=9-tt+n,m=0;m0;m++)Bt[--n]=48;for(A=er-1;On[A]==0;A--)if(A==0)break t;er=A+1}for(;Bt[n]==48;)++n}if($=rn<0,h=At-n-e-1,e==0)return $&&(Bt[--n]=45),af(Bt,n,At-n);if(e>0&&h>=-6){if(h>=0){for(T=n+h,P=At-1;P>=T;P--)Bt[P+1]=Bt[P];return Bt[++T]=46,$&&(Bt[--n]=45),af(Bt,n,At-n+1)}for(A=2;A<-h+1;A++)Bt[--n]=48;return Bt[--n]=46,Bt[--n]=48,$&&(Bt[--n]=45),af(Bt,n,At-n)}return Ze=n+1,o=At,Wt=new I4,$&&(Wt.a+="-"),o-Ze>=1?(Db(Wt,Bt[n]),Wt.a+=".",Wt.a+=af(Bt,n+1,At-n-1)):Wt.a+=af(Bt,n,At-n),Wt.a+="E",h>0&&(Wt.a+="+"),Wt.a+=""+h,Wt.a}function Ype(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;switch(t.c=e,t.g=new _r,n=(xy(),new my(t.c)),r=new RC(n),j5t(r),At=Gr(ne(t.c,(LO(),zDt))),m=u(ne(t.c,Edt),324),Wt=u(ne(t.c,Tdt),437),h=u(ne(t.c,RDt),489),Bt=u(ne(t.c,kdt),438),t.j=Rt(Ht(ne(t.c,IEe))),d=t.a,m.g){case 0:d=t.a;break;case 1:d=t.b;break;case 2:d=t.i;break;case 3:d=t.e;break;case 4:d=t.f;break;default:throw at(new zn(cU+(m.f!=null?m.f:""+m.g)))}if(t.d=new zne(d,Wt,h),Zt(t.d,(s7(),EA),Me(ne(t.c,DEe))),t.d.c=Ie(Me(ne(t.c,jDt))),Jz(t.c).i==0)return t.d;for(A=new Zn(Jz(t.c));A.e!=A.i.gc();){for(T=u(ar(A),27),$=T.g/2,P=T.f/2,se=new ae(T.i+$,T.j+P);Tu(t.g,se);)Tm(se,(b.Math.random()-.5)*n0,(b.Math.random()-.5)*n0);J=u(ne(T,(ai(),UT)),140),tt=new ere(se,new Ah(se.a-$-t.j/2-J.b,se.b-P-t.j/2-J.d,T.g+t.j+(J.b+J.c),T.f+t.j+(J.d+J.a))),ge(t.d.i,tt),hi(t.g,se,new Ws(tt,T))}switch(Bt.g){case 0:if(At==null)t.d.d=u(Oe(t.d.i,0),68);else for(Tt=new G(t.d.i);Tt.a0?er+1:1);for(h=new G(se.g);h.a0?er+1:1)}t.c[k]==0?Zr(t.e,J):t.a[k]==0&&Zr(t.f,J),++k}for(U=-1,$=1,A=new fe,t.d=u(X(e,(oe(),Kk)),234);yh>0;){for(;t.e.b!=0;)is=u(Tit(t.e),10),t.b[is.p]=U--,_kt(t,is),--yh;for(;t.f.b!=0;)El=u(Tit(t.f),10),t.b[El.p]=$++,_kt(t,El),--yh;if(yh>0){for(P=Ga,Tt=new G(At);Tt.a=P&&(Bt>P&&(A.c.length=0,P=Bt),In(A.c,J)));T=t.sg(A),t.b[T.p]=$++,_kt(t,T),--yh}}for(Jr=At.c.length+1,k=0;kt.b[Go]&&(nv(r,!0),Zt(e,tP,(Pn(),!0)));t.a=null,t.c=null,t.b=null,nh(t.f),nh(t.e),n.Vg()}function Xpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se;for(Wt=u(Dt((!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a),0),166),T=new Qu,Bt=new _r,se=sge(Wt),yu(Bt.f,Wt,se),P=new _r,r=new Ki,U=A0(ah(lt(ut(gh,1),Ln,20,0,[(!e.d&&(e.d=new kn(Ts,e,8,5)),e.d),(!e.e&&(e.e=new kn(Ts,e,7,4)),e.e)])));Mr(U);){if($=u(dr(U),74),(!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i!=1)throw at(new zn(Fwe+(!t.a&&(t.a=new Jt(Wi,t,6,6)),t.a).i));$!=t&&(tt=u(Dt((!$.a&&($.a=new Jt(Wi,$,6,6)),$.a),0),166),hs(r,tt,r.c.b,r.c),J=u(Ko(Eo(Bt.f,tt)),13),J||(J=sge(tt),yu(Bt.f,tt,J)),A=n?ia(new io(u(Oe(se,se.c.length-1),8)),u(Oe(J,J.c.length-1),8)):ia(new io((vn(0,se.c.length),u(se.c[0],8))),(vn(0,J.c.length),u(J.c[0],8))),yu(P.f,tt,A))}if(r.b!=0)for(ht=u(Oe(se,n?se.c.length-1:0),8),k=1;k1&&hs(T,ht,T.c.b,T.c),Qst(s)));ht=Tt}return T}function Qpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(n.Ug(Q2e,1),On=u(nc(_i(new ln(null,new gn(e,16)),new ott),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),T=u(nc(_i(new ln(null,new gn(e,16)),new ZUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),U=u(nc(_i(new ln(null,new gn(e,16)),new JUt(e)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[sc]))),15),J=Vt(aK,rU,39,e.gc(),0,1),h=0;h=0&&Ze=0&&!J[$]){J[$]=s,T.gd(d),--d;break}if($=Ze-P,$=0&&!J[$]){J[$]=s,T.gd(d),--d;break}}for(U.jd(new ctt),m=J.length-1;m>=0;m--)!J[m]&&!U.dc()&&(J[m]=u(U.Xb(0),39),U.gd(0));for(k=0;k=0;m--)Zr(n,(vn(m,h.c.length),u(h.c[m],8)));return n}function Zpe(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;for(At=Rt(Ht(ne(e,(N0(),B3)))),$=Rt(Ht(ne(e,nL))),P=Rt(Ht(ne(e,bK))),M4t((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a)),ht=Hge((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a),At,t.b),tt=0;ttP&&CO((vn(P,e.c.length),u(e.c[P],186)),T),T=null;e.c.length>P&&(vn(P,e.c.length),u(e.c[P],186)).a.c.length==0;)zu(e,(vn(P,e.c.length),e.c[P]));if(!T){--h;continue}if(!Ie(Me(u(Oe(T.b,0),27).of((fd(),yP))))&&HEn(e,U,o,T,tt,n,P,r)){J=!0;continue}if(tt){if($=U.b,A=T.f,!Ie(Me(u(Oe(T.b,0),27).of(yP)))&&o9n(e,U,o,T,n,P,r,s)){if(J=!0,$=t.j){t.a=-1,t.c=1;return}if(e=Va(t.i,t.d++),t.a=e,t.b==1){switch(e){case 92:if(r=10,t.d>=t.j)throw at(new Yr(Qr((Ur(),pU))));t.a=Va(t.i,t.d++);break;case 45:(t.e&512)==512&&t.d=t.j||Va(t.i,t.d)!=63)break;if(++t.d>=t.j)throw at(new Yr(Qr((Ur(),nht))));switch(e=Va(t.i,t.d++),e){case 58:r=13;break;case 61:r=14;break;case 33:r=15;break;case 91:r=19;break;case 62:r=18;break;case 60:if(t.d>=t.j)throw at(new Yr(Qr((Ur(),nht))));if(e=Va(t.i,t.d++),e==61)r=16;else if(e==33)r=17;else throw at(new Yr(Qr((Ur(),ume))));break;case 35:for(;t.d=t.j)throw at(new Yr(Qr((Ur(),pU))));t.a=Va(t.i,t.d++);break;default:r=0}t.c=r}function LSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt;if(n.Ug("Process compaction",1),!!Ie(Me(X(e,(Cc(),xLt))))){for(s=u(X(e,Mv),88),$=Rt(Ht(X(e,H1t))),nTn(t,e,s),GCn(e,$/2/2),U=e.b,rw(U,new UUt(s)),k=Dr(U,0);k.b!=k.d.c;)if(m=u(Ar(k),39),!Ie(Me(X(m,(ji(),u2))))){if(r=A8n(m,s),J=E7n(m,e),A=0,P=0,r)switch(tt=r.e,s.g){case 2:A=tt.a-$-m.f.a,J.e.a-$-m.f.aA&&(A=J.e.a+J.f.a+$),P=A+m.f.a;break;case 4:A=tt.b-$-m.f.b,J.e.b-$-m.f.bA&&(A=J.e.b+J.f.b+$),P=A+m.f.b}else if(J)switch(s.g){case 2:A=J.e.a-$-m.f.a,P=A+m.f.a;break;case 1:A=J.e.a+J.f.a+$,P=A+m.f.a;break;case 4:A=J.e.b-$-m.f.b,P=A+m.f.b;break;case 3:A=J.e.b+J.f.b+$,P=A+m.f.b}$t(X(e,q1t))===$t((s_(),dP))?(o=A,h=P,d=f7(_i(new ln(null,new gn(t.a,16)),new NXt(o,h))),d.a!=null?s==(Rs(),Uo)||s==tc?m.e.a=A:m.e.b=A:(s==(Rs(),Uo)||s==Gh?d=f7(_i(loe(new ln(null,new gn(t.a,16))),new GUt(o))):d=f7(_i(loe(new ln(null,new gn(t.a,16))),new KUt(o))),d.a!=null&&(s==Uo||s==tc?m.e.a=Rt(Ht((ur(d.a!=null),u(d.a,42)).a)):m.e.b=Rt(Ht((ur(d.a!=null),u(d.a,42)).a)))),d.a!=null&&(T=Xo(t.a,(ur(d.a!=null),d.a),0),T>0&&T!=u(X(m,h0),17).a&&(Zt(m,dLt,(Pn(),!0)),Zt(m,h0,he(T))))):s==(Rs(),Uo)||s==tc?m.e.a=A:m.e.b=A}n.Vg()}}function tbe(t){var e,n,r,s,o,h,d,m,k;for(t.b=1,wi(t),e=null,t.c==0&&t.a==94?(wi(t),e=(yi(),yi(),new ih(4)),iu(e,0,gT),d=new ih(4)):d=(yi(),yi(),new ih(4)),s=!0;(k=t.c)!=1;){if(k==0&&t.a==93&&!s){e&&($_(e,d),d=e);break}if(n=t.a,r=!1,k==10)switch(n){case 100:case 68:case 119:case 87:case 115:case 83:a3(d,j7(n)),r=!0;break;case 105:case 73:case 99:case 67:n=(a3(d,j7(n)),-1),n<0&&(r=!0);break;case 112:case 80:if(m=M6t(t,n),!m)throw at(new Yr(Qr((Ur(),rht))));a3(d,m),r=!0;break;default:n=fkt(t)}else if(k==24&&!s){if(e&&($_(e,d),d=e),o=tbe(t),$_(d,o),t.c!=0||t.a!=93)throw at(new Yr(Qr((Ur(),vme))));break}if(wi(t),!r){if(k==0){if(n==91)throw at(new Yr(Qr((Ur(),PTt))));if(n==93)throw at(new Yr(Qr((Ur(),FTt))));if(n==45&&!s&&t.a!=93)throw at(new Yr(Qr((Ur(),iht))))}if(t.c!=0||t.a!=45||n==45&&s)iu(d,n,n);else{if(wi(t),(k=t.c)==1)throw at(new Yr(Qr((Ur(),bU))));if(k==0&&t.a==93)iu(d,n,n),iu(d,45,45);else{if(k==0&&t.a==93||k==24)throw at(new Yr(Qr((Ur(),iht))));if(h=t.a,k==0){if(h==91)throw at(new Yr(Qr((Ur(),PTt))));if(h==93)throw at(new Yr(Qr((Ur(),FTt))));if(h==45)throw at(new Yr(Qr((Ur(),iht))))}else k==10&&(h=fkt(t));if(wi(t),n>h)throw at(new Yr(Qr((Ur(),kme))));iu(d,n,h)}}}s=!1}if(t.c==1)throw at(new Yr(Qr((Ur(),bU))));return g5(d),R_(d),t.b=0,wi(t),d}function DSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt;if(n.Ug("Coffman-Graham Layering",1),e.a.c.length==0){n.Vg();return}for(Wt=u(X(e,(De(),J_t)),17).a,m=0,h=0,P=new G(e.a);P.a=Wt||!Twn(ht,r))&&(r=Qee(e,T)),Aa(ht,r),o=new rr(sr(ua(ht).a.Kc(),new z));Mr(o);)s=u(dr(o),18),!t.a[s.p]&&(J=s.c.i,--t.e[J.p],t.e[J.p]==0&&V6(D7($,J),X7));for(k=T.c.length-1;k>=0;--k)ge(e.b,(vn(k,T.c.length),u(T.c[k],30)));e.a.c.length=0,n.Vg()}function ebe(t,e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt;Bt=!1;do for(Bt=!1,o=e?new cr(t.a.b).a.gc()-2:1;e?o>=0:ou(X(tt,Pi),17).a)&&(At=!1);if(At){for(m=e?o+1:o-1,d=m3t(t.a,he(m)),h=!1,Tt=!0,r=!1,T=Dr(d,0);T.b!=T.d.c;)k=u(Ar(T),10),qi(k,Pi)?k.p!=A.p&&(h=h|(e?u(X(k,Pi),17).au(X(A,Pi),17).a),Tt=!1):!h&&Tt&&k.k==(Un(),Vc)&&(r=!0,e?P=u(dr(new rr(sr(ua(k).a.Kc(),new z))),18).c.i:P=u(dr(new rr(sr(_s(k).a.Kc(),new z))),18).d.i,P==A&&(e?n=u(dr(new rr(sr(_s(k).a.Kc(),new z))),18).d.i:n=u(dr(new rr(sr(ua(k).a.Kc(),new z))),18).c.i,(e?u(Sy(t.a,n),17).a-u(Sy(t.a,P),17).a:u(Sy(t.a,P),17).a-u(Sy(t.a,n),17).a)<=2&&(Tt=!1)));if(r&&Tt&&(e?n=u(dr(new rr(sr(_s(A).a.Kc(),new z))),18).d.i:n=u(dr(new rr(sr(ua(A).a.Kc(),new z))),18).c.i,(e?u(Sy(t.a,n),17).a-u(Sy(t.a,A),17).a:u(Sy(t.a,A),17).a-u(Sy(t.a,n),17).a)<=2&&n.k==(Un(),xs)&&(Tt=!1)),h||Tt){for(J=Ide(t,A,e);J.a.gc()!=0;)U=u(J.a.ec().Kc().Pb(),10),J.a.Bc(U)!=null,Ma(J,Ide(t,U,e));--$,Bt=!0}}}while(Bt)}function MSn(t){zr(t.c,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#decimal"])),zr(t.d,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#integer"])),zr(t.e,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#boolean"])),zr(t.f,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EBoolean",pi,"EBoolean:Object"])),zr(t.i,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#byte"])),zr(t.g,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#hexBinary"])),zr(t.j,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EByte",pi,"EByte:Object"])),zr(t.n,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EChar",pi,"EChar:Object"])),zr(t.t,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#double"])),zr(t.u,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EDouble",pi,"EDouble:Object"])),zr(t.F,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#float"])),zr(t.G,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EFloat",pi,"EFloat:Object"])),zr(t.I,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#int"])),zr(t.J,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EInt",pi,"EInt:Object"])),zr(t.N,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#long"])),zr(t.O,ti,lt(ut(Pe,1),ue,2,6,[Ka,"ELong",pi,"ELong:Object"])),zr(t.Z,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#short"])),zr(t.$,ti,lt(ut(Pe,1),ue,2,6,[Ka,"EShort",pi,"EShort:Object"])),zr(t._,ti,lt(ut(Pe,1),ue,2,6,[Ka,"http://www.w3.org/2001/XMLSchema#string"]))}function ISn(t,e,n,r,s,o,h){var d,m,k,T,A,P,$,U;return P=u(r.a,17).a,$=u(r.b,17).a,A=t.b,U=t.c,d=0,T=0,e==(Rs(),Uo)||e==tc?(T=KM(Vue(Ny(Wo(new ln(null,new gn(n.b,16)),new ltt),new YZ))),A.e.b+A.f.b/2>T?(k=++$,d=Rt(Ht(Vl(My(Wo(new ln(null,new gn(n.b,16)),new BXt(s,k)),new DR))))):(m=++P,d=Rt(Ht(Vl(G6(Wo(new ln(null,new gn(n.b,16)),new RXt(s,m)),new XZ)))))):(T=KM(Vue(Ny(Wo(new ln(null,new gn(n.b,16)),new ZZ),new LR))),A.e.a+A.f.a/2>T?(k=++$,d=Rt(Ht(Vl(My(Wo(new ln(null,new gn(n.b,16)),new PXt(s,k)),new QZ))))):(m=++P,d=Rt(Ht(Vl(G6(Wo(new ln(null,new gn(n.b,16)),new FXt(s,m)),new QD)))))),e==Uo?(ro(t.a,new ae(Rt(Ht(X(A,(ji(),P1))))-s,d)),ro(t.a,new ae(U.e.a+U.f.a+s+o,d)),ro(t.a,new ae(U.e.a+U.f.a+s+o,U.e.b+U.f.b/2)),ro(t.a,new ae(U.e.a+U.f.a,U.e.b+U.f.b/2))):e==tc?(ro(t.a,new ae(Rt(Ht(X(A,(ji(),Xf))))+s,A.e.b+A.f.b/2)),ro(t.a,new ae(A.e.a+A.f.a+s,d)),ro(t.a,new ae(U.e.a-s-o,d)),ro(t.a,new ae(U.e.a-s-o,U.e.b+U.f.b/2)),ro(t.a,new ae(U.e.a,U.e.b+U.f.b/2))):e==Gh?(ro(t.a,new ae(d,Rt(Ht(X(A,(ji(),P1))))-s)),ro(t.a,new ae(d,U.e.b+U.f.b+s+o)),ro(t.a,new ae(U.e.a+U.f.a/2,U.e.b+U.f.b+s+o)),ro(t.a,new ae(U.e.a+U.f.a/2,U.e.b+U.f.b+s))):(t.a.b==0||(u(Pf(t.a),8).b=Rt(Ht(X(A,(ji(),Xf))))+s*u(h.b,17).a),ro(t.a,new ae(d,Rt(Ht(X(A,(ji(),Xf))))+s*u(h.b,17).a)),ro(t.a,new ae(d,U.e.b-s*u(h.a,17).a-o))),new Ws(he(P),he($))}function OSn(t){var e,n,r,s,o,h,d,m,k,T,A,P,$;if(h=!0,A=null,r=null,s=null,e=!1,$=pTe,k=null,o=null,d=0,m=eot(t,d,BIt,RIt),m=0&&hn(t.substr(d,2),"//")?(d+=2,m=eot(t,d,CL,SL),r=(Da(d,m,t.length),t.substr(d,m-d)),d=m):A!=null&&(d==t.length||(qn(d,t.length),t.charCodeAt(d)!=47))&&(h=!1,m=qmt(t,Hu(35),d),m==-1&&(m=t.length),r=(Da(d,m,t.length),t.substr(d,m-d)),d=m);if(!n&&d0&&Va(T,T.length-1)==58&&(s=T,d=m)),dXot(o))&&(A=o);for(!A&&(A=(vn(0,tt.c.length),u(tt.c[0],185))),J=new G(e.b);J.aA&&(Dn=0,er+=T+Ce,T=0),U0e(Wt,h,Dn,er),e=b.Math.max(e,Dn+se.a),T=b.Math.max(T,se.b),Dn+=se.a+Ce;for(Bt=new _r,n=new _r,Ze=new G(t);Ze.a=-1900?1:0,n>=4?ni(t,lt(ut(Pe,1),ue,2,6,[mbe,vbe])[d]):ni(t,lt(ut(Pe,1),ue,2,6,["BC","AD"])[d]);break;case 121:Zwn(t,n,r);break;case 77:mEn(t,n,r);break;case 107:m=s.q.getHours(),m==0?M0(t,24,n):M0(t,m,n);break;case 83:M6n(t,n,s);break;case 69:T=r.q.getDay(),n==5?ni(t,lt(ut(Pe,1),ue,2,6,["S","M","T","W","T","F","S"])[T]):n==4?ni(t,lt(ut(Pe,1),ue,2,6,[Zct,tut,eut,nut,rut,iut,sut])[T]):ni(t,lt(ut(Pe,1),ue,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[T]);break;case 97:s.q.getHours()>=12&&s.q.getHours()<24?ni(t,lt(ut(Pe,1),ue,2,6,["AM","PM"])[1]):ni(t,lt(ut(Pe,1),ue,2,6,["AM","PM"])[0]);break;case 104:A=s.q.getHours()%12,A==0?M0(t,12,n):M0(t,A,n);break;case 75:P=s.q.getHours()%12,M0(t,P,n);break;case 72:$=s.q.getHours(),M0(t,$,n);break;case 99:U=r.q.getDay(),n==5?ni(t,lt(ut(Pe,1),ue,2,6,["S","M","T","W","T","F","S"])[U]):n==4?ni(t,lt(ut(Pe,1),ue,2,6,[Zct,tut,eut,nut,rut,iut,sut])[U]):n==3?ni(t,lt(ut(Pe,1),ue,2,6,["Sun","Mon","Tue","Wed","Thu","Fri","Sat"])[U]):M0(t,U,1);break;case 76:J=r.q.getMonth(),n==5?ni(t,lt(ut(Pe,1),ue,2,6,["J","F","M","A","M","J","J","A","S","O","N","D"])[J]):n==4?ni(t,lt(ut(Pe,1),ue,2,6,[qct,Hct,Vct,Uct,Tk,Gct,Kct,Wct,Yct,Xct,Qct,Jct])[J]):n==3?ni(t,lt(ut(Pe,1),ue,2,6,["Jan","Feb","Mar","Apr",Tk,"Jun","Jul","Aug","Sep","Oct","Nov","Dec"])[J]):M0(t,J+1,n);break;case 81:tt=r.q.getMonth()/3|0,n<4?ni(t,lt(ut(Pe,1),ue,2,6,["Q1","Q2","Q3","Q4"])[tt]):ni(t,lt(ut(Pe,1),ue,2,6,["1st quarter","2nd quarter","3rd quarter","4th quarter"])[tt]);break;case 100:ht=r.q.getDate(),M0(t,ht,n);break;case 109:k=s.q.getMinutes(),M0(t,k,n);break;case 115:h=s.q.getSeconds(),M0(t,h,n);break;case 122:n<4?ni(t,o.c[0]):ni(t,o.c[1]);break;case 118:ni(t,o.b);break;case 90:n<3?ni(t,T5n(o)):n==3?ni(t,L5n(o)):ni(t,D5n(o.a));break;default:return!1}return!0}function a8t(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr;if(N0e(e),m=u(Dt((!e.b&&(e.b=new kn(vr,e,4,7)),e.b),0),84),T=u(Dt((!e.c&&(e.c=new kn(vr,e,5,8)),e.c),0),84),d=Jo(m),k=Jo(T),h=(!e.a&&(e.a=new Jt(Wi,e,6,6)),e.a).i==0?null:u(Dt((!e.a&&(e.a=new Jt(Wi,e,6,6)),e.a),0),166),Ce=u(tr(t.a,d),10),Dn=u(tr(t.a,k),10),rn=null,er=null,Lt(m,193)&&(se=u(tr(t.a,m),304),Lt(se,12)?rn=u(se,12):Lt(se,10)&&(Ce=u(se,10),rn=u(Oe(Ce.j,0),12))),Lt(T,193)&&(On=u(tr(t.a,T),304),Lt(On,12)?er=u(On,12):Lt(On,10)&&(Dn=u(On,10),er=u(Oe(Dn.j,0),12))),!Ce||!Dn)throw at(new L6("The source or the target of edge "+e+" could not be found. This usually happens when an edge connects a node laid out by ELK Layered to a node in another level of hierarchy laid out by either another instance of ELK Layered or another layout algorithm alltogether. The former can be solved by setting the hierarchyHandling option to INCLUDE_CHILDREN."));for(J=new Pm,Qo(J,e),Zt(J,(oe(),Li),e),Zt(J,(De(),Vo),null),$=u(X(r,lu),21),Ce==Dn&&$.Fc((Co(),DA)),rn||(Wt=(To(),ku),Ze=null,h&&z4(u(X(Ce,bs),101))&&(Ze=new ae(h.j,h.k),Eie(Ze,AI(e)),Qie(Ze,n),qy(k,d)&&(Wt=vl,ki(Ze,Ce.n))),rn=Pge(Ce,Ze,Wt,r)),er||(Wt=(To(),vl),Jr=null,h&&z4(u(X(Dn,bs),101))&&(Jr=new ae(h.b,h.c),Eie(Jr,AI(e)),Qie(Jr,n)),er=Pge(Dn,Jr,Wt,Pa(Dn))),Xa(J,rn),xa(J,er),(rn.e.c.length>1||rn.g.c.length>1||er.e.c.length>1||er.g.c.length>1)&&$.Fc((Co(),LA)),P=new Zn((!e.n&&(e.n=new Jt(Po,e,1,7)),e.n));P.e!=P.i.gc();)if(A=u(ar(P),135),!Ie(Me(ne(A,Nw)))&&A.a)switch(tt=Pat(A),ge(J.b,tt),u(X(tt,l0),278).g){case 1:case 2:$.Fc((Co(),LT));break;case 0:$.Fc((Co(),AT)),Zt(tt,l0,(cd(),GT))}if(o=u(X(r,FA),322),ht=u(X(r,UG),323),s=o==(QS(),QN)||ht==(w_(),y1t),h&&(!h.a&&(h.a=new Ps(vh,h,5)),h.a).i!=0&&s){for(Tt=MO(h),U=new Qu,Bt=Dr(Tt,0);Bt.b!=Bt.d.c;)At=u(Ar(Bt),8),Zr(U,new io(At));Zt(J,t_t,U)}return J}function BSn(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is;for(Ze=0,On=0,Ce=new _r,Wt=u(Vl(My(Wo(new ln(null,new gn(t.b,16)),new JZ),new stt)),17).a+1,rn=Vt(Fr,ii,28,Wt,15,1),tt=Vt(Fr,ii,28,Wt,15,1),J=0;J1)for(d=er+1;dk.b.e.b*(1-ht)+k.c.e.b*ht));U++);if(se.gc()>0&&(Jr=k.a.b==0?Oa(k.b.e):u(Pf(k.a),8),At=ki(Oa(u(se.Xb(se.gc()-1),39).e),u(se.Xb(se.gc()-1),39).f),P=ki(Oa(u(se.Xb(0),39).e),u(se.Xb(0),39).f),U>=se.gc()-1&&Jr.b>At.b&&k.c.e.b>At.b||U<=0&&Jr.bk.b.e.a*(1-ht)+k.c.e.a*ht));U++);if(se.gc()>0&&(Jr=k.a.b==0?Oa(k.b.e):u(Pf(k.a),8),At=ki(Oa(u(se.Xb(se.gc()-1),39).e),u(se.Xb(se.gc()-1),39).f),P=ki(Oa(u(se.Xb(0),39).e),u(se.Xb(0),39).f),U>=se.gc()-1&&Jr.a>At.a&&k.c.e.a>At.a||U<=0&&Jr.a=Rt(Ht(X(t,(ji(),bLt))))&&++On):($.f&&$.d.e.a<=Rt(Ht(X(t,(ji(),R1t))))&&++Ze,$.g&&$.c.e.a+$.c.f.a>=Rt(Ht(X(t,(ji(),pLt))))&&++On)}else Bt==0?A6t(k):Bt<0&&(++rn[er],++tt[is],Dn=ISn(k,e,t,new Ws(he(Ze),he(On)),n,r,new Ws(he(tt[is]),he(rn[er]))),Ze=u(Dn.a,17).a,On=u(Dn.b,17).a)}function RSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;if(r=e,m=n,t.b&&r.j==(ve(),Gn)&&m.j==(ve(),Gn)&&(Tt=r,r=m,m=Tt),Tu(t.a,r)){if(x1(u(tr(t.a,r),49),m))return 1}else hi(t.a,r,new Os);if(Tu(t.a,m)){if(x1(u(tr(t.a,m),49),r))return-1}else hi(t.a,m,new Os);if(Tu(t.d,r)){if(x1(u(tr(t.d,r),49),m))return-1}else hi(t.d,r,new Os);if(Tu(t.d,m)){if(x1(u(tr(t.a,m),49),r))return 1}else hi(t.d,m,new Os);if(r.j!=m.j)return ht=Sin(r.j,m.j),ht==-1?$h(t,m,r):$h(t,r,m),ht;if(r.e.c.length!=0&&m.e.c.length!=0){if(t.b&&(ht=mue(r,m),ht!=0))return ht==-1?$h(t,m,r):ht==1&&$h(t,r,m),ht;if(o=u(Oe(r.e,0),18).c.i,T=u(Oe(m.e,0),18).c.i,o==T)return s=u(X(u(Oe(r.e,0),18),(oe(),Pi)),17).a,k=u(X(u(Oe(m.e,0),18),Pi),17).a,s>k?$h(t,r,m):$h(t,m,r),sk?1:0;for(U=t.c,J=0,tt=U.length;Jk?$h(t,r,m):$h(t,m,r),sk?1:0):t.b&&(ht=mue(r,m),ht!=0)?(ht==-1?$h(t,m,r):ht==1&&$h(t,r,m),ht):(h=0,A=0,qi(u(Oe(r.g,0),18),Pi)&&(h=u(X(u(Oe(r.g,0),18),Pi),17).a),qi(u(Oe(m.g,0),18),Pi)&&(A=u(X(u(Oe(r.g,0),18),Pi),17).a),d&&d==P?Ie(Me(X(u(Oe(r.g,0),18),vd)))&&!Ie(Me(X(u(Oe(m.g,0),18),vd)))?($h(t,r,m),1):!Ie(Me(X(u(Oe(r.g,0),18),vd)))&&Ie(Me(X(u(Oe(m.g,0),18),vd)))?($h(t,m,r),-1):(h>A?$h(t,r,m):$h(t,m,r),hA?1:0):(t.f&&(t.f._b(d)&&(h=u(t.f.xc(d),17).a),t.f._b(P)&&(A=u(t.f.xc(P),17).a)),h>A?$h(t,r,m):$h(t,m,r),hA?1:0))):r.e.c.length!=0&&m.g.c.length!=0?($h(t,r,m),1):r.g.c.length!=0&&m.e.c.length!=0?($h(t,m,r),-1):qi(r,(oe(),Pi))&&qi(m,Pi)?(s=u(X(r,Pi),17).a,k=u(X(m,Pi),17).a,s>k?$h(t,r,m):$h(t,m,r),sk?1:0):($h(t,m,r),-1)}function jSn(t){t.gb||(t.gb=!0,t.b=Tc(t,0),fs(t.b,18),Vi(t.b,19),t.a=Tc(t,1),fs(t.a,1),Vi(t.a,2),Vi(t.a,3),Vi(t.a,4),Vi(t.a,5),t.o=Tc(t,2),fs(t.o,8),fs(t.o,9),Vi(t.o,10),Vi(t.o,11),Vi(t.o,12),Vi(t.o,13),Vi(t.o,14),Vi(t.o,15),Vi(t.o,16),Vi(t.o,17),Vi(t.o,18),Vi(t.o,19),Vi(t.o,20),Vi(t.o,21),Vi(t.o,22),Vi(t.o,23),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),zo(t.o),t.p=Tc(t,3),fs(t.p,2),fs(t.p,3),fs(t.p,4),fs(t.p,5),Vi(t.p,6),Vi(t.p,7),zo(t.p),zo(t.p),t.q=Tc(t,4),fs(t.q,8),t.v=Tc(t,5),Vi(t.v,9),zo(t.v),zo(t.v),zo(t.v),t.w=Tc(t,6),fs(t.w,2),fs(t.w,3),fs(t.w,4),Vi(t.w,5),t.B=Tc(t,7),Vi(t.B,1),zo(t.B),zo(t.B),zo(t.B),t.Q=Tc(t,8),Vi(t.Q,0),zo(t.Q),t.R=Tc(t,9),fs(t.R,1),t.S=Tc(t,10),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),zo(t.S),t.T=Tc(t,11),Vi(t.T,10),Vi(t.T,11),Vi(t.T,12),Vi(t.T,13),Vi(t.T,14),zo(t.T),zo(t.T),t.U=Tc(t,12),fs(t.U,2),fs(t.U,3),Vi(t.U,4),Vi(t.U,5),Vi(t.U,6),Vi(t.U,7),zo(t.U),t.V=Tc(t,13),Vi(t.V,10),t.W=Tc(t,14),fs(t.W,18),fs(t.W,19),fs(t.W,20),Vi(t.W,21),Vi(t.W,22),Vi(t.W,23),t.bb=Tc(t,15),fs(t.bb,10),fs(t.bb,11),fs(t.bb,12),fs(t.bb,13),fs(t.bb,14),fs(t.bb,15),fs(t.bb,16),Vi(t.bb,17),zo(t.bb),zo(t.bb),t.eb=Tc(t,16),fs(t.eb,2),fs(t.eb,3),fs(t.eb,4),fs(t.eb,5),fs(t.eb,6),fs(t.eb,7),Vi(t.eb,8),Vi(t.eb,9),t.ab=Tc(t,17),fs(t.ab,0),fs(t.ab,1),t.H=Tc(t,18),Vi(t.H,0),Vi(t.H,1),Vi(t.H,2),Vi(t.H,3),Vi(t.H,4),Vi(t.H,5),zo(t.H),t.db=Tc(t,19),Vi(t.db,2),t.c=di(t,20),t.d=di(t,21),t.e=di(t,22),t.f=di(t,23),t.i=di(t,24),t.g=di(t,25),t.j=di(t,26),t.k=di(t,27),t.n=di(t,28),t.r=di(t,29),t.s=di(t,30),t.t=di(t,31),t.u=di(t,32),t.fb=di(t,33),t.A=di(t,34),t.C=di(t,35),t.D=di(t,36),t.F=di(t,37),t.G=di(t,38),t.I=di(t,39),t.J=di(t,40),t.L=di(t,41),t.M=di(t,42),t.N=di(t,43),t.O=di(t,44),t.P=di(t,45),t.X=di(t,46),t.Y=di(t,47),t.Z=di(t,48),t.$=di(t,49),t._=di(t,50),t.cb=di(t,51),t.K=di(t,52))}function $Sn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er;for(h=new Ki,se=u(X(n,(De(),ph)),88),J=0,Ma(h,(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));h.b!=0;)T=u(h.b==0?null:(ur(h.b!=0),Oh(h,h.a.a)),27),k=Ji(T),($t(ne(k,U0))!==$t((Wd(),Up))||$t(ne(k,Dw))===$t((Ip(),ST))||$t(ne(k,Dw))===$t((Ip(),CT))||Ie(Me(ne(k,Ev)))||$t(ne(k,_3))!==$t((lw(),x3))||$t(ne(k,a2))===$t((cf(),Lv))||$t(ne(k,a2))===$t((cf(),N3))||$t(ne(k,Iw))===$t((Bp(),RT))||$t(ne(k,Iw))===$t((Bp(),jT)))&&!Ie(Me(ne(T,BG)))&&Mi(T,(oe(),Pi),he(J++)),ht=!Ie(Me(ne(T,Nw))),ht&&(P=(!T.a&&(T.a=new Jt(bi,T,10,11)),T.a).i!=0,U=p3n(T),$=$t(ne(T,A3))===$t((Ag(),Xp)),er=!ad(T,(ai(),VT))||sse(Gr(ne(T,VT))),Bt=null,er&&$&&(P||U)&&(Bt=pge(T),Zt(Bt,ph,se),qi(Bt,sP)&&pWt(new V5t(Rt(Ht(X(Bt,sP)))),Bt),u(ne(T,Ow),181).gc()!=0&&(A=Bt,ms(new ln(null,(!T.c&&(T.c=new Jt(kl,T,9,9)),new gn(T.c,16))),new kVt(A)),o0e(T,Bt))),Ce=n,rn=u(tr(t.a,Ji(T)),10),rn&&(Ce=rn.e),At=qpe(t,T,Ce),Bt&&(At.e=Bt,Bt.e=At,Ma(h,(!T.a&&(T.a=new Jt(bi,T,10,11)),T.a))));for(J=0,hs(h,e,h.c.b,h.c);h.b!=0;){for(o=u(h.b==0?null:(ur(h.b!=0),Oh(h,h.a.a)),27),m=new Zn((!o.b&&(o.b=new Jt(Ts,o,12,3)),o.b));m.e!=m.i.gc();)d=u(ar(m),74),N0e(d),($t(ne(e,U0))!==$t((Wd(),Up))||$t(ne(e,Dw))===$t((Ip(),ST))||$t(ne(e,Dw))===$t((Ip(),CT))||Ie(Me(ne(e,Ev)))||$t(ne(e,_3))!==$t((lw(),x3))||$t(ne(e,a2))===$t((cf(),Lv))||$t(ne(e,a2))===$t((cf(),N3))||$t(ne(e,Iw))===$t((Bp(),RT))||$t(ne(e,Iw))===$t((Bp(),jT)))&&Mi(d,(oe(),Pi),he(J++)),On=Jo(u(Dt((!d.b&&(d.b=new kn(vr,d,4,7)),d.b),0),84)),Dn=Jo(u(Dt((!d.c&&(d.c=new kn(vr,d,5,8)),d.c),0),84)),!(Ie(Me(ne(d,Nw)))||Ie(Me(ne(On,Nw)))||Ie(Me(ne(Dn,Nw))))&&(tt=Zm(d)&&Ie(Me(ne(On,L3)))&&Ie(Me(ne(d,Mw))),Wt=o,tt||qy(Dn,On)?Wt=On:qy(On,Dn)&&(Wt=Dn),Ce=n,rn=u(tr(t.a,Wt),10),rn&&(Ce=rn.e),Tt=a8t(t,d,Wt,Ce),Zt(Tt,(oe(),XSt),$kn(t,d,e,n)));if($=$t(ne(o,A3))===$t((Ag(),Xp)),$)for(s=new Zn((!o.a&&(o.a=new Jt(bi,o,10,11)),o.a));s.e!=s.i.gc();)r=u(ar(s),27),er=!ad(r,(ai(),VT))||sse(Gr(ne(r,VT))),Ze=$t(ne(r,A3))===$t(Xp),er&&Ze&&hs(h,r,h.c.b,h.c)}}function oe(){oe=V;var t,e;Li=new Oi(G8t),XSt=new Oi("coordinateOrigin"),Yft=new Oi("processors"),YSt=new rs("compoundNode",(Pn(),!1)),eP=new rs("insideConnections",!1),t_t=new Oi("originalBendpoints"),e_t=new Oi("originalDummyNodePosition"),n_t=new Oi("originalLabelEdge"),IA=new Oi("representedLabels"),MA=new Oi("endLabels"),Vk=new Oi("endLabel.origin"),Gk=new rs("labelSide",(uh(),NP)),V5=new rs("maxEdgeThickness",0),vd=new rs("reversed",!1),Kk=new Oi(s2e),N1=new rs("longEdgeSource",null),gf=new rs("longEdgeTarget",null),C3=new rs("longEdgeHasLabelDummies",!1),nP=new rs("longEdgeBeforeLabelDummy",!1),DG=new rs("edgeConstraint",(ow(),Ift)),yv=new Oi("inLayerLayoutUnit"),Aw=new rs("inLayerConstraint",(Cg(),ZN)),Uk=new rs("inLayerSuccessorConstraint",new fe),ZSt=new rs("inLayerSuccessorConstraintBetweenNonDummies",!1),ml=new Oi("portDummy"),LG=new rs("crossingHint",he(0)),lu=new rs("graphProperties",(e=u(y1(jft),9),new _h(e,u(Ff(e,e.length),9),0))),Dc=new rs("externalPortSide",(ve(),bc)),JSt=new rs("externalPortSize",new Sa),Vft=new Oi("externalPortReplacedDummies"),MG=new Oi("externalPortReplacedDummy"),$g=new rs("externalPortConnections",(t=u(y1(bo),9),new _h(t,u(Ff(t,t.length),9),0))),xv=new rs(Xbe,0),WSt=new Oi("barycenterAssociates"),Wk=new Oi("TopSideComments"),Hk=new Oi("BottomSideComments"),AG=new Oi("CommentConnectionPort"),Gft=new rs("inputCollect",!1),Wft=new rs("outputCollect",!1),tP=new rs("cyclic",!1),QSt=new Oi("crossHierarchyMap"),Qft=new Oi("targetOffset"),new rs("splineLabelSize",new Sa),G5=new Oi("spacings"),IG=new rs("partitionConstraint",!1),vv=new Oi("breakingPoint.info"),s_t=new Oi("splines.survivingEdge"),Lw=new Oi("splines.route.start"),K5=new Oi("splines.edgeChain"),i_t=new Oi("originalPortConstraints"),kv=new Oi("selfLoopHolder"),MT=new Oi("splines.nsPortY"),Pi=new Oi("modelOrder"),Kft=new Oi("longEdgeTargetNode"),i2=new rs(M2e,!1),U5=new rs(M2e,!1),Uft=new Oi("layerConstraints.hiddenNodes"),r_t=new Oi("layerConstraints.opposidePort"),Xft=new Oi("targetNode.modelOrder")}function zSn(t,e,n,r){var s,o,h,d,m,k,T,A,P,$,U;for(A=Dr(t.b,0);A.b!=A.d.c;)if(T=u(Ar(A),39),!hn(T.c,nU))for(o=u(nc(new ln(null,new gn(X5n(T,t),16)),gl(new Br,new ce,new An,lt(ut(Ho,1),te,108,0,[(bl(),sc)]))),15),e==(Rs(),Uo)||e==tc?o.jd(new ntt):o.jd(new MR),U=o.gc(),s=0;s0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(m-$)/(b.Math.abs(d-P)/40)>50&&($>m?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a+r/5.3,T.e.b+T.f.b*h-r/2)):ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a+r/5.3,T.e.b+T.f.b*h+r/2)))),ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a,T.e.b+T.f.b*h))):e==tc?(k=Rt(Ht(X(T,(ji(),P1)))),T.e.a-r>k?ro(u(o.Xb(s),65).a,new ae(k-n,T.e.b+T.f.b*h)):u(o.Xb(s),65).a.b>0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(m-$)/(b.Math.abs(d-P)/40)>50&&($>m?ro(u(o.Xb(s),65).a,new ae(T.e.a-r/5.3,T.e.b+T.f.b*h-r/2)):ro(u(o.Xb(s),65).a,new ae(T.e.a-r/5.3,T.e.b+T.f.b*h+r/2)))),ro(u(o.Xb(s),65).a,new ae(T.e.a,T.e.b+T.f.b*h))):e==Gh?(k=Rt(Ht(X(T,(ji(),Xf)))),T.e.b+T.f.b+r0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(d-P)/(b.Math.abs(m-$)/40)>50&&(P>d?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h-r/2,T.e.b+r/5.3+T.f.b)):ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h+r/2,T.e.b+r/5.3+T.f.b)))),ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,T.e.b+T.f.b))):(k=Rt(Ht(X(T,(ji(),P1)))),iue(u(o.Xb(s),65),t)?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,u(Pf(u(o.Xb(s),65).a),8).b)):T.e.b-r>k?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,k-n)):u(o.Xb(s),65).a.b>0&&(d=u(Pf(u(o.Xb(s),65).a),8).a,P=T.e.a+T.f.a/2,m=u(Pf(u(o.Xb(s),65).a),8).b,$=T.e.b+T.f.b/2,r>0&&b.Math.abs(d-P)/(b.Math.abs(m-$)/40)>50&&(P>d?ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h-r/2,T.e.b-r/5.3)):ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h+r/2,T.e.b-r/5.3)))),ro(u(o.Xb(s),65).a,new ae(T.e.a+T.f.a*h,T.e.b)))}function ai(){ai=V;var t,e;VT=new Oi(bwe),fx=new Oi(wwe),dMt=(I0(),_dt),c7e=new un(t7t,dMt),sx=new un(Dk,null),u7e=new Oi(dTt),pMt=(fw(),Hi(Ddt,lt(ut(Mdt,1),te,297,0,[Ldt]))),CP=new un(QV,pMt),SP=new un(TN,(Pn(),!1)),bMt=(Rs(),Ed),Rw=new un(blt,bMt),vMt=(Lg(),Vdt),mMt=new un(EN,vMt),f7e=new un(hTt,!1),kMt=(Ag(),IK),cx=new un(XV,kMt),MMt=new xm(12),Yp=new un(ov,MMt),AP=new un(Y_,!1),Pdt=new un(ZV,!1),LP=new un(X_,!1),FMt=(ka(),d2),fL=new un(Fut,FMt),Jk=new Oi(JV),DP=new Oi(gN),qdt=new Oi(IV),Hdt=new Oi(W_),EMt=new Qu,Iv=new un(h7t,EMt),h7e=new un(g7t,!1),d7e=new un(p7t,!1),TMt=new HC,UT=new un(w7t,TMt),AK=new un(JEt,!1),w7e=new un(mwe,1),ox=new Oi(vwe),ax=new Oi(ywe),dL=new un(pN,!1),new un(xwe,!0),he(0),new un(kwe,he(100)),new un(Ewe,!1),he(0),new un(Twe,he(4e3)),he(0),new un(Cwe,he(400)),new un(Swe,!1),new un(_we,!1),new un(Awe,!0),new un(Lwe,!1),gMt=(pH(),Wdt),l7e=new un(fTt,gMt),m7e=new un(zEt,10),v7e=new un(qEt,10),$Mt=new un(Lut,20),y7e=new un(HEt,10),zMt=new un(Put,2),qMt=new un(plt,10),HMt=new un(VEt,0),LK=new un(KEt,5),VMt=new un(UEt,1),UMt=new un(GEt,1),$w=new un(h3,20),x7e=new un(WEt,10),WMt=new un(YEt,10),Zk=new Oi(XEt),KMt=new PQt,GMt=new un(m7t,KMt),p7e=new Oi(mlt),IMt=!1,g7e=new un(wlt,IMt),SMt=new xm(5),CMt=new un(r7t,SMt),_Mt=(e3(),e=u(y1(Lo),9),new _h(e,u(Ff(e,e.length),9),0)),ux=new un(nT,_Mt),NMt=(o5(),f2),OMt=new un(a7t,NMt),Bdt=new Oi(o7t),Rdt=new Oi(c7t),jdt=new Oi(u7t),Fdt=new Oi(l7t),AMt=(t=u(y1(xL),9),new _h(t,u(Ff(t,t.length),9),0)),jw=new un(_5,AMt),DMt=en((Ml(),XT)),l2=new un(Mk,DMt),LMt=new ae(0,0),lx=new un(Ik,LMt),R3=new un(eT,!1),wMt=(cd(),GT),Odt=new un(f7t,wMt),Idt=new un(OV,!1),he(1),new un(Dwe,null),PMt=new Oi(b7t),$dt=new Oi(d7t),jMt=(ve(),bc),hx=new un(ZEt,jMt),Pl=new Oi(QEt),BMt=(wl(),en(g2)),j3=new un(rT,BMt),zdt=new un(i7t,!1),RMt=new un(s7t,!0),MK=new un(bN,1),YMt=new un(gTt,null),MP=new un(wN,150),DK=new un(mN,1.414),t8=new un(cv,null),k7e=new un(pTt,1),_P=new un(e7t,!1),Ndt=new un(n7t,!1),yMt=new un(Dut,1),xMt=(HH(),Gdt),new un(Mwe,xMt),b7e=!0,T7e=(lk(),q3),C7e=q3,E7e=q3}function Za(){Za=V,KCt=new Ns("DIRECTION_PREPROCESSOR",0),VCt=new Ns("COMMENT_PREPROCESSOR",1),B5=new Ns("EDGE_AND_LAYER_CONSTRAINT_EDGE_REVERSER",2),gft=new Ns("INTERACTIVE_EXTERNAL_PORT_POSITIONER",3),fSt=new Ns("PARTITION_PREPROCESSOR",4),nG=new Ns("LABEL_DUMMY_INSERTER",5),fG=new Ns("SELF_LOOP_PREPROCESSOR",6),E3=new Ns("LAYER_CONSTRAINT_PREPROCESSOR",7),lSt=new Ns("PARTITION_MIDPROCESSOR",8),eSt=new Ns("HIGH_DEGREE_NODE_LAYER_PROCESSOR",9),cSt=new Ns("NODE_PROMOTION",10),k3=new Ns("LAYER_CONSTRAINT_POSTPROCESSOR",11),hSt=new Ns("PARTITION_POSTPROCESSOR",12),JCt=new Ns("HIERARCHICAL_PORT_CONSTRAINT_PROCESSOR",13),dSt=new Ns("SEMI_INTERACTIVE_CROSSMIN_PROCESSOR",14),RCt=new Ns("BREAKING_POINT_INSERTER",15),aG=new Ns("LONG_EDGE_SPLITTER",16),pft=new Ns("PORT_SIDE_PROCESSOR",17),tG=new Ns("INVERTED_PORT_PROCESSOR",18),uG=new Ns("PORT_LIST_SORTER",19),pSt=new Ns("SORT_BY_INPUT_ORDER_OF_MODEL",20),cG=new Ns("NORTH_SOUTH_PORT_PREPROCESSOR",21),jCt=new Ns("BREAKING_POINT_PROCESSOR",22),uSt=new Ns(E2e,23),bSt=new Ns(T2e,24),lG=new Ns("SELF_LOOP_PORT_RESTORER",25),gSt=new Ns("SINGLE_EDGE_GRAPH_WRAPPER",26),eG=new Ns("IN_LAYER_CONSTRAINT_PROCESSOR",27),YCt=new Ns("END_NODE_PORT_LABEL_MANAGEMENT_PROCESSOR",28),aSt=new Ns("LABEL_AND_NODE_SIZE_PROCESSOR",29),sSt=new Ns("INNERMOST_NODE_MARGIN_CALCULATOR",30),dG=new Ns("SELF_LOOP_ROUTER",31),qCt=new Ns("COMMENT_NODE_MARGIN_CALCULATOR",32),ZU=new Ns("END_LABEL_PREPROCESSOR",33),iG=new Ns("LABEL_DUMMY_SWITCHER",34),zCt=new Ns("CENTER_LABEL_MANAGEMENT_PROCESSOR",35),vT=new Ns("LABEL_SIDE_SELECTOR",36),rSt=new Ns("HYPEREDGE_DUMMY_MERGER",37),ZCt=new Ns("HIERARCHICAL_PORT_DUMMY_SIZE_PROCESSOR",38),oSt=new Ns("LAYER_SIZE_AND_GRAPH_HEIGHT_CALCULATOR",39),CA=new Ns("HIERARCHICAL_PORT_POSITION_PROCESSOR",40),UCt=new Ns("CONSTRAINTS_POSTPROCESSOR",41),HCt=new Ns("COMMENT_POSTPROCESSOR",42),iSt=new Ns("HYPERNODE_PROCESSOR",43),tSt=new Ns("HIERARCHICAL_PORT_ORTHOGONAL_EDGE_ROUTER",44),sG=new Ns("LONG_EDGE_JOINER",45),hG=new Ns("SELF_LOOP_POSTPROCESSOR",46),$Ct=new Ns("BREAKING_POINT_REMOVER",47),oG=new Ns("NORTH_SOUTH_PORT_POSTPROCESSOR",48),nSt=new Ns("HORIZONTAL_COMPACTOR",49),rG=new Ns("LABEL_DUMMY_REMOVER",50),XCt=new Ns("FINAL_SPLINE_BENDPOINTS_CALCULATOR",51),WCt=new Ns("END_LABEL_SORTER",52),WN=new Ns("REVERSED_EDGE_RESTORER",53),JU=new Ns("END_LABEL_POSTPROCESSOR",54),QCt=new Ns("HIERARCHICAL_NODE_RESIZER",55),GCt=new Ns("DIRECTION_POSTPROCESSOR",56)}function o8t(){o8t=V,b_t=(YI(),xG),B5e=new un(nEt,b_t),Y5e=new un(rEt,(Pn(),!1)),k_t=(fq(),Hft),txe=new un(BV,k_t),pxe=new un(iEt,!1),bxe=new un(sEt,!0),u5e=new un(aEt,!1),D_t=(KI(),T1t),Mxe=new un(oEt,D_t),he(1),jxe=new un(cEt,he(7)),$xe=new un(uEt,!1),X5e=new un(lEt,!1),p_t=(Ip(),Dft),F5e=new un(Hut,p_t),C_t=(Bp(),b1t),gxe=new un(kN,C_t),E_t=(Rh(),rP),axe=new un(hEt,E_t),he(-1),sxe=new un(fEt,null),he(-1),oxe=new un(dEt,he(-1)),he(-1),cxe=new un(Vut,he(4)),he(-1),lxe=new un(Uut,he(2)),T_t=(cf(),ZG),dxe=new un(Gut,T_t),he(0),fxe=new un(Kut,he(0)),rxe=new un(Wut,he(xi)),g_t=(QS(),_A),P5e=new un(Z_,g_t),y5e=new un(gEt,!1),_5e=new un(Yut,.1),O5e=new un(Xut,!1),L5e=new un(pEt,null),D5e=new un(bEt,null),he(-1),M5e=new un(wEt,null),he(-1),I5e=new un(mEt,he(-1)),he(0),x5e=new un(vEt,he(40)),d_t=(c7(),zft),C5e=new un(Qut,d_t),f_t=JN,k5e=new un(RV,f_t),L_t=(w_(),zA),Dxe=new un(A5,L_t),xxe=new Oi(jV),S_t=(qI(),EG),wxe=new un(Jut,S_t),__t=(AO(),TG),vxe=new un(Zut,__t),Txe=new un(tlt,.3),Sxe=new Oi(elt),A_t=(Yy(),JG),_xe=new un(nlt,A_t),v_t=(tH(),S1t),q5e=new un(yEt,v_t),y_t=(i_(),A1t),H5e=new un(xEt,y_t),x_t=(b7(),VA),V5e=new un($V,x_t),G5e=new un(zV,.2),$5e=new un(rlt,2),Pxe=new un(kEt,null),Bxe=new un(EEt,10),Fxe=new un(TEt,10),Rxe=new un(CEt,20),he(0),Ixe=new un(SEt,he(0)),he(0),Oxe=new un(_Et,he(0)),he(0),Nxe=new un(AEt,he(0)),l5e=new un(ilt,!1),c_t=(M7(),AA),f5e=new un(LEt,c_t),o_t=(Eq(),Aft),h5e=new un(DEt,o_t),J5e=new un(qV,!1),he(0),Q5e=new un(slt,he(16)),he(0),Z5e=new un(alt,he(5)),O_t=(iH(),M1t),a6e=new un(Bg,O_t),zxe=new un(HV,10),Vxe=new un(VV,1),I_t=($q(),yG),Qxe=new un(tA,I_t),Kxe=new Oi(olt),M_t=he(1),he(0),Yxe=new un(clt,M_t),N_t=(jq(),D1t),l6e=new un(UV,N_t),o6e=new Oi(GV),n6e=new un(KV,!0),t6e=new un(WV,2),i6e=new un(ult,!0),m_t=(UH(),kG),j5e=new un(MEt,m_t),w_t=(wk(),ET),R5e=new un(IEt,w_t),h_t=(Wd(),Up),v5e=new un(YV,h_t),m5e=new un(OEt,!1),w5e=new un(NEt,!1),u_t=(lw(),x3),d5e=new un(llt,u_t),l_t=(o_(),w1t),b5e=new un(PEt,l_t),g5e=new un(hlt,0),p5e=new un(flt,0),nxe=Mft,exe=QN,uxe=XG,hxe=XG,ixe=p1t,A5e=(Ag(),Xp),N5e=_A,S5e=_A,E5e=_A,T5e=Xp,kxe=qA,Exe=zA,mxe=zA,yxe=zA,Cxe=x1t,Lxe=qA,Axe=qA,U5e=(Lg(),e8),K5e=e8,W5e=VA,z5e=IP,qxe=$T,Hxe=P3,Uxe=$T,Gxe=P3,Jxe=$T,Zxe=P3,Wxe=Lft,Xxe=yG,h6e=$T,f6e=P3,c6e=$T,u6e=P3,r6e=P3,e6e=P3,s6e=P3}function qSn(t,e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On,Dn,er,Jr,is,El,Go,yh,mx,rb,r1,i1,Vw,o8,k2,c8,d0,J0,Bv,u8,vx,g0,Uw,Ug,f9e,mOt,Rv,NL,h0t,l8,PL,X3,FL,f0t,d9e;for(mOt=0,Jr=e,Go=0,rb=Jr.length;Go0&&(t.a[d0.p]=mOt++)}for(PL=0,is=n,yh=0,r1=is.length;yh0;){for(d0=(ur(vx.b>0),u(vx.a.Xb(vx.c=--vx.b),12)),u8=0,d=new G(d0.e);d.a0&&(d0.j==(ve(),Hn)?(t.a[d0.p]=PL,++PL):(t.a[d0.p]=PL+i1+o8,++o8))}PL+=o8}for(Bv=new _r,U=new zd,er=e,El=0,mx=er.length;Elk.b&&(k.b=g0)):d0.i.c==f9e&&(g0k.c&&(k.c=g0));for(GE(J,0,J.length,null),l8=Vt(Fr,ii,28,J.length,15,1),r=Vt(Fr,ii,28,PL+1,15,1),ht=0;ht0;)Ce%2>0&&(s+=f0t[Ce+1]),Ce=(Ce-1)/2|0,++f0t[Ce];for(Ze=Vt(lke,Ln,374,J.length*2,0,1),Bt=0;Bt0&&_I(El.f),ne(ht,YMt)!=null&&(d=u(ne(ht,YMt),347),Bv=d.Tg(ht),H4(ht,b.Math.max(ht.g,Bv.a),b.Math.max(ht.f,Bv.b)));if(r1=u(ne(e,Yp),107),$=e.g-(r1.b+r1.c),P=e.f-(r1.d+r1.a),g0.bh("Available Child Area: ("+$+"|"+P+")"),Mi(e,sx,$/P),Rle(e,s,r.eh(mx)),u(ne(e,t8),280)==RK&&(r8t(e),H4(e,r1.b+Rt(Ht(ne(e,ox)))+r1.c,r1.d+Rt(Ht(ne(e,ax)))+r1.a)),g0.bh("Executed layout algorithm: "+Gr(ne(e,VT))+" on node "+e.k),u(ne(e,t8),280)==q3){if($<0||P<0)throw at(new fp("The size defined by the parent parallel node is too small for the space provided by the paddings of the child hierarchical node. "+e.k));for(ad(e,ox)||ad(e,ax)||r8t(e),J=Rt(Ht(ne(e,ox))),U=Rt(Ht(ne(e,ax))),g0.bh("Desired Child Area: ("+J+"|"+U+")"),Vw=$/J,o8=P/U,i1=b.Math.min(Vw,b.Math.min(o8,Rt(Ht(ne(e,k7e))))),Mi(e,MK,i1),g0.bh(e.k+" -- Local Scale Factor (X|Y): ("+Vw+"|"+o8+")"),Bt=u(ne(e,CP),21),o=0,h=0,i1'?":hn(ume,t)?"'(?<' or '(? toIndex: ",T8t=", toIndex: ",C8t="Index: ",S8t=", Size: ",Q7="org.eclipse.elk.alg.common",Xr={50:1},Ibe="org.eclipse.elk.alg.common.compaction",Obe="Scanline/EventHandler",j0="org.eclipse.elk.alg.common.compaction.oned",Nbe="CNode belongs to another CGroup.",Pbe="ISpacingsHandler/1",wut="The ",mut=" instance has been finished already.",Fbe="The direction ",Bbe=" is not supported by the CGraph instance.",Rbe="OneDimensionalCompactor",jbe="OneDimensionalCompactor/lambda$0$Type",$be="Quadruplet",zbe="ScanlineConstraintCalculator",qbe="ScanlineConstraintCalculator/ConstraintsScanlineHandler",Hbe="ScanlineConstraintCalculator/ConstraintsScanlineHandler/lambda$0$Type",Vbe="ScanlineConstraintCalculator/Timestamp",Ube="ScanlineConstraintCalculator/lambda$0$Type",t0={178:1,46:1},vut="org.eclipse.elk.alg.common.compaction.options",pc="org.eclipse.elk.core.data",_8t="org.eclipse.elk.polyomino.traversalStrategy",A8t="org.eclipse.elk.polyomino.lowLevelSort",L8t="org.eclipse.elk.polyomino.highLevelSort",D8t="org.eclipse.elk.polyomino.fill",uf={134:1},yut="polyomino",U_="org.eclipse.elk.alg.common.networksimplex",$0={183:1,3:1,4:1},Gbe="org.eclipse.elk.alg.common.nodespacing",ww="org.eclipse.elk.alg.common.nodespacing.cellsystem",J7="CENTER",Kbe={217:1,336:1},M8t={3:1,4:1,5:1,603:1},_k="LEFT",Ak="RIGHT",I8t="Vertical alignment cannot be null",O8t="BOTTOM",SV="org.eclipse.elk.alg.common.nodespacing.internal",G_="UNDEFINED",gd=.01,hN="org.eclipse.elk.alg.common.nodespacing.internal.algorithm",Wbe="LabelPlacer/lambda$0$Type",Ybe="LabelPlacer/lambda$1$Type",Xbe="portRatioOrPosition",Z7="org.eclipse.elk.alg.common.overlaps",xut="DOWN",e0="org.eclipse.elk.alg.common.polyomino",_V="NORTH",kut="EAST",Eut="SOUTH",Tut="WEST",AV="org.eclipse.elk.alg.common.polyomino.structures",N8t="Direction",Cut="Grid is only of size ",Sut=". Requested point (",_ut=") is out of bounds.",LV=" Given center based coordinates were (",fN="org.eclipse.elk.graph.properties",Qbe="IPropertyHolder",P8t={3:1,96:1,137:1},Lk="org.eclipse.elk.alg.common.spore",Jbe="org.eclipse.elk.alg.common.utils",mw={205:1},T5="org.eclipse.elk.core",Zbe="Connected Components Compaction",t2e="org.eclipse.elk.alg.disco",DV="org.eclipse.elk.alg.disco.graph",Aut="org.eclipse.elk.alg.disco.options",F8t="CompactionStrategy",B8t="org.eclipse.elk.disco.componentCompaction.strategy",R8t="org.eclipse.elk.disco.componentCompaction.componentLayoutAlgorithm",j8t="org.eclipse.elk.disco.debug.discoGraph",$8t="org.eclipse.elk.disco.debug.discoPolys",e2e="componentCompaction",vw="org.eclipse.elk.disco",Lut="org.eclipse.elk.spacing.componentComponent",Dut="org.eclipse.elk.edge.thickness",Dk="org.eclipse.elk.aspectRatio",ov="org.eclipse.elk.padding",C5="org.eclipse.elk.alg.disco.transform",Mut=1.5707963267948966,S5=17976931348623157e292,l3={3:1,4:1,5:1,198:1},n2e={3:1,6:1,4:1,5:1,100:1,115:1},Iut="org.eclipse.elk.alg.force",z8t="ComponentsProcessor",r2e="ComponentsProcessor/1",q8t="ElkGraphImporter/lambda$0$Type",dN="org.eclipse.elk.alg.force.graph",i2e="Component Layout",H8t="org.eclipse.elk.alg.force.model",MV="org.eclipse.elk.force.model",V8t="org.eclipse.elk.force.iterations",U8t="org.eclipse.elk.force.repulsivePower",Out="org.eclipse.elk.force.temperature",n0=.001,Nut="org.eclipse.elk.force.repulsion",K_="org.eclipse.elk.alg.force.options",tT=1.600000023841858,Du="org.eclipse.elk.force",gN="org.eclipse.elk.priority",h3="org.eclipse.elk.spacing.nodeNode",Put="org.eclipse.elk.spacing.edgeLabel",IV="org.eclipse.elk.randomSeed",W_="org.eclipse.elk.separateConnectedComponents",Y_="org.eclipse.elk.interactive",Fut="org.eclipse.elk.portConstraints",OV="org.eclipse.elk.edgeLabels.inline",X_="org.eclipse.elk.omitNodeMicroLayout",eT="org.eclipse.elk.nodeSize.fixedGraphSize",Mk="org.eclipse.elk.nodeSize.options",_5="org.eclipse.elk.nodeSize.constraints",nT="org.eclipse.elk.nodeLabels.placement",rT="org.eclipse.elk.portLabels.placement",pN="org.eclipse.elk.topdownLayout",bN="org.eclipse.elk.topdown.scaleFactor",wN="org.eclipse.elk.topdown.hierarchicalNodeWidth",mN="org.eclipse.elk.topdown.hierarchicalNodeAspectRatio",cv="org.eclipse.elk.topdown.nodeType",G8t="origin",s2e="random",a2e="boundingBox.upLeft",o2e="boundingBox.lowRight",K8t="org.eclipse.elk.stress.fixed",W8t="org.eclipse.elk.stress.desiredEdgeLength",Y8t="org.eclipse.elk.stress.dimension",X8t="org.eclipse.elk.stress.epsilon",Q8t="org.eclipse.elk.stress.iterationLimit",Yb="org.eclipse.elk.stress",c2e="ELK Stress",Ik="org.eclipse.elk.nodeSize.minimum",NV="org.eclipse.elk.alg.force.stress",u2e="Layered layout",Ok="org.eclipse.elk.alg.layered",vN="org.eclipse.elk.alg.layered.compaction.components",Q_="org.eclipse.elk.alg.layered.compaction.oned",PV="org.eclipse.elk.alg.layered.compaction.oned.algs",yw="org.eclipse.elk.alg.layered.compaction.recthull",pd="org.eclipse.elk.alg.layered.components",r0="NONE",J8t="MODEL_ORDER",qc={3:1,6:1,4:1,9:1,5:1,126:1},l2e={3:1,6:1,4:1,5:1,150:1,100:1,115:1},FV="org.eclipse.elk.alg.layered.compound",zi={47:1},au="org.eclipse.elk.alg.layered.graph",But=" -> ",h2e="Not supported by LGraph",Z8t="Port side is undefined",Rut={3:1,6:1,4:1,5:1,482:1,150:1,100:1,115:1},jp={3:1,6:1,4:1,5:1,150:1,199:1,210:1,100:1,115:1},f2e={3:1,6:1,4:1,5:1,150:1,2042:1,210:1,100:1,115:1},d2e=`([{"' \r +`,g2e=`)]}"' \r +`,p2e="The given string contains parts that cannot be parsed as numbers.",yN="org.eclipse.elk.core.math",b2e={3:1,4:1,140:1,214:1,423:1},w2e={3:1,4:1,107:1,214:1,423:1},$p="org.eclipse.elk.alg.layered.graph.transform",m2e="ElkGraphImporter",v2e="ElkGraphImporter/lambda$1$Type",y2e="ElkGraphImporter/lambda$2$Type",x2e="ElkGraphImporter/lambda$4$Type",Yn="org.eclipse.elk.alg.layered.intermediate",k2e="Node margin calculation",E2e="ONE_SIDED_GREEDY_SWITCH",T2e="TWO_SIDED_GREEDY_SWITCH",jut="No implementation is available for the layout processor ",$ut="IntermediateProcessorStrategy",zut="Node '",C2e="FIRST_SEPARATE",S2e="LAST_SEPARATE",_2e="Odd port side processing",Gs="org.eclipse.elk.alg.layered.intermediate.compaction",J_="org.eclipse.elk.alg.layered.intermediate.greedyswitch",z0="org.eclipse.elk.alg.layered.p3order.counting",xN={230:1},Nk="org.eclipse.elk.alg.layered.intermediate.loops",dh="org.eclipse.elk.alg.layered.intermediate.loops.ordering",Xb="org.eclipse.elk.alg.layered.intermediate.loops.routing",tEt="org.eclipse.elk.alg.layered.intermediate.preserveorder",i0="org.eclipse.elk.alg.layered.intermediate.wrapping",Hc="org.eclipse.elk.alg.layered.options",qut="INTERACTIVE",eEt="GREEDY",A2e="DEPTH_FIRST",L2e="EDGE_LENGTH",D2e="SELF_LOOPS",M2e="firstTryWithInitialOrder",nEt="org.eclipse.elk.layered.directionCongruency",rEt="org.eclipse.elk.layered.feedbackEdges",BV="org.eclipse.elk.layered.interactiveReferencePoint",iEt="org.eclipse.elk.layered.mergeEdges",sEt="org.eclipse.elk.layered.mergeHierarchyEdges",aEt="org.eclipse.elk.layered.allowNonFlowPortsToSwitchSides",oEt="org.eclipse.elk.layered.portSortingStrategy",cEt="org.eclipse.elk.layered.thoroughness",uEt="org.eclipse.elk.layered.unnecessaryBendpoints",lEt="org.eclipse.elk.layered.generatePositionAndLayerIds",Hut="org.eclipse.elk.layered.cycleBreaking.strategy",kN="org.eclipse.elk.layered.layering.strategy",hEt="org.eclipse.elk.layered.layering.layerConstraint",fEt="org.eclipse.elk.layered.layering.layerChoiceConstraint",dEt="org.eclipse.elk.layered.layering.layerId",Vut="org.eclipse.elk.layered.layering.minWidth.upperBoundOnWidth",Uut="org.eclipse.elk.layered.layering.minWidth.upperLayerEstimationScalingFactor",Gut="org.eclipse.elk.layered.layering.nodePromotion.strategy",Kut="org.eclipse.elk.layered.layering.nodePromotion.maxIterations",Wut="org.eclipse.elk.layered.layering.coffmanGraham.layerBound",Z_="org.eclipse.elk.layered.crossingMinimization.strategy",gEt="org.eclipse.elk.layered.crossingMinimization.forceNodeModelOrder",Yut="org.eclipse.elk.layered.crossingMinimization.hierarchicalSweepiness",Xut="org.eclipse.elk.layered.crossingMinimization.semiInteractive",pEt="org.eclipse.elk.layered.crossingMinimization.inLayerPredOf",bEt="org.eclipse.elk.layered.crossingMinimization.inLayerSuccOf",wEt="org.eclipse.elk.layered.crossingMinimization.positionChoiceConstraint",mEt="org.eclipse.elk.layered.crossingMinimization.positionId",vEt="org.eclipse.elk.layered.crossingMinimization.greedySwitch.activationThreshold",Qut="org.eclipse.elk.layered.crossingMinimization.greedySwitch.type",RV="org.eclipse.elk.layered.crossingMinimization.greedySwitchHierarchical.type",A5="org.eclipse.elk.layered.nodePlacement.strategy",jV="org.eclipse.elk.layered.nodePlacement.favorStraightEdges",Jut="org.eclipse.elk.layered.nodePlacement.bk.edgeStraightening",Zut="org.eclipse.elk.layered.nodePlacement.bk.fixedAlignment",tlt="org.eclipse.elk.layered.nodePlacement.linearSegments.deflectionDampening",elt="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility",nlt="org.eclipse.elk.layered.nodePlacement.networkSimplex.nodeFlexibility.default",yEt="org.eclipse.elk.layered.edgeRouting.selfLoopDistribution",xEt="org.eclipse.elk.layered.edgeRouting.selfLoopOrdering",$V="org.eclipse.elk.layered.edgeRouting.splines.mode",zV="org.eclipse.elk.layered.edgeRouting.splines.sloppy.layerSpacingFactor",rlt="org.eclipse.elk.layered.edgeRouting.polyline.slopedEdgeZoneWidth",kEt="org.eclipse.elk.layered.spacing.baseValue",EEt="org.eclipse.elk.layered.spacing.edgeNodeBetweenLayers",TEt="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers",CEt="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers",SEt="org.eclipse.elk.layered.priority.direction",_Et="org.eclipse.elk.layered.priority.shortness",AEt="org.eclipse.elk.layered.priority.straightness",ilt="org.eclipse.elk.layered.compaction.connectedComponents",LEt="org.eclipse.elk.layered.compaction.postCompaction.strategy",DEt="org.eclipse.elk.layered.compaction.postCompaction.constraints",qV="org.eclipse.elk.layered.highDegreeNodes.treatment",slt="org.eclipse.elk.layered.highDegreeNodes.threshold",alt="org.eclipse.elk.layered.highDegreeNodes.treeHeight",Bg="org.eclipse.elk.layered.wrapping.strategy",HV="org.eclipse.elk.layered.wrapping.additionalEdgeSpacing",VV="org.eclipse.elk.layered.wrapping.correctionFactor",tA="org.eclipse.elk.layered.wrapping.cutting.strategy",olt="org.eclipse.elk.layered.wrapping.cutting.cuts",clt="org.eclipse.elk.layered.wrapping.cutting.msd.freedom",UV="org.eclipse.elk.layered.wrapping.validify.strategy",GV="org.eclipse.elk.layered.wrapping.validify.forbiddenIndices",KV="org.eclipse.elk.layered.wrapping.multiEdge.improveCuts",WV="org.eclipse.elk.layered.wrapping.multiEdge.distancePenalty",ult="org.eclipse.elk.layered.wrapping.multiEdge.improveWrappedEdges",MEt="org.eclipse.elk.layered.edgeLabels.sideSelection",IEt="org.eclipse.elk.layered.edgeLabels.centerLabelPlacementStrategy",YV="org.eclipse.elk.layered.considerModelOrder.strategy",OEt="org.eclipse.elk.layered.considerModelOrder.portModelOrder",NEt="org.eclipse.elk.layered.considerModelOrder.noModelOrder",llt="org.eclipse.elk.layered.considerModelOrder.components",PEt="org.eclipse.elk.layered.considerModelOrder.longEdgeStrategy",hlt="org.eclipse.elk.layered.considerModelOrder.crossingCounterNodeInfluence",flt="org.eclipse.elk.layered.considerModelOrder.crossingCounterPortInfluence",dlt="layering",I2e="layering.minWidth",O2e="layering.nodePromotion",iT="crossingMinimization",XV="org.eclipse.elk.hierarchyHandling",N2e="crossingMinimization.greedySwitch",P2e="nodePlacement",F2e="nodePlacement.bk",B2e="edgeRouting",EN="org.eclipse.elk.edgeRouting",bd="spacing",FEt="priority",BEt="compaction",R2e="compaction.postCompaction",j2e="Specifies whether and how post-process compaction is applied.",REt="highDegreeNodes",jEt="wrapping",$2e="wrapping.cutting",z2e="wrapping.validify",$Et="wrapping.multiEdge",glt="edgeLabels",eA="considerModelOrder",zEt="org.eclipse.elk.spacing.commentComment",qEt="org.eclipse.elk.spacing.commentNode",HEt="org.eclipse.elk.spacing.edgeEdge",plt="org.eclipse.elk.spacing.edgeNode",VEt="org.eclipse.elk.spacing.labelLabel",UEt="org.eclipse.elk.spacing.labelPortHorizontal",GEt="org.eclipse.elk.spacing.labelPortVertical",KEt="org.eclipse.elk.spacing.labelNode",WEt="org.eclipse.elk.spacing.nodeSelfLoop",YEt="org.eclipse.elk.spacing.portPort",XEt="org.eclipse.elk.spacing.individual",QEt="org.eclipse.elk.port.borderOffset",JEt="org.eclipse.elk.noLayout",ZEt="org.eclipse.elk.port.side",TN="org.eclipse.elk.debugMode",t7t="org.eclipse.elk.alignment",e7t="org.eclipse.elk.insideSelfLoops.activate",n7t="org.eclipse.elk.insideSelfLoops.yo",blt="org.eclipse.elk.direction",r7t="org.eclipse.elk.nodeLabels.padding",i7t="org.eclipse.elk.portLabels.nextToPortIfPossible",s7t="org.eclipse.elk.portLabels.treatAsGroup",a7t="org.eclipse.elk.portAlignment.default",o7t="org.eclipse.elk.portAlignment.north",c7t="org.eclipse.elk.portAlignment.south",u7t="org.eclipse.elk.portAlignment.west",l7t="org.eclipse.elk.portAlignment.east",QV="org.eclipse.elk.contentAlignment",h7t="org.eclipse.elk.junctionPoints",f7t="org.eclipse.elk.edgeLabels.placement",d7t="org.eclipse.elk.port.index",g7t="org.eclipse.elk.commentBox",p7t="org.eclipse.elk.hypernode",b7t="org.eclipse.elk.port.anchor",wlt="org.eclipse.elk.partitioning.activate",mlt="org.eclipse.elk.partitioning.partition",JV="org.eclipse.elk.position",w7t="org.eclipse.elk.margins",m7t="org.eclipse.elk.spacing.portsSurrounding",ZV="org.eclipse.elk.interactiveLayout",_c="org.eclipse.elk.core.util",v7t={3:1,4:1,5:1,601:1},q2e="NETWORK_SIMPLEX",y7t="SIMPLE",_o={106:1,47:1},tU="org.eclipse.elk.alg.layered.p1cycles",Rg="org.eclipse.elk.alg.layered.p2layers",x7t={413:1,230:1},H2e={846:1,3:1,4:1},al="org.eclipse.elk.alg.layered.p3order",Ao="org.eclipse.elk.alg.layered.p4nodes",V2e={3:1,4:1,5:1,854:1},s0=1e-5,Qb="org.eclipse.elk.alg.layered.p4nodes.bk",vlt="org.eclipse.elk.alg.layered.p5edges",M1="org.eclipse.elk.alg.layered.p5edges.orthogonal",ylt="org.eclipse.elk.alg.layered.p5edges.orthogonal.direction",xlt=1e-6,f3="org.eclipse.elk.alg.layered.p5edges.splines",klt=.09999999999999998,eU=1e-8,U2e=4.71238898038469,k7t=3.141592653589793,jg="org.eclipse.elk.alg.mrtree",Elt=.10000000149011612,nU="SUPER_ROOT",nA="org.eclipse.elk.alg.mrtree.graph",E7t=-17976931348623157e292,ou="org.eclipse.elk.alg.mrtree.intermediate",G2e="Processor compute fanout",rU={3:1,6:1,4:1,5:1,534:1,100:1,115:1},K2e="Set neighbors in level",CN="org.eclipse.elk.alg.mrtree.options",W2e="DESCENDANTS",T7t="org.eclipse.elk.mrtree.compaction",C7t="org.eclipse.elk.mrtree.edgeEndTextureLength",S7t="org.eclipse.elk.mrtree.treeLevel",_7t="org.eclipse.elk.mrtree.positionConstraint",A7t="org.eclipse.elk.mrtree.weighting",L7t="org.eclipse.elk.mrtree.edgeRoutingMode",D7t="org.eclipse.elk.mrtree.searchOrder",Y2e="Position Constraint",Mu="org.eclipse.elk.mrtree",X2e="org.eclipse.elk.tree",Q2e="Processor arrange level",sT="org.eclipse.elk.alg.mrtree.p2order",Xl="org.eclipse.elk.alg.mrtree.p4route",M7t="org.eclipse.elk.alg.radial",xw=6.283185307179586,I7t="Before",O7t=5e-324,iU="After",N7t="org.eclipse.elk.alg.radial.intermediate",J2e="COMPACTION",Tlt="org.eclipse.elk.alg.radial.intermediate.compaction",Z2e={3:1,4:1,5:1,100:1},P7t="org.eclipse.elk.alg.radial.intermediate.optimization",Clt="No implementation is available for the layout option ",rA="org.eclipse.elk.alg.radial.options",F7t="org.eclipse.elk.radial.centerOnRoot",B7t="org.eclipse.elk.radial.orderId",R7t="org.eclipse.elk.radial.radius",sU="org.eclipse.elk.radial.rotate",Slt="org.eclipse.elk.radial.compactor",_lt="org.eclipse.elk.radial.compactionStepSize",j7t="org.eclipse.elk.radial.sorter",$7t="org.eclipse.elk.radial.wedgeCriteria",z7t="org.eclipse.elk.radial.optimizationCriteria",Alt="org.eclipse.elk.radial.rotation.targetAngle",Llt="org.eclipse.elk.radial.rotation.computeAdditionalWedgeSpace",q7t="org.eclipse.elk.radial.rotation.outgoingEdgeAngles",twe="Compaction",H7t="rotation",zh="org.eclipse.elk.radial",ewe="org.eclipse.elk.alg.radial.p1position.wedge",V7t="org.eclipse.elk.alg.radial.sorting",nwe=5.497787143782138,rwe=3.9269908169872414,iwe=2.356194490192345,swe="org.eclipse.elk.alg.rectpacking",aU="org.eclipse.elk.alg.rectpacking.intermediate",Dlt="org.eclipse.elk.alg.rectpacking.options",U7t="org.eclipse.elk.rectpacking.trybox",G7t="org.eclipse.elk.rectpacking.currentPosition",K7t="org.eclipse.elk.rectpacking.desiredPosition",W7t="org.eclipse.elk.rectpacking.inNewRow",Y7t="org.eclipse.elk.rectpacking.widthApproximation.strategy",X7t="org.eclipse.elk.rectpacking.widthApproximation.targetWidth",Q7t="org.eclipse.elk.rectpacking.widthApproximation.optimizationGoal",J7t="org.eclipse.elk.rectpacking.widthApproximation.lastPlaceShift",Z7t="org.eclipse.elk.rectpacking.packing.strategy",tTt="org.eclipse.elk.rectpacking.packing.compaction.rowHeightReevaluation",eTt="org.eclipse.elk.rectpacking.packing.compaction.iterations",nTt="org.eclipse.elk.rectpacking.whiteSpaceElimination.strategy",Mlt="widthApproximation",awe="Compaction Strategy",owe="packing.compaction",Ol="org.eclipse.elk.rectpacking",aT="org.eclipse.elk.alg.rectpacking.p1widthapproximation",oU="org.eclipse.elk.alg.rectpacking.p2packing",cwe="No Compaction",rTt="org.eclipse.elk.alg.rectpacking.p3whitespaceelimination",SN="org.eclipse.elk.alg.rectpacking.util",cU="No implementation available for ",d3="org.eclipse.elk.alg.spore",g3="org.eclipse.elk.alg.spore.options",uv="org.eclipse.elk.sporeCompaction",Ilt="org.eclipse.elk.underlyingLayoutAlgorithm",iTt="org.eclipse.elk.processingOrder.treeConstruction",sTt="org.eclipse.elk.processingOrder.spanningTreeCostFunction",Olt="org.eclipse.elk.processingOrder.preferredRoot",Nlt="org.eclipse.elk.processingOrder.rootSelection",Plt="org.eclipse.elk.structure.structureExtractionStrategy",aTt="org.eclipse.elk.compaction.compactionStrategy",oTt="org.eclipse.elk.compaction.orthogonal",cTt="org.eclipse.elk.overlapRemoval.maxIterations",uTt="org.eclipse.elk.overlapRemoval.runScanline",Flt="processingOrder",uwe="overlapRemoval",oT="org.eclipse.elk.sporeOverlap",lwe="org.eclipse.elk.alg.spore.p1structure",Blt="org.eclipse.elk.alg.spore.p2processingorder",Rlt="org.eclipse.elk.alg.spore.p3execution",hwe="Topdown Layout",fwe="Invalid index: ",cT="org.eclipse.elk.core.alg",L5={341:1},p3={294:1},dwe="Make sure its type is registered with the ",lTt=" utility class.",uT="true",jlt="false",gwe="Couldn't clone property '",lv=.05,Nl="org.eclipse.elk.core.options",pwe=1.2999999523162842,hv="org.eclipse.elk.box",hTt="org.eclipse.elk.expandNodes",fTt="org.eclipse.elk.box.packingMode",bwe="org.eclipse.elk.algorithm",wwe="org.eclipse.elk.resolvedAlgorithm",dTt="org.eclipse.elk.bendPoints",KSn="org.eclipse.elk.labelManager",mwe="org.eclipse.elk.scaleFactor",vwe="org.eclipse.elk.childAreaWidth",ywe="org.eclipse.elk.childAreaHeight",xwe="org.eclipse.elk.animate",kwe="org.eclipse.elk.animTimeFactor",Ewe="org.eclipse.elk.layoutAncestors",Twe="org.eclipse.elk.maxAnimTime",Cwe="org.eclipse.elk.minAnimTime",Swe="org.eclipse.elk.progressBar",_we="org.eclipse.elk.validateGraph",Awe="org.eclipse.elk.validateOptions",Lwe="org.eclipse.elk.zoomToFit",WSn="org.eclipse.elk.font.name",Dwe="org.eclipse.elk.font.size",gTt="org.eclipse.elk.topdown.sizeApproximator",pTt="org.eclipse.elk.topdown.scaleCap",Mwe="org.eclipse.elk.edge.type",Iwe="partitioning",Owe="nodeLabels",uU="portAlignment",$lt="nodeSize",zlt="port",bTt="portLabels",_N="topdown",Nwe="insideSelfLoops",iA="org.eclipse.elk.fixed",lU="org.eclipse.elk.random",wTt={3:1,34:1,22:1,347:1},Pwe="port must have a parent node to calculate the port side",Fwe="The edge needs to have exactly one edge section. Found: ",sA="org.eclipse.elk.core.util.adapters",qh="org.eclipse.emf.ecore",D5="org.eclipse.elk.graph",Bwe="EMapPropertyHolder",Rwe="ElkBendPoint",jwe="ElkGraphElement",$we="ElkConnectableShape",mTt="ElkEdge",zwe="ElkEdgeSection",qwe="EModelElement",Hwe="ENamedElement",vTt="ElkLabel",yTt="ElkNode",xTt="ElkPort",Vwe={94:1,93:1},Pk="org.eclipse.emf.common.notify.impl",Jb="The feature '",aA="' is not a valid changeable feature",Uwe="Expecting null",qlt="' is not a valid feature",Gwe="The feature ID",Kwe=" is not a valid feature ID",Fc=32768,Wwe={110:1,94:1,93:1,58:1,54:1,99:1},Rn="org.eclipse.emf.ecore.impl",kw="org.eclipse.elk.graph.impl",oA="Recursive containment not allowed for ",lT="The datatype '",fv="' is not a valid classifier",Hlt="The value '",M5={195:1,3:1,4:1},Vlt="The class '",hT="http://www.eclipse.org/elk/ElkGraph",kTt="property",cA="value",Ult="source",Ywe="properties",Xwe="identifier",Glt="height",Klt="width",Wlt="parent",Ylt="text",Xlt="children",Qwe="hierarchical",ETt="sources",Qlt="targets",TTt="sections",hU="bendPoints",CTt="outgoingShape",STt="incomingShape",_Tt="outgoingSections",ATt="incomingSections",oo="org.eclipse.emf.common.util",LTt="Severe implementation error in the Json to ElkGraph importer.",a0="id",Ba="org.eclipse.elk.graph.json",DTt="Unhandled parameter types: ",Jwe="startPoint",Zwe="An edge must have at least one source and one target (edge id: '",fT="').",tme="Referenced edge section does not exist: ",eme=" (edge id: '",MTt="target",nme="sourcePoint",rme="targetPoint",fU="group",pi="name",ime="connectableShape cannot be null",sme="edge cannot be null",Jlt="Passed edge is not 'simple'.",dU="org.eclipse.elk.graph.util",AN="The 'no duplicates' constraint is violated",Zlt="targetIndex=",Ew=", size=",tht="sourceIndex=",o0={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1},eht={3:1,4:1,20:1,31:1,56:1,16:1,51:1,15:1,59:1,70:1,66:1,61:1,596:1},gU="logging",ame="measureExecutionTime",ome="parser.parse.1",cme="parser.parse.2",pU="parser.next.1",nht="parser.next.2",ume="parser.next.3",lme="parser.next.4",Tw="parser.factor.1",ITt="parser.factor.2",hme="parser.factor.3",fme="parser.factor.4",dme="parser.factor.5",gme="parser.factor.6",pme="parser.atom.1",bme="parser.atom.2",wme="parser.atom.3",OTt="parser.atom.4",rht="parser.atom.5",NTt="parser.cc.1",bU="parser.cc.2",mme="parser.cc.3",vme="parser.cc.5",PTt="parser.cc.6",FTt="parser.cc.7",iht="parser.cc.8",yme="parser.ope.1",xme="parser.ope.2",kme="parser.ope.3",zp="parser.descape.1",Eme="parser.descape.2",Tme="parser.descape.3",Cme="parser.descape.4",Sme="parser.descape.5",Hh="parser.process.1",_me="parser.quantifier.1",Ame="parser.quantifier.2",Lme="parser.quantifier.3",Dme="parser.quantifier.4",BTt="parser.quantifier.5",Mme="org.eclipse.emf.common.notify",RTt={424:1,686:1},Ime={3:1,4:1,20:1,31:1,56:1,16:1,15:1,70:1,61:1},LN={378:1,152:1},uA="index=",sht={3:1,4:1,5:1,129:1},Ome={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,61:1},jTt={3:1,6:1,4:1,5:1,198:1},Nme={3:1,4:1,5:1,173:1,379:1},Pme=";/?:@&=+$,",Fme="invalid authority: ",Bme="EAnnotation",Rme="ETypedElement",jme="EStructuralFeature",$me="EAttribute",zme="EClassifier",qme="EEnumLiteral",Hme="EGenericType",Vme="EOperation",Ume="EParameter",Gme="EReference",Kme="ETypeParameter",Yi="org.eclipse.emf.ecore.util",aht={79:1},$Tt={3:1,20:1,16:1,15:1,61:1,597:1,79:1,71:1,97:1},Wme="org.eclipse.emf.ecore.util.FeatureMap$Entry",ol=8192,b3=2048,lA="byte",wU="char",hA="double",fA="float",dA="int",gA="long",pA="short",Yme="java.lang.Object",I5={3:1,4:1,5:1,254:1},zTt={3:1,4:1,5:1,688:1},Xme={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,71:1},ic={3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,79:1,71:1,97:1},DN="mixed",ti="http:///org/eclipse/emf/ecore/util/ExtendedMetaData",lf="kind",Qme={3:1,4:1,5:1,689:1},qTt={3:1,4:1,20:1,31:1,56:1,16:1,15:1,70:1,61:1,79:1,71:1,97:1},mU={20:1,31:1,56:1,16:1,15:1,61:1,71:1},vU={51:1,128:1,287:1},yU={76:1,343:1},xU="The value of type '",kU="' must be of type '",O5=1352,hf="http://www.eclipse.org/emf/2002/Ecore",EU=-32768,dv="constraints",Ka="baseType",Jme="getEStructuralFeature",Zme="getFeatureID",bA="feature",tve="getOperationID",HTt="operation",eve="defaultValue",nve="eTypeParameters",rve="isInstance",ive="getEEnumLiteral",sve="eContainingClass",li={57:1},ave={3:1,4:1,5:1,124:1},ove="org.eclipse.emf.ecore.resource",cve={94:1,93:1,599:1,2034:1},oht="org.eclipse.emf.ecore.resource.impl",VTt="unspecified",MN="simple",TU="attribute",uve="attributeWildcard",CU="element",cht="elementWildcard",I1="collapse",uht="itemType",SU="namespace",IN="##targetNamespace",ff="whiteSpace",UTt="wildcards",Cw="http://www.eclipse.org/emf/2003/XMLType",lht="##any",dT="uninitialized",ON="The multiplicity constraint is violated",_U="org.eclipse.emf.ecore.xml.type",lve="ProcessingInstruction",hve="SimpleAnyType",fve="XMLTypeDocumentRoot",$s="org.eclipse.emf.ecore.xml.type.impl",NN="INF",dve="processing",gve="ENTITIES_._base",GTt="minLength",KTt="ENTITY",AU="NCName",pve="IDREFS_._base",WTt="integer",hht="token",fht="pattern",bve="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*",YTt="\\i\\c*",wve="[\\i-[:]][\\c-[:]]*",mve="nonPositiveInteger",PN="maxInclusive",XTt="NMTOKEN",vve="NMTOKENS_._base",QTt="nonNegativeInteger",FN="minInclusive",yve="normalizedString",xve="unsignedByte",kve="unsignedInt",Eve="18446744073709551615",Tve="unsignedShort",Cve="processingInstruction",qp="org.eclipse.emf.ecore.xml.type.internal",gT=1114111,Sve="Internal Error: shorthands: \\u",wA="xml:isDigit",dht="xml:isWord",ght="xml:isSpace",pht="xml:isNameChar",bht="xml:isInitialNameChar",_ve="09٠٩۰۹०९০৯੦੯૦૯୦୯௧௯౦౯೦೯൦൯๐๙໐໙༠༩",Ave="AZazÀÖØöøıĴľŁňŊžƀǃǍǰǴǵǺȗɐʨʻˁΆΆΈΊΌΌΎΡΣώϐϖϚϚϜϜϞϞϠϠϢϳЁЌЎяёќўҁҐӄӇӈӋӌӐӫӮӵӸӹԱՖՙՙաֆאתװײءغفيٱڷںھۀێېۓەەۥۦअहऽऽक़ॡঅঌএঐওনপরললশহড়ঢ়য়ৡৰৱਅਊਏਐਓਨਪਰਲਲ਼ਵਸ਼ਸਹਖ਼ੜਫ਼ਫ਼ੲੴઅઋઍઍએઑઓનપરલળવહઽઽૠૠଅଌଏଐଓନପରଲଳଶହଽଽଡ଼ଢ଼ୟୡஅஊஎஐஒகஙசஜஜஞடணதநபமவஷஹఅఌఎఐఒనపళవహౠౡಅಌಎಐಒನಪಳವಹೞೞೠೡഅഌഎഐഒനപഹൠൡกฮะะาำเๅກຂຄຄງຈຊຊຍຍດທນຟມຣລລວວສຫອຮະະາຳຽຽເໄཀཇཉཀྵႠჅაჶᄀᄀᄂᄃᄅᄇᄉᄉᄋᄌᄎᄒᄼᄼᄾᄾᅀᅀᅌᅌᅎᅎᅐᅐᅔᅕᅙᅙᅟᅡᅣᅣᅥᅥᅧᅧᅩᅩᅭᅮᅲᅳᅵᅵᆞᆞᆨᆨᆫᆫᆮᆯᆷᆸᆺᆺᆼᇂᇫᇫᇰᇰᇹᇹḀẛẠỹἀἕἘἝἠὅὈὍὐὗὙὙὛὛὝὝὟώᾀᾴᾶᾼιιῂῄῆῌῐΐῖΊῠῬῲῴῶῼΩΩKÅ℮℮ↀↂ〇〇〡〩ぁゔァヺㄅㄬ一龥가힣",Lve="Private Use",wht="ASSIGNED",mht="\0€ÿĀſƀɏɐʯʰ˿̀ͯͰϿЀӿ԰֏֐׿؀ۿ܀ݏހ޿ऀॿঀ৿਀੿઀૿଀୿஀௿ఀ౿ಀ೿ഀൿ඀෿฀๿຀໿ༀ࿿က႟Ⴀჿᄀᇿሀ፿Ꭰ᏿᐀ᙿ ᚟ᚠ᛿ក៿᠀᢯Ḁỿἀ῿ ⁰₟₠⃏⃐⃿℀⅏⅐↏←⇿∀⋿⌀⏿␀␿⑀⑟①⓿─╿▀▟■◿☀⛿✀➿⠀⣿⺀⻿⼀⿟⿰⿿ 〿぀ゟ゠ヿ㄀ㄯ㄰㆏㆐㆟ㆠㆿ㈀㋿㌀㏿㐀䶵一鿿ꀀ꒏꒐꓏가힣豈﫿ffﭏﭐ﷿︠︯︰﹏﹐﹯ﹰ﻾\uFEFF\uFEFF＀￯",JTt="UNASSIGNED",pT={3:1,122:1},Dve="org.eclipse.emf.ecore.xml.type.util",LU={3:1,4:1,5:1,381:1},ZTt="org.eclipse.xtext.xbase.lib",Mve="Cannot add elements to a Range",Ive="Cannot set elements in a Range",Ove="Cannot remove elements from a Range",Nve="user.agent",l,DU,vht;b.goog=b.goog||{},b.goog.global=b.goog.global||b,DU={},D(1,null,{},S),l.Fb=function(e){return MQt(this,e)},l.Gb=function(){return this.Rm},l.Hb=function(){return Em(this)},l.Ib=function(){var e;return V2(Wl(this))+"@"+(e=$i(this)>>>0,e.toString(16))},l.equals=function(t){return this.Fb(t)},l.hashCode=function(){return this.Hb()},l.toString=function(){return this.Ib()};var Pve,Fve,Bve;D(296,1,{296:1,2124:1},Y4t),l.ve=function(e){var n;return n=new Y4t,n.i=4,e>1?n.c=Zne(this,e-1):n.c=this,n},l.we=function(){return wg(this),this.b},l.xe=function(){return V2(this)},l.ye=function(){return wg(this),this.k},l.ze=function(){return(this.i&4)!=0},l.Ae=function(){return(this.i&1)!=0},l.Ib=function(){return a4t(this)},l.i=0;var aa=I(Sc,"Object",1),t9t=I(Sc,"Class",296);D(2096,1,tN),I(eN,"Optional",2096),D(1191,2096,tN,_),l.Fb=function(e){return e===this},l.Hb=function(){return 2040732332},l.Ib=function(){return"Optional.absent()"},l.Jb=function(e){return Hr(e),UC(),yht};var yht;I(eN,"Absent",1191),D(636,1,{},ert),I(eN,"Joiner",636);var YSn=os(eN,"Predicate");D(589,1,{178:1,589:1,3:1,46:1},Rj),l.Mb=function(e){return Zce(this,e)},l.Lb=function(e){return Zce(this,e)},l.Fb=function(e){var n;return Lt(e,589)?(n=u(e,589),U6t(this.a,n.a)):!1},l.Hb=function(){return e5t(this.a)+306654252},l.Ib=function(){return P4n(this.a)},I(eN,"Predicates/AndPredicate",589),D(419,2096,{419:1,3:1},FC),l.Fb=function(e){var n;return Lt(e,419)?(n=u(e,419),Ti(this.a,n.a)):!1},l.Hb=function(){return 1502476572+$i(this.a)},l.Ib=function(){return cbe+this.a+")"},l.Jb=function(e){return new FC(Qz(e.Kb(this.a),"the Function passed to Optional.transform() must not return null."))},I(eN,"Present",419),D(204,1,V7),l.Nb=function(e){Na(this,e)},l.Qb=function(){yWt()},I(on,"UnmodifiableIterator",204),D(2076,204,U7),l.Qb=function(){yWt()},l.Rb=function(e){throw at(new Vr)},l.Wb=function(e){throw at(new Vr)},I(on,"UnmodifiableListIterator",2076),D(399,2076,U7),l.Ob=function(){return this.c0},l.Pb=function(){if(this.c>=this.d)throw at(new cc);return this.Xb(this.c++)},l.Tb=function(){return this.c},l.Ub=function(){if(this.c<=0)throw at(new cc);return this.Xb(--this.c)},l.Vb=function(){return this.c-1},l.c=0,l.d=0,I(on,"AbstractIndexedListIterator",399),D(713,204,V7),l.Ob=function(){return rat(this)},l.Pb=function(){return t4t(this)},l.e=1,I(on,"AbstractIterator",713),D(2084,1,{229:1}),l.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},l.Fb=function(e){return Cat(this,e)},l.Hb=function(){return $i(this.Zb())},l.dc=function(){return this.gc()==0},l.ec=function(){return U6(this)},l.Ib=function(){return rc(this.Zb())},I(on,"AbstractMultimap",2084),D(742,2084,pw),l.$b=function(){qq(this)},l._b=function(e){return jWt(this,e)},l.ac=function(){return new vE(this,this.c)},l.ic=function(e){return this.hc()},l.bc=function(){return new W4(this,this.c)},l.jc=function(){return this.mc(this.hc())},l.kc=function(){return new iWt(this)},l.lc=function(){return Not(this.c.vc().Nc(),new F,64,this.d)},l.cc=function(e){return Ai(this,e)},l.fc=function(e){return hO(this,e)},l.gc=function(){return this.d},l.mc=function(e){return mn(),new Ta(e)},l.nc=function(){return new rWt(this)},l.oc=function(){return Not(this.c.Cc().Nc(),new M,64,this.d)},l.pc=function(e,n){return new yq(this,e,n,null)},l.d=0,I(on,"AbstractMapBasedMultimap",742),D(1696,742,pw),l.hc=function(){return new wu(this.a)},l.jc=function(){return mn(),mn(),co},l.cc=function(e){return u(Ai(this,e),15)},l.fc=function(e){return u(hO(this,e),15)},l.Zb=function(){return Q6(this)},l.Fb=function(e){return Cat(this,e)},l.qc=function(e){return u(Ai(this,e),15)},l.rc=function(e){return u(hO(this,e),15)},l.mc=function(e){return ast(u(e,15))},l.pc=function(e,n){return aie(this,e,u(n,15),null)},I(on,"AbstractListMultimap",1696),D(748,1,wa),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.c.Ob()||this.e.Ob()},l.Pb=function(){var e;return this.e.Ob()||(e=u(this.c.Pb(),44),this.b=e.ld(),this.a=u(e.md(),16),this.e=this.a.Kc()),this.sc(this.b,this.e.Pb())},l.Qb=function(){this.e.Qb(),u(nf(this.a),16).dc()&&this.c.Qb(),--this.d.d},I(on,"AbstractMapBasedMultimap/Itr",748),D(1129,748,wa,rWt),l.sc=function(e,n){return n},I(on,"AbstractMapBasedMultimap/1",1129),D(1130,1,{},M),l.Kb=function(e){return u(e,16).Nc()},I(on,"AbstractMapBasedMultimap/1methodref$spliterator$Type",1130),D(1131,748,wa,iWt),l.sc=function(e,n){return new bm(e,n)},I(on,"AbstractMapBasedMultimap/2",1131);var e9t=os(xr,"Map");D(2065,1,sv),l.wc=function(e){e_(this,e)},l.yc=function(e,n,r){return Vat(this,e,n,r)},l.$b=function(){this.vc().$b()},l.tc=function(e){return bot(this,e)},l._b=function(e){return!!Vxt(this,e,!1)},l.uc=function(e){var n,r,s;for(r=this.vc().Kc();r.Ob();)if(n=u(r.Pb(),44),s=n.md(),$t(e)===$t(s)||e!=null&&Ti(e,s))return!0;return!1},l.Fb=function(e){var n,r,s;if(e===this)return!0;if(!Lt(e,85)||(s=u(e,85),this.gc()!=s.gc()))return!1;for(r=s.vc().Kc();r.Ob();)if(n=u(r.Pb(),44),!this.tc(n))return!1;return!0},l.xc=function(e){return Ko(Vxt(this,e,!1))},l.Hb=function(){return U4t(this.vc())},l.dc=function(){return this.gc()==0},l.ec=function(){return new cr(this)},l.zc=function(e,n){throw at(new hp("Put not supported on this map"))},l.Ac=function(e){t_(this,e)},l.Bc=function(e){return Ko(Vxt(this,e,!0))},l.gc=function(){return this.vc().gc()},l.Ib=function(){return hfe(this)},l.Cc=function(){return new si(this)},I(xr,"AbstractMap",2065),D(2085,2065,sv),l.bc=function(){return new v$(this)},l.vc=function(){return nee(this)},l.ec=function(){var e;return e=this.g,e||(this.g=this.bc())},l.Cc=function(){var e;return e=this.i,e||(this.i=new LYt(this))},I(on,"Maps/ViewCachingAbstractMap",2085),D(402,2085,sv,vE),l.xc=function(e){return tgn(this,e)},l.Bc=function(e){return Ebn(this,e)},l.$b=function(){this.d==this.e.c?this.e.$b():Az(new ryt(this))},l._b=function(e){return Bue(this.d,e)},l.Ec=function(){return new jj(this)},l.Dc=function(){return this.Ec()},l.Fb=function(e){return this===e||Ti(this.d,e)},l.Hb=function(){return $i(this.d)},l.ec=function(){return this.e.ec()},l.gc=function(){return this.d.gc()},l.Ib=function(){return rc(this.d)},I(on,"AbstractMapBasedMultimap/AsMap",402);var gh=os(Sc,"Iterable");D(31,1,o3),l.Jc=function(e){Fa(this,e)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new gn(this,0)},l.Oc=function(){return new ln(null,this.Nc())},l.Fc=function(e){throw at(new hp("Add not supported on this collection"))},l.Gc=function(e){return Ma(this,e)},l.$b=function(){Hyt(this)},l.Hc=function(e){return Ky(this,e,!1)},l.Ic=function(e){return rO(this,e)},l.dc=function(){return this.gc()==0},l.Mc=function(e){return Ky(this,e,!0)},l.Pc=function(){return dyt(this)},l.Qc=function(e){return v_(this,e)},l.Ib=function(){return Hb(this)},I(xr,"AbstractCollection",31);var df=os(xr,"Set");D(dd,31,sl),l.Nc=function(){return new gn(this,1)},l.Fb=function(e){return Ale(this,e)},l.Hb=function(){return U4t(this)},I(xr,"AbstractSet",dd),D(2068,dd,sl),I(on,"Sets/ImprovedAbstractSet",2068),D(2069,2068,sl),l.$b=function(){this.Rc().$b()},l.Hc=function(e){return fle(this,e)},l.dc=function(){return this.Rc().dc()},l.Mc=function(e){var n;return this.Hc(e)&&Lt(e,44)?(n=u(e,44),this.Rc().ec().Mc(n.ld())):!1},l.gc=function(){return this.Rc().gc()},I(on,"Maps/EntrySet",2069),D(1127,2069,sl,jj),l.Hc=function(e){return m5t(this.a.d.vc(),e)},l.Kc=function(){return new ryt(this.a)},l.Rc=function(){return this.a},l.Mc=function(e){var n;return m5t(this.a.d.vc(),e)?(n=u(nf(u(e,44)),44),qdn(this.a.e,n.ld()),!0):!1},l.Nc=function(){return pI(this.a.d.vc().Nc(),new $j(this.a))},I(on,"AbstractMapBasedMultimap/AsMap/AsMapEntries",1127),D(1128,1,{},$j),l.Kb=function(e){return ise(this.a,u(e,44))},I(on,"AbstractMapBasedMultimap/AsMap/AsMapEntries/0methodref$wrapEntry$Type",1128),D(746,1,wa,ryt),l.Nb=function(e){Na(this,e)},l.Pb=function(){var e;return e=u(this.b.Pb(),44),this.a=u(e.md(),16),ise(this.c,e)},l.Ob=function(){return this.b.Ob()},l.Qb=function(){AE(!!this.a),this.b.Qb(),this.c.e.d-=this.a.gc(),this.a.$b(),this.a=null},I(on,"AbstractMapBasedMultimap/AsMap/AsMapIterator",746),D(542,2068,sl,v$),l.$b=function(){this.b.$b()},l.Hc=function(e){return this.b._b(e)},l.Jc=function(e){Hr(e),this.b.wc(new Uj(e))},l.dc=function(){return this.b.dc()},l.Kc=function(){return new GC(this.b.vc().Kc())},l.Mc=function(e){return this.b._b(e)?(this.b.Bc(e),!0):!1},l.gc=function(){return this.b.gc()},I(on,"Maps/KeySet",542),D(327,542,sl,W4),l.$b=function(){var e;Az((e=this.b.vc().Kc(),new _wt(this,e)))},l.Ic=function(e){return this.b.ec().Ic(e)},l.Fb=function(e){return this===e||Ti(this.b.ec(),e)},l.Hb=function(){return $i(this.b.ec())},l.Kc=function(){var e;return e=this.b.vc().Kc(),new _wt(this,e)},l.Mc=function(e){var n,r;return r=0,n=u(this.b.Bc(e),16),n&&(r=n.gc(),n.$b(),this.a.d-=r),r>0},l.Nc=function(){return this.b.ec().Nc()},I(on,"AbstractMapBasedMultimap/KeySet",327),D(747,1,wa,_wt),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.c.Ob()},l.Pb=function(){return this.a=u(this.c.Pb(),44),this.a.ld()},l.Qb=function(){var e;AE(!!this.a),e=u(this.a.md(),16),this.c.Qb(),this.b.a.d-=e.gc(),e.$b(),this.a=null},I(on,"AbstractMapBasedMultimap/KeySet/1",747),D(502,402,{85:1,133:1},cI),l.bc=function(){return this.Sc()},l.ec=function(){return this.Uc()},l.Sc=function(){return new FM(this.c,this.Wc())},l.Tc=function(){return this.Wc().Tc()},l.Uc=function(){var e;return e=this.b,e||(this.b=this.Sc())},l.Vc=function(){return this.Wc().Vc()},l.Wc=function(){return u(this.d,133)},I(on,"AbstractMapBasedMultimap/SortedAsMap",502),D(446,502,h8t,SS),l.bc=function(){return new mE(this.a,u(u(this.d,133),139))},l.Sc=function(){return new mE(this.a,u(u(this.d,133),139))},l.ec=function(){var e;return e=this.b,u(e||(this.b=new mE(this.a,u(u(this.d,133),139))),277)},l.Uc=function(){var e;return e=this.b,u(e||(this.b=new mE(this.a,u(u(this.d,133),139))),277)},l.Wc=function(){return u(u(this.d,133),139)},l.Xc=function(e){return u(u(this.d,133),139).Xc(e)},l.Yc=function(e){return u(u(this.d,133),139).Yc(e)},l.Zc=function(e,n){return new SS(this.a,u(u(this.d,133),139).Zc(e,n))},l.$c=function(e){return u(u(this.d,133),139).$c(e)},l._c=function(e){return u(u(this.d,133),139)._c(e)},l.ad=function(e,n){return new SS(this.a,u(u(this.d,133),139).ad(e,n))},I(on,"AbstractMapBasedMultimap/NavigableAsMap",446),D(501,327,ube,FM),l.Nc=function(){return this.b.ec().Nc()},I(on,"AbstractMapBasedMultimap/SortedKeySet",501),D(401,501,f8t,mE),I(on,"AbstractMapBasedMultimap/NavigableKeySet",401),D(551,31,o3,yq),l.Fc=function(e){var n,r;return Ll(this),r=this.d.dc(),n=this.d.Fc(e),n&&(++this.f.d,r&&fI(this)),n},l.Gc=function(e){var n,r,s;return e.dc()?!1:(s=(Ll(this),this.d.gc()),n=this.d.Gc(e),n&&(r=this.d.gc(),this.f.d+=r-s,s==0&&fI(this)),n)},l.$b=function(){var e;e=(Ll(this),this.d.gc()),e!=0&&(this.d.$b(),this.f.d-=e,Nz(this))},l.Hc=function(e){return Ll(this),this.d.Hc(e)},l.Ic=function(e){return Ll(this),this.d.Ic(e)},l.Fb=function(e){return e===this?!0:(Ll(this),Ti(this.d,e))},l.Hb=function(){return Ll(this),$i(this.d)},l.Kc=function(){return Ll(this),new $vt(this)},l.Mc=function(e){var n;return Ll(this),n=this.d.Mc(e),n&&(--this.f.d,Nz(this)),n},l.gc=function(){return wQt(this)},l.Nc=function(){return Ll(this),this.d.Nc()},l.Ib=function(){return Ll(this),rc(this.d)},I(on,"AbstractMapBasedMultimap/WrappedCollection",551);var Vh=os(xr,"List");D(744,551,{20:1,31:1,16:1,15:1},byt),l.jd=function(e){rw(this,e)},l.Nc=function(){return Ll(this),this.d.Nc()},l.bd=function(e,n){var r;Ll(this),r=this.d.dc(),u(this.d,15).bd(e,n),++this.a.d,r&&fI(this)},l.cd=function(e,n){var r,s,o;return n.dc()?!1:(o=(Ll(this),this.d.gc()),r=u(this.d,15).cd(e,n),r&&(s=this.d.gc(),this.a.d+=s-o,o==0&&fI(this)),r)},l.Xb=function(e){return Ll(this),u(this.d,15).Xb(e)},l.dd=function(e){return Ll(this),u(this.d,15).dd(e)},l.ed=function(){return Ll(this),new KQt(this)},l.fd=function(e){return Ll(this),new bne(this,e)},l.gd=function(e){var n;return Ll(this),n=u(this.d,15).gd(e),--this.a.d,Nz(this),n},l.hd=function(e,n){return Ll(this),u(this.d,15).hd(e,n)},l.kd=function(e,n){return Ll(this),aie(this.a,this.e,u(this.d,15).kd(e,n),this.b?this.b:this)},I(on,"AbstractMapBasedMultimap/WrappedList",744),D(1126,744,{20:1,31:1,16:1,15:1,59:1},FJt),I(on,"AbstractMapBasedMultimap/RandomAccessWrappedList",1126),D(628,1,wa,$vt),l.Nb=function(e){Na(this,e)},l.Ob=function(){return jE(this),this.b.Ob()},l.Pb=function(){return jE(this),this.b.Pb()},l.Qb=function(){yJt(this)},I(on,"AbstractMapBasedMultimap/WrappedCollection/WrappedIterator",628),D(745,628,P0,KQt,bne),l.Qb=function(){yJt(this)},l.Rb=function(e){var n;n=wQt(this.a)==0,(jE(this),u(this.b,128)).Rb(e),++this.a.a.d,n&&fI(this.a)},l.Sb=function(){return(jE(this),u(this.b,128)).Sb()},l.Tb=function(){return(jE(this),u(this.b,128)).Tb()},l.Ub=function(){return(jE(this),u(this.b,128)).Ub()},l.Vb=function(){return(jE(this),u(this.b,128)).Vb()},l.Wb=function(e){(jE(this),u(this.b,128)).Wb(e)},I(on,"AbstractMapBasedMultimap/WrappedList/WrappedListIterator",745),D(743,551,ube,svt),l.Nc=function(){return Ll(this),this.d.Nc()},I(on,"AbstractMapBasedMultimap/WrappedSortedSet",743),D(1125,743,f8t,qQt),I(on,"AbstractMapBasedMultimap/WrappedNavigableSet",1125),D(1124,551,sl,rZt),l.Nc=function(){return Ll(this),this.d.Nc()},I(on,"AbstractMapBasedMultimap/WrappedSet",1124),D(1133,1,{},F),l.Kb=function(e){return Jdn(u(e,44))},I(on,"AbstractMapBasedMultimap/lambda$1$Type",1133),D(1132,1,{},mnt),l.Kb=function(e){return new bm(this.a,e)},I(on,"AbstractMapBasedMultimap/lambda$2$Type",1132);var Sw=os(xr,"Map/Entry");D(358,1,Fct),l.Fb=function(e){var n;return Lt(e,44)?(n=u(e,44),Ud(this.ld(),n.ld())&&Ud(this.md(),n.md())):!1},l.Hb=function(){var e,n;return e=this.ld(),n=this.md(),(e==null?0:$i(e))^(n==null?0:$i(n))},l.nd=function(e){throw at(new Vr)},l.Ib=function(){return this.ld()+"="+this.md()},I(on,lbe,358),D(2086,31,o3),l.$b=function(){this.od().$b()},l.Hc=function(e){var n;return Lt(e,44)?(n=u(e,44),v1n(this.od(),n.ld(),n.md())):!1},l.Mc=function(e){var n;return Lt(e,44)?(n=u(e,44),zre(this.od(),n.ld(),n.md())):!1},l.gc=function(){return this.od().d},I(on,"Multimaps/Entries",2086),D(749,2086,o3,qj),l.Kc=function(){return this.a.kc()},l.od=function(){return this.a},l.Nc=function(){return this.a.lc()},I(on,"AbstractMultimap/Entries",749),D(750,749,sl,iwt),l.Nc=function(){return this.a.lc()},l.Fb=function(e){return l6t(this,e)},l.Hb=function(){return Joe(this)},I(on,"AbstractMultimap/EntrySet",750),D(751,31,o3,bb),l.$b=function(){this.a.$b()},l.Hc=function(e){return wbn(this.a,e)},l.Kc=function(){return this.a.nc()},l.gc=function(){return this.a.d},l.Nc=function(){return this.a.oc()},I(on,"AbstractMultimap/Values",751),D(2087,31,{849:1,20:1,31:1,16:1}),l.Jc=function(e){Hr(e),X4(this).Jc(new Tnt(e))},l.Nc=function(){var e;return e=X4(this).Nc(),Not(e,new wt,64|e.yd()&1296,this.a.d)},l.Fc=function(e){return fwt(),!0},l.Gc=function(e){return Hr(this),Hr(e),Lt(e,552)?k1n(u(e,849)):!e.dc()&&Wst(this,e.Kc())},l.Hc=function(e){var n;return n=u(Gy(Q6(this.a),e),16),(n?n.gc():0)>0},l.Fb=function(e){return Vxn(this,e)},l.Hb=function(){return $i(X4(this))},l.dc=function(){return X4(this).dc()},l.Mc=function(e){return C1e(this,e,1)>0},l.Ib=function(){return rc(X4(this))},I(on,"AbstractMultiset",2087),D(2089,2068,sl),l.$b=function(){qq(this.a.a)},l.Hc=function(e){var n,r;return Lt(e,503)?(r=u(e,425),u(r.a.md(),16).gc()<=0?!1:(n=gre(this.a,r.a.ld()),n==u(r.a.md(),16).gc())):!1},l.Mc=function(e){var n,r,s,o;return Lt(e,503)&&(r=u(e,425),n=r.a.ld(),s=u(r.a.md(),16).gc(),s!=0)?(o=this.a,N5n(o,n,s)):!1},I(on,"Multisets/EntrySet",2089),D(1139,2089,sl,vnt),l.Kc=function(){return new uWt(nee(Q6(this.a.a)).Kc())},l.gc=function(){return Q6(this.a.a).gc()},I(on,"AbstractMultiset/EntrySet",1139),D(627,742,pw),l.hc=function(){return this.pd()},l.jc=function(){return this.qd()},l.cc=function(e){return this.rd(e)},l.fc=function(e){return this.sd(e)},l.Zb=function(){var e;return e=this.f,e||(this.f=this.ac())},l.qd=function(){return mn(),mn(),FU},l.Fb=function(e){return Cat(this,e)},l.rd=function(e){return u(Ai(this,e),21)},l.sd=function(e){return u(hO(this,e),21)},l.mc=function(e){return mn(),new dE(u(e,21))},l.pc=function(e,n){return new rZt(this,e,u(n,21))},I(on,"AbstractSetMultimap",627),D(1723,627,pw),l.hc=function(){return new pp(this.b)},l.pd=function(){return new pp(this.b)},l.jc=function(){return Byt(new pp(this.b))},l.qd=function(){return Byt(new pp(this.b))},l.cc=function(e){return u(u(Ai(this,e),21),87)},l.rd=function(e){return u(u(Ai(this,e),21),87)},l.fc=function(e){return u(u(hO(this,e),21),87)},l.sd=function(e){return u(u(hO(this,e),21),87)},l.mc=function(e){return Lt(e,277)?Byt(u(e,277)):(mn(),new Vmt(u(e,87)))},l.Zb=function(){var e;return e=this.f,e||(this.f=Lt(this.c,139)?new SS(this,u(this.c,139)):Lt(this.c,133)?new cI(this,u(this.c,133)):new vE(this,this.c))},l.pc=function(e,n){return Lt(n,277)?new qQt(this,e,u(n,277)):new svt(this,e,u(n,87))},I(on,"AbstractSortedSetMultimap",1723),D(1724,1723,pw),l.Zb=function(){var e;return e=this.f,u(u(e||(this.f=Lt(this.c,139)?new SS(this,u(this.c,139)):Lt(this.c,133)?new cI(this,u(this.c,133)):new vE(this,this.c)),133),139)},l.ec=function(){var e;return e=this.i,u(u(e||(this.i=Lt(this.c,139)?new mE(this,u(this.c,139)):Lt(this.c,133)?new FM(this,u(this.c,133)):new W4(this,this.c)),87),277)},l.bc=function(){return Lt(this.c,139)?new mE(this,u(this.c,139)):Lt(this.c,133)?new FM(this,u(this.c,133)):new W4(this,this.c)},I(on,"AbstractSortedKeySortedSetMultimap",1724),D(2109,1,{2046:1}),l.Fb=function(e){return pyn(this,e)},l.Hb=function(){var e;return U4t((e=this.g,e||(this.g=new xM(this))))},l.Ib=function(){var e;return hfe((e=this.f,e||(this.f=new $mt(this))))},I(on,"AbstractTable",2109),D(679,dd,sl,xM),l.$b=function(){xWt()},l.Hc=function(e){var n,r;return Lt(e,478)?(n=u(e,697),r=u(Gy(See(this.a),Cb(n.c.e,n.b)),85),!!r&&m5t(r.vc(),new bm(Cb(n.c.c,n.a),ik(n.c,n.b,n.a)))):!1},l.Kc=function(){return vhn(this.a)},l.Mc=function(e){var n,r;return Lt(e,478)?(n=u(e,697),r=u(Gy(See(this.a),Cb(n.c.e,n.b)),85),!!r&&Xbn(r.vc(),new bm(Cb(n.c.c,n.a),ik(n.c,n.b,n.a)))):!1},l.gc=function(){return Lte(this.a)},l.Nc=function(){return C1n(this.a)},I(on,"AbstractTable/CellSet",679),D(2025,31,o3,xnt),l.$b=function(){xWt()},l.Hc=function(e){return o3n(this.a,e)},l.Kc=function(){return yhn(this.a)},l.gc=function(){return Lte(this.a)},l.Nc=function(){return $re(this.a)},I(on,"AbstractTable/Values",2025),D(1697,1696,pw),I(on,"ArrayListMultimapGwtSerializationDependencies",1697),D(520,1697,pw,irt,s3t),l.hc=function(){return new wu(this.a)},l.a=0,I(on,"ArrayListMultimap",520),D(678,2109,{678:1,2046:1,3:1},R1e),I(on,"ArrayTable",678),D(2021,399,U7,xJt),l.Xb=function(e){return new X4t(this.a,e)},I(on,"ArrayTable/1",2021),D(2022,1,{},bnt),l.td=function(e){return new X4t(this.a,e)},I(on,"ArrayTable/1methodref$getCell$Type",2022),D(2110,1,{697:1}),l.Fb=function(e){var n;return e===this?!0:Lt(e,478)?(n=u(e,697),Ud(Cb(this.c.e,this.b),Cb(n.c.e,n.b))&&Ud(Cb(this.c.c,this.a),Cb(n.c.c,n.a))&&Ud(ik(this.c,this.b,this.a),ik(n.c,n.b,n.a))):!1},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[Cb(this.c.e,this.b),Cb(this.c.c,this.a),ik(this.c,this.b,this.a)]))},l.Ib=function(){return"("+Cb(this.c.e,this.b)+","+Cb(this.c.c,this.a)+")="+ik(this.c,this.b,this.a)},I(on,"Tables/AbstractCell",2110),D(478,2110,{478:1,697:1},X4t),l.a=0,l.b=0,l.d=0,I(on,"ArrayTable/2",478),D(2024,1,{},wnt),l.td=function(e){return hae(this.a,e)},I(on,"ArrayTable/2methodref$getValue$Type",2024),D(2023,399,U7,kJt),l.Xb=function(e){return hae(this.a,e)},I(on,"ArrayTable/3",2023),D(2077,2065,sv),l.$b=function(){Az(this.kc())},l.vc=function(){return new Vj(this)},l.lc=function(){return new ane(this.kc(),this.gc())},I(on,"Maps/IteratorBasedAbstractMap",2077),D(842,2077,sv),l.$b=function(){throw at(new Vr)},l._b=function(e){return $Wt(this.c,e)},l.kc=function(){return new EJt(this,this.c.b.c.gc())},l.lc=function(){return _it(this.c.b.c.gc(),16,new zj(this))},l.xc=function(e){var n;return n=u(_S(this.c,e),17),n?this.vd(n.a):null},l.dc=function(){return this.c.b.c.dc()},l.ec=function(){return Pit(this.c)},l.zc=function(e,n){var r;if(r=u(_S(this.c,e),17),!r)throw at(new zn(this.ud()+" "+e+" not in "+Pit(this.c)));return this.wd(r.a,n)},l.Bc=function(e){throw at(new Vr)},l.gc=function(){return this.c.b.c.gc()},I(on,"ArrayTable/ArrayMap",842),D(2020,1,{},zj),l.td=function(e){return Aee(this.a,e)},I(on,"ArrayTable/ArrayMap/0methodref$getEntry$Type",2020),D(2018,358,Fct,fYt),l.ld=function(){return Osn(this.a,this.b)},l.md=function(){return this.a.vd(this.b)},l.nd=function(e){return this.a.wd(this.b,e)},l.b=0,I(on,"ArrayTable/ArrayMap/1",2018),D(2019,399,U7,EJt),l.Xb=function(e){return Aee(this.a,e)},I(on,"ArrayTable/ArrayMap/2",2019),D(2017,842,sv,pee),l.ud=function(){return"Column"},l.vd=function(e){return ik(this.b,this.a,e)},l.wd=function(e,n){return Rce(this.b,this.a,e,n)},l.a=0,I(on,"ArrayTable/Row",2017),D(843,842,sv,$mt),l.vd=function(e){return new pee(this.a,e)},l.zc=function(e,n){return u(n,85),trn()},l.wd=function(e,n){return u(n,85),ern()},l.ud=function(){return"Row"},I(on,"ArrayTable/RowMap",843),D(1157,1,fh,dYt),l.Ad=function(e){return(this.a.yd()&-262&e)!=0},l.yd=function(){return this.a.yd()&-262},l.zd=function(){return this.a.zd()},l.Nb=function(e){this.a.Nb(new pYt(e,this.b))},l.Bd=function(e){return this.a.Bd(new gYt(e,this.b))},I(on,"CollectSpliterators/1",1157),D(1158,1,ir,gYt),l.Cd=function(e){this.a.Cd(this.b.Kb(e))},I(on,"CollectSpliterators/1/lambda$0$Type",1158),D(1159,1,ir,pYt),l.Cd=function(e){this.a.Cd(this.b.Kb(e))},I(on,"CollectSpliterators/1/lambda$1$Type",1159),D(1154,1,fh,RZt),l.Ad=function(e){return((16464|this.b)&e)!=0},l.yd=function(){return 16464|this.b},l.zd=function(){return this.a.zd()},l.Nb=function(e){this.a.Qe(new wYt(e,this.c))},l.Bd=function(e){return this.a.Re(new bYt(e,this.c))},l.b=0,I(on,"CollectSpliterators/1WithCharacteristics",1154),D(1155,1,nN,bYt),l.Dd=function(e){this.a.Cd(this.b.td(e))},I(on,"CollectSpliterators/1WithCharacteristics/lambda$0$Type",1155),D(1156,1,nN,wYt),l.Dd=function(e){this.a.Cd(this.b.td(e))},I(on,"CollectSpliterators/1WithCharacteristics/lambda$1$Type",1156),D(1150,1,fh),l.Ad=function(e){return(this.a&e)!=0},l.yd=function(){return this.a},l.zd=function(){return this.e&&(this.b=Amt(this.b,this.e.zd())),Amt(this.b,0)},l.Nb=function(e){this.e&&(this.e.Nb(e),this.e=null),this.c.Nb(new mYt(this,e)),this.b=0},l.Bd=function(e){for(;;){if(this.e&&this.e.Bd(e))return bS(this.b,rN)&&(this.b=sf(this.b,1)),!0;if(this.e=null,!this.c.Bd(new knt(this)))return!1}},l.a=0,l.b=0,I(on,"CollectSpliterators/FlatMapSpliterator",1150),D(1152,1,ir,knt),l.Cd=function(e){Man(this.a,e)},I(on,"CollectSpliterators/FlatMapSpliterator/lambda$0$Type",1152),D(1153,1,ir,mYt),l.Cd=function(e){nhn(this.a,this.b,e)},I(on,"CollectSpliterators/FlatMapSpliterator/lambda$1$Type",1153),D(1151,1150,fh,iie),I(on,"CollectSpliterators/FlatMapSpliteratorOfObject",1151),D(253,1,Bct),l.Fd=function(e){return this.Ed(u(e,253))},l.Ed=function(e){var n;return e==(Wnt(),kht)?1:e==(Knt(),xht)?-1:(n=(Ez(),JI(this.a,e.a)),n!=0?n:Lt(this,526)==Lt(e,526)?0:Lt(this,526)?1:-1)},l.Id=function(){return this.a},l.Fb=function(e){return bxt(this,e)},I(on,"Cut",253),D(1823,253,Bct,nWt),l.Ed=function(e){return e==this?0:1},l.Gd=function(e){throw at(new j2t)},l.Hd=function(e){e.a+="+∞)"},l.Id=function(){throw at(new Ro(fbe))},l.Hb=function(){return pg(),ext(this)},l.Jd=function(e){return!1},l.Ib=function(){return"+∞"};var xht;I(on,"Cut/AboveAll",1823),D(526,253,{253:1,526:1,3:1,34:1},LJt),l.Gd=function(e){tu((e.a+="(",e),this.a)},l.Hd=function(e){Db(tu(e,this.a),93)},l.Hb=function(){return~$i(this.a)},l.Jd=function(e){return Ez(),JI(this.a,e)<0},l.Ib=function(){return"/"+this.a+"\\"},I(on,"Cut/AboveValue",526),D(1822,253,Bct,eWt),l.Ed=function(e){return e==this?0:-1},l.Gd=function(e){e.a+="(-∞"},l.Hd=function(e){throw at(new j2t)},l.Id=function(){throw at(new Ro(fbe))},l.Hb=function(){return pg(),ext(this)},l.Jd=function(e){return!0},l.Ib=function(){return"-∞"};var kht;I(on,"Cut/BelowAll",1822),D(1824,253,Bct,DJt),l.Gd=function(e){tu((e.a+="[",e),this.a)},l.Hd=function(e){Db(tu(e,this.a),41)},l.Hb=function(){return $i(this.a)},l.Jd=function(e){return Ez(),JI(this.a,e)<=0},l.Ib=function(){return"\\"+this.a+"/"},I(on,"Cut/BelowValue",1824),D(547,1,F0),l.Jc=function(e){Fa(this,e)},l.Ib=function(){return w2n(u(Qz(this,"use Optional.orNull() instead of Optional.or(null)"),20).Kc())},I(on,"FluentIterable",547),D(442,547,F0,vS),l.Kc=function(){return new rr(sr(this.a.Kc(),new z))},I(on,"FluentIterable/2",442),D(1059,547,F0,RQt),l.Kc=function(){return A0(this)},I(on,"FluentIterable/3",1059),D(724,399,U7,zmt),l.Xb=function(e){return this.a[e].Kc()},I(on,"FluentIterable/3/1",724),D(2070,1,{}),l.Ib=function(){return rc(this.Kd().b)},I(on,"ForwardingObject",2070),D(2071,2070,dbe),l.Kd=function(){return this.Ld()},l.Jc=function(e){Fa(this,e)},l.Lc=function(){return this.Oc()},l.Nc=function(){return new gn(this,0)},l.Oc=function(){return new ln(null,this.Nc())},l.Fc=function(e){return this.Ld(),qWt()},l.Gc=function(e){return this.Ld(),HWt()},l.$b=function(){this.Ld(),VWt()},l.Hc=function(e){return this.Ld().Hc(e)},l.Ic=function(e){return this.Ld().Ic(e)},l.dc=function(){return this.Ld().b.dc()},l.Kc=function(){return this.Ld().Kc()},l.Mc=function(e){return this.Ld(),UWt()},l.gc=function(){return this.Ld().b.gc()},l.Pc=function(){return this.Ld().Pc()},l.Qc=function(e){return this.Ld().Qc(e)},I(on,"ForwardingCollection",2071),D(2078,31,d8t),l.Kc=function(){return this.Od()},l.Fc=function(e){throw at(new Vr)},l.Gc=function(e){throw at(new Vr)},l.Md=function(){var e;return e=this.c,e||(this.c=this.Nd())},l.$b=function(){throw at(new Vr)},l.Hc=function(e){return e!=null&&Ky(this,e,!1)},l.Nd=function(){switch(this.gc()){case 0:return Dm(),Dm(),Eht;case 1:return Dm(),new Ait(Hr(this.Od().Pb()));default:return new yyt(this,this.Pc())}},l.Mc=function(e){throw at(new Vr)},I(on,"ImmutableCollection",2078),D(727,2078,d8t,B2t),l.Kc=function(){return sk(this.a.Kc())},l.Hc=function(e){return e!=null&&this.a.Hc(e)},l.Ic=function(e){return this.a.Ic(e)},l.dc=function(){return this.a.dc()},l.Od=function(){return sk(this.a.Kc())},l.gc=function(){return this.a.gc()},l.Pc=function(){return this.a.Pc()},l.Qc=function(e){return this.a.Qc(e)},l.Ib=function(){return rc(this.a)},I(on,"ForwardingImmutableCollection",727),D(306,2078,G7),l.Kc=function(){return this.Od()},l.ed=function(){return this.Pd(0)},l.fd=function(e){return this.Pd(e)},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.kd=function(e,n){return this.Qd(e,n)},l.bd=function(e,n){throw at(new Vr)},l.cd=function(e,n){throw at(new Vr)},l.Md=function(){return this},l.Fb=function(e){return Ixn(this,e)},l.Hb=function(){return Spn(this)},l.dd=function(e){return e==null?-1:Ymn(this,e)},l.Od=function(){return this.Pd(0)},l.Pd=function(e){return ait(this,e)},l.gd=function(e){throw at(new Vr)},l.hd=function(e,n){throw at(new Vr)},l.Qd=function(e,n){var r;return uH((r=new AYt(this),new xp(r,e,n)))};var Eht;I(on,"ImmutableList",306),D(2105,306,G7),l.Kc=function(){return sk(this.Rd().Kc())},l.kd=function(e,n){return uH(this.Rd().kd(e,n))},l.Hc=function(e){return e!=null&&this.Rd().Hc(e)},l.Ic=function(e){return this.Rd().Ic(e)},l.Fb=function(e){return Ti(this.Rd(),e)},l.Xb=function(e){return Cb(this,e)},l.Hb=function(){return $i(this.Rd())},l.dd=function(e){return this.Rd().dd(e)},l.dc=function(){return this.Rd().dc()},l.Od=function(){return sk(this.Rd().Kc())},l.gc=function(){return this.Rd().gc()},l.Qd=function(e,n){return uH(this.Rd().kd(e,n))},l.Pc=function(){return this.Rd().Qc(Vt(aa,Ln,1,this.Rd().gc(),5,1))},l.Qc=function(e){return this.Rd().Qc(e)},l.Ib=function(){return rc(this.Rd())},I(on,"ForwardingImmutableList",2105),D(729,1,K7),l.vc=function(){return K2(this)},l.wc=function(e){e_(this,e)},l.ec=function(){return Pit(this)},l.yc=function(e,n,r){return Vat(this,e,n,r)},l.Cc=function(){return this.Vd()},l.$b=function(){throw at(new Vr)},l._b=function(e){return this.xc(e)!=null},l.uc=function(e){return this.Vd().Hc(e)},l.Td=function(){return new lKt(this)},l.Ud=function(){return new hKt(this)},l.Fb=function(e){return mbn(this,e)},l.Hb=function(){return K2(this).Hb()},l.dc=function(){return this.gc()==0},l.zc=function(e,n){return Znn()},l.Bc=function(e){throw at(new Vr)},l.Ib=function(){return s4n(this)},l.Vd=function(){return this.e?this.e:this.e=this.Ud()},l.c=null,l.d=null,l.e=null;var Rve;I(on,"ImmutableMap",729),D(730,729,K7),l._b=function(e){return $Wt(this,e)},l.uc=function(e){return NYt(this.b,e)},l.Sd=function(){return Nue(new ynt(this))},l.Td=function(){return Nue(Xee(this.b))},l.Ud=function(){return Vd(),new B2t(Yee(this.b))},l.Fb=function(e){return PYt(this.b,e)},l.xc=function(e){return _S(this,e)},l.Hb=function(){return $i(this.b.c)},l.dc=function(){return this.b.c.dc()},l.gc=function(){return this.b.c.gc()},l.Ib=function(){return rc(this.b.c)},I(on,"ForwardingImmutableMap",730),D(2072,2071,Rct),l.Kd=function(){return this.Wd()},l.Ld=function(){return this.Wd()},l.Nc=function(){return new gn(this,1)},l.Fb=function(e){return e===this||this.Wd().Fb(e)},l.Hb=function(){return this.Wd().Hb()},I(on,"ForwardingSet",2072),D(1085,2072,Rct,ynt),l.Kd=function(){return BE(this.a.b)},l.Ld=function(){return BE(this.a.b)},l.Hc=function(e){if(Lt(e,44)&&u(e,44).ld()==null)return!1;try{return OYt(BE(this.a.b),e)}catch(n){if(n=es(n),Lt(n,212))return!1;throw at(n)}},l.Wd=function(){return BE(this.a.b)},l.Qc=function(e){var n;return n=Nne(BE(this.a.b),e),BE(this.a.b).b.gc()=0?"+":"")+(r/60|0),n=nz(b.Math.abs(r)%60),(Efe(),rye)[this.q.getDay()]+" "+iye[this.q.getMonth()]+" "+nz(this.q.getDate())+" "+nz(this.q.getHours())+":"+nz(this.q.getMinutes())+":"+nz(this.q.getSeconds())+" GMT"+e+n+" "+this.q.getFullYear()};var OU=I(xr,"Date",206);D(2015,206,kbe,Ghe),l.a=!1,l.b=0,l.c=0,l.d=0,l.e=0,l.f=0,l.g=!1,l.i=0,l.j=0,l.k=0,l.n=0,l.o=0,l.p=0,I("com.google.gwt.i18n.shared.impl","DateRecord",2015),D(2064,1,{}),l.pe=function(){return null},l.qe=function(){return null},l.re=function(){return null},l.se=function(){return null},l.te=function(){return null},I(Ck,"JSONValue",2064),D(221,2064,{221:1},cp,Xj),l.Fb=function(e){return Lt(e,221)?o3t(this.a,u(e,221).a):!1},l.oe=function(){return Tnn},l.Hb=function(){return Xyt(this.a)},l.pe=function(){return this},l.Ib=function(){var e,n,r;for(r=new eh("["),n=0,e=this.a.length;n0&&(r.a+=","),tu(r,$y(this,n));return r.a+="]",r.a},I(Ck,"JSONArray",221),D(492,2064,{492:1},xc),l.oe=function(){return Cnn},l.qe=function(){return this},l.Ib=function(){return Pn(),""+this.a},l.a=!1;var Uve,Gve;I(Ck,"JSONBoolean",492),D(997,63,Pg,lWt),I(Ck,"JSONException",997),D(1036,2064,{},K),l.oe=function(){return Snn},l.Ib=function(){return Vu};var Kve;I(Ck,"JSONNull",1036),D(263,2064,{263:1},cE),l.Fb=function(e){return Lt(e,263)?this.a==u(e,263).a:!1},l.oe=function(){return knn},l.Hb=function(){return F6(this.a)},l.re=function(){return this},l.Ib=function(){return this.a+""},l.a=0,I(Ck,"JSONNumber",263),D(190,2064,{190:1},_6,uE),l.Fb=function(e){return Lt(e,190)?o3t(this.a,u(e,190).a):!1},l.oe=function(){return Enn},l.Hb=function(){return Xyt(this.a)},l.se=function(){return this},l.Ib=function(){var e,n,r,s,o,h,d;for(d=new eh("{"),e=!0,h=cat(this,Vt(Pe,ue,2,0,6,1)),r=h,s=0,o=r.length;s=0?":"+this.c:"")+")"},l.c=0;var m9t=I(Sc,"StackTraceElement",319);Bve={3:1,483:1,34:1,2:1};var Pe=I(Sc,g8t,2);D(111,427,{483:1},dp,YC,ef),I(Sc,"StringBuffer",111),D(104,427,{483:1},yb,I4,eh),I(Sc,"StringBuilder",104),D(702,77,out,dwt),I(Sc,"StringIndexOutOfBoundsException",702),D(2145,1,{});var Qve;D(48,63,{3:1,103:1,63:1,82:1,48:1},Vr,hp),I(Sc,"UnsupportedOperationException",48),D(247,242,{3:1,34:1,242:1,247:1},gO,Twt),l.Fd=function(e){return wge(this,u(e,247))},l.ue=function(){return Jy(Uge(this))},l.Fb=function(e){var n;return this===e?!0:Lt(e,247)?(n=u(e,247),this.e==n.e&&wge(this,n)==0):!1},l.Hb=function(){var e;return this.b!=0?this.b:this.a<54?(e=Pc(this.f),this.b=qr(sa(e,-1)),this.b=33*this.b+qr(sa(_m(e,32),-1)),this.b=17*this.b+Ys(this.e),this.b):(this.b=17*Lue(this.c)+Ys(this.e),this.b)},l.Ib=function(){return Uge(this)},l.a=0,l.b=0,l.d=0,l.e=0,l.f=0;var Jve,_w,v9t,y9t,x9t,k9t,E9t,T9t,Mht=I("java.math","BigDecimal",247);D(92,242,{3:1,34:1,242:1,92:1},kg,xre,Y2,Dle,Sb),l.Fd=function(e){return Sle(this,u(e,92))},l.ue=function(){return Jy(Oct(this,0))},l.Fb=function(e){return R5t(this,e)},l.Hb=function(){return Lue(this)},l.Ib=function(){return Oct(this,0)},l.b=-2,l.c=0,l.d=0,l.e=0;var Zve,NU,tye,Iht,PU,yA,N5=I("java.math","BigInteger",92),eye,nye,Bk,xA;D(497,2065,sv),l.$b=function(){dl(this)},l._b=function(e){return Tu(this,e)},l.uc=function(e){return lue(this,e,this.i)||lue(this,e,this.f)},l.vc=function(){return new mr(this)},l.xc=function(e){return tr(this,e)},l.zc=function(e,n){return hi(this,e,n)},l.Bc=function(e){return rk(this,e)},l.gc=function(){return QC(this)},l.g=0,I(xr,"AbstractHashMap",497),D(267,dd,sl,mr),l.$b=function(){this.a.$b()},l.Hc=function(e){return Qre(this,e)},l.Kc=function(){return new sw(this.a)},l.Mc=function(e){var n;return Qre(this,e)?(n=u(e,44).ld(),this.a.Bc(n),!0):!1},l.gc=function(){return this.a.gc()},I(xr,"AbstractHashMap/EntrySet",267),D(268,1,wa,sw),l.Nb=function(e){Na(this,e)},l.Pb=function(){return Um(this)},l.Ob=function(){return this.b},l.Qb=function(){Sae(this)},l.b=!1,l.d=0,I(xr,"AbstractHashMap/EntrySetIterator",268),D(426,1,wa,gr),l.Nb=function(e){Na(this,e)},l.Ob=function(){return frt(this)},l.Pb=function(){return Uyt(this)},l.Qb=function(){Kl(this)},l.b=0,l.c=-1,I(xr,"AbstractList/IteratorImpl",426),D(98,426,P0,La),l.Qb=function(){Kl(this)},l.Rb=function(e){Ly(this,e)},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Ub=function(){return ur(this.b>0),this.a.Xb(this.c=--this.b)},l.Vb=function(){return this.b-1},l.Wb=function(e){_y(this.c!=-1),this.a.hd(this.c,e)},I(xr,"AbstractList/ListIteratorImpl",98),D(244,56,W7,xp),l.bd=function(e,n){Fy(e,this.b),this.c.bd(this.a+e,n),++this.b},l.Xb=function(e){return vn(e,this.b),this.c.Xb(this.a+e)},l.gd=function(e){var n;return vn(e,this.b),n=this.c.gd(this.a+e),--this.b,n},l.hd=function(e,n){return vn(e,this.b),this.c.hd(this.a+e,n)},l.gc=function(){return this.b},l.a=0,l.b=0,I(xr,"AbstractList/SubList",244),D(266,dd,sl,cr),l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a._b(e)},l.Kc=function(){var e;return e=this.a.vc().Kc(),new vi(e)},l.Mc=function(e){return this.a._b(e)?(this.a.Bc(e),!0):!1},l.gc=function(){return this.a.gc()},I(xr,"AbstractMap/1",266),D(541,1,wa,vi),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var e;return e=u(this.a.Pb(),44),e.ld()},l.Qb=function(){this.a.Qb()},I(xr,"AbstractMap/1/1",541),D(231,31,o3,si),l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a.uc(e)},l.Kc=function(){var e;return e=this.a.vc().Kc(),new Qi(e)},l.gc=function(){return this.a.gc()},I(xr,"AbstractMap/2",231),D(300,1,wa,Qi),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.a.Ob()},l.Pb=function(){var e;return e=u(this.a.Pb(),44),e.md()},l.Qb=function(){this.a.Qb()},I(xr,"AbstractMap/2/1",300),D(493,1,{493:1,44:1}),l.Fb=function(e){var n;return Lt(e,44)?(n=u(e,44),Nc(this.d,n.ld())&&Nc(this.e,n.md())):!1},l.ld=function(){return this.d},l.md=function(){return this.e},l.Hb=function(){return V4(this.d)^V4(this.e)},l.nd=function(e){return fvt(this,e)},l.Ib=function(){return this.d+"="+this.e},I(xr,"AbstractMap/AbstractEntry",493),D(397,493,{493:1,397:1,44:1},I$),I(xr,"AbstractMap/SimpleEntry",397),D(2082,1,lut),l.Fb=function(e){var n;return Lt(e,44)?(n=u(e,44),Nc(this.ld(),n.ld())&&Nc(this.md(),n.md())):!1},l.Hb=function(){return V4(this.ld())^V4(this.md())},l.Ib=function(){return this.ld()+"="+this.md()},I(xr,lbe,2082),D(2090,2065,h8t),l.Xc=function(e){return srt(this.Ee(e))},l.tc=function(e){return rse(this,e)},l._b=function(e){return dvt(this,e)},l.vc=function(){return new Es(this)},l.Tc=function(){return wee(this.Ge())},l.Yc=function(e){return srt(this.He(e))},l.xc=function(e){var n;return n=e,Ko(this.Fe(n))},l.$c=function(e){return srt(this.Ie(e))},l.ec=function(){return new ks(this)},l.Vc=function(){return wee(this.Je())},l._c=function(e){return srt(this.Ke(e))},I(xr,"AbstractNavigableMap",2090),D(629,dd,sl,Es),l.Hc=function(e){return Lt(e,44)&&rse(this.b,u(e,44))},l.Kc=function(){return this.b.De()},l.Mc=function(e){var n;return Lt(e,44)?(n=u(e,44),this.b.Le(n)):!1},l.gc=function(){return this.b.gc()},I(xr,"AbstractNavigableMap/EntrySet",629),D(1146,dd,f8t,ks),l.Nc=function(){return new D$(this)},l.$b=function(){this.a.$b()},l.Hc=function(e){return dvt(this.a,e)},l.Kc=function(){var e;return e=this.a.vc().b.De(),new as(e)},l.Mc=function(e){return dvt(this.a,e)?(this.a.Bc(e),!0):!1},l.gc=function(){return this.a.gc()},I(xr,"AbstractNavigableMap/NavigableKeySet",1146),D(1147,1,wa,as),l.Nb=function(e){Na(this,e)},l.Ob=function(){return frt(this.a.a)},l.Pb=function(){var e;return e=$Jt(this.a),e.ld()},l.Qb=function(){GZt(this.a)},I(xr,"AbstractNavigableMap/NavigableKeySet/1",1147),D(2103,31,o3),l.Fc=function(e){return V6(D7(this,e),X7),!0},l.Gc=function(e){return Wn(e),wI(e!=this,"Can't add a queue to itself"),Ma(this,e)},l.$b=function(){for(;Yst(this)!=null;);},I(xr,"AbstractQueue",2103),D(310,31,{4:1,20:1,31:1,16:1},K4,Gre),l.Fc=function(e){return w3t(this,e),!0},l.$b=function(){E3t(this)},l.Hc=function(e){return Ice(new $S(this),e)},l.dc=function(){return WC(this)},l.Kc=function(){return new $S(this)},l.Mc=function(e){return ofn(new $S(this),e)},l.gc=function(){return this.c-this.b&this.a.length-1},l.Nc=function(){return new gn(this,272)},l.Qc=function(e){var n;return n=this.c-this.b&this.a.length-1,e.lengthn&&ls(e,n,null),e},l.b=0,l.c=0,I(xr,"ArrayDeque",310),D(458,1,wa,$S),l.Nb=function(e){Na(this,e)},l.Ob=function(){return this.a!=this.b},l.Pb=function(){return cH(this)},l.Qb=function(){Aoe(this)},l.a=0,l.b=0,l.c=-1,I(xr,"ArrayDeque/IteratorImpl",458),D(13,56,Cbe,fe,wu,fl),l.bd=function(e,n){Sm(this,e,n)},l.Fc=function(e){return ge(this,e)},l.cd=function(e,n){return l5t(this,e,n)},l.Gc=function(e){return Hs(this,e)},l.$b=function(){wy(this.c,0)},l.Hc=function(e){return Xo(this,e,0)!=-1},l.Jc=function(e){Cu(this,e)},l.Xb=function(e){return Oe(this,e)},l.dd=function(e){return Xo(this,e,0)},l.dc=function(){return this.c.length==0},l.Kc=function(){return new G(this)},l.gd=function(e){return Ep(this,e)},l.Mc=function(e){return zu(this,e)},l.ce=function(e,n){pre(this,e,n)},l.hd=function(e,n){return Mh(this,e,n)},l.gc=function(){return this.c.length},l.jd=function(e){Ds(this,e)},l.Pc=function(){return Tz(this.c)},l.Qc=function(e){return ld(this,e)};var XSn=I(xr,"ArrayList",13);D(7,1,wa,G),l.Nb=function(e){Na(this,e)},l.Ob=function(){return lc(this)},l.Pb=function(){return et(this)},l.Qb=function(){PS(this)},l.a=0,l.b=-1,I(xr,"ArrayList/1",7),D(2112,b.Function,{},It),l.Me=function(e,n){return Bi(e,n)},D(151,56,Sbe,hl),l.Hc=function(e){return Loe(this,e)!=-1},l.Jc=function(e){var n,r,s,o;for(Wn(e),r=this.a,s=0,o=r.length;s0)throw at(new zn(k8t+e+" greater than "+this.e));return this.f.Te()?Rne(this.c,this.b,this.a,e,n):bre(this.c,e,n)},l.zc=function(e,n){if(!Eot(this.c,this.f,e,this.b,this.a,this.e,this.d))throw at(new zn(e+" outside the range "+this.b+" to "+this.e));return Yce(this.c,e,n)},l.Bc=function(e){var n;return n=e,Eot(this.c,this.f,n,this.b,this.a,this.e,this.d)?jne(this.c,n):null},l.Le=function(e){return Vz(this,e.ld())&&q3t(this.c,e)},l.gc=function(){var e,n,r;if(this.f.Te()?this.a?n=E7(this.c,this.b,!0):n=E7(this.c,this.b,!1):n=J3t(this.c),!(n&&Vz(this,n.d)&&n))return 0;for(e=0,r=new uat(this.c,this.f,this.b,this.a,this.e,this.d);frt(r.a);r.b=u(Uyt(r.a),44))++e;return e},l.ad=function(e,n){if(this.f.Te()&&this.c.a.Ne(e,this.b)<0)throw at(new zn(k8t+e+Lbe+this.b));return this.f.Ue()?Rne(this.c,e,n,this.e,this.d):wre(this.c,e,n)},l.a=!1,l.d=!1,I(xr,"TreeMap/SubMap",631),D(303,22,gut,M$),l.Te=function(){return!1},l.Ue=function(){return!1};var Pht,Fht,Bht,Rht,BU=Lr(xr,"TreeMap/SubMapType",303,Pr,N1n,Van);D(1143,303,gut,VQt),l.Ue=function(){return!0},Lr(xr,"TreeMap/SubMapType/1",1143,BU,null,null),D(1144,303,gut,ZQt),l.Te=function(){return!0},l.Ue=function(){return!0},Lr(xr,"TreeMap/SubMapType/2",1144,BU,null,null),D(1145,303,gut,HQt),l.Te=function(){return!0},Lr(xr,"TreeMap/SubMapType/3",1145,BU,null,null);var lye;D(157,dd,{3:1,20:1,31:1,16:1,277:1,21:1,87:1,157:1},q2t,pp,ra),l.Nc=function(){return new D$(this)},l.Fc=function(e){return yI(this,e)},l.$b=function(){this.a.$b()},l.Hc=function(e){return this.a._b(e)},l.Kc=function(){return this.a.ec().Kc()},l.Mc=function(e){return rit(this,e)},l.gc=function(){return this.a.gc()};var n_n=I(xr,"TreeSet",157);D(1082,1,{},no),l.Ve=function(e,n){return oan(this.a,e,n)},I(put,"BinaryOperator/lambda$0$Type",1082),D(1083,1,{},ql),l.Ve=function(e,n){return can(this.a,e,n)},I(put,"BinaryOperator/lambda$1$Type",1083),D(952,1,{},Ne),l.Kb=function(e){return e},I(put,"Function/lambda$0$Type",952),D(395,1,Kr,Sl),l.Mb=function(e){return!this.a.Mb(e)},I(put,"Predicate/lambda$2$Type",395),D(581,1,{581:1});var hye=I(V_,"Handler",581);D(2107,1,tN),l.xe=function(){return"DUMMY"},l.Ib=function(){return this.xe()};var M9t;I(V_,"Level",2107),D(1706,2107,tN,Xt),l.xe=function(){return"INFO"},I(V_,"Level/LevelInfo",1706),D(1843,1,{},mKt);var jht;I(V_,"LogManager",1843),D(1896,1,tN,UZt),l.b=null,I(V_,"LogRecord",1896),D(525,1,{525:1},Ast),l.e=!1;var fye=!1,dye=!1,wd=!1,gye=!1,pye=!1;I(V_,"Logger",525),D(835,581,{581:1},_e),I(V_,"SimpleConsoleLogHandler",835),D(108,22,{3:1,34:1,22:1,108:1},prt);var I9t,sc,w3,Ho=Lr(Us,"Collector/Characteristics",108,Pr,xfn,Uan),bye;D(758,1,{},Tyt),I(Us,"CollectorImpl",758),D(1074,1,{},xe),l.Ve=function(e,n){return e2n(u(e,213),u(n,213))},I(Us,"Collectors/10methodref$merge$Type",1074),D(1075,1,{},Mn),l.Kb=function(e){return Kre(u(e,213))},I(Us,"Collectors/11methodref$toString$Type",1075),D(1076,1,{},mb),l.Kb=function(e){return Pn(),!!mmt(e)},I(Us,"Collectors/12methodref$test$Type",1076),D(144,1,{},ce),l.Yd=function(e,n){u(e,16).Fc(n)},I(Us,"Collectors/20methodref$add$Type",144),D(146,1,{},Br),l.Xe=function(){return new fe},I(Us,"Collectors/21methodref$ctor$Type",146),D(359,1,{},we),l.Xe=function(){return new Os},I(Us,"Collectors/23methodref$ctor$Type",359),D(360,1,{},Fi),l.Yd=function(e,n){qs(u(e,49),n)},I(Us,"Collectors/24methodref$add$Type",360),D(1069,1,{},mi),l.Ve=function(e,n){return RYt(u(e,15),u(n,16))},I(Us,"Collectors/4methodref$addAll$Type",1069),D(1073,1,{},ga),l.Yd=function(e,n){Eg(u(e,213),u(n,483))},I(Us,"Collectors/9methodref$add$Type",1073),D(1072,1,{},cte),l.Xe=function(){return new aw(this.a,this.b,this.c)},I(Us,"Collectors/lambda$15$Type",1072),D(1077,1,{},Ss),l.Xe=function(){var e;return e=new kp,Op(e,(Pn(),!1),new fe),Op(e,!0,new fe),e},I(Us,"Collectors/lambda$22$Type",1077),D(1078,1,{},vb),l.Xe=function(){return lt(ut(aa,1),Ln,1,5,[this.a])},I(Us,"Collectors/lambda$25$Type",1078),D(1079,1,{},v1),l.Yd=function(e,n){_un(this.a,nw(e))},I(Us,"Collectors/lambda$26$Type",1079),D(1080,1,{},up),l.Ve=function(e,n){return eln(this.a,nw(e),nw(n))},I(Us,"Collectors/lambda$27$Type",1080),D(1081,1,{},za),l.Kb=function(e){return nw(e)[0]},I(Us,"Collectors/lambda$28$Type",1081),D(728,1,{},br),l.Ve=function(e,n){return iyt(e,n)},I(Us,"Collectors/lambda$4$Type",728),D(145,1,{},An),l.Ve=function(e,n){return Frn(u(e,16),u(n,16))},I(Us,"Collectors/lambda$42$Type",145),D(361,1,{},Nn),l.Ve=function(e,n){return Brn(u(e,49),u(n,49))},I(Us,"Collectors/lambda$50$Type",361),D(362,1,{},Bn),l.Kb=function(e){return u(e,49)},I(Us,"Collectors/lambda$51$Type",362),D(1068,1,{},Bd),l.Yd=function(e,n){obn(this.a,u(e,85),n)},I(Us,"Collectors/lambda$7$Type",1068),D(1070,1,{},ke),l.Ve=function(e,n){return Bpn(u(e,85),u(n,85),new mi)},I(Us,"Collectors/lambda$8$Type",1070),D(1071,1,{},cm),l.Kb=function(e){return N2n(this.a,u(e,85))},I(Us,"Collectors/lambda$9$Type",1071),D(550,1,{}),l.$e=function(){jS(this)},l.d=!1,I(Us,"TerminatableStream",550),D(827,550,E8t,rvt),l.$e=function(){jS(this)},I(Us,"DoubleStreamImpl",827),D(1847,736,fh,ute),l.Re=function(e){return Bmn(this,u(e,189))},l.a=null,I(Us,"DoubleStreamImpl/2",1847),D(1848,1,uN,py),l.Pe=function(e){Din(this.a,e)},I(Us,"DoubleStreamImpl/2/lambda$0$Type",1848),D(1845,1,uN,y6),l.Pe=function(e){Lin(this.a,e)},I(Us,"DoubleStreamImpl/lambda$0$Type",1845),D(1846,1,uN,_4),l.Pe=function(e){ule(this.a,e)},I(Us,"DoubleStreamImpl/lambda$2$Type",1846),D(1397,735,fh,Jie),l.Re=function(e){return E1n(this,u(e,202))},l.a=0,l.b=0,l.c=0,I(Us,"IntStream/5",1397),D(806,550,E8t,ivt),l.$e=function(){jS(this)},l._e=function(){return Mb(this),this.a},I(Us,"IntStreamImpl",806),D(807,550,E8t,Lwt),l.$e=function(){jS(this)},l._e=function(){return Mb(this),jmt(),uye},I(Us,"IntStreamImpl/Empty",807),D(1687,1,nN,x6),l.Dd=function(e){vce(this.a,e)},I(Us,"IntStreamImpl/lambda$4$Type",1687);var r_n=os(Us,"Stream");D(26,550,{533:1,687:1,848:1},ln),l.$e=function(){jS(this)};var Rk;I(Us,"StreamImpl",26),D(1102,499,fh,BZt),l.Bd=function(e){for(;S0n(this);){if(this.a.Bd(e))return!0;jS(this.b),this.b=null,this.a=null}return!1},I(Us,"StreamImpl/1",1102),D(1103,1,ir,BC),l.Cd=function(e){Zcn(this.a,u(e,848))},I(Us,"StreamImpl/1/lambda$0$Type",1103),D(1104,1,Kr,A4),l.Mb=function(e){return qs(this.a,e)},I(Us,"StreamImpl/1methodref$add$Type",1104),D(1105,499,fh,wne),l.Bd=function(e){var n;return this.a||(n=new fe,this.b.a.Nb(new k0(n)),mn(),Ds(n,this.c),this.a=new gn(n,16)),toe(this.a,e)},l.a=null,I(Us,"StreamImpl/5",1105),D(1106,1,ir,k0),l.Cd=function(e){ge(this.a,e)},I(Us,"StreamImpl/5/2methodref$add$Type",1106),D(737,499,fh,Z3t),l.Bd=function(e){for(this.b=!1;!this.b&&this.c.Bd(new eXt(this,e)););return this.b},l.b=!1,I(Us,"StreamImpl/FilterSpliterator",737),D(1096,1,ir,eXt),l.Cd=function(e){Yun(this.a,this.b,e)},I(Us,"StreamImpl/FilterSpliterator/lambda$0$Type",1096),D(1091,736,fh,use),l.Re=function(e){return Lan(this,u(e,189))},I(Us,"StreamImpl/MapToDoubleSpliterator",1091),D(1095,1,ir,nXt),l.Cd=function(e){Zrn(this.a,this.b,e)},I(Us,"StreamImpl/MapToDoubleSpliterator/lambda$0$Type",1095),D(1090,735,fh,lse),l.Re=function(e){return Dan(this,u(e,202))},I(Us,"StreamImpl/MapToIntSpliterator",1090),D(1094,1,ir,rXt),l.Cd=function(e){tin(this.a,this.b,e)},I(Us,"StreamImpl/MapToIntSpliterator/lambda$0$Type",1094),D(734,499,fh,R3t),l.Bd=function(e){return NZt(this,e)},I(Us,"StreamImpl/MapToObjSpliterator",734),D(1093,1,ir,iXt),l.Cd=function(e){ein(this.a,this.b,e)},I(Us,"StreamImpl/MapToObjSpliterator/lambda$0$Type",1093),D(1092,499,fh,joe),l.Bd=function(e){for(;drt(this.b,0);){if(!this.a.Bd(new pe))return!1;this.b=sf(this.b,1)}return this.a.Bd(e)},l.b=0,I(Us,"StreamImpl/SkipSpliterator",1092),D(1097,1,ir,pe),l.Cd=function(e){},I(Us,"StreamImpl/SkipSpliterator/lambda$0$Type",1097),D(626,1,ir,Je),l.Cd=function(e){Cnt(this,e)},I(Us,"StreamImpl/ValueConsumer",626),D(1098,1,ir,an),l.Cd=function(e){U2()},I(Us,"StreamImpl/lambda$0$Type",1098),D(1099,1,ir,xn),l.Cd=function(e){U2()},I(Us,"StreamImpl/lambda$1$Type",1099),D(1100,1,{},J1),l.Ve=function(e,n){return con(this.a,e,n)},I(Us,"StreamImpl/lambda$4$Type",1100),D(1101,1,ir,sXt),l.Cd=function(e){gan(this.b,this.a,e)},I(Us,"StreamImpl/lambda$5$Type",1101),D(1107,1,ir,E0),l.Cd=function(e){Cpn(this.a,u(e,380))},I(Us,"TerminatableStream/lambda$0$Type",1107),D(2142,1,{}),D(2014,1,{},qa),I("javaemul.internal","ConsoleLogger",2014);var i_n=0;D(2134,1,{}),D(1830,1,ir,xo),l.Cd=function(e){u(e,317)},I(Q7,"BowyerWatsonTriangulation/lambda$0$Type",1830),D(1831,1,ir,$2),l.Cd=function(e){Ma(this.a,u(e,317).e)},I(Q7,"BowyerWatsonTriangulation/lambda$1$Type",1831),D(1832,1,ir,ko),l.Cd=function(e){u(e,177)},I(Q7,"BowyerWatsonTriangulation/lambda$2$Type",1832),D(1827,1,Xr,Zj),l.Ne=function(e,n){return cdn(this.a,u(e,177),u(n,177))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Q7,"NaiveMinST/lambda$0$Type",1827),D(506,1,{},by),I(Q7,"NodeMicroLayout",506),D(177,1,{177:1},O6),l.Fb=function(e){var n;return Lt(e,177)?(n=u(e,177),Nc(this.a,n.a)&&Nc(this.b,n.b)||Nc(this.a,n.b)&&Nc(this.b,n.a)):!1},l.Hb=function(){return V4(this.a)+V4(this.b)};var s_n=I(Q7,"TEdge",177);D(317,1,{317:1},Bkt),l.Fb=function(e){var n;return Lt(e,317)?(n=u(e,317),Aq(this,n.a)&&Aq(this,n.b)&&Aq(this,n.c)):!1},l.Hb=function(){return V4(this.a)+V4(this.b)+V4(this.c)},I(Q7,"TTriangle",317),D(225,1,{225:1},iz),I(Q7,"Tree",225),D(1218,1,{},nre),I(Ibe,"Scanline",1218);var wye=os(Ibe,Obe);D(1758,1,{},Qae),I(j0,"CGraph",1758),D(316,1,{316:1},sre),l.b=0,l.c=0,l.d=0,l.g=0,l.i=0,l.k=Vs,I(j0,"CGroup",316),D(830,1,{},U2t),I(j0,"CGroup/CGroupBuilder",830),D(60,1,{60:1},wZt),l.Ib=function(){var e;return this.j?Gr(this.j.Kb(this)):(wg(RU),RU.o+"@"+(e=Em(this)>>>0,e.toString(16)))},l.f=0,l.i=Vs;var RU=I(j0,"CNode",60);D(829,1,{},G2t),I(j0,"CNode/CNodeBuilder",829);var mye;D(1590,1,{},va),l.ff=function(e,n){return 0},l.gf=function(e,n){return 0},I(j0,Pbe,1590),D(1853,1,{},Ha),l.cf=function(e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt;for(T=Zi,s=new G(e.a.b);s.as.d.c||s.d.c==h.d.c&&s.d.b0?e+this.n.d+this.n.a:0},l.kf=function(){var e,n,r,s,o;if(o=0,this.e)this.b?o=this.b.a:this.a[1][1]&&(o=this.a[1][1].kf());else if(this.g)o=F5t(this,Cot(this,null,!0));else for(n=(A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])),r=0,s=n.length;r0?o+this.n.b+this.n.c:0},l.lf=function(){var e,n,r,s,o;if(this.g)for(e=Cot(this,null,!1),r=(A1(),lt(ut(m3,1),te,237,0,[Ac,xu,Lc])),s=0,o=r.length;s0&&(s[0]+=this.d,r-=s[0]),s[2]>0&&(s[2]+=this.d,r-=s[2]),this.c.a=b.Math.max(0,r),this.c.d=n.d+e.d+(this.c.a-r)/2,s[1]=b.Math.max(s[1],r),N3t(this,xu,n.d+e.d+s[0]-(s[1]-r)/2,s)},l.b=null,l.d=0,l.e=!1,l.f=!1,l.g=!1;var Vht=0,jU=0;I(ww,"GridContainerCell",1538),D(470,22,{3:1,34:1,22:1,470:1},wrt);var e2,c0,Gf,Aye=Lr(ww,"HorizontalLabelAlignment",470,Pr,Efn,Xan),Lye;D(314,217,{217:1,314:1},qne,Zae,Pne),l.jf=function(){return kte(this)},l.kf=function(){return Jvt(this)},l.a=0,l.c=!1;var a_n=I(ww,"LabelCell",314);D(252,336,{217:1,336:1,252:1},p_),l.jf=function(){return PO(this)},l.kf=function(){return FO(this)},l.lf=function(){dct(this)},l.mf=function(){gct(this)},l.b=0,l.c=0,l.d=!1,I(ww,"StripContainerCell",252),D(1691,1,Kr,Ic),l.Mb=function(e){return Xnn(u(e,217))},I(ww,"StripContainerCell/lambda$0$Type",1691),D(1692,1,{},wc),l.Ye=function(e){return u(e,217).kf()},I(ww,"StripContainerCell/lambda$1$Type",1692),D(1693,1,Kr,Ea),l.Mb=function(e){return Qnn(u(e,217))},I(ww,"StripContainerCell/lambda$2$Type",1693),D(1694,1,{},gu),l.Ye=function(e){return u(e,217).jf()},I(ww,"StripContainerCell/lambda$3$Type",1694),D(471,22,{3:1,34:1,22:1,471:1},mrt);var Kf,n2,O1,Dye=Lr(ww,"VerticalLabelAlignment",471,Pr,kfn,Qan),Mye;D(800,1,{},Zkt),l.c=0,l.d=0,l.k=0,l.s=0,l.t=0,l.v=!1,l.w=0,l.D=!1,I(SV,"NodeContext",800),D(1536,1,Xr,ta),l.Ne=function(e,n){return NQt(u(e,64),u(n,64))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(SV,"NodeContext/0methodref$comparePortSides$Type",1536),D(1537,1,Xr,fo),l.Ne=function(e,n){return S3n(u(e,117),u(n,117))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(SV,"NodeContext/1methodref$comparePortContexts$Type",1537),D(164,22,{3:1,34:1,22:1,164:1},Nh);var Iye,Oye,Nye,Pye,Fye,Bye,Rye,jye,$ye,zye,qye,Hye,Vye,Uye,Gye,Kye,Wye,Yye,Xye,Qye,Jye,Uht,Zye=Lr(SV,"NodeLabelLocation",164,Pr,not,Jan),t3e;D(117,1,{117:1},q1e),l.a=!1,I(SV,"PortContext",117),D(1541,1,ir,mc),l.Cd=function(e){ZWt(u(e,314))},I(hN,Wbe,1541),D(1542,1,Kr,ca),l.Mb=function(e){return!!u(e,117).c},I(hN,Ybe,1542),D(1543,1,ir,ya),l.Cd=function(e){ZWt(u(e,117).c)},I(hN,"LabelPlacer/lambda$2$Type",1543);var tCt;D(1540,1,ir,ea),l.Cd=function(e){Ay(),Lnn(u(e,117))},I(hN,"NodeLabelAndSizeUtilities/lambda$0$Type",1540),D(801,1,ir,Mvt),l.Cd=function(e){Hrn(this.b,this.c,this.a,u(e,187))},l.a=!1,l.c=!1,I(hN,"NodeLabelCellCreator/lambda$0$Type",801),D(1539,1,ir,Ont),l.Cd=function(e){Inn(this.a,u(e,187))},I(hN,"PortContextCreator/lambda$0$Type",1539);var $U;D(1902,1,{},Zl),I(Z7,"GreedyRectangleStripOverlapRemover",1902),D(1903,1,Xr,Uc),l.Ne=function(e,n){return xsn(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Z7,"GreedyRectangleStripOverlapRemover/0methodref$compareByYCoordinate$Type",1903),D(1849,1,{},kKt),l.a=5,l.e=0,I(Z7,"RectangleStripOverlapRemover",1849),D(1850,1,Xr,rm),l.Ne=function(e,n){return ksn(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Z7,"RectangleStripOverlapRemover/0methodref$compareLeftRectangleBorders$Type",1850),D(1852,1,Xr,kh),l.Ne=function(e,n){return hln(u(e,226),u(n,226))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Z7,"RectangleStripOverlapRemover/1methodref$compareRightRectangleBorders$Type",1852),D(417,22,{3:1,34:1,22:1,417:1},O$);var BN,Ght,Kht,RN,e3e=Lr(Z7,"RectangleStripOverlapRemover/OverlapRemovalDirection",417,Pr,B1n,Zan),n3e;D(226,1,{226:1},Oit),I(Z7,"RectangleStripOverlapRemover/RectangleNode",226),D(1851,1,ir,Nnt),l.Cd=function(e){Jmn(this.a,u(e,226))},I(Z7,"RectangleStripOverlapRemover/lambda$1$Type",1851),D(1323,1,Xr,Md),l.Ne=function(e,n){return mTn(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator",1323),D(1326,1,{},w0),l.Kb=function(e){return u(e,334).a},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$0$Type",1326),D(1327,1,Kr,Id),l.Mb=function(e){return u(e,332).a},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$1$Type",1327),D(1328,1,Kr,m0),l.Mb=function(e){return u(e,332).a},I(e0,"PolyominoCompactor/CornerCasesGreaterThanRestComparator/lambda$2$Type",1328),D(1321,1,Xr,hg),l.Ne=function(e,n){return W8n(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator",1321),D(1324,1,{},Gi),l.Kb=function(e){return u(e,334).a},I(e0,"PolyominoCompactor/MinNumOfExtensionDirectionsComparator/lambda$0$Type",1324),D(781,1,Xr,cn),l.Ne=function(e,n){return Dpn(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinNumOfExtensionsComparator",781),D(1319,1,Xr,Nr),l.Ne=function(e,n){return Rgn(u(e,330),u(n,330))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinPerimeterComparator",1319),D(1320,1,Xr,Si),l.Ne=function(e,n){return kmn(u(e,330),u(n,330))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/MinPerimeterComparatorWithShape",1320),D(1322,1,Xr,vc),l.Ne=function(e,n){return pEn(u(e,176),u(n,176))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(e0,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator",1322),D(1325,1,{},Rc),l.Kb=function(e){return u(e,334).a},I(e0,"PolyominoCompactor/SingleExtensionSideGreaterThanRestComparator/lambda$0$Type",1325),D(782,1,{},qwt),l.Ve=function(e,n){return L1n(this,u(e,42),u(n,176))},I(e0,"SuccessorCombination",782),D(649,1,{},Eh),l.Ve=function(e,n){var r;return U5n((r=u(e,42),u(n,176),r))},I(e0,"SuccessorJitter",649),D(648,1,{},Zc),l.Ve=function(e,n){var r;return Mkn((r=u(e,42),u(n,176),r))},I(e0,"SuccessorLineByLine",648),D(573,1,{},Qh),l.Ve=function(e,n){var r;return Uxn((r=u(e,42),u(n,176),r))},I(e0,"SuccessorManhattan",573),D(1344,1,{},Od),l.Ve=function(e,n){var r;return ekn((r=u(e,42),u(n,176),r))},I(e0,"SuccessorMaxNormWindingInMathPosSense",1344),D(409,1,{},L4),l.Ve=function(e,n){return kyt(this,e,n)},l.c=!1,l.d=!1,l.e=!1,l.f=!1,I(e0,"SuccessorQuadrantsGeneric",409),D(1345,1,{},cs),l.Kb=function(e){return u(e,334).a},I(e0,"SuccessorQuadrantsGeneric/lambda$0$Type",1345),D(332,22,{3:1,34:1,22:1,332:1},N$),l.a=!1;var jN,$N,zN,qN,r3e=Lr(AV,N8t,332,Pr,P1n,ton),i3e;D(1317,1,{}),l.Ib=function(){var e,n,r,s,o,h;for(r=" ",e=he(0),o=0;o=0?"b"+e+"["+_st(this.a)+"]":"b["+_st(this.a)+"]"):"b_"+Em(this)},I(dN,"FBendpoint",250),D(289,137,{3:1,289:1,96:1,137:1},mZt),l.Ib=function(){return _st(this)},I(dN,"FEdge",289),D(235,137,{3:1,235:1,96:1,137:1},mq);var c_n=I(dN,"FGraph",235);D(453,309,{3:1,453:1,309:1,96:1,137:1},yie),l.Ib=function(){return this.b==null||this.b.length==0?"l["+_st(this.a)+"]":"l_"+this.b},I(dN,"FLabel",453),D(153,309,{3:1,153:1,309:1,96:1,137:1},JQt),l.Ib=function(){return u3t(this)},l.a=0,I(dN,"FNode",153),D(2100,1,{}),l.vf=function(e){Ikt(this,e)},l.wf=function(){xhe(this)},l.d=0,I(H8t,"AbstractForceModel",2100),D(641,2100,{641:1},mce),l.uf=function(e,n){var r,s,o,h,d;return Yge(this.f,e,n),o=ia(Oa(n.d),e.d),d=b.Math.sqrt(o.a*o.a+o.b*o.b),s=b.Math.max(0,d-RS(e.e)/2-RS(n.e)/2),r=M1e(this.e,e,n),r>0?h=-cln(s,this.c)*r:h=Bsn(s,this.b)*u(X(e,(Vf(),jk)),17).a,qd(o,h/d),o},l.vf=function(e){Ikt(this,e),this.a=u(X(e,(Vf(),GU)),17).a,this.c=Rt(Ht(X(e,KU))),this.b=Rt(Ht(X(e,tft)))},l.xf=function(e){return e0&&(h-=Gnn(s,this.a)*r),qd(o,h*this.b/d),o},l.vf=function(e){var n,r,s,o,h,d,m;for(Ikt(this,e),this.b=Rt(Ht(X(e,(Vf(),eft)))),this.c=this.b/u(X(e,GU),17).a,s=e.e.c.length,h=0,o=0,m=new G(e.e);m.a0},l.a=0,l.b=0,l.c=0,I(H8t,"FruchtermanReingoldModel",642),D(860,1,uf,MC),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,MV),""),"Force Model"),"Determines the model for force calculation."),uCt),(Fp(),ts)),lCt),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,V8t),""),"Iterations"),"The number of iterations on the force model."),he(300)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,U8t),""),"Repulsive Power"),"Determines how many bend points are added to the edge; such bend points are regarded as repelling particles in the force model"),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Out),""),"FR Temperature"),"The temperature is used as a scaling factor for particle displacements."),n0),Wa),zs),en(_n)))),Bs(e,Out,MV,T3e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Nut),""),"Eades Repulsion"),"Factor for repulsive forces in Eades' model."),5),Wa),zs),en(_n)))),Bs(e,Nut,MV,x3e),Bpe((new IC,e))};var m3e,v3e,uCt,y3e,x3e,k3e,E3e,T3e;I(K_,"ForceMetaDataProvider",860),D(432,22,{3:1,34:1,22:1,432:1},Vwt);var Zht,UU,lCt=Lr(K_,"ForceModelStrategy",432,Pr,Lhn,ron),C3e;D(Rp,1,uf,IC),l.hf=function(e){Bpe(e)};var S3e,_3e,hCt,GU,fCt,A3e,L3e,D3e,M3e,dCt,I3e,gCt,pCt,O3e,jk,N3e,tft,bCt,P3e,F3e,KU,eft,B3e,R3e,j3e,wCt,$3e;I(K_,"ForceOptions",Rp),D(1001,1,{},Pd),l.sf=function(){var e;return e=new V2t,e},l.tf=function(e){},I(K_,"ForceOptions/ForceFactory",1001);var UN,TA,$k,WU;D(861,1,uf,_j),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,K8t),""),"Fixed Position"),"Prevent that the node is moved by the layout algorithm."),(Pn(),!1)),(Fp(),oa)),ys),en((D1(),Qs))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,W8t),""),"Desired Edge Length"),"Either specified for parent nodes or for individual edges, where the latter takes higher precedence."),100),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[f0]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Y8t),""),"Layout Dimension"),"Dimensions that are permitted to be altered during layout."),mCt),ts),CCt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,X8t),""),"Stress Epsilon"),"Termination criterion for the iterative process."),n0),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Q8t),""),"Iteration Limit"),"Maximum number of performed iterations. Takes higher precedence than 'epsilon'."),he(xi)),ac),Ra),en(_n)))),hpe((new Aj,e))};var z3e,q3e,mCt,H3e,V3e,U3e;I(K_,"StressMetaDataProvider",861),D(1004,1,uf,Aj),l.hf=function(e){hpe(e)};var YU,vCt,yCt,xCt,kCt,ECt,G3e,K3e,W3e,Y3e,TCt,X3e;I(K_,"StressOptions",1004),D(1005,1,{},U1),l.sf=function(){var e;return e=new vZt,e},l.tf=function(e){},I(K_,"StressOptions/StressFactory",1005),D(1110,205,mw,vZt),l.rf=function(e,n){var r,s,o,h,d;for(n.Ug(c2e,1),Ie(Me(ne(e,(TO(),kCt))))?Ie(Me(ne(e,TCt)))||sq((r=new by((xy(),new my(e))),r)):Ade(new V2t,e,n.eh(1)),o=qce(e),s=yge(this.a,o),d=s.Kc();d.Ob();)h=u(d.Pb(),235),!(h.e.c.length<=1)&&(pTn(this.b,h),$xn(this.b),Cu(h.d,new Nd));o=Npe(s),Vpe(o),n.Vg()},I(NV,"StressLayoutProvider",1110),D(1111,1,ir,Nd),l.Cd=function(e){$kt(u(e,453))},I(NV,"StressLayoutProvider/lambda$0$Type",1111),D(1002,1,{},wKt),l.c=0,l.e=0,l.g=0,I(NV,"StressMajorization",1002),D(391,22,{3:1,34:1,22:1,391:1},vrt);var nft,rft,ift,CCt=Lr(NV,"StressMajorization/Dimension",391,Pr,Cfn,ion),Q3e;D(1003,1,Xr,e$),l.Ne=function(e,n){return Ian(this.a,u(e,153),u(n,153))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(NV,"StressMajorization/lambda$0$Type",1003),D(1192,1,{},Cre),I(Ok,"ElkLayered",1192),D(1193,1,ir,n$),l.Cd=function(e){p5n(this.a,u(e,36))},I(Ok,"ElkLayered/lambda$0$Type",1193),D(1194,1,ir,Pnt),l.Cd=function(e){Oan(this.a,u(e,36))},I(Ok,"ElkLayered/lambda$1$Type",1194),D(1281,1,{},cJt);var J3e,Z3e,t4e;I(Ok,"GraphConfigurator",1281),D(770,1,ir,lp),l.Cd=function(e){Nfe(this.a,u(e,10))},I(Ok,"GraphConfigurator/lambda$0$Type",770),D(771,1,{},p4),l.Kb=function(e){return Dxt(),new ln(null,new gn(u(e,30).a,16))},I(Ok,"GraphConfigurator/lambda$1$Type",771),D(772,1,ir,$C),l.Cd=function(e){Nfe(this.a,u(e,10))},I(Ok,"GraphConfigurator/lambda$2$Type",772),D(1109,205,mw,EKt),l.rf=function(e,n){var r;r=Y7n(new CKt,e),$t(ne(e,(De(),A3)))===$t((Ag(),Xp))?_2n(this.a,r,n):Fxn(this.a,r,n),n.$g()||_pe(new d6,r)},I(Ok,"LayeredLayoutProvider",1109),D(367,22,{3:1,34:1,22:1,367:1},qM);var Wf,H0,Qc,cu,Zo,SCt=Lr(Ok,"LayeredPhases",367,Pr,Ldn,son),e4e;D(1717,1,{},Foe),l.i=0;var n4e;I(vN,"ComponentsToCGraphTransformer",1717);var r4e;D(1718,1,{},N2),l.yf=function(e,n){return b.Math.min(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},l.zf=function(e,n){return b.Math.min(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},I(vN,"ComponentsToCGraphTransformer/1",1718),D(86,1,{86:1}),l.i=0,l.k=!0,l.o=Vs;var sft=I(Q_,"CNode",86);D(469,86,{469:1,86:1},Wmt,ixt),l.Ib=function(){return""},I(vN,"ComponentsToCGraphTransformer/CRectNode",469),D(1688,1,{},I8);var aft,oft;I(vN,"OneDimensionalComponentsCompaction",1688),D(1689,1,{},im),l.Kb=function(e){return bfn(u(e,42))},l.Fb=function(e){return this===e},I(vN,"OneDimensionalComponentsCompaction/lambda$0$Type",1689),D(1690,1,{},Gx),l.Kb=function(e){return L2n(u(e,42))},l.Fb=function(e){return this===e},I(vN,"OneDimensionalComponentsCompaction/lambda$1$Type",1690),D(1720,1,{},Iee),I(Q_,"CGraph",1720),D(194,1,{194:1},Zat),l.b=0,l.c=0,l.e=0,l.g=!0,l.i=Vs,I(Q_,"CGroup",194),D(1719,1,{},hb),l.yf=function(e,n){return b.Math.max(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},l.zf=function(e,n){return b.Math.max(e.a!=null?Rt(e.a):e.c.i,n.a!=null?Rt(n.a):n.c.i)},I(Q_,Pbe,1719),D(1721,1,{},O1e),l.d=!1;var i4e,cft=I(Q_,Rbe,1721);D(1722,1,{},Kx),l.Kb=function(e){return Mwt(),Pn(),u(u(e,42).a,86).d.e!=0},l.Fb=function(e){return this===e},I(Q_,jbe,1722),D(833,1,{},syt),l.a=!1,l.b=!1,l.c=!1,l.d=!1,I(Q_,$be,833),D(1898,1,{},Wte),I(PV,zbe,1898);var GN=os(yw,Obe);D(1899,1,{382:1},Ane),l.bf=function(e){Vkn(this,u(e,475))},I(PV,qbe,1899),D(Wb,1,Xr,b4),l.Ne=function(e,n){return Zln(u(e,86),u(n,86))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(PV,Hbe,Wb),D(475,1,{475:1},Gwt),l.a=!1,I(PV,Vbe,475),D(1901,1,Xr,ay),l.Ne=function(e,n){return tyn(u(e,475),u(n,475))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(PV,Ube,1901),D(148,1,{148:1},kE,qvt),l.Fb=function(e){var n;return e==null||u_n!=Wl(e)?!1:(n=u(e,148),Nc(this.c,n.c)&&Nc(this.d,n.d))},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[this.c,this.d]))},l.Ib=function(){return"("+this.c+ao+this.d+(this.a?"cx":"")+this.b+")"},l.a=!0,l.c=0,l.d=0;var u_n=I(yw,"Point",148);D(416,22,{3:1,34:1,22:1,416:1},F$);var bv,v3,F5,y3,s4e=Lr(yw,"Point/Quadrant",416,Pr,R1n,aon),a4e;D(1708,1,{},xKt),l.b=null,l.c=null,l.d=null,l.e=null,l.f=null;var o4e,c4e,u4e,l4e,h4e;I(yw,"RectilinearConvexHull",1708),D(583,1,{382:1},_H),l.bf=function(e){A0n(this,u(e,148))},l.b=0;var _Ct;I(yw,"RectilinearConvexHull/MaximalElementsEventHandler",583),D(1710,1,Xr,sp),l.Ne=function(e,n){return thn(Ht(e),Ht(n))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/MaximalElementsEventHandler/lambda$0$Type",1710),D(1709,1,{382:1},Jae),l.bf=function(e){skn(this,u(e,148))},l.a=0,l.b=null,l.c=null,l.d=null,l.e=null,I(yw,"RectilinearConvexHull/RectangleEventHandler",1709),D(1711,1,Xr,BD),l.Ne=function(e,n){return c1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$0$Type",1711),D(1712,1,Xr,$X),l.Ne=function(e,n){return u1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$1$Type",1712),D(1713,1,Xr,P2),l.Ne=function(e,n){return o1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$2$Type",1713),D(1714,1,Xr,Gc),l.Ne=function(e,n){return l1n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$3$Type",1714),D(1715,1,Xr,zX),l.Ne=function(e,n){return z3n(u(e,148),u(n,148))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(yw,"RectilinearConvexHull/lambda$4$Type",1715),D(1716,1,{},rre),I(yw,"Scanline",1716),D(2104,1,{}),I(pd,"AbstractGraphPlacer",2104),D(335,1,{335:1},VJt),l.Ff=function(e){return this.Gf(e)?(dn(this.b,u(X(e,(oe(),$g)),21),e),!0):!1},l.Gf=function(e){var n,r,s,o;for(n=u(X(e,(oe(),$g)),21),o=u(Ai(Ri,n),21),s=o.Kc();s.Ob();)if(r=u(s.Pb(),21),!u(Ai(this.b,r),15).dc())return!1;return!0};var Ri;I(pd,"ComponentGroup",335),D(779,2104,{},K2t),l.Hf=function(e){var n,r;for(r=new G(this.a);r.ar&&(A=0,P+=m+s,m=0),k=h.c,B7(h,A+k.a,P+k.b),k1(k),o=b.Math.max(o,A+T.a),m=b.Math.max(m,T.b),A+=T.a+s;n.f.a=o,n.f.b=P+m},l.Jf=function(e,n){var r,s,o,h,d;if($t(X(n,(De(),_3)))===$t((lw(),x3))){for(s=e.Kc();s.Ob();){for(r=u(s.Pb(),36),d=0,h=new G(r.a);h.ar&&!u(X(h,(oe(),$g)),21).Hc((ve(),Hn))||k&&u(X(k,(oe(),$g)),21).Hc((ve(),Jn))||u(X(h,(oe(),$g)),21).Hc((ve(),Gn)))&&($=P,U+=m+s,m=0),T=h.c,u(X(h,(oe(),$g)),21).Hc((ve(),Hn))&&($=o+s),B7(h,$+T.a,U+T.b),o=b.Math.max(o,$+A.a),u(X(h,$g),21).Hc(Er)&&(P=b.Math.max(P,$+A.a+s)),k1(T),m=b.Math.max(m,A.b),$+=A.a+s,k=h;n.f.a=o,n.f.b=U+m},l.Jf=function(e,n){},I(pd,"ModelOrderRowGraphPlacer",1313),D(1311,1,Xr,IB),l.Ne=function(e,n){return _pn(u(e,36),u(n,36))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(pd,"SimpleRowGraphPlacer/1",1311);var d4e;D(1280,1,t0,p1),l.Lb=function(e){var n;return n=u(X(u(e,249).b,(De(),Vo)),75),!!n&&n.b!=0},l.Fb=function(e){return this===e},l.Mb=function(e){var n;return n=u(X(u(e,249).b,(De(),Vo)),75),!!n&&n.b!=0},I(FV,"CompoundGraphPostprocessor/1",1280),D(1279,1,zi,SKt),l.Kf=function(e,n){ehe(this,u(e,36),n)},I(FV,"CompoundGraphPreprocessor",1279),D(452,1,{452:1},Uue),l.c=!1,I(FV,"CompoundGraphPreprocessor/ExternalPort",452),D(249,1,{249:1},wz),l.Ib=function(){return cit(this.c)+":"+_1e(this.b)},I(FV,"CrossHierarchyEdge",249),D(777,1,Xr,_M),l.Ne=function(e,n){return Avn(this,u(e,249),u(n,249))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(FV,"CrossHierarchyEdgeComparator",777),D(304,137,{3:1,304:1,96:1,137:1}),l.p=0,I(au,"LGraphElement",304),D(18,304,{3:1,18:1,304:1,96:1,137:1},Pm),l.Ib=function(){return _1e(this)};var hft=I(au,"LEdge",18);D(36,304,{3:1,20:1,36:1,304:1,96:1,137:1},y4t),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return new G(this.b)},l.Ib=function(){return this.b.c.length==0?"G-unlayered"+Hb(this.a):this.a.c.length==0?"G-layered"+Hb(this.b):"G[layerless"+Hb(this.a)+", layers"+Hb(this.b)+"]"};var g4e=I(au,"LGraph",36),p4e;D(666,1,{}),l.Lf=function(){return this.e.n},l.of=function(e){return X(this.e,e)},l.Mf=function(){return this.e.o},l.Nf=function(){return this.e.p},l.pf=function(e){return qi(this.e,e)},l.Of=function(e){this.e.n.a=e.a,this.e.n.b=e.b},l.Pf=function(e){this.e.o.a=e.a,this.e.o.b=e.b},l.Qf=function(e){this.e.p=e},I(au,"LGraphAdapters/AbstractLShapeAdapter",666),D(473,1,{853:1},z2),l.Rf=function(){var e,n;if(!this.b)for(this.b=C0(this.a.b.c.length),n=new G(this.a.b);n.a0&&kue((qn(n-1,e.length),e.charCodeAt(n-1)),g2e);)--n;if(h> ",e),BH(r)),ni(tu((e.a+="[",e),r.i),"]")),e.a},l.c=!0,l.d=!1;var ICt,OCt,NCt,PCt,FCt,BCt,w4e=I(au,"LPort",12);D(408,1,F0,D4),l.Jc=function(e){Fa(this,e)},l.Kc=function(){var e;return e=new G(this.a.e),new yVt(e)},I(au,"LPort/1",408),D(1309,1,wa,yVt),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(et(this.a),18).c},l.Ob=function(){return lc(this.a)},l.Qb=function(){PS(this.a)},I(au,"LPort/1/1",1309),D(369,1,F0,k6),l.Jc=function(e){Fa(this,e)},l.Kc=function(){var e;return e=new G(this.a.g),new M2t(e)},I(au,"LPort/2",369),D(776,1,wa,M2t),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(et(this.a),18).d},l.Ob=function(){return lc(this.a)},l.Qb=function(){PS(this.a)},I(au,"LPort/2/1",776),D(1302,1,F0,uXt),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return new sd(this)},I(au,"LPort/CombineIter",1302),D(208,1,wa,sd),l.Nb=function(e){Na(this,e)},l.Qb=function(){zWt()},l.Ob=function(){return TS(this)},l.Pb=function(){return lc(this.a)?et(this.a):et(this.b)},I(au,"LPort/CombineIter/1",208),D(1303,1,t0,fb),l.Lb=function(e){return cee(e)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).g.c.length!=0},I(au,"LPort/lambda$0$Type",1303),D(1304,1,t0,cy),l.Lb=function(e){return uee(e)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).e.c.length!=0},I(au,"LPort/lambda$1$Type",1304),D(1305,1,t0,HX),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Hn)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Hn)},I(au,"LPort/lambda$2$Type",1305),D(1306,1,t0,F2),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Jn)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Jn)},I(au,"LPort/lambda$3$Type",1306),D(1307,1,t0,VX),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Er)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Er)},I(au,"LPort/lambda$4$Type",1307),D(1308,1,t0,UX),l.Lb=function(e){return rl(),u(e,12).j==(ve(),Gn)},l.Fb=function(e){return this===e},l.Mb=function(e){return rl(),u(e,12).j==(ve(),Gn)},I(au,"LPort/lambda$5$Type",1308),D(30,304,{3:1,20:1,304:1,30:1,96:1,137:1},eu),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return new G(this.a)},l.Ib=function(){return"L_"+Xo(this.b.b,this,0)+Hb(this.a)},I(au,"Layer",30),D(1330,1,{},CKt),I($p,m2e,1330),D(1334,1,{},Wx),l.Kb=function(e){return Jo(u(e,84))},I($p,"ElkGraphImporter/0methodref$connectableShapeToNode$Type",1334),D(1337,1,{},K9),l.Kb=function(e){return Jo(u(e,84))},I($p,"ElkGraphImporter/1methodref$connectableShapeToNode$Type",1337),D(1331,1,ir,xVt),l.Cd=function(e){V1e(this.a,u(e,123))},I($p,q8t,1331),D(1332,1,ir,kVt),l.Cd=function(e){V1e(this.a,u(e,123))},I($p,v2e,1332),D(1333,1,{},NB),l.Kb=function(e){return new ln(null,new gn(zyt(u(e,74)),16))},I($p,y2e,1333),D(1335,1,Kr,EVt),l.Mb=function(e){return Min(this.a,u(e,27))},I($p,x2e,1335),D(1336,1,{},O8),l.Kb=function(e){return new ln(null,new gn(Wln(u(e,74)),16))},I($p,"ElkGraphImporter/lambda$5$Type",1336),D(1338,1,Kr,TVt),l.Mb=function(e){return Iin(this.a,u(e,27))},I($p,"ElkGraphImporter/lambda$7$Type",1338),D(1339,1,Kr,GX),l.Mb=function(e){return chn(u(e,74))},I($p,"ElkGraphImporter/lambda$8$Type",1339),D(1297,1,{},d6);var m4e;I($p,"ElkGraphLayoutTransferrer",1297),D(1298,1,Kr,CVt),l.Mb=function(e){return yan(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$0$Type",1298),D(1299,1,ir,SVt),l.Cd=function(e){$M(),ge(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$1$Type",1299),D(1300,1,Kr,_Vt),l.Mb=function(e){return san(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$2$Type",1300),D(1301,1,ir,AVt),l.Cd=function(e){$M(),ge(this.a,u(e,18))},I($p,"ElkGraphLayoutTransferrer/lambda$3$Type",1301),D(819,1,{},wvt),I(Yn,"BiLinkedHashMultiMap",819),D(1550,1,zi,N8),l.Kf=function(e,n){Kgn(u(e,36),n)},I(Yn,"CommentNodeMarginCalculator",1550),D(1551,1,{},KX),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"CommentNodeMarginCalculator/lambda$0$Type",1551),D(1552,1,ir,WX),l.Cd=function(e){K7n(u(e,10))},I(Yn,"CommentNodeMarginCalculator/lambda$1$Type",1552),D(1553,1,zi,YX),l.Kf=function(e,n){Qkn(u(e,36),n)},I(Yn,"CommentPostprocessor",1553),D(1554,1,zi,XX),l.Kf=function(e,n){vCn(u(e,36),n)},I(Yn,"CommentPreprocessor",1554),D(1555,1,zi,QX),l.Kf=function(e,n){gkn(u(e,36),n)},I(Yn,"ConstraintsPostprocessor",1555),D(1556,1,zi,JX),l.Kf=function(e,n){xpn(u(e,36),n)},I(Yn,"EdgeAndLayerConstraintEdgeReverser",1556),D(1557,1,zi,ZX),l.Kf=function(e,n){hwn(u(e,36),n)},I(Yn,"EndLabelPostprocessor",1557),D(1558,1,{},tQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"EndLabelPostprocessor/lambda$0$Type",1558),D(1559,1,Kr,eQ),l.Mb=function(e){return Sdn(u(e,10))},I(Yn,"EndLabelPostprocessor/lambda$1$Type",1559),D(1560,1,ir,nQ),l.Cd=function(e){eyn(u(e,10))},I(Yn,"EndLabelPostprocessor/lambda$2$Type",1560),D(1561,1,zi,rQ),l.Kf=function(e,n){H4n(u(e,36),n)},I(Yn,"EndLabelPreprocessor",1561),D(1562,1,{},RD),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"EndLabelPreprocessor/lambda$0$Type",1562),D(1563,1,ir,XZt),l.Cd=function(e){Vrn(this.a,this.b,this.c,u(e,10))},l.a=0,l.b=0,l.c=!1,I(Yn,"EndLabelPreprocessor/lambda$1$Type",1563),D(1564,1,Kr,iQ),l.Mb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),KT))},I(Yn,"EndLabelPreprocessor/lambda$2$Type",1564),D(1565,1,ir,LVt),l.Cd=function(e){Zr(this.a,u(e,72))},I(Yn,"EndLabelPreprocessor/lambda$3$Type",1565),D(1566,1,Kr,sQ),l.Mb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),$3))},I(Yn,"EndLabelPreprocessor/lambda$4$Type",1566),D(1567,1,ir,DVt),l.Cd=function(e){Zr(this.a,u(e,72))},I(Yn,"EndLabelPreprocessor/lambda$5$Type",1567),D(1615,1,zi,Uet),l.Kf=function(e,n){l2n(u(e,36),n)};var v4e;I(Yn,"EndLabelSorter",1615),D(1616,1,Xr,W9),l.Ne=function(e,n){return Hwn(u(e,465),u(n,465))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"EndLabelSorter/1",1616),D(465,1,{465:1},kne),I(Yn,"EndLabelSorter/LabelGroup",465),D(1617,1,{},PB),l.Kb=function(e){return jM(),new ln(null,new gn(u(e,30).a,16))},I(Yn,"EndLabelSorter/lambda$0$Type",1617),D(1618,1,Kr,Yx),l.Mb=function(e){return jM(),u(e,10).k==(Un(),xs)},I(Yn,"EndLabelSorter/lambda$1$Type",1618),D(1619,1,ir,aQ),l.Cd=function(e){r4n(u(e,10))},I(Yn,"EndLabelSorter/lambda$2$Type",1619),D(1620,1,Kr,oQ),l.Mb=function(e){return jM(),$t(X(u(e,72),(De(),l0)))===$t((cd(),$3))},I(Yn,"EndLabelSorter/lambda$3$Type",1620),D(1621,1,Kr,cQ),l.Mb=function(e){return jM(),$t(X(u(e,72),(De(),l0)))===$t((cd(),KT))},I(Yn,"EndLabelSorter/lambda$4$Type",1621),D(1568,1,zi,uQ),l.Kf=function(e,n){cTn(this,u(e,36))},l.b=0,l.c=0,I(Yn,"FinalSplineBendpointsCalculator",1568),D(1569,1,{},lQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"FinalSplineBendpointsCalculator/lambda$0$Type",1569),D(1570,1,{},Y9),l.Kb=function(e){return new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Yn,"FinalSplineBendpointsCalculator/lambda$1$Type",1570),D(1571,1,Kr,jD),l.Mb=function(e){return!go(u(e,18))},I(Yn,"FinalSplineBendpointsCalculator/lambda$2$Type",1571),D(1572,1,Kr,FB),l.Mb=function(e){return qi(u(e,18),(oe(),Lw))},I(Yn,"FinalSplineBendpointsCalculator/lambda$3$Type",1572),D(1573,1,ir,MVt),l.Cd=function(e){wEn(this.a,u(e,131))},I(Yn,"FinalSplineBendpointsCalculator/lambda$4$Type",1573),D(1574,1,ir,w4),l.Cd=function(e){IO(u(e,18).a)},I(Yn,"FinalSplineBendpointsCalculator/lambda$5$Type",1574),D(803,1,zi,I2t),l.Kf=function(e,n){e9n(this,u(e,36),n)},I(Yn,"GraphTransformer",803),D(517,22,{3:1,34:1,22:1,517:1},Uwt);var dft,KN,y4e=Lr(Yn,"GraphTransformer/Mode",517,Pr,Dhn,hcn),x4e;D(1575,1,zi,m4),l.Kf=function(e,n){E6n(u(e,36),n)},I(Yn,"HierarchicalNodeResizingProcessor",1575),D(1576,1,zi,hQ),l.Kf=function(e,n){qgn(u(e,36),n)},I(Yn,"HierarchicalPortConstraintProcessor",1576),D(1577,1,Xr,Lf),l.Ne=function(e,n){return lmn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"HierarchicalPortConstraintProcessor/NodeComparator",1577),D(1578,1,zi,Xx),l.Kf=function(e,n){h7n(u(e,36),n)},I(Yn,"HierarchicalPortDummySizeProcessor",1578),D(1579,1,zi,fQ),l.Kf=function(e,n){x8n(this,u(e,36),n)},l.a=0,I(Yn,"HierarchicalPortOrthogonalEdgeRouter",1579),D(1580,1,Xr,P8),l.Ne=function(e,n){return Esn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"HierarchicalPortOrthogonalEdgeRouter/1",1580),D(1581,1,Xr,v0),l.Ne=function(e,n){return L0n(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"HierarchicalPortOrthogonalEdgeRouter/2",1581),D(1582,1,zi,dQ),l.Kf=function(e,n){R3n(u(e,36),n)},I(Yn,"HierarchicalPortPositionProcessor",1582),D(1583,1,zi,om),l.Kf=function(e,n){tSn(this,u(e,36))},l.a=0,l.c=0;var XU,QU;I(Yn,"HighDegreeNodeLayeringProcessor",1583),D(580,1,{580:1},gQ),l.b=-1,l.d=-1,I(Yn,"HighDegreeNodeLayeringProcessor/HighDegreeNodeInformation",580),D(1584,1,{},pQ),l.Kb=function(e){return gI(),ua(u(e,10))},l.Fb=function(e){return this===e},I(Yn,"HighDegreeNodeLayeringProcessor/lambda$0$Type",1584),D(1585,1,{},BB),l.Kb=function(e){return gI(),_s(u(e,10))},l.Fb=function(e){return this===e},I(Yn,"HighDegreeNodeLayeringProcessor/lambda$1$Type",1585),D(1591,1,zi,bQ),l.Kf=function(e,n){r7n(this,u(e,36),n)},I(Yn,"HyperedgeDummyMerger",1591),D(804,1,{},Ivt),l.a=!1,l.b=!1,l.c=!1,I(Yn,"HyperedgeDummyMerger/MergeState",804),D(1592,1,{},X9),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"HyperedgeDummyMerger/lambda$0$Type",1592),D(1593,1,{},Q9),l.Kb=function(e){return new ln(null,new gn(u(e,10).j,16))},I(Yn,"HyperedgeDummyMerger/lambda$1$Type",1593),D(1594,1,ir,RB),l.Cd=function(e){u(e,12).p=-1},I(Yn,"HyperedgeDummyMerger/lambda$2$Type",1594),D(1595,1,zi,$D),l.Kf=function(e,n){e7n(u(e,36),n)},I(Yn,"HypernodesProcessor",1595),D(1596,1,zi,Qx),l.Kf=function(e,n){l7n(u(e,36),n)},I(Yn,"InLayerConstraintProcessor",1596),D(1597,1,zi,wQ),l.Kf=function(e,n){rpn(u(e,36),n)},I(Yn,"InnermostNodeMarginCalculator",1597),D(1598,1,zi,jB),l.Kf=function(e,n){pCn(this,u(e,36))},l.a=Vs,l.b=Vs,l.c=Zi,l.d=Zi;var l_n=I(Yn,"InteractiveExternalPortPositioner",1598);D(1599,1,{},$B),l.Kb=function(e){return u(e,18).d.i},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$0$Type",1599),D(1600,1,{},IVt),l.Kb=function(e){return Tsn(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$1$Type",1600),D(1601,1,{},mQ),l.Kb=function(e){return u(e,18).c.i},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$2$Type",1601),D(1602,1,{},OVt),l.Kb=function(e){return Csn(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$3$Type",1602),D(1603,1,{},NVt),l.Kb=function(e){return kan(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$4$Type",1603),D(1604,1,{},PVt),l.Kb=function(e){return Ean(this.a,Ht(e))},l.Fb=function(e){return this===e},I(Yn,"InteractiveExternalPortPositioner/lambda$5$Type",1604),D(81,22,{3:1,34:1,22:1,81:1,196:1},Ns),l.dg=function(){switch(this.g){case 15:return new pR;case 22:return new MJ;case 47:return new NJ;case 28:case 35:return new CQ;case 32:return new N8;case 42:return new YX;case 1:return new XX;case 41:return new QX;case 56:return new I2t((r7(),KN));case 0:return new I2t((r7(),dft));case 2:return new JX;case 54:return new ZX;case 33:return new rQ;case 51:return new uQ;case 55:return new m4;case 13:return new hQ;case 38:return new Xx;case 44:return new fQ;case 40:return new dQ;case 9:return new om;case 49:return new PJt;case 37:return new bQ;case 43:return new $D;case 27:return new Qx;case 30:return new wQ;case 3:return new jB;case 18:return new yQ;case 29:return new xQ;case 5:return new nE;case 50:return new vQ;case 34:return new Lj;case 36:return new v4;case 52:return new Uet;case 11:return new F8;case 7:return new Get;case 39:return new zD;case 45:return new uy;case 16:return new B8;case 10:return new _Xt;case 48:return new zB;case 21:return new qD;case 23:return new Xnt((Hm(),UA));case 8:return new HD;case 12:return new _Q;case 4:return new VD;case 19:return new Ij;case 17:return new IQ;case 53:return new OQ;case 6:return new WB;case 25:return new AKt;case 46:return new BQ;case 31:return new EZt;case 14:return new UQ;case 26:return new BJ;case 20:return new JB;case 24:return new Xnt((Hm(),eK));default:throw at(new zn(jut+(this.f!=null?this.f:""+this.g)))}};var RCt,jCt,$Ct,zCt,qCt,HCt,VCt,UCt,GCt,KCt,B5,JU,ZU,WCt,YCt,XCt,QCt,JCt,ZCt,tSt,CA,eSt,nSt,rSt,iSt,sSt,gft,tG,eG,aSt,nG,rG,iG,vT,k3,E3,oSt,sG,aG,cSt,oG,cG,uSt,lSt,hSt,fSt,uG,pft,WN,lG,hG,fG,dG,dSt,gSt,pSt,bSt,h_n=Lr(Yn,$ut,81,Pr,Bde,lon),k4e;D(1605,1,zi,yQ),l.Kf=function(e,n){dCn(u(e,36),n)},I(Yn,"InvertedPortProcessor",1605),D(1606,1,zi,xQ),l.Kf=function(e,n){uEn(u(e,36),n)},I(Yn,"LabelAndNodeSizeProcessor",1606),D(1607,1,Kr,kQ),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"LabelAndNodeSizeProcessor/lambda$0$Type",1607),D(1608,1,Kr,EQ),l.Mb=function(e){return u(e,10).k==(Un(),Ms)},I(Yn,"LabelAndNodeSizeProcessor/lambda$1$Type",1608),D(1609,1,ir,QZt),l.Cd=function(e){Urn(this.b,this.a,this.c,u(e,10))},l.a=!1,l.c=!1,I(Yn,"LabelAndNodeSizeProcessor/lambda$2$Type",1609),D(1610,1,zi,nE),l.Kf=function(e,n){j9n(u(e,36),n)};var E4e;I(Yn,"LabelDummyInserter",1610),D(1611,1,t0,y0),l.Lb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),GT))},l.Fb=function(e){return this===e},l.Mb=function(e){return $t(X(u(e,72),(De(),l0)))===$t((cd(),GT))},I(Yn,"LabelDummyInserter/1",1611),D(1612,1,zi,vQ),l.Kf=function(e,n){_9n(u(e,36),n)},I(Yn,"LabelDummyRemover",1612),D(1613,1,Kr,sm),l.Mb=function(e){return Ie(Me(X(u(e,72),(De(),r1t))))},I(Yn,"LabelDummyRemover/lambda$0$Type",1613),D(1378,1,zi,Lj),l.Kf=function(e,n){v9n(this,u(e,36),n)},l.a=null;var bft;I(Yn,"LabelDummySwitcher",1378),D(292,1,{292:1},F0e),l.c=0,l.d=null,l.f=0,I(Yn,"LabelDummySwitcher/LabelDummyInfo",292),D(1379,1,{},TQ),l.Kb=function(e){return ok(),new ln(null,new gn(u(e,30).a,16))},I(Yn,"LabelDummySwitcher/lambda$0$Type",1379),D(1380,1,Kr,J9),l.Mb=function(e){return ok(),u(e,10).k==(Un(),Vc)},I(Yn,"LabelDummySwitcher/lambda$1$Type",1380),D(1381,1,{},FVt),l.Kb=function(e){return aan(this.a,u(e,10))},I(Yn,"LabelDummySwitcher/lambda$2$Type",1381),D(1382,1,ir,BVt),l.Cd=function(e){Sln(this.a,u(e,292))},I(Yn,"LabelDummySwitcher/lambda$3$Type",1382),D(1383,1,Xr,Z9),l.Ne=function(e,n){return Xun(u(e,292),u(n,292))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"LabelDummySwitcher/lambda$4$Type",1383),D(802,1,zi,CQ),l.Kf=function(e,n){c0n(u(e,36),n)},I(Yn,"LabelManagementProcessor",802),D(1614,1,zi,v4),l.Kf=function(e,n){jkn(u(e,36),n)},I(Yn,"LabelSideSelector",1614),D(1622,1,zi,F8),l.Kf=function(e,n){S7n(u(e,36),n)},I(Yn,"LayerConstraintPostprocessor",1622),D(1623,1,zi,Get),l.Kf=function(e,n){xxn(u(e,36),n)};var wSt;I(Yn,"LayerConstraintPreprocessor",1623),D(371,22,{3:1,34:1,22:1,371:1},R$);var YN,gG,pG,wft,T4e=Lr(Yn,"LayerConstraintPreprocessor/HiddenNodeConnections",371,Pr,$1n,hon),C4e;D(1624,1,zi,zD),l.Kf=function(e,n){HTn(u(e,36),n)},I(Yn,"LayerSizeAndGraphHeightCalculator",1624),D(1625,1,zi,uy),l.Kf=function(e,n){T6n(u(e,36),n)},I(Yn,"LongEdgeJoiner",1625),D(1626,1,zi,B8),l.Kf=function(e,n){vTn(u(e,36),n)},I(Yn,"LongEdgeSplitter",1626),D(1627,1,zi,_Xt),l.Kf=function(e,n){tCn(this,u(e,36),n)},l.e=0,l.f=0,l.j=0,l.k=0,l.n=0,l.o=0;var S4e,_4e;I(Yn,"NodePromotion",1627),D(1628,1,Xr,SQ),l.Ne=function(e,n){return dbn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"NodePromotion/1",1628),D(1629,1,Xr,tC),l.Ne=function(e,n){return gbn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"NodePromotion/2",1629),D(1630,1,{},Fd),l.Kb=function(e){return u(e,42),vz(),Pn(),!0},l.Fb=function(e){return this===e},I(Yn,"NodePromotion/lambda$0$Type",1630),D(1631,1,{},zVt),l.Kb=function(e){return ufn(this.a,u(e,42))},l.Fb=function(e){return this===e},l.a=0,I(Yn,"NodePromotion/lambda$1$Type",1631),D(1632,1,{},qVt),l.Kb=function(e){return cfn(this.a,u(e,42))},l.Fb=function(e){return this===e},l.a=0,I(Yn,"NodePromotion/lambda$2$Type",1632),D(1633,1,zi,zB),l.Kf=function(e,n){WCn(u(e,36),n)},I(Yn,"NorthSouthPortPostprocessor",1633),D(1634,1,zi,qD),l.Kf=function(e,n){ACn(u(e,36),n)},I(Yn,"NorthSouthPortPreprocessor",1634),D(1635,1,Xr,R8),l.Ne=function(e,n){return Apn(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"NorthSouthPortPreprocessor/lambda$0$Type",1635),D(1636,1,zi,HD),l.Kf=function(e,n){VEn(u(e,36),n)},I(Yn,"PartitionMidprocessor",1636),D(1637,1,Kr,qB),l.Mb=function(e){return qi(u(e,10),(De(),OT))},I(Yn,"PartitionMidprocessor/lambda$0$Type",1637),D(1638,1,ir,HVt),l.Cd=function(e){uhn(this.a,u(e,10))},I(Yn,"PartitionMidprocessor/lambda$1$Type",1638),D(1639,1,zi,_Q),l.Kf=function(e,n){U6n(u(e,36),n)},I(Yn,"PartitionPostprocessor",1639),D(1640,1,zi,VD),l.Kf=function(e,n){sxn(u(e,36),n)},I(Yn,"PartitionPreprocessor",1640),D(1641,1,Kr,AQ),l.Mb=function(e){return qi(u(e,10),(De(),OT))},I(Yn,"PartitionPreprocessor/lambda$0$Type",1641),D(1642,1,{},LQ),l.Kb=function(e){return new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Yn,"PartitionPreprocessor/lambda$1$Type",1642),D(1643,1,Kr,HB),l.Mb=function(e){return Ywn(u(e,18))},I(Yn,"PartitionPreprocessor/lambda$2$Type",1643),D(1644,1,ir,Jx),l.Cd=function(e){Upn(u(e,18))},I(Yn,"PartitionPreprocessor/lambda$3$Type",1644),D(1645,1,zi,Ij),l.Kf=function(e,n){TEn(u(e,36),n)};var mSt,A4e,L4e,D4e,vSt,ySt;I(Yn,"PortListSorter",1645),D(1648,1,Xr,VB),l.Ne=function(e,n){return Sie(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"PortListSorter/lambda$0$Type",1648),D(1650,1,Xr,Zx),l.Ne=function(e,n){return age(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"PortListSorter/lambda$1$Type",1650),D(1646,1,{},DQ),l.Kb=function(e){return g7(),u(e,12).e},I(Yn,"PortListSorter/lambda$2$Type",1646),D(1647,1,{},UD),l.Kb=function(e){return g7(),u(e,12).g},I(Yn,"PortListSorter/lambda$3$Type",1647),D(1649,1,Xr,MQ),l.Ne=function(e,n){return vvn(u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"PortListSorter/lambda$4$Type",1649),D(1651,1,zi,IQ),l.Kf=function(e,n){Nxn(u(e,36),n)},I(Yn,"PortSideProcessor",1651),D(1652,1,zi,OQ),l.Kf=function(e,n){P8n(u(e,36),n)},I(Yn,"ReversedEdgeRestorer",1652),D(1657,1,zi,AKt),l.Kf=function(e,n){evn(this,u(e,36),n)},I(Yn,"SelfLoopPortRestorer",1657),D(1658,1,{},NQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"SelfLoopPortRestorer/lambda$0$Type",1658),D(1659,1,Kr,UB),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SelfLoopPortRestorer/lambda$1$Type",1659),D(1660,1,Kr,PQ),l.Mb=function(e){return qi(u(e,10),(oe(),kv))},I(Yn,"SelfLoopPortRestorer/lambda$2$Type",1660),D(1661,1,{},FQ),l.Kb=function(e){return u(X(u(e,10),(oe(),kv)),337)},I(Yn,"SelfLoopPortRestorer/lambda$3$Type",1661),D(1662,1,ir,jVt),l.Cd=function(e){b4n(this.a,u(e,337))},I(Yn,"SelfLoopPortRestorer/lambda$4$Type",1662),D(805,1,ir,GB),l.Cd=function(e){L4n(u(e,105))},I(Yn,"SelfLoopPortRestorer/lambda$5$Type",805),D(1663,1,zi,BQ),l.Kf=function(e,n){omn(u(e,36),n)},I(Yn,"SelfLoopPostProcessor",1663),D(1664,1,{},RQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"SelfLoopPostProcessor/lambda$0$Type",1664),D(1665,1,Kr,jQ),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SelfLoopPostProcessor/lambda$1$Type",1665),D(1666,1,Kr,$Q),l.Mb=function(e){return qi(u(e,10),(oe(),kv))},I(Yn,"SelfLoopPostProcessor/lambda$2$Type",1666),D(1667,1,ir,KB),l.Cd=function(e){myn(u(e,10))},I(Yn,"SelfLoopPostProcessor/lambda$3$Type",1667),D(1668,1,{},zQ),l.Kb=function(e){return new ln(null,new gn(u(e,105).f,1))},I(Yn,"SelfLoopPostProcessor/lambda$4$Type",1668),D(1669,1,ir,RVt),l.Cd=function(e){V1n(this.a,u(e,340))},I(Yn,"SelfLoopPostProcessor/lambda$5$Type",1669),D(1670,1,Kr,qQ),l.Mb=function(e){return!!u(e,105).i},I(Yn,"SelfLoopPostProcessor/lambda$6$Type",1670),D(1671,1,ir,$Vt),l.Cd=function(e){Vnn(this.a,u(e,105))},I(Yn,"SelfLoopPostProcessor/lambda$7$Type",1671),D(1653,1,zi,WB),l.Kf=function(e,n){u6n(u(e,36),n)},I(Yn,"SelfLoopPreProcessor",1653),D(1654,1,{},YB),l.Kb=function(e){return new ln(null,new gn(u(e,105).f,1))},I(Yn,"SelfLoopPreProcessor/lambda$0$Type",1654),D(1655,1,{},XB),l.Kb=function(e){return u(e,340).a},I(Yn,"SelfLoopPreProcessor/lambda$1$Type",1655),D(1656,1,ir,HQ),l.Cd=function(e){Kin(u(e,18))},I(Yn,"SelfLoopPreProcessor/lambda$2$Type",1656),D(1672,1,zi,EZt),l.Kf=function(e,n){Q3n(this,u(e,36),n)},I(Yn,"SelfLoopRouter",1672),D(1673,1,{},VQ),l.Kb=function(e){return new ln(null,new gn(u(e,30).a,16))},I(Yn,"SelfLoopRouter/lambda$0$Type",1673),D(1674,1,Kr,j8),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SelfLoopRouter/lambda$1$Type",1674),D(1675,1,Kr,t6),l.Mb=function(e){return qi(u(e,10),(oe(),kv))},I(Yn,"SelfLoopRouter/lambda$2$Type",1675),D(1676,1,{},eC),l.Kb=function(e){return u(X(u(e,10),(oe(),kv)),337)},I(Yn,"SelfLoopRouter/lambda$3$Type",1676),D(1677,1,ir,oXt),l.Cd=function(e){rhn(this.a,this.b,u(e,337))},I(Yn,"SelfLoopRouter/lambda$4$Type",1677),D(1678,1,zi,UQ),l.Kf=function(e,n){_kn(u(e,36),n)},I(Yn,"SemiInteractiveCrossMinProcessor",1678),D(1679,1,Kr,GD),l.Mb=function(e){return u(e,10).k==(Un(),xs)},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$0$Type",1679),D(1680,1,Kr,nC),l.Mb=function(e){return $te(u(e,10))._b((De(),I3))},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$1$Type",1680),D(1681,1,Xr,KD),l.Ne=function(e,n){return Vgn(u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$2$Type",1681),D(1682,1,{},QB),l.Ve=function(e,n){return lhn(u(e,10),u(n,10))},I(Yn,"SemiInteractiveCrossMinProcessor/lambda$3$Type",1682),D(1684,1,zi,JB),l.Kf=function(e,n){Q7n(u(e,36),n)},I(Yn,"SortByInputModelProcessor",1684),D(1685,1,Kr,GQ),l.Mb=function(e){return u(e,12).g.c.length!=0},I(Yn,"SortByInputModelProcessor/lambda$0$Type",1685),D(1686,1,ir,VVt),l.Cd=function(e){N4n(this.a,u(e,12))},I(Yn,"SortByInputModelProcessor/lambda$1$Type",1686),D(1759,817,{},Xoe),l.df=function(e){var n,r,s,o;switch(this.c=e,this.a.g){case 2:n=new fe,ms(_i(new ln(null,new gn(this.c.a.b,16)),new rJ),new bXt(this,n)),OO(this,new WQ),Cu(n,new ZB),n.c.length=0,ms(_i(new ln(null,new gn(this.c.a.b,16)),new tR),new GVt(n)),OO(this,new YQ),Cu(n,new XQ),n.c.length=0,r=QQt(hat(Ny(new ln(null,new gn(this.c.a.b,16)),new KVt(this))),new QQ),ms(new ln(null,new gn(this.c.a.a,16)),new lXt(r,n)),OO(this,new ZQ),Cu(n,new eR),n.c.length=0;break;case 3:s=new fe,OO(this,new KQ),o=QQt(hat(Ny(new ln(null,new gn(this.c.a.b,16)),new UVt(this))),new JQ),ms(_i(new ln(null,new gn(this.c.a.b,16)),new tJ),new fXt(o,s)),OO(this,new eJ),Cu(s,new nJ),s.c.length=0;break;default:throw at(new pKt)}},l.b=0,I(Gs,"EdgeAwareScanlineConstraintCalculation",1759),D(1760,1,t0,KQ),l.Lb=function(e){return Lt(u(e,60).g,154)},l.Fb=function(e){return this===e},l.Mb=function(e){return Lt(u(e,60).g,154)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$0$Type",1760),D(1761,1,{},UVt),l.Ye=function(e){return w5n(this.a,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$1$Type",1761),D(1769,1,kV,cXt),l.de=function(){x_(this.a,this.b,-1)},l.b=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$10$Type",1769),D(1771,1,t0,WQ),l.Lb=function(e){return Lt(u(e,60).g,154)},l.Fb=function(e){return this===e},l.Mb=function(e){return Lt(u(e,60).g,154)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$11$Type",1771),D(1772,1,ir,ZB),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$12$Type",1772),D(1773,1,Kr,tR),l.Mb=function(e){return Lt(u(e,60).g,10)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$13$Type",1773),D(1775,1,ir,GVt),l.Cd=function(e){B2n(this.a,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$14$Type",1775),D(1774,1,kV,dXt),l.de=function(){x_(this.b,this.a,-1)},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$15$Type",1774),D(1776,1,t0,YQ),l.Lb=function(e){return Lt(u(e,60).g,10)},l.Fb=function(e){return this===e},l.Mb=function(e){return Lt(u(e,60).g,10)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$16$Type",1776),D(1777,1,ir,XQ),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$17$Type",1777),D(1778,1,{},KVt),l.Ye=function(e){return m5n(this.a,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$18$Type",1778),D(1779,1,{},QQ),l.We=function(){return 0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$19$Type",1779),D(1762,1,{},JQ),l.We=function(){return 0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$2$Type",1762),D(1781,1,ir,lXt),l.Cd=function(e){qun(this.a,this.b,u(e,316))},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$20$Type",1781),D(1780,1,kV,hXt),l.de=function(){fde(this.a,this.b,-1)},l.b=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$21$Type",1780),D(1782,1,t0,ZQ),l.Lb=function(e){return u(e,60),!0},l.Fb=function(e){return this===e},l.Mb=function(e){return u(e,60),!0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$22$Type",1782),D(1783,1,ir,eR),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$23$Type",1783),D(1763,1,Kr,tJ),l.Mb=function(e){return Lt(u(e,60).g,10)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$3$Type",1763),D(1765,1,ir,fXt),l.Cd=function(e){Hun(this.a,this.b,u(e,60))},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$4$Type",1765),D(1764,1,kV,gXt),l.de=function(){x_(this.b,this.a,-1)},l.a=0,I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$5$Type",1764),D(1766,1,t0,eJ),l.Lb=function(e){return u(e,60),!0},l.Fb=function(e){return this===e},l.Mb=function(e){return u(e,60),!0},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$6$Type",1766),D(1767,1,ir,nJ),l.Cd=function(e){u(e,380).de()},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$7$Type",1767),D(1768,1,Kr,rJ),l.Mb=function(e){return Lt(u(e,60).g,154)},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$8$Type",1768),D(1770,1,ir,bXt),l.Cd=function(e){ogn(this.a,this.b,u(e,60))},I(Gs,"EdgeAwareScanlineConstraintCalculation/lambda$9$Type",1770),D(1586,1,zi,PJt),l.Kf=function(e,n){CTn(this,u(e,36),n)};var M4e;I(Gs,"HorizontalGraphCompactor",1586),D(1587,1,{},WVt),l.ff=function(e,n){var r,s,o;return e4t(e,n)||(r=J4(e),s=J4(n),r&&r.k==(Un(),Ms)||s&&s.k==(Un(),Ms))?0:(o=u(X(this.a.a,(oe(),G5)),312),Lsn(o,r?r.k:(Un(),fa),s?s.k:(Un(),fa)))},l.gf=function(e,n){var r,s,o;return e4t(e,n)?1:(r=J4(e),s=J4(n),o=u(X(this.a.a,(oe(),G5)),312),Gmt(o,r?r.k:(Un(),fa),s?s.k:(Un(),fa)))},I(Gs,"HorizontalGraphCompactor/1",1587),D(1588,1,{},nR),l.ef=function(e,n){return ZC(),e.a.i==0},I(Gs,"HorizontalGraphCompactor/lambda$0$Type",1588),D(1589,1,{},YVt),l.ef=function(e,n){return dhn(this.a,e,n)},I(Gs,"HorizontalGraphCompactor/lambda$1$Type",1589),D(1730,1,{},Cae);var I4e,O4e;I(Gs,"LGraphToCGraphTransformer",1730),D(1738,1,Kr,rC),l.Mb=function(e){return e!=null},I(Gs,"LGraphToCGraphTransformer/0methodref$nonNull$Type",1738),D(1731,1,{},iJ),l.Kb=function(e){return Bf(),rc(X(u(u(e,60).g,10),(oe(),Li)))},I(Gs,"LGraphToCGraphTransformer/lambda$0$Type",1731),D(1732,1,{},sJ),l.Kb=function(e){return Bf(),Fue(u(u(e,60).g,154))},I(Gs,"LGraphToCGraphTransformer/lambda$1$Type",1732),D(1741,1,Kr,rR),l.Mb=function(e){return Bf(),Lt(u(e,60).g,10)},I(Gs,"LGraphToCGraphTransformer/lambda$10$Type",1741),D(1742,1,ir,aJ),l.Cd=function(e){mhn(u(e,60))},I(Gs,"LGraphToCGraphTransformer/lambda$11$Type",1742),D(1743,1,Kr,oJ),l.Mb=function(e){return Bf(),Lt(u(e,60).g,154)},I(Gs,"LGraphToCGraphTransformer/lambda$12$Type",1743),D(1747,1,ir,cJ),l.Cd=function(e){Ybn(u(e,60))},I(Gs,"LGraphToCGraphTransformer/lambda$13$Type",1747),D(1744,1,ir,XVt),l.Cd=function(e){kin(this.a,u(e,8))},l.a=0,I(Gs,"LGraphToCGraphTransformer/lambda$14$Type",1744),D(1745,1,ir,QVt),l.Cd=function(e){Tin(this.a,u(e,116))},l.a=0,I(Gs,"LGraphToCGraphTransformer/lambda$15$Type",1745),D(1746,1,ir,JVt),l.Cd=function(e){Ein(this.a,u(e,8))},l.a=0,I(Gs,"LGraphToCGraphTransformer/lambda$16$Type",1746),D(1748,1,{},uJ),l.Kb=function(e){return Bf(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Gs,"LGraphToCGraphTransformer/lambda$17$Type",1748),D(1749,1,Kr,lJ),l.Mb=function(e){return Bf(),go(u(e,18))},I(Gs,"LGraphToCGraphTransformer/lambda$18$Type",1749),D(1750,1,ir,ZVt),l.Cd=function(e){j0n(this.a,u(e,18))},I(Gs,"LGraphToCGraphTransformer/lambda$19$Type",1750),D(1734,1,ir,tUt),l.Cd=function(e){f1n(this.a,u(e,154))},I(Gs,"LGraphToCGraphTransformer/lambda$2$Type",1734),D(1751,1,{},hJ),l.Kb=function(e){return Bf(),new ln(null,new gn(u(e,30).a,16))},I(Gs,"LGraphToCGraphTransformer/lambda$20$Type",1751),D(1752,1,{},iR),l.Kb=function(e){return Bf(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Gs,"LGraphToCGraphTransformer/lambda$21$Type",1752),D(1753,1,{},fJ),l.Kb=function(e){return Bf(),u(X(u(e,18),(oe(),Lw)),15)},I(Gs,"LGraphToCGraphTransformer/lambda$22$Type",1753),D(1754,1,Kr,sR),l.Mb=function(e){return Dsn(u(e,15))},I(Gs,"LGraphToCGraphTransformer/lambda$23$Type",1754),D(1755,1,ir,eUt),l.Cd=function(e){a5n(this.a,u(e,15))},I(Gs,"LGraphToCGraphTransformer/lambda$24$Type",1755),D(1733,1,ir,wXt),l.Cd=function(e){udn(this.a,this.b,u(e,154))},I(Gs,"LGraphToCGraphTransformer/lambda$3$Type",1733),D(1735,1,{},dJ),l.Kb=function(e){return Bf(),new ln(null,new gn(u(e,30).a,16))},I(Gs,"LGraphToCGraphTransformer/lambda$4$Type",1735),D(1736,1,{},gJ),l.Kb=function(e){return Bf(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Gs,"LGraphToCGraphTransformer/lambda$5$Type",1736),D(1737,1,{},pJ),l.Kb=function(e){return Bf(),u(X(u(e,18),(oe(),Lw)),15)},I(Gs,"LGraphToCGraphTransformer/lambda$6$Type",1737),D(1739,1,ir,nUt),l.Cd=function(e){v5n(this.a,u(e,15))},I(Gs,"LGraphToCGraphTransformer/lambda$8$Type",1739),D(1740,1,ir,mXt),l.Cd=function(e){Win(this.a,this.b,u(e,154))},I(Gs,"LGraphToCGraphTransformer/lambda$9$Type",1740),D(1729,1,{},iC),l.cf=function(e){var n,r,s,o,h;for(this.a=e,this.d=new znt,this.c=Vt(Z9t,Ln,125,this.a.a.a.c.length,0,1),this.b=0,r=new G(this.a.a.a);r.a=tt&&(ge(h,he(A)),At=b.Math.max(At,Bt[A-1]-P),m+=J,ht+=Bt[A-1]-ht,P=Bt[A-1],J=k[A]),J=b.Math.max(J,k[A]),++A;m+=J}U=b.Math.min(1/At,1/n.b/m),U>s&&(s=U,r=h)}return r},l.pg=function(){return!1},I(i0,"MSDCutIndexHeuristic",816),D(1683,1,zi,BJ),l.Kf=function(e,n){A7n(u(e,36),n)},I(i0,"SingleEdgeGraphWrapper",1683),D(232,22,{3:1,34:1,22:1,232:1},oS);var j5,kT,ET,T3,SA,$5,TT=Lr(Hc,"CenterEdgeLabelPlacementStrategy",232,Pr,d0n,pon),U4e;D(431,22,{3:1,34:1,22:1,431:1},Kwt);var kSt,Aft,ESt=Lr(Hc,"ConstraintCalculationStrategy",431,Pr,Ohn,bon),G4e;D(322,22,{3:1,34:1,22:1,322:1,188:1,196:1},xrt),l.dg=function(){return y1e(this)},l.qg=function(){return y1e(this)};var QN,_A,TSt,CSt=Lr(Hc,"CrossingMinimizationStrategy",322,Pr,_fn,won),K4e;D(351,22,{3:1,34:1,22:1,351:1},krt);var SSt,Lft,yG,_St=Lr(Hc,"CuttingStrategy",351,Pr,Afn,mon),W4e;D(348,22,{3:1,34:1,22:1,348:1,188:1,196:1},VM),l.dg=function(){return lde(this)},l.qg=function(){return lde(this)};var ASt,Dft,CT,Mft,ST,LSt=Lr(Hc,"CycleBreakingStrategy",348,Pr,Mdn,von),Y4e;D(428,22,{3:1,34:1,22:1,428:1},Wwt);var xG,DSt,MSt=Lr(Hc,"DirectionCongruency",428,Pr,Ihn,yon),X4e;D(459,22,{3:1,34:1,22:1,459:1},Ert);var _T,Ift,z5,Q4e=Lr(Hc,"EdgeConstraint",459,Pr,Lfn,_on),J4e;D(283,22,{3:1,34:1,22:1,283:1},cS);var Oft,Nft,Pft,Fft,kG,Bft,ISt=Lr(Hc,"EdgeLabelSideSelection",283,Pr,l0n,Aon),Z4e;D(487,22,{3:1,34:1,22:1,487:1},Ywt);var EG,OSt,NSt=Lr(Hc,"EdgeStraighteningStrategy",487,Pr,Mhn,Lon),t5e;D(281,22,{3:1,34:1,22:1,281:1},uS);var Rft,PSt,FSt,TG,BSt,RSt,jSt=Lr(Hc,"FixedAlignment",281,Pr,h0n,Son),e5e;D(282,22,{3:1,34:1,22:1,282:1},lS);var $St,zSt,qSt,HSt,AA,VSt,USt=Lr(Hc,"GraphCompactionStrategy",282,Pr,f0n,xon),n5e;D(259,22,{3:1,34:1,22:1,259:1},ky);var AT,CG,LT,Uh,LA,SG,DT,q5,_G,DA,jft=Lr(Hc,"GraphProperties",259,Pr,Xgn,kon),r5e;D(298,22,{3:1,34:1,22:1,298:1},Trt);var JN,$ft,zft,qft=Lr(Hc,"GreedySwitchType",298,Pr,Dfn,Eon),i5e;D(311,22,{3:1,34:1,22:1,311:1},Crt);var qk,ZN,H5,s5e=Lr(Hc,"InLayerConstraint",311,Pr,Mfn,Ton),a5e;D(429,22,{3:1,34:1,22:1,429:1},Xwt);var Hft,GSt,KSt=Lr(Hc,"InteractiveReferencePoint",429,Pr,jhn,Con),o5e,WSt,Hk,vv,AG,YSt,XSt,LG,QSt,tP,DG,MA,Vk,$g,Vft,MG,Dc,JSt,i2,lu,Uft,Gft,eP,Aw,yv,Uk,ZSt,Gk,nP,C3,N1,gf,Kft,V5,Pi,Li,t_t,e_t,n_t,r_t,i_t,Wft,IG,ml,xv,Yft,Kk,IA,vd,U5,kv,G5,K5,MT,Lw,s_t,Xft,Qft,Wk;D(171,22,{3:1,34:1,22:1,171:1},UM);var OA,s2,NA,S3,rP,a_t=Lr(Hc,"LayerConstraint",171,Pr,Odn,Don),c5e;D(859,1,uf,Qet),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,nEt),""),"Direction Congruency"),"Specifies how drawings of the same graph with different layout directions compare to each other: either a natural reading direction is preserved or the drawings are rotated versions of each other."),b_t),(Fp(),ts)),MSt),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,rEt),""),"Feedback Edges"),"Whether feedback edges should be highlighted by routing around the nodes."),(Pn(),!1)),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,BV),""),"Interactive Reference Point"),"Determines which point of a node is considered by interactive layout phases."),k_t),ts),KSt),en(_n)))),Bs(e,BV,Hut,nxe),Bs(e,BV,Z_,exe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,iEt),""),"Merge Edges"),"Edges that have no ports are merged so they touch the connected nodes at the same points. When this option is disabled, one port is created for each edge directly connected to a node. When it is enabled, all such incoming edges share an input port, and all outgoing edges share an output port."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,sEt),""),"Merge Hierarchy-Crossing Edges"),"If hierarchical layout is active, hierarchy-crossing edges use as few hierarchical ports as possible. They are broken by the algorithm, with hierarchical ports inserted as required. Usually, one such port is created for each edge at each hierarchy crossing point. With this option set to true, we try to create as few hierarchical ports as possible in the process. In particular, all edges that form a hyperedge can share a port."),!0),oa),ys),en(_n)))),Qe(e,new He(krn(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,aEt),""),"Allow Non-Flow Ports To Switch Sides"),"Specifies whether non-flow ports may switch sides if their node's port constraints are either FIXED_SIDE or FIXED_ORDER. A non-flow port is a port on a side that is not part of the currently configured layout flow. For instance, given a left-to-right layout direction, north and south ports would be considered non-flow ports. Further note that the underlying criterium whether to switch sides or not solely relies on the minimization of edge crossings. Hence, edge length and other aesthetics criteria are not addressed."),!1),oa),ys),en(Bw)),lt(ut(Pe,1),ue,2,6,["org.eclipse.elk.layered.northOrSouthPort"])))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,oEt),""),"Port Sorting Strategy"),"Only relevant for nodes with FIXED_SIDE port constraints. Determines the way a node's ports are distributed on the sides of a node if their order is not prescribed. The option is set on parent nodes."),D_t),ts),jAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,cEt),""),"Thoroughness"),"How much effort should be spent to produce a nice layout."),he(7)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,uEt),""),"Add Unnecessary Bendpoints"),"Adds bend points even if an edge does not change direction. If true, each long edge dummy will contribute a bend point to its edges and hierarchy-crossing edges will always get a bend point where they cross hierarchy boundaries. By default, bend points are only added where an edge changes direction."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,lEt),""),"Generate Position and Layer IDs"),"If enabled position id and layer id are generated, which are usually only used internally when setting the interactiveLayout option. This option should be specified on the root node."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Hut),"cycleBreaking"),"Cycle Breaking Strategy"),"Strategy for cycle breaking. Cycle breaking looks for cycles in the graph and determines which edges to reverse to break the cycles. Reversed edges will end up pointing to the opposite direction of regular edges (that is, reversed edges will point left if edges usually point right)."),p_t),ts),LSt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,kN),dlt),"Node Layering Strategy"),"Strategy for node layering."),C_t),ts),_At),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,hEt),dlt),"Layer Constraint"),"Determines a constraint on the placement of the node regarding the layering."),E_t),ts),a_t),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,fEt),dlt),"Layer Choice Constraint"),"Allows to set a constraint regarding the layer placement of a node. Let i be the value of teh constraint. Assumed the drawing has n layers and i < n. If set to i, it expresses that the node should be placed in i-th layer. Should i>=n be true then the node is placed in the last layer of the drawing. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,dEt),dlt),"Layer ID"),"Layer identifier that was calculated by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),he(-1)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Vut),I2e),"Upper Bound On Width [MinWidth Layerer]"),"Defines a loose upper bound on the width of the MinWidth layerer. If set to '-1' multiple values are tested and the best result is selected."),he(4)),ac),Ra),en(_n)))),Bs(e,Vut,kN,uxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Uut),I2e),"Upper Layer Estimation Scaling Factor [MinWidth Layerer]"),"Multiplied with Upper Bound On Width for defining an upper bound on the width of layers which haven't been determined yet, but whose maximum width had been (roughly) estimated by the MinWidth algorithm. Compensates for too high estimations. If set to '-1' multiple values are tested and the best result is selected."),he(2)),ac),Ra),en(_n)))),Bs(e,Uut,kN,hxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Gut),O2e),"Node Promotion Strategy"),"Reduces number of dummy nodes after layering phase (if possible)."),T_t),ts),FAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Kut),O2e),"Max Node Promotion Iterations"),"Limits the number of iterations for node promotion."),he(0)),ac),Ra),en(_n)))),Bs(e,Kut,Gut,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Wut),"layering.coffmanGraham"),"Layer Bound"),"The maximum number of nodes allowed per layer."),he(xi)),ac),Ra),en(_n)))),Bs(e,Wut,kN,ixe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Z_),iT),"Crossing Minimization Strategy"),"Strategy for crossing minimization."),g_t),ts),CSt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,gEt),iT),"Force Node Model Order"),"The node order given by the model does not change to produce a better layout. E.g. if node A is before node B in the model this is not changed during crossing minimization. This assumes that the node model order is already respected before crossing minimization. This can be achieved by setting considerModelOrder.strategy to NODES_AND_EDGES."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Yut),iT),"Hierarchical Sweepiness"),"How likely it is to use cross-hierarchy (1) vs bottom-up (-1)."),.1),Wa),zs),en(_n)))),Bs(e,Yut,XV,A5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Xut),iT),"Semi-Interactive Crossing Minimization"),"Preserves the order of nodes within a layer but still minimizes crossings between edges connecting long edge dummies. Derives the desired order from positions specified by the 'org.eclipse.elk.position' layout option. Requires a crossing minimization strategy that is able to process 'in-layer' constraints."),!1),oa),ys),en(_n)))),Bs(e,Xut,Z_,N5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,pEt),iT),"In Layer Predecessor of"),"Allows to set a constraint which specifies of which node the current node is the predecessor. If set to 's' then the node is the predecessor of 's' and is in the same layer"),null),ix),Pe),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,bEt),iT),"In Layer Successor of"),"Allows to set a constraint which specifies of which node the current node is the successor. If set to 's' then the node is the successor of 's' and is in the same layer"),null),ix),Pe),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,wEt),iT),"Position Choice Constraint"),"Allows to set a constraint regarding the position placement of a node in a layer. Assumed the layer in which the node placed includes n other nodes and i < n. If set to i, it expresses that the node should be placed at the i-th position. Should i>=n be true then the node is placed at the last position in the layer. Note that this option is not part of any of ELK Layered's default configurations but is only evaluated as part of the `InteractiveLayeredGraphVisitor`, which must be applied manually or used via the `DiagramLayoutEngine."),null),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,mEt),iT),"Position ID"),"Position within a layer that was determined by ELK Layered for a node. This is only generated if interactiveLayot or generatePositionAndLayerIds is set."),he(-1)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,vEt),N2e),"Greedy Switch Activation Threshold"),"By default it is decided automatically if the greedy switch is activated or not. The decision is based on whether the size of the input graph (without dummy nodes) is smaller than the value of this option. A '0' enforces the activation."),he(40)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Qut),N2e),"Greedy Switch Crossing Minimization"),"Greedy Switch strategy for crossing minimization. The greedy switch heuristic is executed after the regular crossing minimization as a post-processor. Note that if 'hierarchyHandling' is set to 'INCLUDE_CHILDREN', the 'greedySwitchHierarchical.type' option must be used."),d_t),ts),qft),en(_n)))),Bs(e,Qut,Z_,S5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,RV),"crossingMinimization.greedySwitchHierarchical"),"Greedy Switch Crossing Minimization (hierarchical)"),"Activates the greedy switch heuristic in case hierarchical layout is used. The differences to the non-hierarchical case (see 'greedySwitch.type') are: 1) greedy switch is inactive by default, 3) only the option value set on the node at which hierarchical layout starts is relevant, and 2) if it's activated by the user, it properly addresses hierarchy-crossing edges."),f_t),ts),qft),en(_n)))),Bs(e,RV,Z_,E5e),Bs(e,RV,XV,T5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,A5),P2e),"Node Placement Strategy"),"Strategy for node placement."),L_t),ts),MAt),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,jV),P2e),"Favor Straight Edges Over Balancing"),"Favor straight edges over a balanced node placement. The default behavior is determined automatically based on the used 'edgeRouting'. For an orthogonal style it is set to true, for all other styles to false."),oa),ys),en(_n)))),Bs(e,jV,A5,kxe),Bs(e,jV,A5,Exe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Jut),F2e),"BK Edge Straightening"),"Specifies whether the Brandes Koepf node placer tries to increase the number of straight edges at the expense of diagram size. There is a subtle difference to the 'favorStraightEdges' option, which decides whether a balanced placement of the nodes is desired, or not. In bk terms this means combining the four alignments into a single balanced one, or not. This option on the other hand tries to straighten additional edges during the creation of each of the four alignments."),S_t),ts),NSt),en(_n)))),Bs(e,Jut,A5,mxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Zut),F2e),"BK Fixed Alignment"),"Tells the BK node placer to use a certain alignment (out of its four) instead of the one producing the smallest height, or the combination of all four."),__t),ts),jSt),en(_n)))),Bs(e,Zut,A5,yxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,tlt),"nodePlacement.linearSegments"),"Linear Segments Deflection Dampening"),"Dampens the movement of nodes to keep the diagram from getting too large."),.3),Wa),zs),en(_n)))),Bs(e,tlt,A5,Cxe),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,elt),"nodePlacement.networkSimplex"),"Node Flexibility"),"Aims at shorter and straighter edges. Two configurations are possible: (a) allow ports to move freely on the side they are assigned to (the order is always defined beforehand), (b) additionally allow to enlarge a node wherever it helps. If this option is not configured for a node, the 'nodeFlexibility.default' value is used, which is specified for the node's parent."),ts),v1t),en(Qs)))),Bs(e,elt,A5,Lxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,nlt),"nodePlacement.networkSimplex.nodeFlexibility"),"Node Flexibility Default"),"Default value of the 'nodeFlexibility' option for the children of a hierarchical node."),A_t),ts),v1t),en(_n)))),Bs(e,nlt,A5,Axe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,yEt),B2e),"Self-Loop Distribution"),"Alter the distribution of the loops around the node. It only takes effect for PortConstraints.FREE."),v_t),ts),qAt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,xEt),B2e),"Self-Loop Ordering"),"Alter the ordering of the loops they can either be stacked or sequenced. It only takes effect for PortConstraints.FREE."),y_t),ts),HAt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,$V),"edgeRouting.splines"),"Spline Routing Mode"),"Specifies the way control points are assembled for each individual edge. CONSERVATIVE ensures that edges are properly routed around the nodes but feels rather orthogonal at times. SLOPPY uses fewer control points to obtain curvier edge routes but may result in edges overlapping nodes."),x_t),ts),UAt),en(_n)))),Bs(e,$V,EN,U5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,zV),"edgeRouting.splines.sloppy"),"Sloppy Spline Layer Spacing Factor"),"Spacing factor for routing area between layers when using sloppy spline routing."),.2),Wa),zs),en(_n)))),Bs(e,zV,EN,K5e),Bs(e,zV,$V,W5e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,rlt),"edgeRouting.polyline"),"Sloped Edge Zone Width"),"Width of the strip to the left and to the right of each layer where the polyline edge router is allowed to refrain from ensuring that edges are routed horizontally. This prevents awkward bend points for nodes that extent almost to the edge of their layer."),2),Wa),zs),en(_n)))),Bs(e,rlt,EN,z5e),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,kEt),bd),"Spacing Base Value"),"An optional base value for all other layout options of the 'spacing' group. It can be used to conveniently alter the overall 'spaciousness' of the drawing. Whenever an explicit value is set for the other layout options, this base value will have no effect. The base value is not inherited, i.e. it must be set for each hierarchical node."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,EEt),bd),"Edge Node Between Layers Spacing"),"The spacing to be preserved between nodes and edges that are routed next to the node's layer. For the spacing between nodes and edges that cross the node's layer 'spacing.edgeNode' is used."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,TEt),bd),"Edge Edge Between Layer Spacing"),"Spacing to be preserved between pairs of edges that are routed between the same pair of layers. Note that 'spacing.edgeEdge' is used for the spacing between pairs of edges crossing the same layer."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,CEt),bd),"Node Node Between Layers Spacing"),"The spacing to be preserved between any pair of nodes of two adjacent layers. Note that 'spacing.nodeNode' is used for the spacing between nodes within the layer itself."),20),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,SEt),FEt),"Direction Priority"),"Defines how important it is to have a certain edge point into the direction of the overall layout. This option is evaluated during the cycle breaking phase."),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_Et),FEt),"Shortness Priority"),"Defines how important it is to keep an edge as short as possible. This option is evaluated during the layering phase."),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,AEt),FEt),"Straightness Priority"),"Defines how important it is to keep an edge straight, i.e. aligned with one of the two axes. This option is evaluated during node placement."),he(0)),ac),Ra),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ilt),BEt),Zbe),"Tries to further compact components (disconnected sub-graphs)."),!1),oa),ys),en(_n)))),Bs(e,ilt,W_,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,LEt),R2e),"Post Compaction Strategy"),j2e),c_t),ts),USt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,DEt),R2e),"Post Compaction Constraint Calculation"),j2e),o_t),ts),ESt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,qV),REt),"High Degree Node Treatment"),"Makes room around high degree nodes to place leafs and trees."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,slt),REt),"High Degree Node Threshold"),"Whether a node is considered to have a high degree."),he(16)),ac),Ra),en(_n)))),Bs(e,slt,qV,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,alt),REt),"High Degree Node Maximum Tree Height"),"Maximum height of a subtree connected to a high degree node to be moved to separate layers."),he(5)),ac),Ra),en(_n)))),Bs(e,alt,qV,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Bg),jEt),"Graph Wrapping Strategy"),"For certain graphs and certain prescribed drawing areas it may be desirable to split the laid out graph into chunks that are placed side by side. The edges that connect different chunks are 'wrapped' around from the end of one chunk to the start of the other chunk. The points between the chunks are referred to as 'cuts'."),O_t),ts),YAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,HV),jEt),"Additional Wrapped Edges Spacing"),"To visually separate edges that are wrapped from regularly routed edges an additional spacing value can be specified in form of this layout option. The spacing is added to the regular edgeNode spacing."),10),Wa),zs),en(_n)))),Bs(e,HV,Bg,qxe),Bs(e,HV,Bg,Hxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,VV),jEt),"Correction Factor for Wrapping"),"At times and for certain types of graphs the executed wrapping may produce results that are consistently biased in the same fashion: either wrapping to often or to rarely. This factor can be used to correct the bias. Internally, it is simply multiplied with the 'aspect ratio' layout option."),1),Wa),zs),en(_n)))),Bs(e,VV,Bg,Uxe),Bs(e,VV,Bg,Gxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,tA),$2e),"Cutting Strategy"),"The strategy by which the layer indexes are determined at which the layering crumbles into chunks."),I_t),ts),_St),en(_n)))),Bs(e,tA,Bg,Jxe),Bs(e,tA,Bg,Zxe),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,olt),$2e),"Manually Specified Cuts"),"Allows the user to specify her own cuts for a certain graph."),xd),Vh),en(_n)))),Bs(e,olt,tA,Wxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,clt),"wrapping.cutting.msd"),"MSD Freedom"),"The MSD cutting strategy starts with an initial guess on the number of chunks the graph should be split into. The freedom specifies how much the strategy may deviate from this guess. E.g. if an initial number of 3 is computed, a freedom of 1 allows 2, 3, and 4 cuts."),M_t),ac),Ra),en(_n)))),Bs(e,clt,tA,Xxe),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,UV),z2e),"Validification Strategy"),"When wrapping graphs, one can specify indices that are not allowed as split points. The validification strategy makes sure every computed split point is allowed."),N_t),ts),WAt),en(_n)))),Bs(e,UV,Bg,h6e),Bs(e,UV,Bg,f6e),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,GV),z2e),"Valid Indices for Wrapping"),null),xd),Vh),en(_n)))),Bs(e,GV,Bg,c6e),Bs(e,GV,Bg,u6e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,KV),$Et),"Improve Cuts"),"For general graphs it is important that not too many edges wrap backwards. Thus a compromise between evenly-distributed cuts and the total number of cut edges is sought."),!0),oa),ys),en(_n)))),Bs(e,KV,Bg,r6e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,WV),$Et),"Distance Penalty When Improving Cuts"),null),2),Wa),zs),en(_n)))),Bs(e,WV,Bg,e6e),Bs(e,WV,KV,!0),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ult),$Et),"Improve Wrapped Edges"),"The initial wrapping is performed in a very simple way. As a consequence, edges that wrap from one chunk to another may be unnecessarily long. Activating this option tries to shorten such edges."),!0),oa),ys),en(_n)))),Bs(e,ult,Bg,s6e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,MEt),glt),"Edge Label Side Selection"),"Method to decide on edge label sides."),m_t),ts),ISt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,IEt),glt),"Edge Center Label Placement Strategy"),"Determines in which layer center labels of long edges should be placed."),w_t),ts),TT),Hi(_n,lt(ut(G0,1),te,170,0,[Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,YV),eA),"Consider Model Order"),"Preserves the order of nodes and edges in the model file if this does not lead to additional edge crossings. Depending on the strategy this is not always possible since the node and edge order might be conflicting."),h_t),ts),RAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,OEt),eA),"Consider Port Order"),"If disabled the port order of output ports is derived from the edge order and input ports are ordered by their incoming connections. If enabled all ports are ordered by the port model order."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,NEt),eA),"No Model Order"),"Set on a node to not set a model order for this node even though it is a real node."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,llt),eA),"Consider Model Order for Components"),"If set to NONE the usual ordering strategy (by cumulative node priority and size of nodes) is used. INSIDE_PORT_SIDES orders the components with external ports only inside the groups with the same port side. FORCE_MODEL_ORDER enforces the mode order on components. This option might produce bad alignments and sub optimal drawings in terms of used area since the ordering should be respected."),u_t),ts),LCt),en(_n)))),Bs(e,llt,W_,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,PEt),eA),"Long Edge Ordering Strategy"),"Indicates whether long edges are sorted under, over, or equal to nodes that have no connection to a previous layer in a left-to-right or right-to-left layout. Under and over changes to right and left in a vertical layout."),l_t),ts),LAt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,hlt),eA),"Crossing Counter Node Order Influence"),"Indicates with what percentage (1 for 100%) violations of the node model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal node order. Defaults to no influence (0)."),0),Wa),zs),en(_n)))),Bs(e,hlt,YV,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,flt),eA),"Crossing Counter Port Order Influence"),"Indicates with what percentage (1 for 100%) violations of the port model order are weighted against the crossings e.g. a value of 0.5 means two model order violations are as important as on edge crossing. This allows some edge crossings in favor of preserving the model order. It is advised to set this value to a very small positive value (e.g. 0.001) to have minimal crossing and a optimal port order. Defaults to no influence (0)."),0),Wa),zs),en(_n)))),Bs(e,flt,YV,null),ibe((new Jet,e))};var u5e,l5e,h5e,o_t,f5e,c_t,d5e,u_t,g5e,p5e,b5e,l_t,w5e,m5e,v5e,h_t,y5e,x5e,k5e,f_t,E5e,T5e,C5e,d_t,S5e,_5e,A5e,L5e,D5e,M5e,I5e,O5e,N5e,P5e,g_t,F5e,p_t,B5e,b_t,R5e,w_t,j5e,m_t,$5e,z5e,q5e,v_t,H5e,y_t,V5e,x_t,U5e,G5e,K5e,W5e,Y5e,X5e,Q5e,J5e,Z5e,txe,k_t,exe,nxe,rxe,ixe,sxe,axe,E_t,oxe,cxe,uxe,lxe,hxe,fxe,dxe,T_t,gxe,C_t,pxe,bxe,wxe,S_t,mxe,vxe,__t,yxe,xxe,kxe,Exe,Txe,Cxe,Sxe,_xe,A_t,Axe,Lxe,Dxe,L_t,Mxe,D_t,Ixe,Oxe,Nxe,Pxe,Fxe,Bxe,Rxe,jxe,$xe,zxe,qxe,Hxe,Vxe,Uxe,Gxe,Kxe,Wxe,Yxe,M_t,Xxe,Qxe,I_t,Jxe,Zxe,t6e,e6e,n6e,r6e,i6e,s6e,a6e,O_t,o6e,c6e,u6e,l6e,N_t,h6e,f6e;I(Hc,"LayeredMetaDataProvider",859),D(998,1,uf,Jet),l.hf=function(e){ibe(e)};var u0,Jft,OG,PA,NG,P_t,PG,_3,FG,F_t,B_t,BG,Zft,U0,t1t,Ev,R_t,iP,e1t,j_t,d6e,g6e,p6e,RG,n1t,FA,Dw,b6e,ph,$_t,z_t,jG,r1t,l0,$G,zg,q_t,H_t,V_t,i1t,s1t,U_t,Hp,a1t,G_t,A3,K_t,W_t,Y_t,zG,L3,Mw,X_t,Q_t,Vo,J_t,w6e,Iu,qG,Z_t,tAt,eAt,a2,Iw,HG,nAt,rAt,VG,Tv,iAt,o1t,BA,sAt,Cv,RA,UG,Ow,c1t,IT,GG,Nw,aAt,oAt,cAt,OT,uAt,m6e,v6e,y6e,x6e,Sv,D3,bs,Vp,k6e,M3,lAt,NT,hAt,I3,E6e,PT,fAt,Yk,T6e,C6e,sP,u1t,dAt,aP,Yf,W5,Y5,_v,Pw,KG,O3,l1t,FT,BT,Av,X5,h1t,oP,jA,$A,S6e,_6e,A6e,gAt,L6e,f1t,pAt,bAt,wAt,mAt,d1t,vAt,yAt,xAt,kAt,g1t,WG;I(Hc,"LayeredOptions",998),D(999,1,{},RJ),l.sf=function(){var e;return e=new EKt,e},l.tf=function(e){},I(Hc,"LayeredOptions/LayeredFactory",999),D(1391,1,{}),l.a=0;var D6e;I(_c,"ElkSpacings/AbstractSpacingsBuilder",1391),D(792,1391,{},V5t);var YG,M6e;I(Hc,"LayeredSpacings/LayeredSpacingsBuilder",792),D(265,22,{3:1,34:1,22:1,265:1,188:1,196:1},F4),l.dg=function(){return v0e(this)},l.qg=function(){return v0e(this)};var RT,p1t,jT,EAt,TAt,CAt,XG,b1t,SAt,_At=Lr(Hc,"LayeringStrategy",265,Pr,Sgn,Mon),I6e;D(390,22,{3:1,34:1,22:1,390:1},Srt);var w1t,AAt,QG,LAt=Lr(Hc,"LongEdgeOrderingStrategy",390,Pr,Ifn,Ion),O6e;D(203,22,{3:1,34:1,22:1,203:1},$$);var Q5,J5,JG,m1t,v1t=Lr(Hc,"NodeFlexibility",203,Pr,z1n,Oon),N6e;D(323,22,{3:1,34:1,22:1,323:1,188:1,196:1},GM),l.dg=function(){return ude(this)},l.qg=function(){return ude(this)};var zA,y1t,x1t,qA,DAt,MAt=Lr(Hc,"NodePlacementStrategy",323,Pr,Idn,Non),P6e;D(243,22,{3:1,34:1,22:1,243:1},Ey);var IAt,Lv,N3,cP,OAt,NAt,uP,PAt,ZG,tK,FAt=Lr(Hc,"NodePromotionStrategy",243,Pr,Qgn,Pon),F6e;D(284,22,{3:1,34:1,22:1,284:1},z$);var BAt,Up,k1t,E1t,RAt=Lr(Hc,"OrderingStrategy",284,Pr,q1n,Fon),B6e;D(430,22,{3:1,34:1,22:1,430:1},Qwt);var T1t,C1t,jAt=Lr(Hc,"PortSortingStrategy",430,Pr,Nhn,Bon),R6e;D(462,22,{3:1,34:1,22:1,462:1},_rt);var vl,ku,HA,j6e=Lr(Hc,"PortType",462,Pr,Ofn,Ron),$6e;D(387,22,{3:1,34:1,22:1,387:1},Art);var $At,S1t,zAt,qAt=Lr(Hc,"SelfLoopDistributionStrategy",387,Pr,Nfn,jon),z6e;D(349,22,{3:1,34:1,22:1,349:1},Lrt);var _1t,lP,A1t,HAt=Lr(Hc,"SelfLoopOrderingStrategy",349,Pr,Pfn,$on),q6e;D(312,1,{312:1},epe),I(Hc,"Spacings",312),D(350,22,{3:1,34:1,22:1,350:1},Drt);var L1t,VAt,VA,UAt=Lr(Hc,"SplineRoutingMode",350,Pr,Ffn,zon),H6e;D(352,22,{3:1,34:1,22:1,352:1},Mrt);var D1t,GAt,KAt,WAt=Lr(Hc,"ValidifyStrategy",352,Pr,Bfn,qon),V6e;D(388,22,{3:1,34:1,22:1,388:1},Irt);var P3,M1t,$T,YAt=Lr(Hc,"WrappingStrategy",388,Pr,Rfn,Hon),U6e;D(1398,1,_o,Ket),l.rg=function(e){return u(e,36),G6e},l.Kf=function(e,n){kTn(this,u(e,36),n)};var G6e;I(tU,"DepthFirstCycleBreaker",1398),D(793,1,_o,lyt),l.rg=function(e){return u(e,36),K6e},l.Kf=function(e,n){CSn(this,u(e,36),n)},l.sg=function(e){return u(Oe(e,MH(this.d,e.c.length)),10)};var K6e;I(tU,"GreedyCycleBreaker",793),D(1401,793,_o,vQt),l.sg=function(e){var n,r,s,o;for(o=null,n=xi,s=new G(e);s.a1&&(Ie(Me(X(Pa((vn(0,e.c.length),u(e.c[0],10))),(De(),Ev))))?kde(e,this.d,u(this,669)):(mn(),Ds(e,this.d)),kce(this.e,e))},l.lg=function(e,n,r,s){var o,h,d,m,k,T,A;for(n!=jte(r,e.length)&&(h=e[n-(r?1:-1)],j3t(this.f,h,r?(To(),ku):(To(),vl))),o=e[n][0],A=!s||o.k==(Un(),Ms),T=id(e[n]),this.vg(T,A,!1,r),d=0,k=new G(T);k.a"),e0?fst(this.a,e[n-1],e[n]):!r&&n1&&(Ie(Me(X(Pa((vn(0,e.c.length),u(e.c[0],10))),(De(),Ev))))?kde(e,this.d,this):(mn(),Ds(e,this.d)),Ie(Me(X(Pa((vn(0,e.c.length),u(e.c[0],10))),Ev)))||kce(this.e,e))},I(al,"ModelOrderBarycenterHeuristic",669),D(1866,1,Xr,kUt),l.Ne=function(e,n){return x4n(this.a,u(e,10),u(n,10))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(al,"ModelOrderBarycenterHeuristic/lambda$0$Type",1866),D(1423,1,_o,tnt),l.rg=function(e){var n;return u(e,36),n=rz(uke),ri(n,(Ua(),Qc),(Za(),uG)),n},l.Kf=function(e,n){ihn((u(e,36),n))};var uke;I(al,"NoCrossingMinimizer",1423),D(809,413,x7t,ywt),l.tg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U;switch(P=this.g,r.g){case 1:{for(o=0,h=0,A=new G(e.j);A.a1&&(o.j==(ve(),Jn)?this.b[e]=!0:o.j==Gn&&e>0&&(this.b[e-1]=!0))},l.f=0,I(z0,"AllCrossingsCounter",1861),D(595,1,{},Yq),l.b=0,l.d=0,I(z0,"BinaryIndexedTree",595),D(532,1,{},dI);var JAt,nK;I(z0,"CrossingsCounter",532),D(1950,1,Xr,EUt),l.Ne=function(e,n){return Dun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$0$Type",1950),D(1951,1,Xr,TUt),l.Ne=function(e,n){return Mun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$1$Type",1951),D(1952,1,Xr,CUt),l.Ne=function(e,n){return Iun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$2$Type",1952),D(1953,1,Xr,SUt),l.Ne=function(e,n){return Oun(this.a,u(e,12),u(n,12))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(z0,"CrossingsCounter/lambda$3$Type",1953),D(1954,1,ir,_Ut),l.Cd=function(e){O0n(this.a,u(e,12))},I(z0,"CrossingsCounter/lambda$4$Type",1954),D(1955,1,Kr,AUt),l.Mb=function(e){return iin(this.a,u(e,12))},I(z0,"CrossingsCounter/lambda$5$Type",1955),D(1956,1,ir,LUt),l.Cd=function(e){lQt(this,e)},I(z0,"CrossingsCounter/lambda$6$Type",1956),D(1957,1,ir,xXt),l.Cd=function(e){var n;LE(),Ob(this.b,(n=this.a,u(e,12),n))},I(z0,"CrossingsCounter/lambda$7$Type",1957),D(839,1,t0,yR),l.Lb=function(e){return LE(),qi(u(e,12),(oe(),ml))},l.Fb=function(e){return this===e},l.Mb=function(e){return LE(),qi(u(e,12),(oe(),ml))},I(z0,"CrossingsCounter/lambda$8$Type",839),D(1949,1,{},DUt),I(z0,"HyperedgeCrossingsCounter",1949),D(477,1,{34:1,477:1},TZt),l.Fd=function(e){return Iwn(this,u(e,477))},l.b=0,l.c=0,l.e=0,l.f=0;var f_n=I(z0,"HyperedgeCrossingsCounter/Hyperedge",477);D(374,1,{34:1,374:1},Yz),l.Fd=function(e){return Gxn(this,u(e,374))},l.b=0,l.c=0;var lke=I(z0,"HyperedgeCrossingsCounter/HyperedgeCorner",374);D(531,22,{3:1,34:1,22:1,531:1},Jwt);var GA,KA,hke=Lr(z0,"HyperedgeCrossingsCounter/HyperedgeCorner/Type",531,Pr,Phn,Uon),fke;D(1425,1,_o,ent),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?dke:null},l.Kf=function(e,n){ryn(this,u(e,36),n)};var dke;I(Ao,"InteractiveNodePlacer",1425),D(1426,1,_o,nnt),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?gke:null},l.Kf=function(e,n){zmn(this,u(e,36),n)};var gke,rK,iK;I(Ao,"LinearSegmentsNodePlacer",1426),D(261,1,{34:1,261:1},W2t),l.Fd=function(e){return brn(this,u(e,261))},l.Fb=function(e){var n;return Lt(e,261)?(n=u(e,261),this.b==n.b):!1},l.Hb=function(){return this.b},l.Ib=function(){return"ls"+Hb(this.e)},l.a=0,l.b=0,l.c=-1,l.d=-1,l.g=0;var pke=I(Ao,"LinearSegmentsNodePlacer/LinearSegment",261);D(1428,1,_o,Yte),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?bke:null},l.Kf=function(e,n){bSn(this,u(e,36),n)},l.b=0,l.g=0;var bke;I(Ao,"NetworkSimplexPlacer",1428),D(1447,1,Xr,GJ),l.Ne=function(e,n){return jc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Ao,"NetworkSimplexPlacer/0methodref$compare$Type",1447),D(1449,1,Xr,KJ),l.Ne=function(e,n){return jc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Ao,"NetworkSimplexPlacer/1methodref$compare$Type",1449),D(655,1,{655:1},kXt);var d_n=I(Ao,"NetworkSimplexPlacer/EdgeRep",655);D(412,1,{412:1},Vyt),l.b=!1;var g_n=I(Ao,"NetworkSimplexPlacer/NodeRep",412);D(515,13,{3:1,4:1,20:1,31:1,56:1,13:1,16:1,15:1,59:1,515:1},IKt),I(Ao,"NetworkSimplexPlacer/Path",515),D(1429,1,{},WJ),l.Kb=function(e){return u(e,18).d.i.k},I(Ao,"NetworkSimplexPlacer/Path/lambda$0$Type",1429),D(1430,1,Kr,YJ),l.Mb=function(e){return u(e,273)==(Un(),fa)},I(Ao,"NetworkSimplexPlacer/Path/lambda$1$Type",1430),D(1431,1,{},XJ),l.Kb=function(e){return u(e,18).d.i},I(Ao,"NetworkSimplexPlacer/Path/lambda$2$Type",1431),D(1432,1,Kr,MUt),l.Mb=function(e){return cZt(hle(u(e,10)))},I(Ao,"NetworkSimplexPlacer/Path/lambda$3$Type",1432),D(1433,1,Kr,QJ),l.Mb=function(e){return gun(u(e,12))},I(Ao,"NetworkSimplexPlacer/lambda$0$Type",1433),D(1434,1,ir,EXt),l.Cd=function(e){Yin(this.a,this.b,u(e,12))},I(Ao,"NetworkSimplexPlacer/lambda$1$Type",1434),D(1443,1,ir,IUt),l.Cd=function(e){x5n(this.a,u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$10$Type",1443),D(1444,1,{},JJ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$11$Type",1444),D(1445,1,ir,OUt),l.Cd=function(e){p8n(this.a,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$12$Type",1445),D(1446,1,{},ZJ),l.Kb=function(e){return rh(),he(u(e,125).e)},I(Ao,"NetworkSimplexPlacer/lambda$13$Type",1446),D(1448,1,{},tZ),l.Kb=function(e){return rh(),he(u(e,125).e)},I(Ao,"NetworkSimplexPlacer/lambda$15$Type",1448),D(1450,1,Kr,eZ),l.Mb=function(e){return rh(),u(e,412).c.k==(Un(),xs)},I(Ao,"NetworkSimplexPlacer/lambda$17$Type",1450),D(1451,1,Kr,nZ),l.Mb=function(e){return rh(),u(e,412).c.j.c.length>1},I(Ao,"NetworkSimplexPlacer/lambda$18$Type",1451),D(1452,1,ir,rne),l.Cd=function(e){twn(this.c,this.b,this.d,this.a,u(e,412))},l.c=0,l.d=0,I(Ao,"NetworkSimplexPlacer/lambda$19$Type",1452),D(1435,1,{},rZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$2$Type",1435),D(1453,1,ir,NUt),l.Cd=function(e){Qin(this.a,u(e,12))},l.a=0,I(Ao,"NetworkSimplexPlacer/lambda$20$Type",1453),D(1454,1,{},iZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$21$Type",1454),D(1455,1,ir,PUt),l.Cd=function(e){usn(this.a,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$22$Type",1455),D(1456,1,Kr,sZ),l.Mb=function(e){return cZt(e)},I(Ao,"NetworkSimplexPlacer/lambda$23$Type",1456),D(1457,1,{},aZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$24$Type",1457),D(1458,1,Kr,FUt),l.Mb=function(e){return min(this.a,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$25$Type",1458),D(1459,1,ir,TXt),l.Cd=function(e){C4n(this.a,this.b,u(e,10))},I(Ao,"NetworkSimplexPlacer/lambda$26$Type",1459),D(1460,1,Kr,n6),l.Mb=function(e){return rh(),!go(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$27$Type",1460),D(1461,1,Kr,xR),l.Mb=function(e){return rh(),!go(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$28$Type",1461),D(1462,1,{},BUt),l.Ve=function(e,n){return Xin(this.a,u(e,30),u(n,30))},I(Ao,"NetworkSimplexPlacer/lambda$29$Type",1462),D(1436,1,{},oZ),l.Kb=function(e){return rh(),new ln(null,new Lm(new rr(sr(_s(u(e,10)).a.Kc(),new z))))},I(Ao,"NetworkSimplexPlacer/lambda$3$Type",1436),D(1437,1,Kr,cZ),l.Mb=function(e){return rh(),S1n(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$4$Type",1437),D(1438,1,ir,RUt),l.Cd=function(e){T7n(this.a,u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$5$Type",1438),D(1439,1,{},uZ),l.Kb=function(e){return rh(),new ln(null,new gn(u(e,30).a,16))},I(Ao,"NetworkSimplexPlacer/lambda$6$Type",1439),D(1440,1,Kr,kR),l.Mb=function(e){return rh(),u(e,10).k==(Un(),xs)},I(Ao,"NetworkSimplexPlacer/lambda$7$Type",1440),D(1441,1,{},lZ),l.Kb=function(e){return rh(),new ln(null,new Lm(new rr(sr(Dg(u(e,10)).a.Kc(),new z))))},I(Ao,"NetworkSimplexPlacer/lambda$8$Type",1441),D(1442,1,Kr,cC),l.Mb=function(e){return rh(),dun(u(e,18))},I(Ao,"NetworkSimplexPlacer/lambda$9$Type",1442),D(1424,1,_o,rnt),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?wke:null},l.Kf=function(e,n){iTn(u(e,36),n)};var wke;I(Ao,"SimpleNodePlacer",1424),D(185,1,{185:1},m5),l.Ib=function(){var e;return e="",this.c==(Gd(),Dv)?e+=Ak:this.c==Gp&&(e+=_k),this.o==(nd(),Fw)?e+=xut:this.o==yd?e+="UP":e+="BALANCED",e},I(Qb,"BKAlignedLayout",185),D(523,22,{3:1,34:1,22:1,523:1},Zwt);var Gp,Dv,mke=Lr(Qb,"BKAlignedLayout/HDirection",523,Pr,Fhn,Gon),vke;D(522,22,{3:1,34:1,22:1,522:1},tmt);var Fw,yd,yke=Lr(Qb,"BKAlignedLayout/VDirection",522,Pr,Bhn,Kon),xke;D(1699,1,{},CXt),I(Qb,"BKAligner",1699),D(1702,1,{},Fhe),I(Qb,"BKCompactor",1702),D(663,1,{663:1},hZ),l.a=0,I(Qb,"BKCompactor/ClassEdge",663),D(466,1,{466:1},LKt),l.a=null,l.b=0,I(Qb,"BKCompactor/ClassNode",466),D(1427,1,_o,LXt),l.rg=function(e){return u(X(u(e,36),(oe(),lu)),21).Hc((Co(),Uh))?kke:null},l.Kf=function(e,n){NSn(this,u(e,36),n)},l.d=!1;var kke;I(Qb,"BKNodePlacer",1427),D(1700,1,{},fZ),l.d=0,I(Qb,"NeighborhoodInformation",1700),D(1701,1,Xr,jUt),l.Ne=function(e,n){return cgn(this,u(e,42),u(n,42))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Qb,"NeighborhoodInformation/NeighborComparator",1701),D(823,1,{}),I(Qb,"ThresholdStrategy",823),D(1825,823,{},DKt),l.wg=function(e,n,r){return this.a.o==(nd(),yd)?Zi:Vs},l.xg=function(){},I(Qb,"ThresholdStrategy/NullThresholdStrategy",1825),D(587,1,{587:1},DXt),l.c=!1,l.d=!1,I(Qb,"ThresholdStrategy/Postprocessable",587),D(1826,823,{},MKt),l.wg=function(e,n,r){var s,o,h;return o=n==r,s=this.a.a[r.p]==n,o||s?(h=e,this.a.c==(Gd(),Dv)?(o&&(h=yct(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=yct(this,r,!1))):(o&&(h=yct(this,n,!0)),!isNaN(h)&&!isFinite(h)&&s&&(h=yct(this,r,!1))),h):e},l.xg=function(){for(var e,n,r,s,o;this.d.b!=0;)o=u(Zhn(this.d),587),s=uge(this,o),s.a&&(e=s.a,r=Ie(this.a.f[this.a.g[o.b.p].p]),!(!r&&!go(e)&&e.c.i.c==e.d.i.c)&&(n=gde(this,o),n||xin(this.e,o)));for(;this.e.a.c.length!=0;)gde(this,u(gue(this.e),587))},I(Qb,"ThresholdStrategy/SimpleThresholdStrategy",1826),D(645,1,{645:1,188:1,196:1},dZ),l.dg=function(){return Ece(this)},l.qg=function(){return Ece(this)};var I1t;I(vlt,"EdgeRouterFactory",645),D(1485,1,_o,int),l.rg=function(e){return Ukn(u(e,36))},l.Kf=function(e,n){hTn(u(e,36),n)};var Eke,Tke,Cke,Ske,_ke,ZAt,Ake,Lke;I(vlt,"OrthogonalEdgeRouter",1485),D(1478,1,_o,AXt),l.rg=function(e){return dyn(u(e,36))},l.Kf=function(e,n){NCn(this,u(e,36),n)};var Dke,Mke,Ike,Oke,fP,Nke;I(vlt,"PolylineEdgeRouter",1478),D(1479,1,t0,pZ),l.Lb=function(e){return z4t(u(e,10))},l.Fb=function(e){return this===e},l.Mb=function(e){return z4t(u(e,10))},I(vlt,"PolylineEdgeRouter/1",1479),D(1872,1,Kr,bZ),l.Mb=function(e){return u(e,132).c==(C1(),o2)},I(M1,"HyperEdgeCycleDetector/lambda$0$Type",1872),D(1873,1,{},wZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$1$Type",1873),D(1874,1,Kr,mZ),l.Mb=function(e){return u(e,132).c==(C1(),o2)},I(M1,"HyperEdgeCycleDetector/lambda$2$Type",1874),D(1875,1,{},vZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$3$Type",1875),D(1876,1,{},yZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$4$Type",1876),D(1877,1,{},gZ),l.Ze=function(e){return u(e,132).d},I(M1,"HyperEdgeCycleDetector/lambda$5$Type",1877),D(118,1,{34:1,118:1},eO),l.Fd=function(e){return wrn(this,u(e,118))},l.Fb=function(e){var n;return Lt(e,118)?(n=u(e,118),this.g==n.g):!1},l.Hb=function(){return this.g},l.Ib=function(){var e,n,r,s;for(e=new eh("{"),s=new G(this.n);s.a"+this.b+" ("+Fsn(this.c)+")"},l.d=0,I(M1,"HyperEdgeSegmentDependency",132),D(528,22,{3:1,34:1,22:1,528:1},emt);var o2,F3,Pke=Lr(M1,"HyperEdgeSegmentDependency/DependencyType",528,Pr,Rhn,Won),Fke;D(1878,1,{},$Ut),I(M1,"HyperEdgeSegmentSplitter",1878),D(1879,1,{},IWt),l.a=0,l.b=0,I(M1,"HyperEdgeSegmentSplitter/AreaRating",1879),D(339,1,{339:1},yit),l.a=0,l.b=0,l.c=0,I(M1,"HyperEdgeSegmentSplitter/FreeArea",339),D(1880,1,Xr,r6),l.Ne=function(e,n){return Fan(u(e,118),u(n,118))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(M1,"HyperEdgeSegmentSplitter/lambda$0$Type",1880),D(1881,1,ir,ine),l.Cd=function(e){ldn(this.a,this.d,this.c,this.b,u(e,118))},l.b=0,I(M1,"HyperEdgeSegmentSplitter/lambda$1$Type",1881),D(1882,1,{},xZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).e,16))},I(M1,"HyperEdgeSegmentSplitter/lambda$2$Type",1882),D(1883,1,{},kZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).j,16))},I(M1,"HyperEdgeSegmentSplitter/lambda$3$Type",1883),D(1884,1,{},EZ),l.Ye=function(e){return Rt(Ht(e))},I(M1,"HyperEdgeSegmentSplitter/lambda$4$Type",1884),D(664,1,{},Uit),l.a=0,l.b=0,l.c=0,I(M1,"OrthogonalRoutingGenerator",664),D(1703,1,{},TZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).e,16))},I(M1,"OrthogonalRoutingGenerator/lambda$0$Type",1703),D(1704,1,{},CZ),l.Kb=function(e){return new ln(null,new gn(u(e,118).j,16))},I(M1,"OrthogonalRoutingGenerator/lambda$1$Type",1704),D(670,1,{}),I(ylt,"BaseRoutingDirectionStrategy",670),D(1870,670,{},PKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!(e.r&&!e.q))for(A=n+e.o*r,T=new G(e.n);T.an0&&(h=A,o=e,s=new ae(P,h),Zr(d.a,s),ev(this,d,o,s,!1),$=e.r,$&&(U=Rt(Ht(jh($.e,0))),s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1),h=n+$.o*r,o=$,s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1)),s=new ae(tt,h),Zr(d.a,s),ev(this,d,o,s,!1)))},l.zg=function(e){return e.i.n.a+e.n.a+e.a.a},l.Ag=function(){return ve(),Er},l.Bg=function(){return ve(),Hn},I(ylt,"NorthToSouthRoutingStrategy",1870),D(1871,670,{},FKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!(e.r&&!e.q))for(A=n-e.o*r,T=new G(e.n);T.an0&&(h=A,o=e,s=new ae(P,h),Zr(d.a,s),ev(this,d,o,s,!1),$=e.r,$&&(U=Rt(Ht(jh($.e,0))),s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1),h=n-$.o*r,o=$,s=new ae(U,h),Zr(d.a,s),ev(this,d,o,s,!1)),s=new ae(tt,h),Zr(d.a,s),ev(this,d,o,s,!1)))},l.zg=function(e){return e.i.n.a+e.n.a+e.a.a},l.Ag=function(){return ve(),Hn},l.Bg=function(){return ve(),Er},I(ylt,"SouthToNorthRoutingStrategy",1871),D(1869,670,{},BKt),l.yg=function(e,n,r){var s,o,h,d,m,k,T,A,P,$,U,J,tt;if(!(e.r&&!e.q))for(A=n+e.o*r,T=new G(e.n);T.an0&&(h=A,o=e,s=new ae(h,P),Zr(d.a,s),ev(this,d,o,s,!0),$=e.r,$&&(U=Rt(Ht(jh($.e,0))),s=new ae(h,U),Zr(d.a,s),ev(this,d,o,s,!0),h=n+$.o*r,o=$,s=new ae(h,U),Zr(d.a,s),ev(this,d,o,s,!0)),s=new ae(h,tt),Zr(d.a,s),ev(this,d,o,s,!0)))},l.zg=function(e){return e.i.n.b+e.n.b+e.a.b},l.Ag=function(){return ve(),Jn},l.Bg=function(){return ve(),Gn},I(ylt,"WestToEastRoutingStrategy",1869),D(828,1,{},Rkt),l.Ib=function(){return Hb(this.a)},l.b=0,l.c=!1,l.d=!1,l.f=0,I(f3,"NubSpline",828),D(418,1,{418:1},Kde,Fne),I(f3,"NubSpline/PolarCP",418),D(1480,1,_o,Ahe),l.rg=function(e){return n3n(u(e,36))},l.Kf=function(e,n){ZCn(this,u(e,36),n)};var Bke,Rke,jke,$ke,zke;I(f3,"SplineEdgeRouter",1480),D(274,1,{274:1},vq),l.Ib=function(){return this.a+" ->("+this.c+") "+this.b},l.c=0,I(f3,"SplineEdgeRouter/Dependency",274),D(464,22,{3:1,34:1,22:1,464:1},nmt);var c2,Z5,qke=Lr(f3,"SplineEdgeRouter/SideToProcess",464,Pr,Vhn,Yon),Hke;D(1481,1,Kr,SZ),l.Mb=function(e){return D_(),!u(e,131).o},I(f3,"SplineEdgeRouter/lambda$0$Type",1481),D(1482,1,{},_Z),l.Ze=function(e){return D_(),u(e,131).v+1},I(f3,"SplineEdgeRouter/lambda$1$Type",1482),D(1483,1,ir,MXt),l.Cd=function(e){wun(this.a,this.b,u(e,42))},I(f3,"SplineEdgeRouter/lambda$2$Type",1483),D(1484,1,ir,IXt),l.Cd=function(e){mun(this.a,this.b,u(e,42))},I(f3,"SplineEdgeRouter/lambda$3$Type",1484),D(131,1,{34:1,131:1},a1e,Vkt),l.Fd=function(e){return yrn(this,u(e,131))},l.b=0,l.e=!1,l.f=0,l.g=0,l.j=!1,l.k=!1,l.n=0,l.o=!1,l.p=!1,l.q=!1,l.s=0,l.u=0,l.v=0,l.F=0,I(f3,"SplineSegment",131),D(467,1,{467:1},AZ),l.a=0,l.b=!1,l.c=!1,l.d=!1,l.e=!1,l.f=0,I(f3,"SplineSegment/EdgeInformation",467),D(1198,1,{},uC),I(jg,z8t,1198),D(1199,1,Xr,LZ),l.Ne=function(e,n){return R5n(u(e,121),u(n,121))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(jg,r2e,1199),D(1197,1,{},WWt),I(jg,"MrTree",1197),D(405,22,{3:1,34:1,22:1,405:1,188:1,196:1},q$),l.dg=function(){return A1e(this)},l.qg=function(){return A1e(this)};var sK,WA,YA,XA,tLt=Lr(jg,"TreeLayoutPhases",405,Pr,K1n,Xon),Vke;D(1112,205,mw,kZt),l.rf=function(e,n){var r,s,o,h,d,m,k,T;for(Ie(Me(ne(e,(Cc(),CLt))))||sq((r=new by((xy(),new my(e))),r)),d=n.eh(Elt),d.Ug("build tGraph",1),m=(k=new FI,Qo(k,e),Zt(k,(ji(),JA),e),T=new _r,MEn(e,k,T),XEn(e,k,T),k),d.Vg(),d=n.eh(Elt),d.Ug("Split graph",1),h=BEn(this.a,m),d.Vg(),o=new G(h);o.a"+Z2(this.c):"e_"+$i(this)},I(nA,"TEdge",65),D(121,137,{3:1,121:1,96:1,137:1},FI),l.Ib=function(){var e,n,r,s,o;for(o=null,s=Dr(this.b,0);s.b!=s.d.c;)r=u(Ar(s),39),o+=(r.c==null||r.c.length==0?"n_"+r.g:"n_"+r.c)+` +`;for(n=Dr(this.a,0);n.b!=n.d.c;)e=u(Ar(n),65),o+=(e.b&&e.c?Z2(e.b)+"->"+Z2(e.c):"e_"+$i(e))+` +`;return o};var p_n=I(nA,"TGraph",121);D(643,508,{3:1,508:1,643:1,96:1,137:1}),I(nA,"TShape",643),D(39,643,{3:1,508:1,39:1,643:1,96:1,137:1},Eat),l.Ib=function(){return Z2(this)};var aK=I(nA,"TNode",39);D(236,1,F0,gg),l.Jc=function(e){Fa(this,e)},l.Kc=function(){var e;return e=Dr(this.a.d,0),new M4(e)},I(nA,"TNode/2",236),D(329,1,wa,M4),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(Ar(this.a),65).c},l.Ob=function(){return IM(this.a)},l.Qb=function(){Qst(this.a)},I(nA,"TNode/2/1",329),D(1923,1,zi,FZ),l.Kf=function(e,n){LSn(this,u(e,121),n)},I(ou,"CompactionProcessor",1923),D(1924,1,Xr,UUt),l.Ne=function(e,n){return bpn(this.a,u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$0$Type",1924),D(1925,1,Kr,NXt),l.Mb=function(e){return khn(this.b,this.a,u(e,42))},l.a=0,l.b=0,I(ou,"CompactionProcessor/lambda$1$Type",1925),D(1934,1,Xr,i6),l.Ne=function(e,n){return dln(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$10$Type",1934),D(1935,1,Xr,ER),l.Ne=function(e,n){return _sn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$11$Type",1935),D(1936,1,Xr,BZ),l.Ne=function(e,n){return gln(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$12$Type",1936),D(1926,1,Kr,GUt),l.Mb=function(e){return lsn(this.a,u(e,42))},l.a=0,I(ou,"CompactionProcessor/lambda$2$Type",1926),D(1927,1,Kr,KUt),l.Mb=function(e){return hsn(this.a,u(e,42))},l.a=0,I(ou,"CompactionProcessor/lambda$3$Type",1927),D(1928,1,Kr,XD),l.Mb=function(e){return u(e,39).c.indexOf(nU)==-1},I(ou,"CompactionProcessor/lambda$4$Type",1928),D(1929,1,{},WUt),l.Kb=function(e){return T1n(this.a,u(e,39))},l.a=0,I(ou,"CompactionProcessor/lambda$5$Type",1929),D(1930,1,{},YUt),l.Kb=function(e){return I0n(this.a,u(e,39))},l.a=0,I(ou,"CompactionProcessor/lambda$6$Type",1930),D(1931,1,Xr,XUt),l.Ne=function(e,n){return Hdn(this.a,u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$7$Type",1931),D(1932,1,Xr,QUt),l.Ne=function(e,n){return Vdn(this.a,u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$8$Type",1932),D(1933,1,Xr,RZ),l.Ne=function(e,n){return Asn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(ou,"CompactionProcessor/lambda$9$Type",1933),D(1921,1,zi,jZ),l.Kf=function(e,n){C8n(u(e,121),n)},I(ou,"DirectionProcessor",1921),D(1913,1,zi,xZt),l.Kf=function(e,n){WEn(this,u(e,121),n)},I(ou,"FanProcessor",1913),D(1937,1,zi,$Z),l.Kf=function(e,n){d8n(u(e,121),n)},I(ou,"GraphBoundsProcessor",1937),D(1938,1,{},zZ),l.Ye=function(e){return u(e,39).e.a},I(ou,"GraphBoundsProcessor/lambda$0$Type",1938),D(1939,1,{},qZ),l.Ye=function(e){return u(e,39).e.b},I(ou,"GraphBoundsProcessor/lambda$1$Type",1939),D(1940,1,{},HZ),l.Ye=function(e){return Krn(u(e,39))},I(ou,"GraphBoundsProcessor/lambda$2$Type",1940),D(1941,1,{},VZ),l.Ye=function(e){return Grn(u(e,39))},I(ou,"GraphBoundsProcessor/lambda$3$Type",1941),D(262,22,{3:1,34:1,22:1,262:1,196:1},mm),l.dg=function(){switch(this.g){case 0:return new QKt;case 1:return new xZt;case 2:return new XKt;case 3:return new SR;case 4:return new UZ;case 8:return new TR;case 5:return new jZ;case 6:return new AR;case 7:return new FZ;case 9:return new $Z;case 10:return new KZ;default:throw at(new zn(jut+(this.f!=null?this.f:""+this.g)))}};var eLt,nLt,rLt,iLt,sLt,aLt,oLt,cLt,uLt,lLt,O1t,b_n=Lr(ou,$ut,262,Pr,pce,Qon),Uke;D(1920,1,zi,TR),l.Kf=function(e,n){SCn(u(e,121),n)},I(ou,"LevelCoordinatesProcessor",1920),D(1918,1,zi,UZ),l.Kf=function(e,n){K6n(this,u(e,121),n)},l.a=0,I(ou,"LevelHeightProcessor",1918),D(1919,1,F0,CR),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return mn(),yE(),mT},I(ou,"LevelHeightProcessor/1",1919),D(1914,1,zi,XKt),l.Kf=function(e,n){o8n(this,u(e,121),n)},I(ou,"LevelProcessor",1914),D(1915,1,Kr,GZ),l.Mb=function(e){return Ie(Me(X(u(e,39),(ji(),u2))))},I(ou,"LevelProcessor/lambda$0$Type",1915),D(1916,1,zi,SR),l.Kf=function(e,n){V4n(this,u(e,121),n)},l.a=0,I(ou,"NeighborsProcessor",1916),D(1917,1,F0,_R),l.Jc=function(e){Fa(this,e)},l.Kc=function(){return mn(),yE(),mT},I(ou,"NeighborsProcessor/1",1917),D(1922,1,zi,AR),l.Kf=function(e,n){KEn(this,u(e,121),n)},l.a=0,I(ou,"NodePositionProcessor",1922),D(1912,1,zi,QKt),l.Kf=function(e,n){ATn(this,u(e,121),n)},I(ou,"RootProcessor",1912),D(1942,1,zi,KZ),l.Kf=function(e,n){Tmn(u(e,121),n)},I(ou,"Untreeifyer",1942),D(392,22,{3:1,34:1,22:1,392:1},Prt);var dP,N1t,hLt,fLt=Lr(CN,"EdgeRoutingMode",392,Pr,$fn,Jon),Gke,gP,zT,P1t,dLt,gLt,F1t,B1t,pLt,R1t,bLt,j1t,QA,$1t,oK,cK,Xf,P1,qT,JA,ZA,Kp,wLt,Kke,z1t,u2,pP,bP;D(862,1,uf,snt),l.hf=function(e){Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,T7t),""),Y2e),"Turns on Tree compaction which decreases the size of the whole tree by placing nodes of multiple levels in one large level"),(Pn(),!1)),(Fp(),oa)),ys),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,C7t),""),"Edge End Texture Length"),"Should be set to the length of the texture at the end of an edge. This value can be used to improve the Edge Routing."),7),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,S7t),""),"Tree Level"),"The index for the tree level the node is in"),he(0)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_7t),""),Y2e),"When set to a positive number this option will force the algorithm to place the node to the specified position within the trees layer if weighting is set to constraint"),he(-1)),ac),Ra),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,A7t),""),"Weighting of Nodes"),"Which weighting to use when computing a node order."),yLt),ts),ILt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,L7t),""),"Edge Routing Mode"),"Chooses an Edge Routing algorithm."),mLt),ts),fLt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,D7t),""),"Search Order"),"Which search order to use when computing a spanning tree."),vLt),ts),NLt),en(_n)))),Rpe((new p6,e))};var Wke,Yke,Xke,mLt,Qke,Jke,vLt,Zke,t8e,yLt;I(CN,"MrTreeMetaDataProvider",862),D(1006,1,uf,p6),l.hf=function(e){Rpe(e)};var e8e,xLt,kLt,Mv,ELt,TLt,q1t,n8e,r8e,i8e,s8e,a8e,o8e,c8e,CLt,SLt,_Lt,u8e,tx,uK,ALt,l8e,LLt,H1t,h8e,f8e,d8e,DLt,g8e,h0,MLt;I(CN,"MrTreeOptions",1006),D(1007,1,{},WZ),l.sf=function(){var e;return e=new kZt,e},l.tf=function(e){},I(CN,"MrTreeOptions/MrtreeFactory",1007),D(353,22,{3:1,34:1,22:1,353:1},H$);var V1t,lK,U1t,G1t,ILt=Lr(CN,"OrderWeighting",353,Pr,W1n,Zon),p8e;D(433,22,{3:1,34:1,22:1,433:1},rmt);var OLt,K1t,NLt=Lr(CN,"TreeifyingOrder",433,Pr,qhn,tcn),b8e;D(1486,1,_o,cnt),l.rg=function(e){return u(e,121),w8e},l.Kf=function(e,n){ipn(this,u(e,121),n)};var w8e;I("org.eclipse.elk.alg.mrtree.p1treeify","DFSTreeifyer",1486),D(1487,1,_o,rE),l.rg=function(e){return u(e,121),m8e},l.Kf=function(e,n){h8n(this,u(e,121),n)};var m8e;I(sT,"NodeOrderer",1487),D(1494,1,{},A2t),l.td=function(e){return Ate(e)},I(sT,"NodeOrderer/0methodref$lambda$6$Type",1494),D(1488,1,Kr,att),l.Mb=function(e){return ak(),Ie(Me(X(u(e,39),(ji(),u2))))},I(sT,"NodeOrderer/lambda$0$Type",1488),D(1489,1,Kr,ott),l.Mb=function(e){return ak(),u(X(u(e,39),(Cc(),tx)),17).a<0},I(sT,"NodeOrderer/lambda$1$Type",1489),D(1490,1,Kr,ZUt),l.Mb=function(e){return Ogn(this.a,u(e,39))},I(sT,"NodeOrderer/lambda$2$Type",1490),D(1491,1,Kr,JUt),l.Mb=function(e){return _1n(this.a,u(e,39))},I(sT,"NodeOrderer/lambda$3$Type",1491),D(1492,1,Xr,ctt),l.Ne=function(e,n){return ngn(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(sT,"NodeOrderer/lambda$4$Type",1492),D(1493,1,Kr,utt),l.Mb=function(e){return ak(),u(X(u(e,39),(ji(),B1t)),17).a!=0},I(sT,"NodeOrderer/lambda$5$Type",1493),D(1495,1,_o,ont),l.rg=function(e){return u(e,121),v8e},l.Kf=function(e,n){yEn(this,u(e,121),n)},l.b=0;var v8e;I("org.eclipse.elk.alg.mrtree.p3place","NodePlacer",1495),D(1496,1,_o,ant),l.rg=function(e){return u(e,121),y8e},l.Kf=function(e,n){eEn(u(e,121),n)};var y8e,w_n=I(Xl,"EdgeRouter",1496);D(1498,1,Xr,stt),l.Ne=function(e,n){return jc(u(e,17).a,u(n,17).a)},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/0methodref$compare$Type",1498),D(1503,1,{},YZ),l.Ye=function(e){return Rt(Ht(e))},I(Xl,"EdgeRouter/1methodref$doubleValue$Type",1503),D(1505,1,Xr,DR),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/2methodref$compare$Type",1505),D(1507,1,Xr,XZ),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/3methodref$compare$Type",1507),D(1509,1,{},LR),l.Ye=function(e){return Rt(Ht(e))},I(Xl,"EdgeRouter/4methodref$doubleValue$Type",1509),D(1511,1,Xr,QZ),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/5methodref$compare$Type",1511),D(1513,1,Xr,QD),l.Ne=function(e,n){return Bi(Rt(Ht(e)),Rt(Ht(n)))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/6methodref$compare$Type",1513),D(1497,1,{},JZ),l.Kb=function(e){return Sg(),u(X(u(e,39),(Cc(),h0)),17)},I(Xl,"EdgeRouter/lambda$0$Type",1497),D(1508,1,{},ZZ),l.Kb=function(e){return zsn(u(e,39))},I(Xl,"EdgeRouter/lambda$11$Type",1508),D(1510,1,{},PXt),l.Kb=function(e){return pun(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$13$Type",1510),D(1512,1,{},FXt),l.Kb=function(e){return qsn(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$15$Type",1512),D(1514,1,Xr,ttt),l.Ne=function(e,n){return tmn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$17$Type",1514),D(1515,1,Xr,ett),l.Ne=function(e,n){return emn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$18$Type",1515),D(1516,1,Xr,ntt),l.Ne=function(e,n){return rmn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$19$Type",1516),D(1499,1,Kr,tGt),l.Mb=function(e){return ifn(this.a,u(e,39))},l.a=0,I(Xl,"EdgeRouter/lambda$2$Type",1499),D(1517,1,Xr,MR),l.Ne=function(e,n){return nmn(u(e,65),u(n,65))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$20$Type",1517),D(1500,1,Xr,rtt),l.Ne=function(e,n){return eun(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$3$Type",1500),D(1501,1,Xr,itt),l.Ne=function(e,n){return nun(u(e,39),u(n,39))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"EdgeRouter/lambda$4$Type",1501),D(1502,1,{},ltt),l.Kb=function(e){return Hsn(u(e,39))},I(Xl,"EdgeRouter/lambda$5$Type",1502),D(1504,1,{},BXt),l.Kb=function(e){return bun(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$7$Type",1504),D(1506,1,{},RXt),l.Kb=function(e){return Vsn(this.b,this.a,u(e,39))},l.a=0,l.b=0,I(Xl,"EdgeRouter/lambda$9$Type",1506),D(675,1,{675:1},bhe),l.e=0,l.f=!1,l.g=!1,I(Xl,"MultiLevelEdgeNodeNodeGap",675),D(1943,1,Xr,htt),l.Ne=function(e,n){return gfn(u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"MultiLevelEdgeNodeNodeGap/lambda$0$Type",1943),D(1944,1,Xr,ftt),l.Ne=function(e,n){return pfn(u(e,240),u(n,240))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(Xl,"MultiLevelEdgeNodeNodeGap/lambda$1$Type",1944);var ex;D(500,22,{3:1,34:1,22:1,500:1,188:1,196:1},imt),l.dg=function(){return nle(this)},l.qg=function(){return nle(this)};var hK,nx,PLt=Lr(M7t,"RadialLayoutPhases",500,Pr,Uhn,ecn),x8e;D(1113,205,mw,KWt),l.rf=function(e,n){var r,s,o,h,d,m;if(r=qde(this,e),n.Ug("Radial layout",r.c.length),Ie(Me(ne(e,(Ub(),GLt))))||sq((s=new by((xy(),new my(e))),s)),m=s3n(e),Mi(e,(Y4(),ex),m),!m)throw at(new zn("The given graph is not a tree!"));for(o=Rt(Ht(ne(e,gK))),o==0&&(o=k1e(e)),Mi(e,gK,o),d=new G(qde(this,e));d.a=3)for(ht=u(Dt(J,0),27),Tt=u(Dt(J,1),27),o=0;o+2=ht.f+Tt.f+T||Tt.f>=tt.f+ht.f+T){At=!0;break}else++o;else At=!0;if(!At){for(P=J.i,d=new Zn(J);d.e!=d.i.gc();)h=u(ar(d),27),Mi(h,(ai(),DP),he(P)),--P;mge(e,new S6),n.Vg();return}for(r=(EI(this.a),E1(this.a,(vH(),mP),u(ne(e,kDt),188)),E1(this.a,pK,u(ne(e,bDt),188)),E1(this.a,sdt,u(ne(e,vDt),188)),kmt(this.a,(Wt=new Fs,ri(Wt,mP,(DH(),cdt)),ri(Wt,pK,odt),Ie(Me(ne(e,dDt)))&&ri(Wt,mP,adt),Wt)),XO(this.a,e)),k=1/r.c.length,U=new G(r);U.a0&&Sue((qn(n-1,e.length),e.charCodeAt(n-1)),g2e);)--n;if(s>=n)throw at(new zn("The given string does not contain any numbers."));if(o=s3((Da(s,n,e.length),e.substr(s,n-s)),`,|;|\r| +`),o.length!=2)throw at(new zn("Exactly two numbers are expected, "+o.length+" were found."));try{this.a=Jy(Zy(o[0])),this.b=Jy(Zy(o[1]))}catch(h){throw h=es(h),Lt(h,130)?(r=h,at(new zn(p2e+r))):at(h)}},l.Ib=function(){return"("+this.a+","+this.b+")"},l.a=0,l.b=0;var la=I(yN,"KVector",8);D(75,67,{3:1,4:1,20:1,31:1,56:1,16:1,67:1,15:1,75:1,423:1},Qu,b$,UJt),l.Pc=function(){return xbn(this)},l.cg=function(e){var n,r,s,o,h,d;s=s3(e,`,|;|\\(|\\)|\\[|\\]|\\{|\\}| | | +`),nh(this);try{for(r=0,h=0,o=0,d=0;r0&&(h%2==0?o=Jy(s[r]):d=Jy(s[r]),h>0&&h%2!=0&&Zr(this,new ae(o,d)),++h),++r}catch(m){throw m=es(m),Lt(m,130)?(n=m,at(new zn("The given string does not match the expected format for vectors."+n))):at(m)}},l.Ib=function(){var e,n,r;for(e=new eh("("),n=Dr(this,0);n.b!=n.d.c;)r=u(Ar(n),8),ni(e,r.a+","+r.b),n.b!=n.d.c&&(e.a+="; ");return(e.a+=")",e).a};var sMt=I(yN,"KVectorChain",75);D(255,22,{3:1,34:1,22:1,255:1},hS);var _dt,CK,SK,EP,TP,_K,aMt=Lr(Nl,"Alignment",255,Pr,m0n,Ccn),e7e;D(991,1,uf,gnt),l.hf=function(e){ege(e)};var oMt,Adt,n7e,cMt,uMt,r7e,lMt,i7e,s7e,hMt,fMt,a7e;I(Nl,"BoxLayouterOptions",991),D(992,1,{},V8),l.sf=function(){var e;return e=new jtt,e},l.tf=function(e){},I(Nl,"BoxLayouterOptions/BoxFactory",992),D(297,22,{3:1,34:1,22:1,297:1},fS);var cL,Ldt,uL,lL,hL,Ddt,Mdt=Lr(Nl,"ContentAlignment",297,Pr,v0n,Scn),o7e;D(699,1,uf,Oj),l.hf=function(e){Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,bwe),""),"Layout Algorithm"),"Select a specific layout algorithm."),(Fp(),ix)),Pe),en((D1(),_n))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,wwe),""),"Resolved Layout Algorithm"),"Meta data associated with the selected algorithm."),xd),y_n),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,t7t),""),"Alignment"),"Alignment of the selected node relative to other nodes; the exact meaning depends on the used algorithm."),dMt),ts),aMt),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,Dk),""),"Aspect Ratio"),"The desired aspect ratio of the drawing, that is the quotient of width by height."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,dTt),""),"Bend Points"),"A fixed list of bend points for the edge. This is used by the 'Fixed Layout' algorithm to specify a pre-defined routing for an edge. The vector chain must include the source point, any bend points, and the target point, so it must have at least two points."),xd),sMt),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,QV),""),"Content Alignment"),"Specifies how the content of a node are aligned. Each node can individually control the alignment of its contents. I.e. if a node should be aligned top left in its parent node, the parent node should specify that option."),pMt),Qk),Mdt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,TN),""),"Debug Mode"),"Whether additional debug information shall be generated."),(Pn(),!1)),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,blt),""),N8t),"Overall direction of edges: horizontal (right / left) or vertical (down / up)."),bMt),ts),gL),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,EN),""),"Edge Routing"),"What kind of edge routing style should be applied for the content of a parent node. Algorithms may also set this option to single edges in order to mark them as splines. The bend point list of edges with this option set to SPLINES must be interpreted as control points for a piecewise cubic spline."),vMt),ts),Udt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,hTt),""),"Expand Nodes"),"If active, nodes are expanded to fill the area of their parent."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,XV),""),"Hierarchy Handling"),"Determines whether separate layout runs are triggered for different compound nodes in a hierarchical graph. Setting a node's hierarchy handling to `INCLUDE_CHILDREN` will lay out that node and all of its descendants in a single layout run, until a descendant is encountered which has its hierarchy handling set to `SEPARATE_CHILDREN`. In general, `SEPARATE_CHILDREN` will ensure that a new layout run is triggered for a node with that setting. Including multiple levels of hierarchy in a single layout run may allow cross-hierarchical edges to be laid out properly. If the root node is set to `INHERIT` (or not set at all), the default behavior is `SEPARATE_CHILDREN`."),kMt),ts),cIt),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ov),""),"Padding"),"The padding to be left to a parent element's border when placing child elements. This can also serve as an output option of a layout algorithm if node size calculation is setup appropriately."),MMt),xd),MCt),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Y_),""),"Interactive"),"Whether the algorithm should be run in interactive mode for the content of a parent node. What this means exactly depends on how the specific algorithm interprets this option. Usually in the interactive mode algorithms try to modify the current layout as little as possible."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ZV),""),"interactive Layout"),"Whether the graph should be changeable interactively and by setting constraints"),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,X_),""),"Omit Node Micro Layout"),"Node micro layout comprises the computation of node dimensions (if requested), the placement of ports and their labels, and the placement of node labels. The functionality is implemented independent of any specific layout algorithm and shouldn't have any negative impact on the layout algorithm's performance itself. Yet, if any unforeseen behavior occurs, this option allows to deactivate the micro layout."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Fut),""),"Port Constraints"),"Defines constraints of the position of the ports of a node."),FMt),ts),hIt),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,JV),""),"Position"),"The position of a node, port, or label. This is used by the 'Fixed Layout' algorithm to specify a pre-defined position."),xd),la),Hi(Qs,lt(ut(G0,1),te,170,0,[Bw,Wp]))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,gN),""),"Priority"),"Defines the priority of an object; its meaning depends on the specific layout algorithm and the context where it is used."),ac),Ra),Hi(Qs,lt(ut(G0,1),te,170,0,[f0]))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,IV),""),"Randomization Seed"),"Seed used for pseudo-random number generators to control the layout algorithm. If the value is 0, the seed shall be determined pseudo-randomly (e.g. from the system time)."),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,W_),""),"Separate Connected Components"),"Whether each connected component should be processed separately."),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,h7t),""),"Junction Points"),"This option is not used as option, but as output of the layout algorithms. It is attached to edges and determines the points where junction symbols should be drawn in order to represent hyperedges with orthogonal routing. Whether such points are computed depends on the chosen layout algorithm and edge routing style. The points are put into the vector chain with no specific order."),EMt),xd),sMt),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,g7t),""),"Comment Box"),"Whether the node should be regarded as a comment box instead of a regular node. In that case its placement should be similar to how labels are handled. Any edges incident to a comment box specify to which graph elements the comment is related."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,p7t),""),"Hypernode"),"Whether the node should be handled as a hypernode."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,KSn),""),"Label Manager"),"Label managers can shorten labels upon a layout algorithm's request."),xd),C_n),Hi(_n,lt(ut(G0,1),te,170,0,[Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,w7t),""),"Margins"),"Margins define additional space around the actual bounds of a graph element. For instance, ports or labels being placed on the outside of a node's border might introduce such a margin. The margin is used to guarantee non-overlap of other graph elements with those ports or labels."),TMt),xd),DCt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,JEt),""),"No Layout"),"No layout is done for the associated element. This is used to mark parts of a diagram to avoid their inclusion in the layout graph, or to mark parts of the layout graph to prevent layout engines from processing them. If you wish to exclude the contents of a compound node from automatic layout, while the node itself is still considered on its own layer, use the 'Fixed Layout' algorithm for that node."),!1),oa),ys),Hi(Qs,lt(ut(G0,1),te,170,0,[f0,Bw,Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,mwe),""),"Scale Factor"),"The scaling factor to be applied to the corresponding node in recursive layout. It causes the corresponding node's size to be adjusted, and its ports and labels to be sized and placed accordingly after the layout of that node has been determined (and before the node itself and its siblings are arranged). The scaling is not reverted afterwards, so the resulting layout graph contains the adjusted size and position data. This option is currently not supported if 'Layout Hierarchy' is set."),1),Wa),zs),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,vwe),""),"Child Area Width"),"The width of the area occupied by the laid out children of a node."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,ywe),""),"Child Area Height"),"The height of the area occupied by the laid out children of a node."),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,pN),""),hwe),"Turns topdown layout on and off. If this option is enabled, hierarchical layout will be computed first for the root node and then for its children recursively. Layouts are then scaled down to fit the area provided by their parents. Graphs must follow a certain structure for topdown layout to work properly. {@link TopdownNodeTypes.PARALLEL_NODE} nodes must have children of type {@link TopdownNodeTypes.HIERARCHICAL_NODE} and must define {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} for their children. Furthermore they need to be laid out using an algorithm that is a {@link TopdownLayoutProvider}. Hierarchical nodes can also be parents of other hierarchical nodes and can optionally use a {@link TopdownSizeApproximator} to dynamically set sizes during topdown layout. In this case {@link topdown.hierarchicalNodeWidth} and {@link topdown.hierarchicalNodeAspectRatio} should be set on the node itself rather than the parent. The values are then used by the size approximator as base values. Hierarchical nodes require the layout option {@link nodeSize.fixedGraphSize} to be true to prevent the algorithm used there from resizing the hierarchical node. This option is not supported if 'Hierarchy Handling' is set to 'INCLUDE_CHILDREN'"),!1),oa),ys),en(_n)))),Bs(e,pN,cv,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,xwe),""),"Animate"),"Whether the shift from the old layout to the new computed layout shall be animated."),!0),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,kwe),""),"Animation Time Factor"),"Factor for computation of animation time. The higher the value, the longer the animation time. If the value is 0, the resulting time is always equal to the minimum defined by 'Minimal Animation Time'."),he(100)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Ewe),""),"Layout Ancestors"),"Whether the hierarchy levels on the path from the selected element to the root of the diagram shall be included in the layout process."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Twe),""),"Maximal Animation Time"),"The maximal time for animations, in milliseconds."),he(4e3)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Cwe),""),"Minimal Animation Time"),"The minimal time for animations, in milliseconds."),he(400)),ac),Ra),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Swe),""),"Progress Bar"),"Whether a progress bar shall be displayed during layout computations."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_we),""),"Validate Graph"),"Whether the graph shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Awe),""),"Validate Options"),"Whether layout options shall be validated before any layout algorithm is applied. If this option is enabled and at least one error is found, the layout process is aborted and a message is shown to the user."),!0),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Lwe),""),"Zoom to Fit"),"Whether the zoom level shall be set to view the whole diagram after layout."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,fTt),"box"),"Box Layout Mode"),"Configures the packing mode used by the {@link BoxLayoutProvider}. If SIMPLE is not required (neither priorities are used nor the interactive mode), GROUP_DEC can improve the packing and decrease the area. GROUP_MIXED and GROUP_INC may, in very specific scenarios, work better."),gMt),ts),xIt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,zEt),bd),"Comment Comment Spacing"),"Spacing to be preserved between a comment box and other comment boxes connected to the same node. The space left between comment boxes of different nodes is controlled by the node-node spacing."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,qEt),bd),"Comment Node Spacing"),"Spacing to be preserved between a node and its connected comment boxes. The space left between a node and the comments of another node is controlled by the node-node spacing."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Lut),bd),"Components Spacing"),"Spacing to be preserved between pairs of connected components. This option is only relevant if 'separateConnectedComponents' is activated."),20),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,HEt),bd),"Edge Spacing"),"Spacing to be preserved between any two edges. Note that while this can somewhat easily be satisfied for the segments of orthogonally drawn edges, it is harder for general polylines or splines."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Put),bd),"Edge Label Spacing"),"The minimal distance to be preserved between a label and the edge it is associated with. Note that the placement of a label is influenced by the 'edgelabels.placement' option."),2),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,plt),bd),"Edge Node Spacing"),"Spacing to be preserved between nodes and edges."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,VEt),bd),"Label Spacing"),"Determines the amount of space to be left between two labels of the same graph element."),0),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,KEt),bd),"Label Node Spacing"),"Spacing to be preserved between labels and the border of node they are associated with. Note that the placement of a label is influenced by the 'nodelabels.placement' option."),5),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,UEt),bd),"Horizontal spacing between Label and Port"),"Horizontal spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,GEt),bd),"Vertical spacing between Label and Port"),"Vertical spacing to be preserved between labels and the ports they are associated with. Note that the placement of a label is influenced by the 'portlabels.placement' option."),1),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,h3),bd),"Node Spacing"),"The minimal distance to be preserved between each two nodes."),20),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,WEt),bd),"Node Self Loop Spacing"),"Spacing to be preserved between a node and its self loops."),10),Wa),zs),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,YEt),bd),"Port Spacing"),"Spacing between pairs of ports of the same node."),10),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,XEt),bd),"Individual Spacing"),"Allows to specify individual spacing values for graph elements that shall be different from the value specified for the element's parent."),xd),W7e),Hi(Qs,lt(ut(G0,1),te,170,0,[f0,Bw,Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,m7t),bd),"Additional Port Space"),"Additional space around the sets of ports on each node side. For each side of a node, this option can reserve additional space before and after the ports on each side. For example, a top spacing of 20 makes sure that the first port on the western and eastern side is 20 units away from the northern border."),KMt),xd),DCt),en(_n)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,mlt),Iwe),"Layout Partition"),"Partition to which the node belongs. This requires Layout Partitioning to be active. Nodes with lower partition IDs will appear to the left of nodes with higher partition IDs (assuming a left-to-right layout direction)."),ac),Ra),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Bs(e,mlt,wlt,b7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,wlt),Iwe),"Layout Partitioning"),"Whether to activate partitioned layout. This will allow to group nodes through the Layout Partition option. a pair of nodes with different partition indices is then placed such that the node with lower index is placed to the left of the other node (with left-to-right layout direction). Depending on the layout algorithm, this may only be guaranteed to work if all nodes have a layout partition configured, or at least if edges that cross partitions are not part of a partition-crossing cycle."),IMt),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,r7t),Owe),"Node Label Padding"),"Define padding for node labels that are placed inside of a node."),SMt),xd),MCt),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,nT),Owe),"Node Label Placement"),"Hints for where node labels are to be placed; if empty, the node label's position is not modified."),_Mt),Qk),Lo),Hi(Qs,lt(ut(G0,1),te,170,0,[Wp]))))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,a7t),uU),"Port Alignment"),"Defines the default port distribution for a node. May be overridden for each side individually."),NMt),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,o7t),uU),"Port Alignment (North)"),"Defines how ports on the northern side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,c7t),uU),"Port Alignment (South)"),"Defines how ports on the southern side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,u7t),uU),"Port Alignment (West)"),"Defines how ports on the western side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,l7t),uU),"Port Alignment (East)"),"Defines how ports on the eastern side are placed, overriding the node's general port alignment."),ts),mL),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,_5),$lt),"Node Size Constraints"),"What should be taken into account when calculating a node's size. Empty size constraints specify that a node's size is already fixed and should not be changed."),AMt),Qk),xL),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Mk),$lt),"Node Size Options"),"Options modifying the behavior of the size constraints set on a node. Each member of the set specifies something that should be taken into account when calculating node sizes. The empty set corresponds to no further modifications."),DMt),Qk),dIt),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Ik),$lt),"Node Size Minimum"),"The minimal size to which a node can be reduced."),LMt),xd),la),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,eT),$lt),"Fixed Graph Size"),"By default, the fixed layout provider will enlarge a graph until it is large enough to contain its children. If this option is set, it won't do so."),!1),oa),ys),en(_n)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,f7t),glt),"Edge Label Placement"),"Gives a hint on where to put edge labels."),wMt),ts),XMt),en(Wp)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,OV),glt),"Inline Edge Labels"),"If true, an edge label is placed directly on its edge. May only apply to center edge labels. This kind of label placement is only advisable if the label's rendering is such that it is not crossed by its edge and thus stays legible."),!1),oa),ys),en(Wp)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,WSn),"font"),"Font Name"),"Font name used for a label."),ix),Pe),en(Wp)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,Dwe),"font"),"Font Size"),"Font size used for a label."),ac),Ra),en(Wp)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,b7t),zlt),"Port Anchor Offset"),"The offset to the port position where connections shall be attached."),xd),la),en(Bw)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,d7t),zlt),"Port Index"),"The index of a port in the fixed order around a node. The order is assumed as clockwise, starting with the leftmost port on the top side. This option must be set if 'Port Constraints' is set to FIXED_ORDER and no specific positions are given for the ports. Additionally, the option 'Port Side' must be defined in this case."),ac),Ra),en(Bw)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,ZEt),zlt),"Port Side"),"The side of a node on which a port is situated. This option must be set if 'Port Constraints' is set to FIXED_SIDE or FIXED_ORDER and no specific positions are given for the ports."),jMt),ts),bo),en(Bw)))),Qe(e,new He(Ye(We(Xe(Ve(Ke(Ue(Ge(new je,QEt),zlt),"Port Border Offset"),"The offset of ports on the node border. With a positive offset the port is moved outside of the node, while with a negative offset the port is moved towards the inside. An offset of 0 means that the port is placed directly on the node border, i.e. if the port side is north, the port's south border touches the nodes's north border; if the port side is east, the port's west border touches the nodes's east border; if the port side is south, the port's north border touches the node's south border; if the port side is west, the port's east border touches the node's west border."),Wa),zs),en(Bw)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,rT),bTt),"Port Label Placement"),"Decides on a placement method for port labels; if empty, the node label's position is not modified."),BMt),Qk),OK),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,i7t),bTt),"Port Labels Next to Port"),"Use 'portLabels.placement': NEXT_TO_PORT_OF_POSSIBLE."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,s7t),bTt),"Treat Port Labels as Group"),"If this option is true (default), the labels of a port will be treated as a group when it comes to centering them next to their port. If this option is false, only the first label will be centered next to the port, with the others being placed below. This only applies to labels of eastern and western ports and will have no effect if labels are not placed next to their port."),!0),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,bN),_N),"Topdown Scale Factor"),"The scaling factor to be applied to the nodes laid out within the node in recursive topdown layout. The difference to 'Scale Factor' is that the node itself is not scaled. This value has to be set on hierarchical nodes."),1),Wa),zs),en(_n)))),Bs(e,bN,cv,T7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,gTt),_N),"Topdown Size Approximator"),"The size approximator to be used to set sizes of hierarchical nodes during topdown layout. The default value is null, which results in nodes keeping whatever size is defined for them e.g. through parent parallel node or by manually setting the size."),null),ts),jK),en(Qs)))),Bs(e,gTt,cv,C7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,wN),_N),"Topdown Hierarchical Node Width"),"The fixed size of a hierarchical node when using topdown layout. If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."),150),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Bs(e,wN,cv,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,mN),_N),"Topdown Hierarchical Node Aspect Ratio"),"The fixed aspect ratio of a hierarchical node when using topdown layout. Default is 1/sqrt(2). If this value is set on a parallel node it applies to its children, when set on a hierarchical node it applies to the node itself."),1.414),Wa),zs),Hi(_n,lt(ut(G0,1),te,170,0,[Qs]))))),Bs(e,mN,cv,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,cv),_N),"Topdown Node Type"),"The different node types used for topdown layout. If the node type is set to {@link TopdownNodeTypes.PARALLEL_NODE} the algorithm must be set to a {@link TopdownLayoutProvider} such as {@link TopdownPacking}. The {@link nodeSize.fixedGraphSize} option is technically only required for hierarchical nodes."),null),ts),pIt),en(Qs)))),Bs(e,cv,eT,null),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,pTt),_N),"Topdown Scale Cap"),"Determines the upper limit for the topdown scale factor. The default value is 1.0 which ensures that nested children never end up appearing larger than their parents in terms of unit sizes such as the font size. If the limit is larger, nodes will fully utilize the available space, but it is counteriniuitive for inner nodes to have a larger scale than outer nodes."),1),Wa),zs),en(_n)))),Bs(e,pTt,cv,E7e),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,e7t),Nwe),"Activate Inside Self Loops"),"Whether this node allows to route self loops inside of it instead of around it. If set to true, this will make the node a compound node if it isn't already, and will require the layout algorithm to support compound nodes with hierarchical ports."),!1),oa),ys),en(Qs)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,n7t),Nwe),"Inside Self Loop"),"Whether a self loop should be routed inside a node instead of around that node."),!1),oa),ys),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Dut),"edge"),"Edge Thickness"),"The thickness of an edge. This is a hint on the line width used to draw an edge, possibly requiring more space to be reserved for it."),1),Wa),zs),en(f0)))),Qe(e,new He(Ye(We(Xe(fn(Ve(Ke(Ue(Ge(new je,Mwe),"edge"),"Edge Type"),"The type of an edge. This is usually used for UML class diagrams, where associations must be handled differently from generalizations."),xMt),ts),nIt),en(f0)))),eS(e,new Z6(XC(pE(gE(new fy,Qn),"Layered"),'The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called "hierarchies", and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.'))),eS(e,new Z6(XC(pE(gE(new fy,"org.eclipse.elk.orthogonal"),"Orthogonal"),`Orthogonal methods that follow the "topology-shape-metrics" approach by Batini, Nardelli and Tamassia '86. The first phase determines the topology of the drawing by applying a planarization technique, which results in a planar representation of the graph. The orthogonal shape is computed in the second phase, which aims at minimizing the number of edge bends, and is called orthogonalization. The third phase leads to concrete coordinates for nodes and edge bend points by applying a compaction method, thus defining the metrics.`))),eS(e,new Z6(XC(pE(gE(new fy,Du),"Force"),"Layout algorithms that follow physical analogies by simulating a system of attractive and repulsive forces. The first successful method of this kind was proposed by Eades in 1984."))),eS(e,new Z6(XC(pE(gE(new fy,"org.eclipse.elk.circle"),"Circle"),"Circular layout algorithms emphasize cycles or biconnected components of a graph by arranging them in circles. This is useful if a drawing is desired where such components are clearly grouped, or where cycles are shown as prominent OPTIONS of the graph."))),eS(e,new Z6(XC(pE(gE(new fy,X2e),"Tree"),"Specialized layout methods for trees, i.e. acyclic graphs. The regular structure of graphs that have no undirected cycles can be emphasized using an algorithm of this type."))),eS(e,new Z6(XC(pE(gE(new fy,"org.eclipse.elk.planar"),"Planar"),"Algorithms that require a planar or upward planar graph. Most of these algorithms are theoretically interesting, but not practically usable."))),eS(e,new Z6(XC(pE(gE(new fy,zh),"Radial"),"Radial layout algorithms usually position the nodes of the graph on concentric circles."))),$0e((new pnt,e)),ege((new gnt,e)),g0e((new Nj,e))};var VT,c7e,dMt,sx,u7e,l7e,gMt,ax,ox,h7e,CP,pMt,SP,Rw,bMt,Idt,Odt,wMt,mMt,vMt,yMt,xMt,f7e,cx,kMt,d7e,_P,Ndt,AP,Pdt,Iv,EMt,UT,TMt,CMt,SMt,ux,_Mt,jw,AMt,R3,lx,LMt,l2,DMt,AK,LP,Yp,MMt,g7e,IMt,p7e,b7e,OMt,NMt,Fdt,Bdt,Rdt,jdt,PMt,Pl,fL,FMt,$dt,zdt,j3,BMt,RMt,hx,jMt,Jk,DP,qdt,fx,w7e,Hdt,m7e,v7e,$Mt,y7e,zMt,qMt,Zk,HMt,LK,VMt,UMt,$w,x7e,GMt,KMt,WMt,DK,MP,dL,t8,k7e,E7e,MK,T7e,YMt,C7e;I(Nl,"CoreOptions",699),D(88,22,{3:1,34:1,22:1,88:1},JM);var kd,Uo,tc,Ed,Gh,gL=Lr(Nl,N8t,88,Pr,Edn,_cn),S7e;D(278,22,{3:1,34:1,22:1,278:1},Hrt);var GT,$3,KT,XMt=Lr(Nl,"EdgeLabelPlacement",278,Pr,Xfn,Acn),_7e;D(223,22,{3:1,34:1,22:1,223:1},U$);var WT,IP,e8,Vdt,Udt=Lr(Nl,"EdgeRouting",223,Pr,J1n,Lcn),A7e;D(321,22,{3:1,34:1,22:1,321:1},dS);var QMt,JMt,ZMt,tIt,Gdt,eIt,nIt=Lr(Nl,"EdgeType",321,Pr,w0n,Dcn),L7e;D(989,1,uf,pnt),l.hf=function(e){$0e(e)};var rIt,iIt,sIt,aIt,D7e,oIt,pL;I(Nl,"FixedLayouterOptions",989),D(990,1,{},qR),l.sf=function(){var e;return e=new Utt,e},l.tf=function(e){},I(Nl,"FixedLayouterOptions/FixedFactory",990),D(346,22,{3:1,34:1,22:1,346:1},Vrt);var Xp,IK,bL,cIt=Lr(Nl,"HierarchyHandling",346,Pr,Jfn,Mcn),M7e;D(290,22,{3:1,34:1,22:1,290:1},G$);var K0,h2,OP,NP,I7e=Lr(Nl,"LabelSide",290,Pr,Q1n,Icn),O7e;D(95,22,{3:1,34:1,22:1,95:1},B4);var qg,Qf,pf,Jf,bh,Zf,bf,W0,t1,Lo=Lr(Nl,"NodeLabelPlacement",95,Pr,mgn,Ocn),N7e;D(256,22,{3:1,34:1,22:1,256:1},ZM);var uIt,wL,f2,lIt,PP,mL=Lr(Nl,"PortAlignment",256,Pr,Rdn,Ncn),P7e;D(101,22,{3:1,34:1,22:1,101:1},gS);var zw,hu,Y0,YT,Td,d2,hIt=Lr(Nl,"PortConstraints",101,Pr,b0n,Pcn),F7e;D(279,22,{3:1,34:1,22:1,279:1},pS);var vL,yL,Hg,FP,g2,n8,OK=Lr(Nl,"PortLabelPlacement",279,Pr,p0n,Fcn),B7e;D(64,22,{3:1,34:1,22:1,64:1},tI);var Jn,Hn,Kh,Wh,Uu,Ou,Cd,e1,yl,cl,fu,xl,Gu,Ku,n1,wh,mh,wf,Er,bc,Gn,bo=Lr(Nl,"PortSide",64,Pr,Tdn,Bcn),R7e;D(993,1,uf,Nj),l.hf=function(e){g0e(e)};var j7e,$7e,fIt,z7e,q7e;I(Nl,"RandomLayouterOptions",993),D(994,1,{},HR),l.sf=function(){var e;return e=new qtt,e},l.tf=function(e){},I(Nl,"RandomLayouterOptions/RandomFactory",994),D(386,22,{3:1,34:1,22:1,386:1},K$);var z3,BP,RP,qw,xL=Lr(Nl,"SizeConstraint",386,Pr,X1n,Rcn),H7e;D(264,22,{3:1,34:1,22:1,264:1},R4);var jP,NK,XT,Kdt,$P,kL,PK,FK,BK,dIt=Lr(Nl,"SizeOptions",264,Pr,Dgn,jcn),V7e;D(280,22,{3:1,34:1,22:1,280:1},Urt);var q3,gIt,RK,pIt=Lr(Nl,"TopdownNodeTypes",280,Pr,Qfn,$cn),U7e;D(347,22,wTt);var bIt,wIt,jK=Lr(Nl,"TopdownSizeApproximator",347,Pr,Whn,qcn);D(987,347,wTt,_te),l.Tg=function(e){return rhe(e)},Lr(Nl,"TopdownSizeApproximator/1",987,jK,null,null),D(988,347,wTt,fee),l.Tg=function(e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze,On;for(n=u(ne(e,(ai(),fx)),143),Ce=(kb(),U=new VC,U),$O(Ce,e),rn=new _r,h=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));h.e!=h.i.gc();)s=u(ar(h),27),At=($=new VC,$),tV(At,Ce),$O(At,s),On=rhe(s),H4(At,b.Math.max(s.g,On.a),b.Math.max(s.f,On.b)),yu(rn.f,s,At);for(o=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));o.e!=o.i.gc();)for(s=u(ar(o),27),A=new Zn((!s.e&&(s.e=new kn(Ts,s,7,4)),s.e));A.e!=A.i.gc();)T=u(ar(A),74),Wt=u(Ko(Eo(rn.f,s)),27),se=u(tr(rn,Dt((!T.c&&(T.c=new kn(vr,T,5,8)),T.c),0)),27),Bt=(P=new sM,P),Or((!Bt.b&&(Bt.b=new kn(vr,Bt,4,7)),Bt.b),Wt),Or((!Bt.c&&(Bt.c=new kn(vr,Bt,5,8)),Bt.c),se),ZH(Bt,Ji(Wt)),$O(Bt,T);tt=u(_I(n.f),205);try{tt.rf(Ce,new UR),Hee(n.f,tt)}catch(Dn){throw Dn=es(Dn),Lt(Dn,103)?(J=Dn,at(J)):at(Dn)}return ad(Ce,ox)||ad(Ce,ax)||r8t(Ce),k=Rt(Ht(ne(Ce,ox))),m=Rt(Ht(ne(Ce,ax))),d=k/m,r=Rt(Ht(ne(Ce,MP)))*b.Math.sqrt((!Ce.a&&(Ce.a=new Jt(bi,Ce,10,11)),Ce.a).i),Ze=u(ne(Ce,Yp),107),Tt=Ze.b+Ze.c+1,ht=Ze.d+Ze.a+1,new ae(b.Math.max(Tt,r),b.Math.max(ht,r/d))},Lr(Nl,"TopdownSizeApproximator/2",988,jK,null,null);var G7e;D(344,1,{871:1},S6),l.Ug=function(e,n){return bfe(this,e,n)},l.Vg=function(){jfe(this)},l.Wg=function(){return this.q},l.Xg=function(){return this.f?ast(this.f):null},l.Yg=function(){return ast(this.a)},l.Zg=function(){return this.p},l.$g=function(){return!1},l._g=function(){return this.n},l.ah=function(){return this.p!=null&&!this.b},l.bh=function(e){var n;this.n&&(n=e,ge(this.f,n))},l.dh=function(e,n){var r,s;this.n&&e&&g1n(this,(r=new Tee,s=lct(r,e),Y9n(r),s),(sH(),Ydt))},l.eh=function(e){var n;return this.b?null:(n=Z0n(this,this.g),Zr(this.a,n),n.i=this,this.d=e,n)},l.fh=function(e){e>0&&!this.b&&x4t(this,e)},l.b=!1,l.c=0,l.d=-1,l.e=null,l.f=null,l.g=-1,l.j=!1,l.k=!1,l.n=!1,l.o=0,l.q=0,l.r=0,I(_c,"BasicProgressMonitor",344),D(717,205,mw,jtt),l.rf=function(e,n){mge(e,n)},I(_c,"BoxLayoutProvider",717),D(983,1,Xr,fGt),l.Ne=function(e,n){return Y6n(this,u(e,27),u(n,27))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},l.a=!1,I(_c,"BoxLayoutProvider/1",983),D(163,1,{163:1},Fq,QJt),l.Ib=function(){return this.c?vkt(this.c):Hb(this.b)},I(_c,"BoxLayoutProvider/Group",163),D(320,22,{3:1,34:1,22:1,320:1},W$);var mIt,vIt,yIt,Wdt,xIt=Lr(_c,"BoxLayoutProvider/PackingMode",320,Pr,Z1n,Hcn),K7e;D(984,1,Xr,U8),l.Ne=function(e,n){return ghn(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(_c,"BoxLayoutProvider/lambda$0$Type",984),D(985,1,Xr,G8),l.Ne=function(e,n){return ahn(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(_c,"BoxLayoutProvider/lambda$1$Type",985),D(986,1,Xr,VR),l.Ne=function(e,n){return ohn(u(e,163),u(n,163))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(_c,"BoxLayoutProvider/lambda$2$Type",986),D(1384,1,{845:1},$tt),l.Mg=function(e,n){return C$(),!Lt(n,167)||JWt((ck(),u(e,167)),n)},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$0$Type",1384),D(1385,1,ir,dGt),l.Cd=function(e){Tbn(this.a,u(e,149))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$1$Type",1385),D(1386,1,ir,Htt),l.Cd=function(e){u(e,96),C$()},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$2$Type",1386),D(1390,1,ir,gGt),l.Cd=function(e){Ggn(this.a,u(e,96))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$3$Type",1390),D(1388,1,Kr,qXt),l.Mb=function(e){return sbn(this.a,this.b,u(e,149))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$4$Type",1388),D(1387,1,Kr,HXt),l.Mb=function(e){return $sn(this.a,this.b,u(e,845))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$5$Type",1387),D(1389,1,ir,VXt),l.Cd=function(e){Zun(this.a,this.b,u(e,149))},I(_c,"ElkSpacings/AbstractSpacingsBuilder/lambda$6$Type",1389),D(947,1,{},Vtt),l.Kb=function(e){return jQt(e)},l.Fb=function(e){return this===e},I(_c,"ElkUtil/lambda$0$Type",947),D(948,1,ir,UXt),l.Cd=function(e){J5n(this.a,this.b,u(e,74))},l.a=0,l.b=0,I(_c,"ElkUtil/lambda$1$Type",948),D(949,1,ir,GXt),l.Cd=function(e){Hnn(this.a,this.b,u(e,166))},l.a=0,l.b=0,I(_c,"ElkUtil/lambda$2$Type",949),D(950,1,ir,KXt),l.Cd=function(e){Rin(this.a,this.b,u(e,135))},l.a=0,l.b=0,I(_c,"ElkUtil/lambda$3$Type",950),D(951,1,ir,pGt),l.Cd=function(e){yun(this.a,u(e,377))},I(_c,"ElkUtil/lambda$4$Type",951),D(325,1,{34:1,325:1},vnn),l.Fd=function(e){return dsn(this,u(e,242))},l.Fb=function(e){var n;return Lt(e,325)?(n=u(e,325),this.a==n.a):!1},l.Hb=function(){return Ys(this.a)},l.Ib=function(){return this.a+" (exclusive)"},l.a=0,I(_c,"ExclusiveBounds/ExclusiveLowerBound",325),D(1119,205,mw,Utt),l.rf=function(e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt,At,Bt,Wt,se,Ce,rn,Ze;for(n.Ug("Fixed Layout",1),h=u(ne(e,(ai(),mMt)),223),P=0,$=0,At=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));At.e!=At.i.gc();){for(ht=u(ar(At),27),Ze=u(ne(ht,(aH(),pL)),8),Ze&&(Ch(ht,Ze.a,Ze.b),u(ne(ht,iIt),181).Hc((Yl(),z3))&&(U=u(ne(ht,aIt),8),U.a>0&&U.b>0&&rv(ht,U.a,U.b,!0,!0))),P=b.Math.max(P,ht.i+ht.g),$=b.Math.max($,ht.j+ht.f),T=new Zn((!ht.n&&(ht.n=new Jt(Po,ht,1,7)),ht.n));T.e!=T.i.gc();)m=u(ar(T),135),Ze=u(ne(m,pL),8),Ze&&Ch(m,Ze.a,Ze.b),P=b.Math.max(P,ht.i+m.i+m.g),$=b.Math.max($,ht.j+m.j+m.f);for(se=new Zn((!ht.c&&(ht.c=new Jt(kl,ht,9,9)),ht.c));se.e!=se.i.gc();)for(Wt=u(ar(se),123),Ze=u(ne(Wt,pL),8),Ze&&Ch(Wt,Ze.a,Ze.b),Ce=ht.i+Wt.i,rn=ht.j+Wt.j,P=b.Math.max(P,Ce+Wt.g),$=b.Math.max($,rn+Wt.f),k=new Zn((!Wt.n&&(Wt.n=new Jt(Po,Wt,1,7)),Wt.n));k.e!=k.i.gc();)m=u(ar(k),135),Ze=u(ne(m,pL),8),Ze&&Ch(m,Ze.a,Ze.b),P=b.Math.max(P,Ce+m.i+m.g),$=b.Math.max($,rn+m.j+m.f);for(o=new rr(sr(Og(ht).a.Kc(),new z));Mr(o);)r=u(dr(o),74),A=Ipe(r),P=b.Math.max(P,A.a),$=b.Math.max($,A.b);for(s=new rr(sr(jO(ht).a.Kc(),new z));Mr(s);)r=u(dr(s),74),Ji(O0(r))!=e&&(A=Ipe(r),P=b.Math.max(P,A.a),$=b.Math.max($,A.b))}if(h==(Lg(),WT))for(Tt=new Zn((!e.a&&(e.a=new Jt(bi,e,10,11)),e.a));Tt.e!=Tt.i.gc();)for(ht=u(ar(Tt),27),s=new rr(sr(Og(ht).a.Kc(),new z));Mr(s);)r=u(dr(s),74),d=t7n(r),d.b==0?Mi(r,Iv,null):Mi(r,Iv,d);Ie(Me(ne(e,(aH(),sIt))))||(Bt=u(ne(e,D7e),107),tt=P+Bt.b+Bt.c,J=$+Bt.d+Bt.a,rv(e,tt,J,!0,!0)),n.Vg()},I(_c,"FixedLayoutProvider",1119),D(385,137,{3:1,423:1,385:1,96:1,137:1},iM,Lae),l.cg=function(e){var n,r,s,o,h,d,m,k,T;if(e)try{for(k=s3(e,";,;"),h=k,d=0,m=h.length;d>16&js|n^s<<16},l.Kc=function(){return new bGt(this)},l.Ib=function(){return this.a==null&&this.b==null?"pair(null,null)":this.a==null?"pair(null,"+rc(this.b)+")":this.b==null?"pair("+rc(this.a)+",null)":"pair("+rc(this.a)+","+rc(this.b)+")"},I(_c,"Pair",42),D(995,1,wa,bGt),l.Nb=function(e){Na(this,e)},l.Ob=function(){return!this.c&&(!this.b&&this.a.a!=null||this.a.b!=null)},l.Pb=function(){if(!this.c&&!this.b&&this.a.a!=null)return this.b=!0,this.a.a;if(!this.c&&this.a.b!=null)return this.c=!0,this.a.b;throw at(new cc)},l.Qb=function(){throw this.c&&this.a.b!=null?this.a.b=null:this.b&&this.a.a!=null&&(this.a.a=null),at(new Xu)},l.b=!1,l.c=!1,I(_c,"Pair/1",995),D(454,1,{454:1},sne),l.Fb=function(e){return Nc(this.a,u(e,454).a)&&Nc(this.c,u(e,454).c)&&Nc(this.d,u(e,454).d)&&Nc(this.b,u(e,454).b)},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[this.a,this.c,this.d,this.b]))},l.Ib=function(){return"("+this.a+ao+this.c+ao+this.d+ao+this.b+")"},I(_c,"Quadruple",454),D(1108,205,mw,qtt),l.rf=function(e,n){var r,s,o,h,d;if(n.Ug("Random Layout",1),(!e.a&&(e.a=new Jt(bi,e,10,11)),e.a).i==0){n.Vg();return}h=u(ne(e,(Y5t(),z7e)),17),h&&h.a!=0?o=new pq(h.a):o=new Kat,r=MM(Ht(ne(e,j7e))),d=MM(Ht(ne(e,q7e))),s=u(ne(e,$7e),107),mCn(e,o,r,d,s),n.Vg()},I(_c,"RandomLayoutProvider",1108),D(240,1,{240:1},xit),l.Fb=function(e){return Nc(this.a,u(e,240).a)&&Nc(this.b,u(e,240).b)&&Nc(this.c,u(e,240).c)},l.Hb=function(){return lO(lt(ut(aa,1),Ln,1,5,[this.a,this.b,this.c]))},l.Ib=function(){return"("+this.a+ao+this.b+ao+this.c+")"},I(_c,"Triple",240);var Q7e;D(562,1,{}),l.Lf=function(){return new ae(this.f.i,this.f.j)},l.of=function(e){return One(e,(ai(),Pl))?ne(this.f,J7e):ne(this.f,e)},l.Mf=function(){return new ae(this.f.g,this.f.f)},l.Nf=function(){return this.g},l.pf=function(e){return ad(this.f,e)},l.Of=function(e){Su(this.f,e.a),_u(this.f,e.b)},l.Pf=function(e){qm(this.f,e.a),zm(this.f,e.b)},l.Qf=function(e){this.g=e},l.g=0;var J7e;I(sA,"ElkGraphAdapters/AbstractElkGraphElementAdapter",562),D(563,1,{853:1},r$),l.Rf=function(){var e,n;if(!this.b)for(this.b=hq(Kz(this.a).i),n=new Zn(Kz(this.a));n.e!=n.i.gc();)e=u(ar(n),135),ge(this.b,new Qnt(e));return this.b},l.b=null,I(sA,"ElkGraphAdapters/ElkEdgeAdapter",563),D(308,562,{},my),l.Sf=function(){return Che(this)},l.a=null,I(sA,"ElkGraphAdapters/ElkGraphAdapter",308),D(640,562,{187:1},Qnt),I(sA,"ElkGraphAdapters/ElkLabelAdapter",640),D(639,562,{695:1},sit),l.Rf=function(){return svn(this)},l.Vf=function(){var e;return e=u(ne(this.f,(ai(),UT)),140),!e&&(e=new HC),e},l.Xf=function(){return avn(this)},l.Zf=function(e){var n;n=new Eit(e),Mi(this.f,(ai(),UT),n)},l.$f=function(e){Mi(this.f,(ai(),Yp),new jvt(e))},l.Tf=function(){return this.d},l.Uf=function(){var e,n;if(!this.a)for(this.a=new fe,n=new rr(sr(jO(u(this.f,27)).a.Kc(),new z));Mr(n);)e=u(dr(n),74),ge(this.a,new r$(e));return this.a},l.Wf=function(){var e,n;if(!this.c)for(this.c=new fe,n=new rr(sr(Og(u(this.f,27)).a.Kc(),new z));Mr(n);)e=u(dr(n),74),ge(this.c,new r$(e));return this.c},l.Yf=function(){return Jz(u(this.f,27)).i!=0||Ie(Me(u(this.f,27).of((ai(),_P))))},l._f=function(){R0n(this,(xy(),Q7e))},l.a=null,l.b=null,l.c=null,l.d=null,l.e=null,I(sA,"ElkGraphAdapters/ElkNodeAdapter",639),D(1284,562,{852:1},wGt),l.Rf=function(){return gvn(this)},l.Uf=function(){var e,n;if(!this.a)for(this.a=C0(u(this.f,123).hh().i),n=new Zn(u(this.f,123).hh());n.e!=n.i.gc();)e=u(ar(n),74),ge(this.a,new r$(e));return this.a},l.Wf=function(){var e,n;if(!this.c)for(this.c=C0(u(this.f,123).ih().i),n=new Zn(u(this.f,123).ih());n.e!=n.i.gc();)e=u(ar(n),74),ge(this.c,new r$(e));return this.c},l.ag=function(){return u(u(this.f,123).of((ai(),hx)),64)},l.bg=function(){var e,n,r,s,o,h,d,m;for(s=ed(u(this.f,123)),r=new Zn(u(this.f,123).ih());r.e!=r.i.gc();)for(e=u(ar(r),74),m=new Zn((!e.c&&(e.c=new kn(vr,e,5,8)),e.c));m.e!=m.i.gc();){if(d=u(ar(m),84),qy(Jo(d),s))return!0;if(Jo(d)==s&&Ie(Me(ne(e,(ai(),Ndt)))))return!0}for(n=new Zn(u(this.f,123).hh());n.e!=n.i.gc();)for(e=u(ar(n),74),h=new Zn((!e.b&&(e.b=new kn(vr,e,4,7)),e.b));h.e!=h.i.gc();)if(o=u(ar(h),84),qy(Jo(o),s))return!0;return!1},l.a=null,l.b=null,l.c=null,I(sA,"ElkGraphAdapters/ElkPortAdapter",1284),D(1285,1,Xr,ztt),l.Ne=function(e,n){return G8n(u(e,123),u(n,123))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(sA,"ElkGraphAdapters/PortComparator",1285);var p2=os(qh,"EObject"),QT=os(D5,Bwe),vh=os(D5,Rwe),zP=os(D5,jwe),qP=os(D5,"ElkShape"),vr=os(D5,$we),Ts=os(D5,mTt),Wi=os(D5,zwe),HP=os(qh,qwe),EL=os(qh,"EFactory"),Z7e,Xdt=os(qh,Hwe),F1=os(qh,"EPackage"),da,tTe,eTe,CIt,$K,nTe,SIt,_It,AIt,X0,rTe,iTe,Po=os(D5,vTt),bi=os(D5,yTt),kl=os(D5,xTt);D(93,1,Vwe),l.th=function(){return this.uh(),null},l.uh=function(){return null},l.vh=function(){return this.uh(),!1},l.wh=function(){return!1},l.xh=function(e){Ei(this,e)},I(Pk,"BasicNotifierImpl",93),D(99,93,Wwe),l.Yh=function(){return Hl(this)},l.yh=function(e,n){return e},l.zh=function(){throw at(new Vr)},l.Ah=function(e){var n;return n=yo(u(En(this.Dh(),this.Fh()),19)),this.Ph().Th(this,n.n,n.f,e)},l.Bh=function(e,n){throw at(new Vr)},l.Ch=function(e,n,r){return hh(this,e,n,r)},l.Dh=function(){var e;return this.zh()&&(e=this.zh().Nk(),e)?e:this.ii()},l.Eh=function(){return Kot(this)},l.Fh=function(){throw at(new Vr)},l.Gh=function(){var e,n;return n=this.$h().Ok(),!n&&this.zh().Tk(n=(rS(),e=Jyt(Qd(this.Dh())),e==null?i0t:new sI(this,e))),n},l.Hh=function(e,n){return e},l.Ih=function(e){var n;return n=e.pk(),n?e.Lj():ns(this.Dh(),e)},l.Jh=function(){var e;return e=this.zh(),e?e.Qk():null},l.Kh=function(){return this.zh()?this.zh().Nk():null},l.Lh=function(e,n,r){return AH(this,e,n,r)},l.Mh=function(e){return UE(this,e)},l.Nh=function(e,n){return Ist(this,e,n)},l.Oh=function(){var e;return e=this.zh(),!!e&&e.Rk()},l.Ph=function(){throw at(new Vr)},l.Qh=function(){return xH(this)},l.Rh=function(e,n,r,s){return gk(this,e,n,s)},l.Sh=function(e,n,r){var s;return s=u(En(this.Dh(),n),69),s.wk().zk(this,this.hi(),n-this.ji(),e,r)},l.Th=function(e,n,r,s){return nq(this,e,n,s)},l.Uh=function(e,n,r){var s;return s=u(En(this.Dh(),n),69),s.wk().Ak(this,this.hi(),n-this.ji(),e,r)},l.Vh=function(){return!!this.zh()&&!!this.zh().Pk()},l.Wh=function(e){return iot(this,e)},l.Xh=function(e){return Kne(this,e)},l.Zh=function(e){return bpe(this,e)},l.$h=function(){throw at(new Vr)},l._h=function(){return this.zh()?this.zh().Pk():null},l.ai=function(){return xH(this)},l.bi=function(e,n){qot(this,e,n)},l.ci=function(e){this.$h().Sk(e)},l.di=function(e){this.$h().Vk(e)},l.ei=function(e){this.$h().Uk(e)},l.fi=function(e,n){var r,s,o,h;return h=this.Jh(),h&&e&&(n=so(h.El(),this,n),h.Il(this)),s=this.Ph(),s&&(oct(this,this.Ph(),this.Fh()).Bb&po?(o=s.Qh(),o&&(e?!h&&o.Il(this):o.Hl(this))):(n=(r=this.Fh(),r>=0?this.Ah(n):this.Ph().Th(this,-1-r,null,n)),n=this.Ch(null,-1,n))),this.di(e),n},l.gi=function(e){var n,r,s,o,h,d,m,k;if(r=this.Dh(),h=ns(r,e),n=this.ji(),h>=n)return u(e,69).wk().Dk(this,this.hi(),h-n);if(h<=-1)if(d=y5((il(),ja),r,e),d){if(vo(),u(d,69).xk()||(d=tk($o(ja,d))),o=(s=this.Ih(d),u(s>=0?this.Lh(s,!0,!0):tv(this,d,!0),160)),k=d.Ik(),k>1||k==-1)return u(u(o,220).Sl(e,!1),79)}else throw at(new zn(Jb+e.xe()+qlt));else if(e.Jk())return s=this.Ih(e),u(s>=0?this.Lh(s,!1,!0):tv(this,e,!1),79);return m=new hQt(this,e),m},l.hi=function(){return r4t(this)},l.ii=function(){return(Lb(),Fn).S},l.ji=function(){return fr(this.ii())},l.ki=function(e){jot(this,e)},l.Ib=function(){return qf(this)},I(Rn,"BasicEObjectImpl",99);var sTe;D(119,99,{110:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1}),l.li=function(e){var n;return n=n4t(this),n[e]},l.mi=function(e,n){var r;r=n4t(this),ls(r,e,n)},l.ni=function(e){var n;n=n4t(this),ls(n,e,null)},l.th=function(){return u(jn(this,4),129)},l.uh=function(){throw at(new Vr)},l.vh=function(){return(this.Db&4)!=0},l.zh=function(){throw at(new Vr)},l.oi=function(e){fk(this,2,e)},l.Bh=function(e,n){this.Db=n<<16|this.Db&255,this.oi(e)},l.Dh=function(){return $u(this)},l.Fh=function(){return this.Db>>16},l.Gh=function(){var e,n;return rS(),n=Jyt(Qd((e=u(jn(this,16),29),e||this.ii()))),n==null?i0t:new sI(this,n)},l.wh=function(){return(this.Db&1)==0},l.Jh=function(){return u(jn(this,128),2034)},l.Kh=function(){return u(jn(this,16),29)},l.Oh=function(){return(this.Db&32)!=0},l.Ph=function(){return u(jn(this,2),54)},l.Vh=function(){return(this.Db&64)!=0},l.$h=function(){throw at(new Vr)},l._h=function(){return u(jn(this,64),288)},l.ci=function(e){fk(this,16,e)},l.di=function(e){fk(this,128,e)},l.ei=function(e){fk(this,64,e)},l.hi=function(){return Au(this)},l.Db=0,I(Rn,"MinimalEObjectImpl",119),D(120,119,{110:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.oi=function(e){this.Cb=e},l.Ph=function(){return this.Cb},I(Rn,"MinimalEObjectImpl/Container",120),D(2083,120,{110:1,342:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return mxt(this,e,n,r)},l.Uh=function(e,n,r){return o6t(this,e,n,r)},l.Wh=function(e){return f3t(this,e)},l.bi=function(e,n){r5t(this,e,n)},l.ii=function(){return zc(),iTe},l.ki=function(e){G4t(this,e)},l.nf=function(){return Ule(this)},l.gh=function(){return!this.o&&(this.o=new nl((zc(),X0),Qp,this,0)),this.o},l.of=function(e){return ne(this,e)},l.pf=function(e){return ad(this,e)},l.qf=function(e,n){return Mi(this,e,n)},I(kw,"EMapPropertyHolderImpl",2083),D(572,120,{110:1,377:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},fC),l.Lh=function(e,n,r){switch(e){case 0:return this.a;case 1:return this.b}return AH(this,e,n,r)},l.Wh=function(e){switch(e){case 0:return this.a!=0;case 1:return this.b!=0}return iot(this,e)},l.bi=function(e,n){switch(e){case 0:Rq(this,Rt(Ht(n)));return;case 1:Bq(this,Rt(Ht(n)));return}qot(this,e,n)},l.ii=function(){return zc(),tTe},l.ki=function(e){switch(e){case 0:Rq(this,0);return;case 1:Bq(this,0);return}jot(this,e)},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new ef(qf(this)),e.a+=" (x: ",O4(e,this.a),e.a+=", y: ",O4(e,this.b),e.a+=")",e.a)},l.a=0,l.b=0,I(kw,"ElkBendPointImpl",572),D(739,2083,{110:1,342:1,167:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return S5t(this,e,n,r)},l.Sh=function(e,n,r){return Iot(this,e,n,r)},l.Uh=function(e,n,r){return pat(this,e,n,r)},l.Wh=function(e){return $4t(this,e)},l.bi=function(e,n){Bxt(this,e,n)},l.ii=function(){return zc(),nTe},l.ki=function(e){w5t(this,e)},l.jh=function(){return this.k},l.kh=function(){return Kz(this)},l.Ib=function(){return zat(this)},l.k=null,I(kw,"ElkGraphElementImpl",739),D(740,739,{110:1,342:1,167:1,422:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return N5t(this,e,n,r)},l.Wh=function(e){return $5t(this,e)},l.bi=function(e,n){Rxt(this,e,n)},l.ii=function(){return zc(),rTe},l.ki=function(e){K5t(this,e)},l.lh=function(){return this.f},l.mh=function(){return this.g},l.nh=function(){return this.i},l.oh=function(){return this.j},l.ph=function(e,n){H4(this,e,n)},l.qh=function(e,n){Ch(this,e,n)},l.rh=function(e){Su(this,e)},l.sh=function(e){_u(this,e)},l.Ib=function(){return Bot(this)},l.f=0,l.g=0,l.i=0,l.j=0,I(kw,"ElkShapeImpl",740),D(741,740,{110:1,342:1,84:1,167:1,422:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1}),l.Lh=function(e,n,r){return hxt(this,e,n,r)},l.Sh=function(e,n,r){return Mxt(this,e,n,r)},l.Uh=function(e,n,r){return Ixt(this,e,n,r)},l.Wh=function(e){return n5t(this,e)},l.bi=function(e,n){V6t(this,e,n)},l.ii=function(){return zc(),eTe},l.ki=function(e){axt(this,e)},l.hh=function(){return!this.d&&(this.d=new kn(Ts,this,8,5)),this.d},l.ih=function(){return!this.e&&(this.e=new kn(Ts,this,7,4)),this.e},I(kw,"ElkConnectableShapeImpl",741),D(326,739,{110:1,342:1,74:1,167:1,326:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},sM),l.Ah=function(e){return _xt(this,e)},l.Lh=function(e,n,r){switch(e){case 3:return AI(this);case 4:return!this.b&&(this.b=new kn(vr,this,4,7)),this.b;case 5:return!this.c&&(this.c=new kn(vr,this,5,8)),this.c;case 6:return!this.a&&(this.a=new Jt(Wi,this,6,6)),this.a;case 7:return Pn(),!this.b&&(this.b=new kn(vr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i<=1));case 8:return Pn(),!!S_(this);case 9:return Pn(),!!Zm(this);case 10:return Pn(),!this.b&&(this.b=new kn(vr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i!=0)}return S5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 3:return this.Cb&&(r=(s=this.Db>>16,s>=0?_xt(this,r):this.Cb.Th(this,-1-s,null,r))),cvt(this,u(e,27),r);case 4:return!this.b&&(this.b=new kn(vr,this,4,7)),vu(this.b,e,r);case 5:return!this.c&&(this.c=new kn(vr,this,5,8)),vu(this.c,e,r);case 6:return!this.a&&(this.a=new Jt(Wi,this,6,6)),vu(this.a,e,r)}return Iot(this,e,n,r)},l.Uh=function(e,n,r){switch(n){case 3:return cvt(this,null,r);case 4:return!this.b&&(this.b=new kn(vr,this,4,7)),so(this.b,e,r);case 5:return!this.c&&(this.c=new kn(vr,this,5,8)),so(this.c,e,r);case 6:return!this.a&&(this.a=new Jt(Wi,this,6,6)),so(this.a,e,r)}return pat(this,e,n,r)},l.Wh=function(e){switch(e){case 3:return!!AI(this);case 4:return!!this.b&&this.b.i!=0;case 5:return!!this.c&&this.c.i!=0;case 6:return!!this.a&&this.a.i!=0;case 7:return!this.b&&(this.b=new kn(vr,this,4,7)),!(this.b.i<=1&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i<=1));case 8:return S_(this);case 9:return Zm(this);case 10:return!this.b&&(this.b=new kn(vr,this,4,7)),this.b.i!=0&&(!this.c&&(this.c=new kn(vr,this,5,8)),this.c.i!=0)}return $4t(this,e)},l.bi=function(e,n){switch(e){case 3:ZH(this,u(n,27));return;case 4:!this.b&&(this.b=new kn(vr,this,4,7)),Ir(this.b),!this.b&&(this.b=new kn(vr,this,4,7)),gs(this.b,u(n,16));return;case 5:!this.c&&(this.c=new kn(vr,this,5,8)),Ir(this.c),!this.c&&(this.c=new kn(vr,this,5,8)),gs(this.c,u(n,16));return;case 6:!this.a&&(this.a=new Jt(Wi,this,6,6)),Ir(this.a),!this.a&&(this.a=new Jt(Wi,this,6,6)),gs(this.a,u(n,16));return}Bxt(this,e,n)},l.ii=function(){return zc(),CIt},l.ki=function(e){switch(e){case 3:ZH(this,null);return;case 4:!this.b&&(this.b=new kn(vr,this,4,7)),Ir(this.b);return;case 5:!this.c&&(this.c=new kn(vr,this,5,8)),Ir(this.c);return;case 6:!this.a&&(this.a=new Jt(Wi,this,6,6)),Ir(this.a);return}w5t(this,e)},l.Ib=function(){return Nge(this)},I(kw,"ElkEdgeImpl",326),D(451,2083,{110:1,342:1,166:1,451:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},K8),l.Ah=function(e){return Ext(this,e)},l.Lh=function(e,n,r){switch(e){case 1:return this.j;case 2:return this.k;case 3:return this.b;case 4:return this.c;case 5:return!this.a&&(this.a=new Ps(vh,this,5)),this.a;case 6:return Hne(this);case 7:return n?uot(this):this.i;case 8:return n?cot(this):this.f;case 9:return!this.g&&(this.g=new kn(Wi,this,9,10)),this.g;case 10:return!this.e&&(this.e=new kn(Wi,this,10,9)),this.e;case 11:return this.d}return mxt(this,e,n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?Ext(this,r):this.Cb.Th(this,-1-o,null,r))),ovt(this,u(e,74),r);case 9:return!this.g&&(this.g=new kn(Wi,this,9,10)),vu(this.g,e,r);case 10:return!this.e&&(this.e=new kn(Wi,this,10,9)),vu(this.e,e,r)}return h=u(En((s=u(jn(this,16),29),s||(zc(),$K)),n),69),h.wk().zk(this,Au(this),n-fr((zc(),$K)),e,r)},l.Uh=function(e,n,r){switch(n){case 5:return!this.a&&(this.a=new Ps(vh,this,5)),so(this.a,e,r);case 6:return ovt(this,null,r);case 9:return!this.g&&(this.g=new kn(Wi,this,9,10)),so(this.g,e,r);case 10:return!this.e&&(this.e=new kn(Wi,this,10,9)),so(this.e,e,r)}return o6t(this,e,n,r)},l.Wh=function(e){switch(e){case 1:return this.j!=0;case 2:return this.k!=0;case 3:return this.b!=0;case 4:return this.c!=0;case 5:return!!this.a&&this.a.i!=0;case 6:return!!Hne(this);case 7:return!!this.i;case 8:return!!this.f;case 9:return!!this.g&&this.g.i!=0;case 10:return!!this.e&&this.e.i!=0;case 11:return this.d!=null}return f3t(this,e)},l.bi=function(e,n){switch(e){case 1:QE(this,Rt(Ht(n)));return;case 2:ZE(this,Rt(Ht(n)));return;case 3:XE(this,Rt(Ht(n)));return;case 4:JE(this,Rt(Ht(n)));return;case 5:!this.a&&(this.a=new Ps(vh,this,5)),Ir(this.a),!this.a&&(this.a=new Ps(vh,this,5)),gs(this.a,u(n,16));return;case 6:Ode(this,u(n,74));return;case 7:Uq(this,u(n,84));return;case 8:Vq(this,u(n,84));return;case 9:!this.g&&(this.g=new kn(Wi,this,9,10)),Ir(this.g),!this.g&&(this.g=new kn(Wi,this,9,10)),gs(this.g,u(n,16));return;case 10:!this.e&&(this.e=new kn(Wi,this,10,9)),Ir(this.e),!this.e&&(this.e=new kn(Wi,this,10,9)),gs(this.e,u(n,16));return;case 11:A4t(this,Gr(n));return}r5t(this,e,n)},l.ii=function(){return zc(),$K},l.ki=function(e){switch(e){case 1:QE(this,0);return;case 2:ZE(this,0);return;case 3:XE(this,0);return;case 4:JE(this,0);return;case 5:!this.a&&(this.a=new Ps(vh,this,5)),Ir(this.a);return;case 6:Ode(this,null);return;case 7:Uq(this,null);return;case 8:Vq(this,null);return;case 9:!this.g&&(this.g=new kn(Wi,this,9,10)),Ir(this.g);return;case 10:!this.e&&(this.e=new kn(Wi,this,10,9)),Ir(this.e);return;case 11:A4t(this,null);return}G4t(this,e)},l.Ib=function(){return K1e(this)},l.b=0,l.c=0,l.d=null,l.j=0,l.k=0,I(kw,"ElkEdgeSectionImpl",451),D(158,120,{110:1,94:1,93:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1}),l.Lh=function(e,n,r){var s;return e==0?(!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab):Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r)):(o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().zk(this,Au(this),n-fr(this.ii()),e,r))},l.Uh=function(e,n,r){var s,o;return n==0?(!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r)):(o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r))},l.Wh=function(e){var n;return e==0?!!this.Ab&&this.Ab.i!=0:Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.Zh=function(e){return e8t(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.di=function(e){fk(this,128,e)},l.ii=function(){return wn(),ETe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.pi=function(){this.Bb|=1},l.qi=function(e){return O_(this,e)},l.Bb=0,I(Rn,"EModelElementImpl",158),D(720,158,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1},Fj),l.ri=function(e,n){return upe(this,e,n)},l.si=function(e){var n,r,s,o,h;if(this.a!=sh(e)||e.Bb&256)throw at(new zn(Vlt+e.zb+fv));for(s=Yo(e);Wc(s.a).i!=0;){if(r=u(QO(s,0,(n=u(Dt(Wc(s.a),0),89),h=n.c,Lt(h,90)?u(h,29):(wn(),xf))),29),Jm(r))return o=sh(r).wi().si(r),u(o,54).ci(e),o;s=Yo(r)}return(e.D!=null?e.D:e.B)=="java.util.Map$Entry"?new Cte(e):new Xvt(e)},l.ti=function(e,n){return iv(this,e,n)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.a}return Ih(this,e-fr((wn(),v2)),En((s=u(jn(this,16),29),s||v2),e),n,r)},l.Sh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 1:return this.a&&(r=u(this.a,54).Th(this,4,F1,r)),b5t(this,u(e,241),r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),v2)),n),69),o.wk().zk(this,Au(this),n-fr((wn(),v2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 1:return b5t(this,null,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),v2)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),v2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return!!this.a}return Dh(this,e-fr((wn(),v2)),En((n=u(jn(this,16),29),n||v2),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:Lfe(this,u(n,241));return}Fh(this,e-fr((wn(),v2)),En((r=u(jn(this,16),29),r||v2),e),n)},l.ii=function(){return wn(),v2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lfe(this,null);return}Ph(this,e-fr((wn(),v2)),En((n=u(jn(this,16),29),n||v2),e))};var TL,LIt,aTe;I(Rn,"EFactoryImpl",720),D(1037,720,{110:1,2113:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1},W8),l.ri=function(e,n){switch(e.hk()){case 12:return u(n,149).Pg();case 13:return rc(n);default:throw at(new zn(lT+e.xe()+fv))}},l.si=function(e){var n,r,s,o,h,d,m,k;switch(e.G==-1&&(e.G=(n=sh(e),n?Np(n.vi(),e):-1)),e.G){case 4:return h=new Y8,h;case 6:return d=new VC,d;case 7:return m=new J2t,m;case 8:return s=new sM,s;case 9:return r=new fC,r;case 10:return o=new K8,o;case 11:return k=new GR,k;default:throw at(new zn(Vlt+e.zb+fv))}},l.ti=function(e,n){switch(e.hk()){case 13:case 12:return null;default:throw at(new zn(lT+e.xe()+fv))}},I(kw,"ElkGraphFactoryImpl",1037),D(448,158,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1}),l.Gh=function(){var e,n;return n=(e=u(jn(this,16),29),Jyt(Qd(e||this.ii()))),n==null?(rS(),rS(),i0t):new WJt(this,n)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.xe()}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:this.ui(Gr(n));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),TTe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:this.ui(null);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.xe=function(){return this.zb},l.ui=function(e){mu(this,e)},l.Ib=function(){return u_(this)},l.zb=null,I(Rn,"ENamedElementImpl",448),D(184,448,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1},xne),l.Ah=function(e){return $he(this,e)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.yb;case 3:return this.xb;case 4:return this.sb;case 5:return!this.rb&&(this.rb=new Iy(this,B1,this)),this.rb;case 6:return!this.vb&&(this.vb=new z6(F1,this,6,7)),this.vb;case 7:return n?this.Db>>16==7?u(this.Cb,241):null:Xne(this)}return Ih(this,e-fr((wn(),eb)),En((s=u(jn(this,16),29),s||eb),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 4:return this.sb&&(r=u(this.sb,54).Th(this,1,EL,r)),v5t(this,u(e,479),r);case 5:return!this.rb&&(this.rb=new Iy(this,B1,this)),vu(this.rb,e,r);case 6:return!this.vb&&(this.vb=new z6(F1,this,6,7)),vu(this.vb,e,r);case 7:return this.Cb&&(r=(o=this.Db>>16,o>=0?$he(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,7,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),eb)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),eb)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 4:return v5t(this,null,r);case 5:return!this.rb&&(this.rb=new Iy(this,B1,this)),so(this.rb,e,r);case 6:return!this.vb&&(this.vb=new z6(F1,this,6,7)),so(this.vb,e,r);case 7:return hh(this,null,7,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),eb)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),eb)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.yb!=null;case 3:return this.xb!=null;case 4:return!!this.sb;case 5:return!!this.rb&&this.rb.i!=0;case 6:return!!this.vb&&this.vb.i!=0;case 7:return!!Xne(this)}return Dh(this,e-fr((wn(),eb)),En((n=u(jn(this,16),29),n||eb),e))},l.Zh=function(e){var n;return n=okn(this,e),n||e8t(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:Qq(this,Gr(n));return;case 3:Xq(this,Gr(n));return;case 4:Fot(this,u(n,479));return;case 5:!this.rb&&(this.rb=new Iy(this,B1,this)),Ir(this.rb),!this.rb&&(this.rb=new Iy(this,B1,this)),gs(this.rb,u(n,16));return;case 6:!this.vb&&(this.vb=new z6(F1,this,6,7)),Ir(this.vb),!this.vb&&(this.vb=new z6(F1,this,6,7)),gs(this.vb,u(n,16));return}Fh(this,e-fr((wn(),eb)),En((r=u(jn(this,16),29),r||eb),e),n)},l.ei=function(e){var n,r;if(e&&this.rb)for(r=new Zn(this.rb);r.e!=r.i.gc();)n=ar(r),Lt(n,364)&&(u(n,364).w=null);fk(this,64,e)},l.ii=function(){return wn(),eb},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:Qq(this,null);return;case 3:Xq(this,null);return;case 4:Fot(this,null);return;case 5:!this.rb&&(this.rb=new Iy(this,B1,this)),Ir(this.rb);return;case 6:!this.vb&&(this.vb=new z6(F1,this,6,7)),Ir(this.vb);return}Ph(this,e-fr((wn(),eb)),En((n=u(jn(this,16),29),n||eb),e))},l.pi=function(){kot(this)},l.vi=function(){return!this.rb&&(this.rb=new Iy(this,B1,this)),this.rb},l.wi=function(){return this.sb},l.xi=function(){return this.ub},l.yi=function(){return this.xb},l.zi=function(){return this.yb},l.Ai=function(e){this.ub=e},l.Ib=function(){var e;return this.Db&64?u_(this):(e=new ef(u_(this)),e.a+=" (nsURI: ",Mo(e,this.yb),e.a+=", nsPrefix: ",Mo(e,this.xb),e.a+=")",e.a)},l.xb=null,l.yb=null,I(Rn,"EPackageImpl",184),D(569,184,{110:1,2115:1,569:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1},nde),l.q=!1,l.r=!1;var oTe=!1;I(kw,"ElkGraphPackageImpl",569),D(366,740,{110:1,342:1,167:1,135:1,422:1,366:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},Y8),l.Ah=function(e){return Txt(this,e)},l.Lh=function(e,n,r){switch(e){case 7:return Qne(this);case 8:return this.a}return N5t(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 7:return this.Cb&&(r=(s=this.Db>>16,s>=0?Txt(this,r):this.Cb.Th(this,-1-s,null,r))),hyt(this,u(e,167),r)}return Iot(this,e,n,r)},l.Uh=function(e,n,r){return n==7?hyt(this,null,r):pat(this,e,n,r)},l.Wh=function(e){switch(e){case 7:return!!Qne(this);case 8:return!hn("",this.a)}return $5t(this,e)},l.bi=function(e,n){switch(e){case 7:rkt(this,u(n,167));return;case 8:E4t(this,Gr(n));return}Rxt(this,e,n)},l.ii=function(){return zc(),SIt},l.ki=function(e){switch(e){case 7:rkt(this,null);return;case 8:E4t(this,"");return}K5t(this,e)},l.Ib=function(){return Hfe(this)},l.a="",I(kw,"ElkLabelImpl",366),D(207,741,{110:1,342:1,84:1,167:1,27:1,422:1,207:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},VC),l.Ah=function(e){return Axt(this,e)},l.Lh=function(e,n,r){switch(e){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),this.c;case 10:return!this.a&&(this.a=new Jt(bi,this,10,11)),this.a;case 11:return Ji(this);case 12:return!this.b&&(this.b=new Jt(Ts,this,12,3)),this.b;case 13:return Pn(),!this.a&&(this.a=new Jt(bi,this,10,11)),this.a.i>0}return hxt(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),vu(this.c,e,r);case 10:return!this.a&&(this.a=new Jt(bi,this,10,11)),vu(this.a,e,r);case 11:return this.Cb&&(r=(s=this.Db>>16,s>=0?Axt(this,r):this.Cb.Th(this,-1-s,null,r))),mvt(this,u(e,27),r);case 12:return!this.b&&(this.b=new Jt(Ts,this,12,3)),vu(this.b,e,r)}return Mxt(this,e,n,r)},l.Uh=function(e,n,r){switch(n){case 9:return!this.c&&(this.c=new Jt(kl,this,9,9)),so(this.c,e,r);case 10:return!this.a&&(this.a=new Jt(bi,this,10,11)),so(this.a,e,r);case 11:return mvt(this,null,r);case 12:return!this.b&&(this.b=new Jt(Ts,this,12,3)),so(this.b,e,r)}return Ixt(this,e,n,r)},l.Wh=function(e){switch(e){case 9:return!!this.c&&this.c.i!=0;case 10:return!!this.a&&this.a.i!=0;case 11:return!!Ji(this);case 12:return!!this.b&&this.b.i!=0;case 13:return!this.a&&(this.a=new Jt(bi,this,10,11)),this.a.i>0}return n5t(this,e)},l.bi=function(e,n){switch(e){case 9:!this.c&&(this.c=new Jt(kl,this,9,9)),Ir(this.c),!this.c&&(this.c=new Jt(kl,this,9,9)),gs(this.c,u(n,16));return;case 10:!this.a&&(this.a=new Jt(bi,this,10,11)),Ir(this.a),!this.a&&(this.a=new Jt(bi,this,10,11)),gs(this.a,u(n,16));return;case 11:tV(this,u(n,27));return;case 12:!this.b&&(this.b=new Jt(Ts,this,12,3)),Ir(this.b),!this.b&&(this.b=new Jt(Ts,this,12,3)),gs(this.b,u(n,16));return}V6t(this,e,n)},l.ii=function(){return zc(),_It},l.ki=function(e){switch(e){case 9:!this.c&&(this.c=new Jt(kl,this,9,9)),Ir(this.c);return;case 10:!this.a&&(this.a=new Jt(bi,this,10,11)),Ir(this.a);return;case 11:tV(this,null);return;case 12:!this.b&&(this.b=new Jt(Ts,this,12,3)),Ir(this.b);return}axt(this,e)},l.Ib=function(){return vkt(this)},I(kw,"ElkNodeImpl",207),D(193,741,{110:1,342:1,84:1,167:1,123:1,422:1,193:1,96:1,94:1,93:1,58:1,114:1,54:1,99:1,119:1,120:1},J2t),l.Ah=function(e){return Cxt(this,e)},l.Lh=function(e,n,r){return e==9?ed(this):hxt(this,e,n,r)},l.Sh=function(e,n,r){var s;switch(n){case 9:return this.Cb&&(r=(s=this.Db>>16,s>=0?Cxt(this,r):this.Cb.Th(this,-1-s,null,r))),uvt(this,u(e,27),r)}return Mxt(this,e,n,r)},l.Uh=function(e,n,r){return n==9?uvt(this,null,r):Ixt(this,e,n,r)},l.Wh=function(e){return e==9?!!ed(this):n5t(this,e)},l.bi=function(e,n){switch(e){case 9:Z6t(this,u(n,27));return}V6t(this,e,n)},l.ii=function(){return zc(),AIt},l.ki=function(e){switch(e){case 9:Z6t(this,null);return}axt(this,e)},l.Ib=function(){return I0e(this)},I(kw,"ElkPortImpl",193);var cTe=os(oo,"BasicEMap/Entry");D(1122,120,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1,119:1,120:1},GR),l.Fb=function(e){return this===e},l.ld=function(){return this.b},l.Hb=function(){return Em(this)},l.Di=function(e){T4t(this,u(e,149))},l.Lh=function(e,n,r){switch(e){case 0:return this.b;case 1:return this.c}return AH(this,e,n,r)},l.Wh=function(e){switch(e){case 0:return!!this.b;case 1:return this.c!=null}return iot(this,e)},l.bi=function(e,n){switch(e){case 0:T4t(this,u(n,149));return;case 1:k4t(this,n);return}qot(this,e,n)},l.ii=function(){return zc(),X0},l.ki=function(e){switch(e){case 0:T4t(this,null);return;case 1:k4t(this,null);return}jot(this,e)},l.Bi=function(){var e;return this.a==-1&&(e=this.b,this.a=e?$i(e):0),this.a},l.md=function(){return this.c},l.Ci=function(e){this.a=e},l.nd=function(e){var n;return n=this.c,k4t(this,e),n},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new yb,ni(ni(ni(e,this.b?this.b.Pg():Vu),But),ES(this.c)),e.a)},l.a=-1,l.c=null;var Qp=I(kw,"ElkPropertyToValueMapEntryImpl",1122);D(996,1,{},WR),I(Ba,"JsonAdapter",996),D(216,63,Pg,Rd),I(Ba,"JsonImportException",216),D(868,1,{},zhe),I(Ba,"JsonImporter",868),D(903,1,{},WXt),I(Ba,"JsonImporter/lambda$0$Type",903),D(904,1,{},YXt),I(Ba,"JsonImporter/lambda$1$Type",904),D(912,1,{},mGt),I(Ba,"JsonImporter/lambda$10$Type",912),D(914,1,{},XXt),I(Ba,"JsonImporter/lambda$11$Type",914),D(915,1,{},QXt),I(Ba,"JsonImporter/lambda$12$Type",915),D(921,1,{},une),I(Ba,"JsonImporter/lambda$13$Type",921),D(920,1,{},lne),I(Ba,"JsonImporter/lambda$14$Type",920),D(916,1,{},JXt),I(Ba,"JsonImporter/lambda$15$Type",916),D(917,1,{},ZXt),I(Ba,"JsonImporter/lambda$16$Type",917),D(918,1,{},tQt),I(Ba,"JsonImporter/lambda$17$Type",918),D(919,1,{},eQt),I(Ba,"JsonImporter/lambda$18$Type",919),D(924,1,{},vGt),I(Ba,"JsonImporter/lambda$19$Type",924),D(905,1,{},yGt),I(Ba,"JsonImporter/lambda$2$Type",905),D(922,1,{},xGt),I(Ba,"JsonImporter/lambda$20$Type",922),D(923,1,{},kGt),I(Ba,"JsonImporter/lambda$21$Type",923),D(927,1,{},EGt),I(Ba,"JsonImporter/lambda$22$Type",927),D(925,1,{},TGt),I(Ba,"JsonImporter/lambda$23$Type",925),D(926,1,{},CGt),I(Ba,"JsonImporter/lambda$24$Type",926),D(929,1,{},SGt),I(Ba,"JsonImporter/lambda$25$Type",929),D(928,1,{},_Gt),I(Ba,"JsonImporter/lambda$26$Type",928),D(930,1,ir,nQt),l.Cd=function(e){x0n(this.b,this.a,Gr(e))},I(Ba,"JsonImporter/lambda$27$Type",930),D(931,1,ir,rQt),l.Cd=function(e){k0n(this.b,this.a,Gr(e))},I(Ba,"JsonImporter/lambda$28$Type",931),D(932,1,{},iQt),I(Ba,"JsonImporter/lambda$29$Type",932),D(908,1,{},AGt),I(Ba,"JsonImporter/lambda$3$Type",908),D(933,1,{},sQt),I(Ba,"JsonImporter/lambda$30$Type",933),D(934,1,{},LGt),I(Ba,"JsonImporter/lambda$31$Type",934),D(935,1,{},DGt),I(Ba,"JsonImporter/lambda$32$Type",935),D(936,1,{},MGt),I(Ba,"JsonImporter/lambda$33$Type",936),D(937,1,{},IGt),I(Ba,"JsonImporter/lambda$34$Type",937),D(870,1,{},OGt),I(Ba,"JsonImporter/lambda$35$Type",870),D(941,1,{},ZZt),I(Ba,"JsonImporter/lambda$36$Type",941),D(938,1,ir,NGt),l.Cd=function(e){_dn(this.a,u(e,377))},I(Ba,"JsonImporter/lambda$37$Type",938),D(939,1,ir,aQt),l.Cd=function(e){cin(this.a,this.b,u(e,166))},I(Ba,"JsonImporter/lambda$38$Type",939),D(940,1,ir,oQt),l.Cd=function(e){uin(this.a,this.b,u(e,166))},I(Ba,"JsonImporter/lambda$39$Type",940),D(906,1,{},PGt),I(Ba,"JsonImporter/lambda$4$Type",906),D(942,1,ir,FGt),l.Cd=function(e){Adn(this.a,u(e,8))},I(Ba,"JsonImporter/lambda$40$Type",942),D(907,1,{},BGt),I(Ba,"JsonImporter/lambda$5$Type",907),D(911,1,{},RGt),I(Ba,"JsonImporter/lambda$6$Type",911),D(909,1,{},jGt),I(Ba,"JsonImporter/lambda$7$Type",909),D(910,1,{},$Gt),I(Ba,"JsonImporter/lambda$8$Type",910),D(913,1,{},zGt),I(Ba,"JsonImporter/lambda$9$Type",913),D(961,1,ir,qGt),l.Cd=function(e){Y6(this.a,new Oy(Gr(e)))},I(Ba,"JsonMetaDataConverter/lambda$0$Type",961),D(962,1,ir,HGt),l.Cd=function(e){vln(this.a,u(e,245))},I(Ba,"JsonMetaDataConverter/lambda$1$Type",962),D(963,1,ir,VGt),l.Cd=function(e){mfn(this.a,u(e,143))},I(Ba,"JsonMetaDataConverter/lambda$2$Type",963),D(964,1,ir,UGt),l.Cd=function(e){yln(this.a,u(e,170))},I(Ba,"JsonMetaDataConverter/lambda$3$Type",964),D(245,22,{3:1,34:1,22:1,245:1},P6);var zK,qK,Qdt,HK,VK,UK,Jdt,Zdt,GK=Lr(fN,"GraphFeature",245,Pr,rgn,Gcn),uTe;D(11,1,{34:1,149:1},Oi,rs,un,_a),l.Fd=function(e){return gsn(this,u(e,149))},l.Fb=function(e){return One(this,e)},l.Sg=function(){return Se(this)},l.Pg=function(){return this.b},l.Hb=function(){return _p(this.b)},l.Ib=function(){return this.b},I(fN,"Property",11),D(671,1,Xr,Fnt),l.Ne=function(e,n){return T2n(this,u(e,96),u(n,96))},l.Fb=function(e){return this===e},l.Oe=function(){return new Be(this)},I(fN,"PropertyHolderComparator",671),D(709,1,wa,O2t),l.Nb=function(e){Na(this,e)},l.Pb=function(){return C0n(this)},l.Qb=function(){zWt()},l.Ob=function(){return!!this.a},I(dU,"ElkGraphUtil/AncestorIterator",709);var DIt=os(oo,"EList");D(70,56,{20:1,31:1,56:1,16:1,15:1,70:1,61:1}),l.bd=function(e,n){h_(this,e,n)},l.Fc=function(e){return Or(this,e)},l.cd=function(e,n){return K4t(this,e,n)},l.Gc=function(e){return gs(this,e)},l.Ii=function(){return new $6(this)},l.Ji=function(){return new aI(this)},l.Ki=function(e){return QI(this,e)},l.Li=function(){return!0},l.Mi=function(e,n){},l.Ni=function(){},l.Oi=function(e,n){Fst(this,e,n)},l.Pi=function(e,n,r){},l.Qi=function(e,n){},l.Ri=function(e,n,r){},l.Fb=function(e){return b0e(this,e)},l.Hb=function(){return H4t(this)},l.Si=function(){return!1},l.Kc=function(){return new Zn(this)},l.ed=function(){return new j6(this)},l.fd=function(e){var n;if(n=this.gc(),e<0||e>n)throw at(new Dy(e,n));return new zit(this,e)},l.Ui=function(e,n){this.Ti(e,this.dd(n))},l.Mc=function(e){return Dq(this,e)},l.Wi=function(e,n){return n},l.hd=function(e,n){return c5(this,e,n)},l.Ib=function(){return B5t(this)},l.Yi=function(){return!0},l.Zi=function(e,n){return d7(this,n)},I(oo,"AbstractEList",70),D(66,70,o0,pb,$m,B4t),l.Ei=function(e,n){return Oot(this,e,n)},l.Fi=function(e){return fhe(this,e)},l.Gi=function(e,n){fO(this,e,n)},l.Hi=function(e){PI(this,e)},l.$i=function(e){return Q3t(this,e)},l.$b=function(){KS(this)},l.Hc=function(e){return L7(this,e)},l.Xb=function(e){return Dt(this,e)},l._i=function(e){var n,r,s;++this.j,r=this.g==null?0:this.g.length,e>r&&(s=this.g,n=r+(r/2|0)+4,n=0?(this.gd(n),!0):!1},l.Xi=function(e,n){return this.Dj(e,this.Zi(e,n))},l.gc=function(){return this.Ej()},l.Pc=function(){return this.Fj()},l.Qc=function(e){return this.Gj(e)},l.Ib=function(){return this.Hj()},I(oo,"DelegatingEList",2093),D(2094,2093,Ime),l.Ei=function(e,n){return Mkt(this,e,n)},l.Fi=function(e){return this.Ei(this.Ej(),e)},l.Gi=function(e,n){rde(this,e,n)},l.Hi=function(e){U1e(this,e)},l.Li=function(){return!this.Mj()},l.$b=function(){j_(this)},l.Ij=function(e,n,r,s,o){return new Ine(this,e,n,r,s,o)},l.Jj=function(e){Ei(this.jj(),e)},l.Kj=function(){return null},l.Lj=function(){return-1},l.jj=function(){return null},l.Mj=function(){return!1},l.Nj=function(e,n){return n},l.Oj=function(e,n){return n},l.Pj=function(){return!1},l.Qj=function(){return!this.Aj()},l.Ti=function(e,n){var r,s;return this.Pj()?(s=this.Qj(),r=i6t(this,e,n),this.Jj(this.Ij(7,he(n),r,e,s)),r):i6t(this,e,n)},l.gd=function(e){var n,r,s,o;return this.Pj()?(r=null,s=this.Qj(),n=this.Ij(4,o=_z(this,e),null,e,s),this.Mj()&&o?(r=this.Oj(o,r),r?(r.nj(n),r.oj()):this.Jj(n)):r?(r.nj(n),r.oj()):this.Jj(n),o):(o=_z(this,e),this.Mj()&&o&&(r=this.Oj(o,null),r&&r.oj()),o)},l.Xi=function(e,n){return lge(this,e,n)},I(Pk,"DelegatingNotifyingListImpl",2094),D(152,1,LN),l.nj=function(e){return Hxt(this,e)},l.oj=function(){Vst(this)},l.gj=function(){return this.d},l.Kj=function(){return null},l.Rj=function(){return null},l.hj=function(e){return-1},l.ij=function(){return Qde(this)},l.jj=function(){return null},l.kj=function(){return ckt(this)},l.lj=function(){return this.o<0?this.o<-2?-2-this.o-1:-1:this.o},l.Sj=function(){return!1},l.mj=function(e){var n,r,s,o,h,d,m,k,T,A,P;switch(this.d){case 1:case 2:switch(o=e.gj(),o){case 1:case 2:if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null))return this.g=e.ij(),e.gj()==1&&(this.d=1),!0}case 4:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null))return T=Wkt(this),k=this.o<0?this.o<-2?-2-this.o-1:-1:this.o,d=e.lj(),this.d=6,P=new $m(2),k<=d?(Or(P,this.n),Or(P,e.kj()),this.g=lt(ut(Fr,1),ii,28,15,[this.o=k,d+1])):(Or(P,e.kj()),Or(P,this.n),this.g=lt(ut(Fr,1),ii,28,15,[this.o=d,k])),this.n=P,T||(this.o=-2-this.o-1),!0;break}}break}case 6:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.jj())&&this.hj(null)==e.hj(null)){for(T=Wkt(this),d=e.lj(),A=u(this.g,53),s=Vt(Fr,ii,28,A.length+1,15,1),n=0;n>>0,n.toString(16))),s.a+=" (eventType: ",this.d){case 1:{s.a+="SET";break}case 2:{s.a+="UNSET";break}case 3:{s.a+="ADD";break}case 5:{s.a+="ADD_MANY";break}case 4:{s.a+="REMOVE";break}case 6:{s.a+="REMOVE_MANY";break}case 7:{s.a+="MOVE";break}case 8:{s.a+="REMOVING_ADAPTER";break}case 9:{s.a+="RESOLVE";break}default:{art(s,this.d);break}}if(R0e(this)&&(s.a+=", touch: true"),s.a+=", position: ",art(s,this.o<0?this.o<-2?-2-this.o-1:-1:this.o),s.a+=", notifier: ",wS(s,this.jj()),s.a+=", feature: ",wS(s,this.Kj()),s.a+=", oldValue: ",wS(s,ckt(this)),s.a+=", newValue: ",this.d==6&&Lt(this.g,53)){for(r=u(this.g,53),s.a+="[",e=0;e10?((!this.b||this.c.j!=this.a)&&(this.b=new LS(this),this.a=this.j),x1(this.b,e)):L7(this,e)},l.Yi=function(){return!0},l.a=0,I(oo,"AbstractEList/1",966),D(301,77,out,Dy),I(oo,"AbstractEList/BasicIndexOutOfBoundsException",301),D(40,1,wa,Zn),l.Nb=function(e){Na(this,e)},l.Xj=function(){if(this.i.j!=this.f)throw at(new Th)},l.Yj=function(){return ar(this)},l.Ob=function(){return this.e!=this.i.gc()},l.Pb=function(){return this.Yj()},l.Qb=function(){E_(this)},l.e=0,l.f=0,l.g=-1,I(oo,"AbstractEList/EIterator",40),D(286,40,P0,j6,zit),l.Qb=function(){E_(this)},l.Rb=function(e){lle(this,e)},l.Zj=function(){var e;try{return e=this.d.Xb(--this.e),this.Xj(),this.g=this.e,e}catch(n){throw n=es(n),Lt(n,77)?(this.Xj(),at(new cc)):at(n)}},l.$j=function(e){phe(this,e)},l.Sb=function(){return this.e!=0},l.Tb=function(){return this.e},l.Ub=function(){return this.Zj()},l.Vb=function(){return this.e-1},l.Wb=function(e){this.$j(e)},I(oo,"AbstractEList/EListIterator",286),D(355,40,wa,$6),l.Yj=function(){return sot(this)},l.Qb=function(){throw at(new Vr)},I(oo,"AbstractEList/NonResolvingEIterator",355),D(398,286,P0,aI,Cvt),l.Rb=function(e){throw at(new Vr)},l.Yj=function(){var e;try{return e=this.c.Vi(this.e),this.Xj(),this.g=this.e++,e}catch(n){throw n=es(n),Lt(n,77)?(this.Xj(),at(new cc)):at(n)}},l.Zj=function(){var e;try{return e=this.c.Vi(--this.e),this.Xj(),this.g=this.e,e}catch(n){throw n=es(n),Lt(n,77)?(this.Xj(),at(new cc)):at(n)}},l.Qb=function(){throw at(new Vr)},l.Wb=function(e){throw at(new Vr)},I(oo,"AbstractEList/NonResolvingEListIterator",398),D(2080,70,Ome),l.Ei=function(e,n){var r,s,o,h,d,m,k,T,A,P,$;if(o=n.gc(),o!=0){for(T=u(jn(this.a,4),129),A=T==null?0:T.length,$=A+o,s=Aat(this,$),P=A-e,P>0&&Xc(T,e,s,e+o,P),k=n.Kc(),d=0;dr)throw at(new Dy(e,r));return new tne(this,e)},l.$b=function(){var e,n;++this.j,e=u(jn(this.a,4),129),n=e==null?0:e.length,C7(this,null),Fst(this,n,e)},l.Hc=function(e){var n,r,s,o,h;if(n=u(jn(this.a,4),129),n!=null){if(e!=null){for(s=n,o=0,h=s.length;o=r)throw at(new Dy(e,r));return n[e]},l.dd=function(e){var n,r,s;if(n=u(jn(this.a,4),129),n!=null){if(e!=null){for(r=0,s=n.length;rr)throw at(new Dy(e,r));return new Zee(this,e)},l.Ti=function(e,n){var r,s,o;if(r=yle(this),o=r==null?0:r.length,e>=o)throw at(new Bo(Zlt+e+Ew+o));if(n>=o)throw at(new Bo(tht+n+Ew+o));return s=r[n],e!=n&&(e0&&Xc(e,0,n,0,r),n},l.Qc=function(e){var n,r,s;return n=u(jn(this.a,4),129),s=n==null?0:n.length,s>0&&(e.lengths&&ls(e,s,null),e};var lTe;I(oo,"ArrayDelegatingEList",2080),D(1051,40,wa,ese),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},l.Qb=function(){E_(this),this.a=u(jn(this.b.a,4),129)},I(oo,"ArrayDelegatingEList/EIterator",1051),D(722,286,P0,dee,Zee),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},l.$j=function(e){phe(this,e),this.a=u(jn(this.b.a,4),129)},l.Qb=function(){E_(this),this.a=u(jn(this.b.a,4),129)},I(oo,"ArrayDelegatingEList/EListIterator",722),D(1052,355,wa,nse),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},I(oo,"ArrayDelegatingEList/NonResolvingEIterator",1052),D(723,398,P0,gee,tne),l.Xj=function(){if(this.b.j!=this.f||$t(u(jn(this.b.a,4),129))!==$t(this.a))throw at(new Th)},I(oo,"ArrayDelegatingEList/NonResolvingEListIterator",723),D(615,301,out,Grt),I(oo,"BasicEList/BasicIndexOutOfBoundsException",615),D(710,66,o0,dmt),l.bd=function(e,n){throw at(new Vr)},l.Fc=function(e){throw at(new Vr)},l.cd=function(e,n){throw at(new Vr)},l.Gc=function(e){throw at(new Vr)},l.$b=function(){throw at(new Vr)},l._i=function(e){throw at(new Vr)},l.Kc=function(){return this.Ii()},l.ed=function(){return this.Ji()},l.fd=function(e){return this.Ki(e)},l.Ti=function(e,n){throw at(new Vr)},l.Ui=function(e,n){throw at(new Vr)},l.gd=function(e){throw at(new Vr)},l.Mc=function(e){throw at(new Vr)},l.hd=function(e,n){throw at(new Vr)},I(oo,"BasicEList/UnmodifiableEList",710),D(721,1,{3:1,20:1,16:1,15:1,61:1,597:1}),l.bd=function(e,n){nsn(this,e,u(n,44))},l.Fc=function(e){return Ysn(this,u(e,44))},l.Jc=function(e){Fa(this,e)},l.Xb=function(e){return u(Dt(this.c,e),136)},l.Ti=function(e,n){return u(this.c.Ti(e,n),44)},l.Ui=function(e,n){rsn(this,e,u(n,44))},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return u(this.c.gd(e),44)},l.hd=function(e,n){return mln(this,e,u(n,44))},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.cd=function(e,n){return this.c.cd(e,n)},l.Gc=function(e){return this.c.Gc(e)},l.$b=function(){this.c.$b()},l.Hc=function(e){return this.c.Hc(e)},l.Ic=function(e){return rO(this.c,e)},l._j=function(){var e,n,r;if(this.d==null){for(this.d=Vt(MIt,jTt,66,2*this.f+1,0,1),r=this.e,this.f=0,n=this.c.Kc();n.e!=n.i.gc();)e=u(n.Yj(),136),IH(this,e);this.e=r}},l.Fb=function(e){return zZt(this,e)},l.Hb=function(){return H4t(this.c)},l.dd=function(e){return this.c.dd(e)},l.ak=function(){this.c=new GGt(this)},l.dc=function(){return this.f==0},l.Kc=function(){return this.c.Kc()},l.ed=function(){return this.c.ed()},l.fd=function(e){return this.c.fd(e)},l.bk=function(){return RI(this)},l.ck=function(e,n,r){return new tte(e,n,r)},l.dk=function(){return new XR},l.Mc=function(e){return _oe(this,e)},l.gc=function(){return this.f},l.kd=function(e,n){return new xp(this.c,e,n)},l.Pc=function(){return this.c.Pc()},l.Qc=function(e){return this.c.Qc(e)},l.Ib=function(){return B5t(this.c)},l.e=0,l.f=0,I(oo,"BasicEMap",721),D(1046,66,o0,GGt),l.Mi=function(e,n){Nnn(this,u(n,136))},l.Pi=function(e,n,r){var s;++(s=this,u(n,136),s).a.e},l.Qi=function(e,n){Pnn(this,u(n,136))},l.Ri=function(e,n,r){Nsn(this,u(n,136),u(r,136))},l.Oi=function(e,n){yce(this.a)},I(oo,"BasicEMap/1",1046),D(1047,66,o0,XR),l.aj=function(e){return Vt(k_n,Nme,621,e,0,1)},I(oo,"BasicEMap/2",1047),D(1048,dd,sl,KGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){return Yat(this.a,e)},l.Kc=function(){return this.a.f==0?(_E(),GP.a):new LWt(this.a)},l.Mc=function(e){var n;return n=this.a.f,yH(this.a,e),this.a.f!=n},l.gc=function(){return this.a.f},I(oo,"BasicEMap/3",1048),D(1049,31,o3,WGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){return w0e(this.a,e)},l.Kc=function(){return this.a.f==0?(_E(),GP.a):new DWt(this.a)},l.gc=function(){return this.a.f},I(oo,"BasicEMap/4",1049),D(1050,dd,sl,YGt),l.$b=function(){this.a.c.$b()},l.Hc=function(e){var n,r,s,o,h,d,m,k,T;if(this.a.f>0&&Lt(e,44)&&(this.a._j(),k=u(e,44),m=k.ld(),o=m==null?0:$i(m),h=lvt(this.a,o),n=this.a.d[h],n)){for(r=u(n.g,379),T=n.i,d=0;d"+this.c},l.a=0;var k_n=I(oo,"BasicEMap/EntryImpl",621);D(546,1,{},gC),I(oo,"BasicEMap/View",546);var GP;D(783,1,{}),l.Fb=function(e){return U6t((mn(),co),e)},l.Hb=function(){return e5t((mn(),co))},l.Ib=function(){return Hb((mn(),co))},I(oo,"ECollections/BasicEmptyUnmodifiableEList",783),D(1348,1,P0,Qtt),l.Nb=function(e){Na(this,e)},l.Rb=function(e){throw at(new Vr)},l.Ob=function(){return!1},l.Sb=function(){return!1},l.Pb=function(){throw at(new cc)},l.Tb=function(){return 0},l.Ub=function(){throw at(new cc)},l.Vb=function(){return-1},l.Qb=function(){throw at(new Vr)},l.Wb=function(e){throw at(new Vr)},I(oo,"ECollections/BasicEmptyUnmodifiableEList/1",1348),D(1346,783,{20:1,16:1,15:1,61:1},jKt),l.bd=function(e,n){tYt()},l.Fc=function(e){return eYt()},l.cd=function(e,n){return nYt()},l.Gc=function(e){return rYt()},l.$b=function(){iYt()},l.Hc=function(e){return!1},l.Ic=function(e){return!1},l.Jc=function(e){Fa(this,e)},l.Xb=function(e){return bmt((mn(),e)),null},l.dd=function(e){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.ed=function(){return this.a},l.fd=function(e){return this.a},l.Ti=function(e,n){return sYt()},l.Ui=function(e,n){aYt()},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return oYt()},l.Mc=function(e){return cYt()},l.hd=function(e,n){return uYt()},l.gc=function(){return 0},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.kd=function(e,n){return mn(),new xp(co,e,n)},l.Pc=function(){return dyt((mn(),co))},l.Qc=function(e){return mn(),v_(co,e)},I(oo,"ECollections/EmptyUnmodifiableEList",1346),D(1347,783,{20:1,16:1,15:1,61:1,597:1},$Kt),l.bd=function(e,n){tYt()},l.Fc=function(e){return eYt()},l.cd=function(e,n){return nYt()},l.Gc=function(e){return rYt()},l.$b=function(){iYt()},l.Hc=function(e){return!1},l.Ic=function(e){return!1},l.Jc=function(e){Fa(this,e)},l.Xb=function(e){return bmt((mn(),e)),null},l.dd=function(e){return-1},l.dc=function(){return!0},l.Kc=function(){return this.a},l.ed=function(){return this.a},l.fd=function(e){return this.a},l.Ti=function(e,n){return sYt()},l.Ui=function(e,n){aYt()},l.Lc=function(){return new ln(null,new gn(this,16))},l.gd=function(e){return oYt()},l.Mc=function(e){return cYt()},l.hd=function(e,n){return uYt()},l.gc=function(){return 0},l.jd=function(e){rw(this,e)},l.Nc=function(){return new gn(this,16)},l.Oc=function(){return new ln(null,new gn(this,16))},l.kd=function(e,n){return mn(),new xp(co,e,n)},l.Pc=function(){return dyt((mn(),co))},l.Qc=function(e){return mn(),v_(co,e)},l.bk=function(){return mn(),mn(),q0},I(oo,"ECollections/EmptyUnmodifiableEMap",1347);var OIt=os(oo,"Enumerator"),KK;D(288,1,{288:1},nct),l.Fb=function(e){var n;return this===e?!0:Lt(e,288)?(n=u(e,288),this.f==n.f&&Nun(this.i,n.i)&&Lit(this.a,this.f&256?n.f&256?n.a:null:n.f&256?null:n.a)&&Lit(this.d,n.d)&&Lit(this.g,n.g)&&Lit(this.e,n.e)&&imn(this,n)):!1},l.Hb=function(){return this.f},l.Ib=function(){return X0e(this)},l.f=0;var hTe=0,fTe=0,dTe=0,gTe=0,NIt=0,PIt=0,FIt=0,BIt=0,RIt=0,pTe,CL=0,SL=0,bTe=0,wTe=0,WK,jIt;I(oo,"URI",288),D(1121,45,E5,zKt),l.zc=function(e,n){return u(jo(this,Gr(e),u(n,288)),288)},I(oo,"URI/URICache",1121),D(505,66,o0,KR,Oz),l.Si=function(){return!0},I(oo,"UniqueEList",505),D(590,63,Pg,_q),I(oo,"WrappedException",590);var ci=os(qh,Bme),H3=os(qh,Rme),Wu=os(qh,jme),V3=os(qh,$me),B1=os(qh,zme),mf=os(qh,"EClass"),n0t=os(qh,"EDataType"),mTe;D(1233,45,E5,qKt),l.xc=function(e){return ba(e)?nu(this,e):Ko(Eo(this.f,e))},I(qh,"EDataType/Internal/ConversionDelegate/Factory/Registry/Impl",1233);var YK=os(qh,"EEnum"),Vg=os(qh,qme),Do=os(qh,Hme),vf=os(qh,Vme),yf,Ov=os(qh,Ume),U3=os(qh,Gme);D(1042,1,{},Ytt),l.Ib=function(){return"NIL"},I(qh,"EStructuralFeature/Internal/DynamicValueHolder/1",1042);var vTe;D(1041,45,E5,HKt),l.xc=function(e){return ba(e)?nu(this,e):Ko(Eo(this.f,e))},I(qh,"EStructuralFeature/Internal/SettingDelegate/Factory/Registry/Impl",1041);var Nu=os(qh,Kme),r8=os(qh,"EValidator/PatternMatcher"),$It,zIt,Fn,Jp,G3,w2,yTe,xTe,kTe,m2,Zp,v2,Nv,Sd,ETe,TTe,xf,tb,CTe,eb,K3,dx,wo,STe,_Te,Pv,XK=os(Yi,"FeatureMap/Entry");D(545,1,{76:1},X$),l.Lk=function(){return this.a},l.md=function(){return this.b},I(Rn,"BasicEObjectImpl/1",545),D(1040,1,aht,hQt),l.Fk=function(e){return Ist(this.a,this.b,e)},l.Qj=function(){return Kne(this.a,this.b)},l.Wb=function(e){e3t(this.a,this.b,e)},l.Gk=function(){Mln(this.a,this.b)},I(Rn,"BasicEObjectImpl/4",1040),D(2081,1,{114:1}),l.Mk=function(e){this.e=e==0?ATe:Vt(aa,Ln,1,e,5,1)},l.li=function(e){return this.e[e]},l.mi=function(e,n){this.e[e]=n},l.ni=function(e){this.e[e]=null},l.Nk=function(){return this.c},l.Ok=function(){throw at(new Vr)},l.Pk=function(){throw at(new Vr)},l.Qk=function(){return this.d},l.Rk=function(){return this.e!=null},l.Sk=function(e){this.c=e},l.Tk=function(e){throw at(new Vr)},l.Uk=function(e){throw at(new Vr)},l.Vk=function(e){this.d=e};var ATe;I(Rn,"BasicEObjectImpl/EPropertiesHolderBaseImpl",2081),D(192,2081,{114:1},Zh),l.Ok=function(){return this.a},l.Pk=function(){return this.b},l.Tk=function(e){this.a=e},l.Uk=function(e){this.b=e},I(Rn,"BasicEObjectImpl/EPropertiesHolderImpl",192),D(516,99,Wwe,E4),l.uh=function(){return this.f},l.zh=function(){return this.k},l.Bh=function(e,n){this.g=e,this.i=n},l.Dh=function(){return this.j&2?this.$h().Nk():this.ii()},l.Fh=function(){return this.i},l.wh=function(){return(this.j&1)!=0},l.Ph=function(){return this.g},l.Vh=function(){return(this.j&4)!=0},l.$h=function(){return!this.k&&(this.k=new Zh),this.k},l.ci=function(e){this.$h().Sk(e),e?this.j|=2:this.j&=-3},l.ei=function(e){this.$h().Uk(e),e?this.j|=4:this.j&=-5},l.ii=function(){return(Lb(),Fn).S},l.i=0,l.j=1,I(Rn,"EObjectImpl",516),D(798,516,{110:1,94:1,93:1,58:1,114:1,54:1,99:1},Xvt),l.li=function(e){return this.e[e]},l.mi=function(e,n){this.e[e]=n},l.ni=function(e){this.e[e]=null},l.Dh=function(){return this.d},l.Ih=function(e){return ns(this.d,e)},l.Kh=function(){return this.d},l.Oh=function(){return this.e!=null},l.$h=function(){return!this.k&&(this.k=new QR),this.k},l.ci=function(e){this.d=e},l.hi=function(){var e;return this.e==null&&(e=fr(this.d),this.e=e==0?LTe:Vt(aa,Ln,1,e,5,1)),this},l.ji=function(){return 0};var LTe;I(Rn,"DynamicEObjectImpl",798),D(1522,798,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1},Cte),l.Fb=function(e){return this===e},l.Hb=function(){return Em(this)},l.ci=function(e){this.d=e,this.b=zO(e,"key"),this.c=zO(e,cA)},l.Bi=function(){var e;return this.a==-1&&(e=Ust(this,this.b),this.a=e==null?0:$i(e)),this.a},l.ld=function(){return Ust(this,this.b)},l.md=function(){return Ust(this,this.c)},l.Ci=function(e){this.a=e},l.Di=function(e){e3t(this,this.b,e)},l.nd=function(e){var n;return n=Ust(this,this.c),e3t(this,this.c,e),n},l.a=0,I(Rn,"DynamicEObjectImpl/BasicEMapEntry",1522),D(1523,1,{114:1},QR),l.Mk=function(e){throw at(new Vr)},l.li=function(e){throw at(new Vr)},l.mi=function(e,n){throw at(new Vr)},l.ni=function(e){throw at(new Vr)},l.Nk=function(){throw at(new Vr)},l.Ok=function(){return this.a},l.Pk=function(){return this.b},l.Qk=function(){return this.c},l.Rk=function(){throw at(new Vr)},l.Sk=function(e){throw at(new Vr)},l.Tk=function(e){this.a=e},l.Uk=function(e){this.b=e},l.Vk=function(e){this.c=e},I(Rn,"DynamicEObjectImpl/DynamicEPropertiesHolderImpl",1523),D(519,158,{110:1,94:1,93:1,598:1,155:1,58:1,114:1,54:1,99:1,519:1,158:1,119:1,120:1},aM),l.Ah=function(e){return Sxt(this,e)},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.d;case 2:return r?(!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),this.b):(!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),RI(this.b));case 3:return Jne(this);case 4:return!this.a&&(this.a=new Ps(p2,this,4)),this.a;case 5:return!this.c&&(this.c=new G4(p2,this,5)),this.c}return Ih(this,e-fr((wn(),Jp)),En((s=u(jn(this,16),29),s||Jp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 3:return this.Cb&&(r=(o=this.Db>>16,o>=0?Sxt(this,r):this.Cb.Th(this,-1-o,null,r))),fyt(this,u(e,155),r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),Jp)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),Jp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 2:return!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),pz(this.b,e,r);case 3:return fyt(this,null,r);case 4:return!this.a&&(this.a=new Ps(p2,this,4)),so(this.a,e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Jp)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Jp)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.d!=null;case 2:return!!this.b&&this.b.f!=0;case 3:return!!Jne(this);case 4:return!!this.a&&this.a.i!=0;case 5:return!!this.c&&this.c.i!=0}return Dh(this,e-fr((wn(),Jp)),En((n=u(jn(this,16),29),n||Jp),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:xun(this,Gr(n));return;case 2:!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),Jq(this.b,n);return;case 3:Rde(this,u(n,155));return;case 4:!this.a&&(this.a=new Ps(p2,this,4)),Ir(this.a),!this.a&&(this.a=new Ps(p2,this,4)),gs(this.a,u(n,16));return;case 5:!this.c&&(this.c=new G4(p2,this,5)),Ir(this.c),!this.c&&(this.c=new G4(p2,this,5)),gs(this.c,u(n,16));return}Fh(this,e-fr((wn(),Jp)),En((r=u(jn(this,16),29),r||Jp),e),n)},l.ii=function(){return wn(),Jp},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:_4t(this,null);return;case 2:!this.b&&(this.b=new Ul((wn(),wo),Mc,this)),this.b.c.$b();return;case 3:Rde(this,null);return;case 4:!this.a&&(this.a=new Ps(p2,this,4)),Ir(this.a);return;case 5:!this.c&&(this.c=new G4(p2,this,5)),Ir(this.c);return}Ph(this,e-fr((wn(),Jp)),En((n=u(jn(this,16),29),n||Jp),e))},l.Ib=function(){return zue(this)},l.d=null,I(Rn,"EAnnotationImpl",519),D(141,721,$Tt,nl),l.Gi=function(e,n){jin(this,e,u(n,44))},l.Wk=function(e,n){return zan(this,u(e,44),n)},l.$i=function(e){return u(u(this.c,71).$i(e),136)},l.Ii=function(){return u(this.c,71).Ii()},l.Ji=function(){return u(this.c,71).Ji()},l.Ki=function(e){return u(this.c,71).Ki(e)},l.Xk=function(e,n){return pz(this,e,n)},l.Fk=function(e){return u(this.c,79).Fk(e)},l.ak=function(){},l.Qj=function(){return u(this.c,79).Qj()},l.ck=function(e,n,r){var s;return s=u(sh(this.b).wi().si(this.b),136),s.Ci(e),s.Di(n),s.nd(r),s},l.dk=function(){return new P2t(this)},l.Wb=function(e){Jq(this,e)},l.Gk=function(){u(this.c,79).Gk()},I(Yi,"EcoreEMap",141),D(165,141,$Tt,Ul),l._j=function(){var e,n,r,s,o,h;if(this.d==null){for(h=Vt(MIt,jTt,66,2*this.f+1,0,1),r=this.c.Kc();r.e!=r.i.gc();)n=u(r.Yj(),136),s=n.Bi(),o=(s&xi)%h.length,e=h[o],!e&&(e=h[o]=new P2t(this)),e.Fc(n);this.d=h}},I(Rn,"EAnnotationImpl/1",165),D(291,448,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,480:1,54:1,99:1,158:1,291:1,119:1,120:1}),l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),!!this.Jk();case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r)}return o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Jk();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0)}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:this.ui(Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:this.Zk(u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),_Te},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:this.ui(null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:this.Zk(1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.pi=function(){of(this),this.Bb|=1},l.Hk=function(){return of(this)},l.Ik=function(){return this.t},l.Jk=function(){var e;return e=this.t,e>1||e==-1},l.Si=function(){return(this.Bb&512)!=0},l.Yk=function(e,n){return y5t(this,e,n)},l.Zk=function(e){Hy(this,e)},l.Ib=function(){return F6t(this)},l.s=0,l.t=1,I(Rn,"ETypedElementImpl",291),D(461,291,{110:1,94:1,93:1,155:1,197:1,58:1,179:1,69:1,114:1,480:1,54:1,99:1,158:1,461:1,291:1,119:1,120:1,692:1}),l.Ah=function(e){return Dhe(this,e)},l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),!!this.Jk();case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return Pn(),!!(this.Bb&Uf);case 11:return Pn(),!!(this.Bb&b3);case 12:return Pn(),!!(this.Bb&u3);case 13:return this.j;case 14:return P7(this);case 15:return Pn(),!!(this.Bb&ol);case 16:return Pn(),!!(this.Bb&Jd);case 17:return Py(this)}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 17:return this.Cb&&(r=(o=this.Db>>16,o>=0?Dhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,17,r)}return h=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),h.wk().zk(this,Au(this),n-fr(this.ii()),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r);case 17:return hh(this,null,17,r)}return o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return this.Jk();case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return P7(this)!=null;case 15:return(this.Bb&ol)!=0;case 16:return(this.Bb&Jd)!=0;case 17:return!!Py(this)}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:wst(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:this.Zk(u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 10:m7(this,Ie(Me(n)));return;case 11:x7(this,Ie(Me(n)));return;case 12:v7(this,Ie(Me(n)));return;case 13:fmt(this,Gr(n));return;case 15:y7(this,Ie(Me(n)));return;case 16:k7(this,Ie(Me(n)));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),STe},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),4),mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:this.Zk(1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 10:m7(this,!0);return;case 11:x7(this,!1);return;case 12:v7(this,!1);return;case 13:this.i=null,Gq(this,null);return;case 15:y7(this,!1);return;case 16:k7(this,!1);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.pi=function(){RE($o((il(),ja),this)),of(this),this.Bb|=1},l.pk=function(){return this.f},l.ik=function(){return P7(this)},l.qk=function(){return Py(this)},l.uk=function(){return null},l.$k=function(){return this.k},l.Lj=function(){return this.n},l.vk=function(){return $H(this)},l.wk=function(){var e,n,r,s,o,h,d,m,k;return this.p||(r=Py(this),(r.i==null&&Qd(r),r.i).length,s=this.uk(),s&&fr(Py(s)),o=of(this),d=o.kk(),e=d?d.i&1?d==Fl?ys:d==Fr?Ra:d==Y3?wT:d==ma?zs:d==x2?gv:d==wx?pv:d==ul?Fk:vA:d:null,n=P7(this),m=o.ik(),P2n(this),this.Bb&Jd&&((h=Oxt((il(),ja),r))&&h!=this||(h=tk($o(ja,this))))?this.p=new dQt(this,h):this.Jk()?this.al()?s?this.Bb&ol?e?this.bl()?this.p=new X2(47,e,this,s):this.p=new X2(5,e,this,s):this.bl()?this.p=new ew(46,this,s):this.p=new ew(4,this,s):e?this.bl()?this.p=new X2(49,e,this,s):this.p=new X2(7,e,this,s):this.bl()?this.p=new ew(48,this,s):this.p=new ew(6,this,s):this.Bb&ol?e?e==Sw?this.p=new mp(50,cTe,this):this.bl()?this.p=new mp(43,e,this):this.p=new mp(1,e,this):this.bl()?this.p=new yp(42,this):this.p=new yp(0,this):e?e==Sw?this.p=new mp(41,cTe,this):this.bl()?this.p=new mp(45,e,this):this.p=new mp(3,e,this):this.bl()?this.p=new yp(44,this):this.p=new yp(2,this):Lt(o,156)?e==XK?this.p=new yp(40,this):this.Bb&512?this.Bb&ol?e?this.p=new mp(9,e,this):this.p=new yp(8,this):e?this.p=new mp(11,e,this):this.p=new yp(10,this):this.Bb&ol?e?this.p=new mp(13,e,this):this.p=new yp(12,this):e?this.p=new mp(15,e,this):this.p=new yp(14,this):s?(k=s.t,k>1||k==-1?this.bl()?this.Bb&ol?e?this.p=new X2(25,e,this,s):this.p=new ew(24,this,s):e?this.p=new X2(27,e,this,s):this.p=new ew(26,this,s):this.Bb&ol?e?this.p=new X2(29,e,this,s):this.p=new ew(28,this,s):e?this.p=new X2(31,e,this,s):this.p=new ew(30,this,s):this.bl()?this.Bb&ol?e?this.p=new X2(33,e,this,s):this.p=new ew(32,this,s):e?this.p=new X2(35,e,this,s):this.p=new ew(34,this,s):this.Bb&ol?e?this.p=new X2(37,e,this,s):this.p=new ew(36,this,s):e?this.p=new X2(39,e,this,s):this.p=new ew(38,this,s)):this.bl()?this.Bb&ol?e?this.p=new mp(17,e,this):this.p=new yp(16,this):e?this.p=new mp(19,e,this):this.p=new yp(18,this):this.Bb&ol?e?this.p=new mp(21,e,this):this.p=new yp(20,this):e?this.p=new mp(23,e,this):this.p=new yp(22,this):this._k()?this.bl()?this.p=new ete(u(o,29),this,s):this.p=new Zyt(u(o,29),this,s):Lt(o,156)?e==XK?this.p=new yp(40,this):this.Bb&ol?e?this.p=new tee(n,m,this,(Xat(),d==Fr?WIt:d==Fl?HIt:d==x2?YIt:d==Y3?KIt:d==ma?GIt:d==wx?XIt:d==ul?VIt:d==Yh?UIt:s0t)):this.p=new dne(u(o,156),n,m,this):e?this.p=new Zte(n,m,this,(Xat(),d==Fr?WIt:d==Fl?HIt:d==x2?YIt:d==Y3?KIt:d==ma?GIt:d==wx?XIt:d==ul?VIt:d==Yh?UIt:s0t)):this.p=new fne(u(o,156),n,m,this):this.al()?s?this.Bb&ol?this.bl()?this.p=new rte(u(o,29),this,s):this.p=new Rvt(u(o,29),this,s):this.bl()?this.p=new nte(u(o,29),this,s):this.p=new kit(u(o,29),this,s):this.Bb&ol?this.bl()?this.p=new ZJt(u(o,29),this):this.p=new Jmt(u(o,29),this):this.bl()?this.p=new JJt(u(o,29),this):this.p=new uit(u(o,29),this):this.bl()?s?this.Bb&ol?this.p=new ite(u(o,29),this,s):this.p=new Fvt(u(o,29),this,s):this.Bb&ol?this.p=new tZt(u(o,29),this):this.p=new Zmt(u(o,29),this):s?this.Bb&ol?this.p=new ste(u(o,29),this,s):this.p=new Bvt(u(o,29),this,s):this.Bb&ol?this.p=new eZt(u(o,29),this):this.p=new Iz(u(o,29),this)),this.p},l.rk=function(){return(this.Bb&Uf)!=0},l._k=function(){return!1},l.al=function(){return!1},l.sk=function(){return(this.Bb&Jd)!=0},l.xk=function(){return Gst(this)},l.bl=function(){return!1},l.tk=function(){return(this.Bb&ol)!=0},l.cl=function(e){this.k=e},l.ui=function(e){wst(this,e)},l.Ib=function(){return oV(this)},l.e=!1,l.n=0,I(Rn,"EStructuralFeatureImpl",461),D(331,461,{110:1,94:1,93:1,35:1,155:1,197:1,58:1,179:1,69:1,114:1,480:1,54:1,99:1,331:1,158:1,461:1,291:1,119:1,120:1,692:1},Hnt),l.Lh=function(e,n,r){var s,o;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),!!D6t(this);case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return Pn(),!!(this.Bb&Uf);case 11:return Pn(),!!(this.Bb&b3);case 12:return Pn(),!!(this.Bb&u3);case 13:return this.j;case 14:return P7(this);case 15:return Pn(),!!(this.Bb&ol);case 16:return Pn(),!!(this.Bb&Jd);case 17:return Py(this);case 18:return Pn(),!!(this.Bb&Fc);case 19:return n?bat(this):bse(this)}return Ih(this,e-fr((wn(),G3)),En((s=u(jn(this,16),29),s||G3),e),n,r)},l.Wh=function(e){var n,r;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return D6t(this);case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return P7(this)!=null;case 15:return(this.Bb&ol)!=0;case 16:return(this.Bb&Jd)!=0;case 17:return!!Py(this);case 18:return(this.Bb&Fc)!=0;case 19:return!!bse(this)}return Dh(this,e-fr((wn(),G3)),En((n=u(jn(this,16),29),n||G3),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:wst(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:OWt(this,u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 10:m7(this,Ie(Me(n)));return;case 11:x7(this,Ie(Me(n)));return;case 12:v7(this,Ie(Me(n)));return;case 13:fmt(this,Gr(n));return;case 15:y7(this,Ie(Me(n)));return;case 16:k7(this,Ie(Me(n)));return;case 18:qat(this,Ie(Me(n)));return}Fh(this,e-fr((wn(),G3)),En((r=u(jn(this,16),29),r||G3),e),n)},l.ii=function(){return wn(),G3},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),4),mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:this.b=0,Hy(this,1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 10:m7(this,!0);return;case 11:x7(this,!1);return;case 12:v7(this,!1);return;case 13:this.i=null,Gq(this,null);return;case 15:y7(this,!1);return;case 16:k7(this,!1);return;case 18:qat(this,!1);return}Ph(this,e-fr((wn(),G3)),En((n=u(jn(this,16),29),n||G3),e))},l.pi=function(){bat(this),RE($o((il(),ja),this)),of(this),this.Bb|=1},l.Jk=function(){return D6t(this)},l.Yk=function(e,n){return this.b=0,this.a=null,y5t(this,e,n)},l.Zk=function(e){OWt(this,e)},l.Ib=function(){var e;return this.Db&64?oV(this):(e=new ef(oV(this)),e.a+=" (iD: ",gp(e,(this.Bb&Fc)!=0),e.a+=")",e.a)},l.b=0,I(Rn,"EAttributeImpl",331),D(364,448,{110:1,94:1,93:1,142:1,155:1,197:1,58:1,114:1,54:1,99:1,364:1,158:1,119:1,120:1,691:1}),l.dl=function(e){return e.Dh()==this},l.Ah=function(e){return xot(this,e)},l.Bh=function(e,n){this.w=null,this.Db=n<<16|this.Db&255,this.Cb=e},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jm(this);case 4:return this.ik();case 5:return this.F;case 6:return n?sh(this):zE(this);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),this.A}return Ih(this,e-fr(this.ii()),En((s=u(jn(this,16),29),s||this.ii()),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?xot(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,6,r)}return h=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),h.wk().zk(this,Au(this),n-fr(this.ii()),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 6:return hh(this,null,6,r);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),so(this.A,e,r)}return o=u(En((s=u(jn(this,16),29),s||this.ii()),n),69),o.wk().Ak(this,Au(this),n-fr(this.ii()),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jm(this);case 4:return this.ik()!=null;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!zE(this);case 7:return!!this.A&&this.A.i!=0}return Dh(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:cq(this,Gr(n));return;case 2:Yrt(this,Gr(n));return;case 5:q7(this,Gr(n));return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A),!this.A&&(this.A=new Ju(Nu,this,7)),gs(this.A,u(n,16));return}Fh(this,e-fr(this.ii()),En((r=u(jn(this,16),29),r||this.ii()),e),n)},l.ii=function(){return wn(),yTe},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,184)&&(u(this.Cb,184).tb=null),mu(this,null);return;case 2:p7(this,null),t7(this,this.D);return;case 5:q7(this,null);return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A);return}Ph(this,e-fr(this.ii()),En((n=u(jn(this,16),29),n||this.ii()),e))},l.hk=function(){var e;return this.G==-1&&(this.G=(e=sh(this),e?Np(e.vi(),this):-1)),this.G},l.ik=function(){return null},l.jk=function(){return sh(this)},l.el=function(){return this.v},l.kk=function(){return Jm(this)},l.lk=function(){return this.D!=null?this.D:this.B},l.mk=function(){return this.F},l.fk=function(e){return hct(this,e)},l.fl=function(e){this.v=e},l.gl=function(e){tce(this,e)},l.hl=function(e){this.C=e},l.ui=function(e){cq(this,e)},l.Ib=function(){return bH(this)},l.C=null,l.D=null,l.G=-1,I(Rn,"EClassifierImpl",364),D(90,364,{110:1,94:1,93:1,29:1,142:1,155:1,197:1,58:1,114:1,54:1,99:1,90:1,364:1,158:1,481:1,119:1,120:1,691:1},Pj),l.dl=function(e){return Tan(this,e.Dh())},l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return this.D!=null?this.D:this.B;case 3:return Jm(this);case 4:return null;case 5:return this.F;case 6:return n?sh(this):zE(this);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),this.A;case 8:return Pn(),!!(this.Bb&256);case 9:return Pn(),!!(this.Bb&512);case 10:return Yo(this);case 11:return!this.q&&(this.q=new Jt(vf,this,11,10)),this.q;case 12:return v5(this);case 13:return F_(this);case 14:return F_(this),this.r;case 15:return v5(this),this.k;case 16:return y6t(this);case 17:return pct(this);case 18:return Qd(this);case 19:return JH(this);case 20:return v5(this),this.o;case 21:return!this.s&&(this.s=new Jt(Wu,this,21,17)),this.s;case 22:return Wc(this);case 23:return ect(this)}return Ih(this,e-fr((wn(),w2)),En((s=u(jn(this,16),29),s||w2),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 6:return this.Cb&&(r=(o=this.Db>>16,o>=0?xot(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,6,r);case 11:return!this.q&&(this.q=new Jt(vf,this,11,10)),vu(this.q,e,r);case 21:return!this.s&&(this.s=new Jt(Wu,this,21,17)),vu(this.s,e,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),w2)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),w2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 6:return hh(this,null,6,r);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),so(this.A,e,r);case 11:return!this.q&&(this.q=new Jt(vf,this,11,10)),so(this.q,e,r);case 21:return!this.s&&(this.s=new Jt(Wu,this,21,17)),so(this.s,e,r);case 22:return so(Wc(this),e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),w2)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),w2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jm(this);case 4:return!1;case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!zE(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)!=0;case 9:return(this.Bb&512)!=0;case 10:return!!this.u&&Wc(this.u.a).i!=0&&!(this.n&&lot(this.n));case 11:return!!this.q&&this.q.i!=0;case 12:return v5(this).i!=0;case 13:return F_(this).i!=0;case 14:return F_(this),this.r.i!=0;case 15:return v5(this),this.k.i!=0;case 16:return y6t(this).i!=0;case 17:return pct(this).i!=0;case 18:return Qd(this).i!=0;case 19:return JH(this).i!=0;case 20:return v5(this),!!this.o;case 21:return!!this.s&&this.s.i!=0;case 22:return!!this.n&&lot(this.n);case 23:return ect(this).i!=0}return Dh(this,e-fr((wn(),w2)),En((n=u(jn(this,16),29),n||w2),e))},l.Zh=function(e){var n;return n=this.i==null||this.q&&this.q.i!=0?null:zO(this,e),n||e8t(this,e)},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:cq(this,Gr(n));return;case 2:Yrt(this,Gr(n));return;case 5:q7(this,Gr(n));return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A),!this.A&&(this.A=new Ju(Nu,this,7)),gs(this.A,u(n,16));return;case 8:x5t(this,Ie(Me(n)));return;case 9:k5t(this,Ie(Me(n)));return;case 10:j_(Yo(this)),gs(Yo(this),u(n,16));return;case 11:!this.q&&(this.q=new Jt(vf,this,11,10)),Ir(this.q),!this.q&&(this.q=new Jt(vf,this,11,10)),gs(this.q,u(n,16));return;case 21:!this.s&&(this.s=new Jt(Wu,this,21,17)),Ir(this.s),!this.s&&(this.s=new Jt(Wu,this,21,17)),gs(this.s,u(n,16));return;case 22:Ir(Wc(this)),gs(Wc(this),u(n,16));return}Fh(this,e-fr((wn(),w2)),En((r=u(jn(this,16),29),r||w2),e),n)},l.ii=function(){return wn(),w2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,184)&&(u(this.Cb,184).tb=null),mu(this,null);return;case 2:p7(this,null),t7(this,this.D);return;case 5:q7(this,null);return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A);return;case 8:x5t(this,!1);return;case 9:k5t(this,!1);return;case 10:this.u&&j_(this.u);return;case 11:!this.q&&(this.q=new Jt(vf,this,11,10)),Ir(this.q);return;case 21:!this.s&&(this.s=new Jt(Wu,this,21,17)),Ir(this.s);return;case 22:this.n&&Ir(this.n);return}Ph(this,e-fr((wn(),w2)),En((n=u(jn(this,16),29),n||w2),e))},l.pi=function(){var e,n;if(v5(this),F_(this),y6t(this),pct(this),Qd(this),JH(this),ect(this),KS(Xcn(_l(this))),this.s)for(e=0,n=this.s.i;e=0;--n)Dt(this,n);return G5t(this,e)},l.Gk=function(){Ir(this)},l.Zi=function(e,n){return koe(this,e,n)},I(Yi,"EcoreEList",632),D(504,632,ic,mI),l.Li=function(){return!1},l.Lj=function(){return this.c},l.Mj=function(){return!1},l.ol=function(){return!0},l.Si=function(){return!0},l.Wi=function(e,n){return n},l.Yi=function(){return!1},l.c=0,I(Yi,"EObjectEList",504),D(83,504,ic,Ps),l.Mj=function(){return!0},l.ml=function(){return!1},l.al=function(){return!0},I(Yi,"EObjectContainmentEList",83),D(555,83,ic,az),l.Ni=function(){this.b=!0},l.Qj=function(){return this.b},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.b,this.b=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.b=!1},l.b=!1,I(Yi,"EObjectContainmentEList/Unsettable",555),D(1161,555,ic,Qte),l.Ti=function(e,n){var r,s;return r=u(f_(this,e,n),89),Hl(this.e)&&hE(this,new jI(this.a,7,(wn(),xTe),he(n),(s=r.c,Lt(s,90)?u(s,29):xf),e)),r},l.Uj=function(e,n){return wwn(this,u(e,89),n)},l.Vj=function(e,n){return bwn(this,u(e,89),n)},l.Wj=function(e,n,r){return yyn(this,u(e,89),u(n,89),r)},l.Ij=function(e,n,r,s,o){switch(e){case 3:return zS(this,e,n,r,s,this.i>1);case 5:return zS(this,e,n,r,s,this.i-u(r,15).gc()>0);default:return new Tg(this.e,e,this.c,n,r,s,!0)}},l.Tj=function(){return!0},l.Qj=function(){return lot(this)},l.Gk=function(){Ir(this)},I(Rn,"EClassImpl/1",1161),D(1175,1174,RTt),l.dj=function(e){var n,r,s,o,h,d,m;if(r=e.gj(),r!=8){if(s=Jwn(e),s==0)switch(r){case 1:case 9:{m=e.kj(),m!=null&&(n=_l(u(m,481)),!n.c&&(n.c=new x0),Dq(n.c,e.jj())),d=e.ij(),d!=null&&(o=u(d,481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Or(n.c,u(e.jj(),29))));break}case 3:{d=e.ij(),d!=null&&(o=u(d,481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Or(n.c,u(e.jj(),29))));break}case 5:{if(d=e.ij(),d!=null)for(h=u(d,16).Kc();h.Ob();)o=u(h.Pb(),481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Or(n.c,u(e.jj(),29)));break}case 4:{m=e.kj(),m!=null&&(o=u(m,481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Dq(n.c,e.jj())));break}case 6:{if(m=e.kj(),m!=null)for(h=u(m,16).Kc();h.Ob();)o=u(h.Pb(),481),o.Bb&1||(n=_l(o),!n.c&&(n.c=new x0),Dq(n.c,e.jj()));break}}this.ql(s)}},l.ql=function(e){T0e(this,e)},l.b=63,I(Rn,"ESuperAdapter",1175),D(1176,1175,RTt,QGt),l.ql=function(e){t3(this,e)},I(Rn,"EClassImpl/10",1176),D(1165,710,ic),l.Ei=function(e,n){return Oot(this,e,n)},l.Fi=function(e){return fhe(this,e)},l.Gi=function(e,n){fO(this,e,n)},l.Hi=function(e){PI(this,e)},l.$i=function(e){return Q3t(this,e)},l.Xi=function(e,n){return Kst(this,e,n)},l.Wk=function(e,n){throw at(new Vr)},l.Ii=function(){return new $6(this)},l.Ji=function(){return new aI(this)},l.Ki=function(e){return QI(this,e)},l.Xk=function(e,n){throw at(new Vr)},l.Fk=function(e){return this},l.Qj=function(){return this.i!=0},l.Wb=function(e){throw at(new Vr)},l.Gk=function(){throw at(new Vr)},I(Yi,"EcoreEList/UnmodifiableEList",1165),D(328,1165,ic,$4),l.Yi=function(){return!1},I(Yi,"EcoreEList/UnmodifiableEList/FastCompare",328),D(1168,328,ic,Kce),l.dd=function(e){var n,r,s;if(Lt(e,179)&&(n=u(e,179),r=n.Lj(),r!=-1)){for(s=this.i;r4)if(this.fk(e)){if(this.al()){if(s=u(e,54),r=s.Eh(),m=r==this.b&&(this.ml()?s.yh(s.Fh(),u(En($u(this.b),this.Lj()).Hk(),29).kk())==yo(u(En($u(this.b),this.Lj()),19)).n:-1-s.Fh()==this.Lj()),this.nl()&&!m&&!r&&s.Jh()){for(o=0;o1||s==-1)):!1},l.ml=function(){var e,n,r;return n=En($u(this.b),this.Lj()),Lt(n,102)?(e=u(n,19),r=yo(e),!!r):!1},l.nl=function(){var e,n;return n=En($u(this.b),this.Lj()),Lt(n,102)?(e=u(n,19),(e.Bb&po)!=0):!1},l.dd=function(e){var n,r,s,o;if(s=this.zj(e),s>=0)return s;if(this.ol()){for(r=0,o=this.Ej();r=0;--e)QO(this,e,this.xj(e));return this.Fj()},l.Qc=function(e){var n;if(this.nl())for(n=this.Ej()-1;n>=0;--n)QO(this,n,this.xj(n));return this.Gj(e)},l.Gk=function(){j_(this)},l.Zi=function(e,n){return Zse(this,e,n)},I(Yi,"DelegatingEcoreEList",756),D(1171,756,qTt,dZt),l.qj=function(e,n){Wsn(this,e,u(n,29))},l.rj=function(e){Fin(this,u(e,29))},l.xj=function(e){var n,r;return n=u(Dt(Wc(this.a),e),89),r=n.c,Lt(r,90)?u(r,29):(wn(),xf)},l.Cj=function(e){var n,r;return n=u(r3(Wc(this.a),e),89),r=n.c,Lt(r,90)?u(r,29):(wn(),xf)},l.Dj=function(e,n){return Umn(this,e,u(n,29))},l.Li=function(){return!1},l.Ij=function(e,n,r,s,o){return null},l.sj=function(){return new tKt(this)},l.tj=function(){Ir(Wc(this.a))},l.uj=function(e){return Hue(this,e)},l.vj=function(e){var n,r;for(r=e.Kc();r.Ob();)if(n=r.Pb(),!Hue(this,n))return!1;return!0},l.wj=function(e){var n,r,s;if(Lt(e,15)&&(s=u(e,15),s.gc()==Wc(this.a).i)){for(n=s.Kc(),r=new Zn(this);n.Ob();)if($t(n.Pb())!==$t(ar(r)))return!1;return!0}return!1},l.yj=function(){var e,n,r,s,o;for(r=1,n=new Zn(Wc(this.a));n.e!=n.i.gc();)e=u(ar(n),89),s=(o=e.c,Lt(o,90)?u(o,29):(wn(),xf)),r=31*r+(s?Em(s):0);return r},l.zj=function(e){var n,r,s,o;for(s=0,r=new Zn(Wc(this.a));r.e!=r.i.gc();){if(n=u(ar(r),89),$t(e)===$t((o=n.c,Lt(o,90)?u(o,29):(wn(),xf))))return s;++s}return-1},l.Aj=function(){return Wc(this.a).i==0},l.Bj=function(){return null},l.Ej=function(){return Wc(this.a).i},l.Fj=function(){var e,n,r,s,o,h;for(h=Wc(this.a).i,o=Vt(aa,Ln,1,h,5,1),r=0,n=new Zn(Wc(this.a));n.e!=n.i.gc();)e=u(ar(n),89),o[r++]=(s=e.c,Lt(s,90)?u(s,29):(wn(),xf));return o},l.Gj=function(e){var n,r,s,o,h,d,m;for(m=Wc(this.a).i,e.lengthm&&ls(e,m,null),s=0,r=new Zn(Wc(this.a));r.e!=r.i.gc();)n=u(ar(r),89),h=(d=n.c,Lt(d,90)?u(d,29):(wn(),xf)),ls(e,s++,h);return e},l.Hj=function(){var e,n,r,s,o;for(o=new dp,o.a+="[",e=Wc(this.a),n=0,s=Wc(this.a).i;n>16,o>=0?xot(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,6,r);case 9:return!this.a&&(this.a=new Jt(Vg,this,9,5)),vu(this.a,e,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),m2)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),m2)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 6:return hh(this,null,6,r);case 7:return!this.A&&(this.A=new Ju(Nu,this,7)),so(this.A,e,r);case 9:return!this.a&&(this.a=new Jt(Vg,this,9,5)),so(this.a,e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),m2)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),m2)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.D!=null&&this.D==this.F;case 3:return!!Jm(this);case 4:return!!u5t(this);case 5:return this.F!=null&&this.F!=this.D&&this.F!=this.B;case 6:return!!zE(this);case 7:return!!this.A&&this.A.i!=0;case 8:return(this.Bb&256)==0;case 9:return!!this.a&&this.a.i!=0}return Dh(this,e-fr((wn(),m2)),En((n=u(jn(this,16),29),n||m2),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:cq(this,Gr(n));return;case 2:Yrt(this,Gr(n));return;case 5:q7(this,Gr(n));return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A),!this.A&&(this.A=new Ju(Nu,this,7)),gs(this.A,u(n,16));return;case 8:lH(this,Ie(Me(n)));return;case 9:!this.a&&(this.a=new Jt(Vg,this,9,5)),Ir(this.a),!this.a&&(this.a=new Jt(Vg,this,9,5)),gs(this.a,u(n,16));return}Fh(this,e-fr((wn(),m2)),En((r=u(jn(this,16),29),r||m2),e),n)},l.ii=function(){return wn(),m2},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,184)&&(u(this.Cb,184).tb=null),mu(this,null);return;case 2:p7(this,null),t7(this,this.D);return;case 5:q7(this,null);return;case 7:!this.A&&(this.A=new Ju(Nu,this,7)),Ir(this.A);return;case 8:lH(this,!0);return;case 9:!this.a&&(this.a=new Jt(Vg,this,9,5)),Ir(this.a);return}Ph(this,e-fr((wn(),m2)),En((n=u(jn(this,16),29),n||m2),e))},l.pi=function(){var e,n;if(this.a)for(e=0,n=this.a.i;e>16==5?u(this.Cb,685):null}return Ih(this,e-fr((wn(),Zp)),En((s=u(jn(this,16),29),s||Zp),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 5:return this.Cb&&(r=(o=this.Db>>16,o>=0?jhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,5,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),Zp)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),Zp)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 5:return hh(this,null,5,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Zp)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Zp)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return this.d!=0;case 3:return!!this.b;case 4:return this.c!=null;case 5:return!!(this.Db>>16==5&&u(this.Cb,685))}return Dh(this,e-fr((wn(),Zp)),En((n=u(jn(this,16),29),n||Zp),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:Zst(this,u(n,17).a);return;case 3:B1e(this,u(n,2039));return;case 4:eat(this,Gr(n));return}Fh(this,e-fr((wn(),Zp)),En((r=u(jn(this,16),29),r||Zp),e),n)},l.ii=function(){return wn(),Zp},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:Zst(this,0);return;case 3:B1e(this,null);return;case 4:eat(this,null);return}Ph(this,e-fr((wn(),Zp)),En((n=u(jn(this,16),29),n||Zp),e))},l.Ib=function(){var e;return e=this.c,e??this.zb},l.b=null,l.c=null,l.d=0,I(Rn,"EEnumLiteralImpl",582);var E_n=os(Rn,"EFactoryImpl/InternalEDateTimeFormat");D(498,1,{2114:1},AM),I(Rn,"EFactoryImpl/1ClientInternalEDateTimeFormat",498),D(248,120,{110:1,94:1,93:1,89:1,58:1,114:1,54:1,99:1,248:1,119:1,120:1},lm),l.Ch=function(e,n,r){var s;return r=hh(this,e,n,r),this.e&&Lt(e,179)&&(s=QH(this,this.e),s!=this.c&&(r=H7(this,s,r))),r},l.Lh=function(e,n,r){var s;switch(e){case 0:return this.f;case 1:return!this.d&&(this.d=new Ps(Do,this,1)),this.d;case 2:return n?lV(this):this.c;case 3:return this.b;case 4:return this.e;case 5:return n?dot(this):this.a}return Ih(this,e-fr((wn(),Nv)),En((s=u(jn(this,16),29),s||Nv),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return Due(this,null,r);case 1:return!this.d&&(this.d=new Ps(Do,this,1)),so(this.d,e,r);case 3:return Mue(this,null,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Nv)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Nv)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.f;case 1:return!!this.d&&this.d.i!=0;case 2:return!!this.c;case 3:return!!this.b;case 4:return!!this.e;case 5:return!!this.a}return Dh(this,e-fr((wn(),Nv)),En((n=u(jn(this,16),29),n||Nv),e))},l.bi=function(e,n){var r;switch(e){case 0:ife(this,u(n,89));return;case 1:!this.d&&(this.d=new Ps(Do,this,1)),Ir(this.d),!this.d&&(this.d=new Ps(Do,this,1)),gs(this.d,u(n,16));return;case 3:zxt(this,u(n,89));return;case 4:a6t(this,u(n,850));return;case 5:YE(this,u(n,142));return}Fh(this,e-fr((wn(),Nv)),En((r=u(jn(this,16),29),r||Nv),e),n)},l.ii=function(){return wn(),Nv},l.ki=function(e){var n;switch(e){case 0:ife(this,null);return;case 1:!this.d&&(this.d=new Ps(Do,this,1)),Ir(this.d);return;case 3:zxt(this,null);return;case 4:a6t(this,null);return;case 5:YE(this,null);return}Ph(this,e-fr((wn(),Nv)),En((n=u(jn(this,16),29),n||Nv),e))},l.Ib=function(){var e;return e=new eh(qf(this)),e.a+=" (expression: ",xct(this,e),e.a+=")",e.a};var qIt;I(Rn,"EGenericTypeImpl",248),D(2067,2062,mU),l.Gi=function(e,n){lZt(this,e,n)},l.Wk=function(e,n){return lZt(this,this.gc(),e),n},l.$i=function(e){return jh(this.pj(),e)},l.Ii=function(){return this.Ji()},l.pj=function(){return new iKt(this)},l.Ji=function(){return this.Ki(0)},l.Ki=function(e){return this.pj().fd(e)},l.Xk=function(e,n){return Ky(this,e,!0),n},l.Ti=function(e,n){var r,s;return s=Tot(this,n),r=this.fd(e),r.Rb(s),s},l.Ui=function(e,n){var r;Ky(this,n,!0),r=this.fd(e),r.Rb(n)},I(Yi,"AbstractSequentialInternalEList",2067),D(495,2067,mU,sI),l.$i=function(e){return jh(this.pj(),e)},l.Ii=function(){return this.b==null?(bp(),bp(),KP):this.sl()},l.pj=function(){return new LQt(this.a,this.b)},l.Ji=function(){return this.b==null?(bp(),bp(),KP):this.sl()},l.Ki=function(e){var n,r;if(this.b==null){if(e<0||e>1)throw at(new Bo(uA+e+", size=0"));return bp(),bp(),KP}for(r=this.sl(),n=0;n0;)if(n=this.c[--this.d],(!this.e||n.pk()!=QT||n.Lj()!=0)&&(!this.vl()||this.b.Xh(n))){if(h=this.b.Nh(n,this.ul()),this.f=(vo(),u(n,69).xk()),this.f||n.Jk()){if(this.ul()?(s=u(h,15),this.k=s):(s=u(h,71),this.k=this.j=s),Lt(this.k,59)?(this.o=this.k.gc(),this.n=this.o):this.p=this.j?this.j.Ki(this.k.gc()):this.k.fd(this.k.gc()),this.p?Jfe(this,this.p):l1e(this))return o=this.p?this.p.Ub():this.j?this.j.$i(--this.n):this.k.Xb(--this.n),this.f?(e=u(o,76),e.Lk(),r=e.md(),this.i=r):(r=o,this.i=r),this.g=-3,!0}else if(h!=null)return this.k=null,this.p=null,r=h,this.i=r,this.g=-2,!0}return this.k=null,this.p=null,this.g=-1,!1}else return o=this.p?this.p.Ub():this.j?this.j.$i(--this.n):this.k.Xb(--this.n),this.f?(e=u(o,76),e.Lk(),r=e.md(),this.i=r):(r=o,this.i=r),this.g=-3,!0}},l.Pb=function(){return eH(this)},l.Tb=function(){return this.a},l.Ub=function(){var e;if(this.g<-1||this.Sb())return--this.a,this.g=0,e=this.i,this.Sb(),e;throw at(new cc)},l.Vb=function(){return this.a-1},l.Qb=function(){throw at(new Vr)},l.ul=function(){return!1},l.Wb=function(e){throw at(new Vr)},l.vl=function(){return!0},l.a=0,l.d=0,l.f=!1,l.g=0,l.n=0,l.o=0;var KP;I(Yi,"EContentsEList/FeatureIteratorImpl",287),D(711,287,vU,Qmt),l.ul=function(){return!0},I(Yi,"EContentsEList/ResolvingFeatureIteratorImpl",711),D(1178,711,vU,YJt),l.vl=function(){return!1},I(Rn,"ENamedElementImpl/1/1",1178),D(1179,287,vU,XJt),l.vl=function(){return!1},I(Rn,"ENamedElementImpl/1/2",1179),D(38,152,LN,Ry,Tst,ha,jst,Tg,jf,l4t,Lre,h4t,Dre,A3t,Mre,g4t,Ire,L3t,Ore,f4t,Nre,NS,jI,sst,d4t,Pre,D3t,Fre),l.Kj=function(){return K3t(this)},l.Rj=function(){var e;return e=K3t(this),e?e.ik():null},l.hj=function(e){return this.b==-1&&this.a&&(this.b=this.c.Hh(this.a.Lj(),this.a.pk())),this.c.yh(this.b,e)},l.jj=function(){return this.c},l.Sj=function(){var e;return e=K3t(this),e?e.tk():!1},l.b=-1,I(Rn,"ENotificationImpl",38),D(411,291,{110:1,94:1,93:1,155:1,197:1,58:1,62:1,114:1,480:1,54:1,99:1,158:1,411:1,291:1,119:1,120:1},Vnt),l.Ah=function(e){return qhe(this,e)},l.Lh=function(e,n,r){var s,o,h;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),h=this.t,h>1||h==-1;case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,29):null;case 11:return!this.d&&(this.d=new Ju(Nu,this,11)),this.d;case 12:return!this.c&&(this.c=new Jt(Ov,this,12,10)),this.c;case 13:return!this.a&&(this.a=new lI(this,this)),this.a;case 14:return Al(this)}return Ih(this,e-fr((wn(),tb)),En((s=u(jn(this,16),29),s||tb),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?qhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,10,r);case 12:return!this.c&&(this.c=new Jt(Ov,this,12,10)),vu(this.c,e,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),tb)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),tb)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r);case 10:return hh(this,null,10,r);case 11:return!this.d&&(this.d=new Ju(Nu,this,11)),so(this.d,e,r);case 12:return!this.c&&(this.c=new Jt(Ov,this,12,10)),so(this.c,e,r);case 14:return so(Al(this),e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),tb)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),tb)),e,r)},l.Wh=function(e){var n,r,s;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,29));case 11:return!!this.d&&this.d.i!=0;case 12:return!!this.c&&this.c.i!=0;case 13:return!!this.a&&Al(this.a.a).i!=0&&!(this.b&&hot(this.b));case 14:return!!this.b&&hot(this.b)}return Dh(this,e-fr((wn(),tb)),En((n=u(jn(this,16),29),n||tb),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:Hy(this,u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 11:!this.d&&(this.d=new Ju(Nu,this,11)),Ir(this.d),!this.d&&(this.d=new Ju(Nu,this,11)),gs(this.d,u(n,16));return;case 12:!this.c&&(this.c=new Jt(Ov,this,12,10)),Ir(this.c),!this.c&&(this.c=new Jt(Ov,this,12,10)),gs(this.c,u(n,16));return;case 13:!this.a&&(this.a=new lI(this,this)),j_(this.a),!this.a&&(this.a=new lI(this,this)),gs(this.a,u(n,16));return;case 14:Ir(Al(this)),gs(Al(this),u(n,16));return}Fh(this,e-fr((wn(),tb)),En((r=u(jn(this,16),29),r||tb),e),n)},l.ii=function(){return wn(),tb},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:Hy(this,1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 11:!this.d&&(this.d=new Ju(Nu,this,11)),Ir(this.d);return;case 12:!this.c&&(this.c=new Jt(Ov,this,12,10)),Ir(this.c);return;case 13:this.a&&j_(this.a);return;case 14:this.b&&Ir(this.b);return}Ph(this,e-fr((wn(),tb)),En((n=u(jn(this,16),29),n||tb),e))},l.pi=function(){var e,n;if(this.c)for(e=0,n=this.c.i;em&&ls(e,m,null),s=0,r=new Zn(Al(this.a));r.e!=r.i.gc();)n=u(ar(r),89),h=(d=n.c,d||(wn(),Sd)),ls(e,s++,h);return e},l.Hj=function(){var e,n,r,s,o;for(o=new dp,o.a+="[",e=Al(this.a),n=0,s=Al(this.a).i;n1);case 5:return zS(this,e,n,r,s,this.i-u(r,15).gc()>0);default:return new Tg(this.e,e,this.c,n,r,s,!0)}},l.Tj=function(){return!0},l.Qj=function(){return hot(this)},l.Gk=function(){Ir(this)},I(Rn,"EOperationImpl/2",1377),D(507,1,{2037:1,507:1},fQt),I(Rn,"EPackageImpl/1",507),D(14,83,ic,Jt),l.il=function(){return this.d},l.jl=function(){return this.b},l.ml=function(){return!0},l.b=0,I(Yi,"EObjectContainmentWithInverseEList",14),D(365,14,ic,z6),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentWithInverseEList/Resolving",365),D(307,365,ic,Iy),l.Ni=function(){this.a.tb=null},I(Rn,"EPackageImpl/2",307),D(1278,1,{},tet),I(Rn,"EPackageImpl/3",1278),D(733,45,E5,Z2t),l._b=function(e){return ba(e)?ost(this,e):!!Eo(this.f,e)},I(Rn,"EPackageRegistryImpl",733),D(518,291,{110:1,94:1,93:1,155:1,197:1,58:1,2116:1,114:1,480:1,54:1,99:1,158:1,518:1,291:1,119:1,120:1},Unt),l.Ah=function(e){return Hhe(this,e)},l.Lh=function(e,n,r){var s,o,h;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),h=this.t,h>1||h==-1;case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return this.Db>>16==10?u(this.Cb,62):null}return Ih(this,e-fr((wn(),K3)),En((s=u(jn(this,16),29),s||K3),e),n,r)},l.Sh=function(e,n,r){var s,o,h;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),vu(this.Ab,e,r);case 10:return this.Cb&&(r=(o=this.Db>>16,o>=0?Hhe(this,r):this.Cb.Th(this,-1-o,null,r))),hh(this,e,10,r)}return h=u(En((s=u(jn(this,16),29),s||(wn(),K3)),n),69),h.wk().zk(this,Au(this),n-fr((wn(),K3)),e,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 9:return Vit(this,r);case 10:return hh(this,null,10,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),K3)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),K3)),e,r)},l.Wh=function(e){var n,r,s;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return s=this.t,s>1||s==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return!!(this.Db>>16==10&&u(this.Cb,62))}return Dh(this,e-fr((wn(),K3)),En((n=u(jn(this,16),29),n||K3),e))},l.ii=function(){return wn(),K3},I(Rn,"EParameterImpl",518),D(102,461,{110:1,94:1,93:1,155:1,197:1,58:1,19:1,179:1,69:1,114:1,480:1,54:1,99:1,158:1,102:1,461:1,291:1,119:1,120:1,692:1},nvt),l.Lh=function(e,n,r){var s,o,h,d;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return Pn(),!!(this.Bb&256);case 3:return Pn(),!!(this.Bb&512);case 4:return he(this.s);case 5:return he(this.t);case 6:return Pn(),d=this.t,d>1||d==-1;case 7:return Pn(),o=this.s,o>=1;case 8:return n?of(this):this.r;case 9:return this.q;case 10:return Pn(),!!(this.Bb&Uf);case 11:return Pn(),!!(this.Bb&b3);case 12:return Pn(),!!(this.Bb&u3);case 13:return this.j;case 14:return P7(this);case 15:return Pn(),!!(this.Bb&ol);case 16:return Pn(),!!(this.Bb&Jd);case 17:return Py(this);case 18:return Pn(),!!(this.Bb&Fc);case 19:return Pn(),h=yo(this),!!(h&&h.Bb&Fc);case 20:return Pn(),!!(this.Bb&po);case 21:return n?yo(this):this.b;case 22:return n?Z4t(this):ase(this);case 23:return!this.a&&(this.a=new G4(V3,this,23)),this.a}return Ih(this,e-fr((wn(),dx)),En((s=u(jn(this,16),29),s||dx),e),n,r)},l.Wh=function(e){var n,r,s,o;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return(this.Bb&256)==0;case 3:return(this.Bb&512)==0;case 4:return this.s!=0;case 5:return this.t!=1;case 6:return o=this.t,o>1||o==-1;case 7:return r=this.s,r>=1;case 8:return!!this.r&&!this.q.e&&Mm(this.q).i==0;case 9:return!!this.q&&!(this.r&&!this.q.e&&Mm(this.q).i==0);case 10:return(this.Bb&Uf)==0;case 11:return(this.Bb&b3)!=0;case 12:return(this.Bb&u3)!=0;case 13:return this.j!=null;case 14:return P7(this)!=null;case 15:return(this.Bb&ol)!=0;case 16:return(this.Bb&Jd)!=0;case 17:return!!Py(this);case 18:return(this.Bb&Fc)!=0;case 19:return s=yo(this),!!s&&(s.Bb&Fc)!=0;case 20:return(this.Bb&po)==0;case 21:return!!this.b;case 22:return!!ase(this);case 23:return!!this.a&&this.a.i!=0}return Dh(this,e-fr((wn(),dx)),En((n=u(jn(this,16),29),n||dx),e))},l.bi=function(e,n){var r,s;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:wst(this,Gr(n));return;case 2:Dp(this,Ie(Me(n)));return;case 3:Mp(this,Ie(Me(n)));return;case 4:Sp(this,u(n,17).a);return;case 5:Hy(this,u(n,17).a);return;case 8:uw(this,u(n,142));return;case 9:s=hd(this,u(n,89),null),s&&s.oj();return;case 10:m7(this,Ie(Me(n)));return;case 11:x7(this,Ie(Me(n)));return;case 12:v7(this,Ie(Me(n)));return;case 13:fmt(this,Gr(n));return;case 15:y7(this,Ie(Me(n)));return;case 16:k7(this,Ie(Me(n)));return;case 18:wfn(this,Ie(Me(n)));return;case 20:M5t(this,Ie(Me(n)));return;case 21:L4t(this,u(n,19));return;case 23:!this.a&&(this.a=new G4(V3,this,23)),Ir(this.a),!this.a&&(this.a=new G4(V3,this,23)),gs(this.a,u(n,16));return}Fh(this,e-fr((wn(),dx)),En((r=u(jn(this,16),29),r||dx),e),n)},l.ii=function(){return wn(),dx},l.ki=function(e){var n,r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),4),mu(this,null);return;case 2:Dp(this,!0);return;case 3:Mp(this,!0);return;case 4:Sp(this,0);return;case 5:Hy(this,1);return;case 8:uw(this,null);return;case 9:r=hd(this,null,null),r&&r.oj();return;case 10:m7(this,!0);return;case 11:x7(this,!1);return;case 12:v7(this,!1);return;case 13:this.i=null,Gq(this,null);return;case 15:y7(this,!1);return;case 16:k7(this,!1);return;case 18:D5t(this,!1),Lt(this.Cb,90)&&t3(_l(u(this.Cb,90)),2);return;case 20:M5t(this,!0);return;case 21:L4t(this,null);return;case 23:!this.a&&(this.a=new G4(V3,this,23)),Ir(this.a);return}Ph(this,e-fr((wn(),dx)),En((n=u(jn(this,16),29),n||dx),e))},l.pi=function(){Z4t(this),RE($o((il(),ja),this)),of(this),this.Bb|=1},l.uk=function(){return yo(this)},l._k=function(){var e;return e=yo(this),!!e&&(e.Bb&Fc)!=0},l.al=function(){return(this.Bb&Fc)!=0},l.bl=function(){return(this.Bb&po)!=0},l.Yk=function(e,n){return this.c=null,y5t(this,e,n)},l.Ib=function(){var e;return this.Db&64?oV(this):(e=new ef(oV(this)),e.a+=" (containment: ",gp(e,(this.Bb&Fc)!=0),e.a+=", resolveProxies: ",gp(e,(this.Bb&po)!=0),e.a+=")",e.a)},I(Rn,"EReferenceImpl",102),D(561,120,{110:1,44:1,94:1,93:1,136:1,58:1,114:1,54:1,99:1,561:1,119:1,120:1},wC),l.Fb=function(e){return this===e},l.ld=function(){return this.b},l.md=function(){return this.c},l.Hb=function(){return Em(this)},l.Di=function(e){kun(this,Gr(e))},l.nd=function(e){return oun(this,Gr(e))},l.Lh=function(e,n,r){var s;switch(e){case 0:return this.b;case 1:return this.c}return Ih(this,e-fr((wn(),wo)),En((s=u(jn(this,16),29),s||wo),e),n,r)},l.Wh=function(e){var n;switch(e){case 0:return this.b!=null;case 1:return this.c!=null}return Dh(this,e-fr((wn(),wo)),En((n=u(jn(this,16),29),n||wo),e))},l.bi=function(e,n){var r;switch(e){case 0:Eun(this,Gr(n));return;case 1:S4t(this,Gr(n));return}Fh(this,e-fr((wn(),wo)),En((r=u(jn(this,16),29),r||wo),e),n)},l.ii=function(){return wn(),wo},l.ki=function(e){var n;switch(e){case 0:C4t(this,null);return;case 1:S4t(this,null);return}Ph(this,e-fr((wn(),wo)),En((n=u(jn(this,16),29),n||wo),e))},l.Bi=function(){var e;return this.a==-1&&(e=this.b,this.a=e==null?0:_p(e)),this.a},l.Ci=function(e){this.a=e},l.Ib=function(){var e;return this.Db&64?qf(this):(e=new ef(qf(this)),e.a+=" (key: ",Mo(e,this.b),e.a+=", value: ",Mo(e,this.c),e.a+=")",e.a)},l.a=-1,l.b=null,l.c=null;var Mc=I(Rn,"EStringToStringMapEntryImpl",561),MTe=os(Yi,"FeatureMap/Entry/Internal");D(576,1,yU),l.xl=function(e){return this.yl(u(e,54))},l.yl=function(e){return this.xl(e)},l.Fb=function(e){var n,r;return this===e?!0:Lt(e,76)?(n=u(e,76),n.Lk()==this.c?(r=this.md(),r==null?n.md()==null:Ti(r,n.md())):!1):!1},l.Lk=function(){return this.c},l.Hb=function(){var e;return e=this.md(),$i(this.c)^(e==null?0:$i(e))},l.Ib=function(){var e,n;return e=this.c,n=sh(e.qk()).yi(),e.xe(),(n!=null&&n.length!=0?n+":"+e.xe():e.xe())+"="+this.md()},I(Rn,"EStructuralFeatureImpl/BasicFeatureMapEntry",576),D(791,576,yU,hvt),l.yl=function(e){return new hvt(this.c,e)},l.md=function(){return this.a},l.zl=function(e,n,r){return apn(this,e,this.a,n,r)},l.Al=function(e,n,r){return opn(this,e,this.a,n,r)},I(Rn,"EStructuralFeatureImpl/ContainmentUpdatingFeatureMapEntry",791),D(1350,1,{},dQt),l.yk=function(e,n,r,s,o){var h;return h=u(UE(e,this.b),220),h.Yl(this.a).Fk(s)},l.zk=function(e,n,r,s,o){var h;return h=u(UE(e,this.b),220),h.Pl(this.a,s,o)},l.Ak=function(e,n,r,s,o){var h;return h=u(UE(e,this.b),220),h.Ql(this.a,s,o)},l.Bk=function(e,n,r){var s;return s=u(UE(e,this.b),220),s.Yl(this.a).Qj()},l.Ck=function(e,n,r,s){var o;o=u(UE(e,this.b),220),o.Yl(this.a).Wb(s)},l.Dk=function(e,n,r){return u(UE(e,this.b),220).Yl(this.a)},l.Ek=function(e,n,r){var s;s=u(UE(e,this.b),220),s.Yl(this.a).Gk()},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateFeatureMapDelegator",1350),D(91,1,{},mp,X2,yp,ew),l.yk=function(e,n,r,s,o){var h;if(h=n.li(r),h==null&&n.mi(r,h=vV(this,e)),!o)switch(this.e){case 50:case 41:return u(h,597).bk();case 40:return u(h,220).Vl()}return h},l.zk=function(e,n,r,s,o){var h,d;return d=n.li(r),d==null&&n.mi(r,d=vV(this,e)),h=u(d,71).Wk(s,o),h},l.Ak=function(e,n,r,s,o){var h;return h=n.li(r),h!=null&&(o=u(h,71).Xk(s,o)),o},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null&&u(s,79).Qj()},l.Ck=function(e,n,r,s){var o;o=u(n.li(r),79),!o&&n.mi(r,o=vV(this,e)),o.Wb(s)},l.Dk=function(e,n,r){var s,o;return o=n.li(r),o==null&&n.mi(r,o=vV(this,e)),Lt(o,79)?u(o,79):(s=u(n.li(r),15),new nKt(s))},l.Ek=function(e,n,r){var s;s=u(n.li(r),79),!s&&n.mi(r,s=vV(this,e)),s.Gk()},l.b=0,l.e=0,I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateMany",91),D(512,1,{}),l.zk=function(e,n,r,s,o){throw at(new Vr)},l.Ak=function(e,n,r,s,o){throw at(new Vr)},l.Dk=function(e,n,r){return new hne(this,e,n,r)};var Q0;I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingle",512),D(1367,1,aht,hne),l.Fk=function(e){return this.a.yk(this.c,this.d,this.b,e,!0)},l.Qj=function(){return this.a.Bk(this.c,this.d,this.b)},l.Wb=function(e){this.a.Ck(this.c,this.d,this.b,e)},l.Gk=function(){this.a.Ek(this.c,this.d,this.b)},l.b=0,I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingle/1",1367),D(784,512,{},Zyt),l.yk=function(e,n,r,s,o){return oct(e,e.Ph(),e.Fh())==this.b?this.bl()&&s?Kot(e):e.Ph():null},l.zk=function(e,n,r,s,o){var h,d;return e.Ph()&&(o=(h=e.Fh(),h>=0?e.Ah(o):e.Ph().Th(e,-1-h,null,o))),d=ns(e.Dh(),this.e),e.Ch(s,d,o)},l.Ak=function(e,n,r,s,o){var h;return h=ns(e.Dh(),this.e),e.Ch(null,h,o)},l.Bk=function(e,n,r){var s;return s=ns(e.Dh(),this.e),!!e.Ph()&&e.Fh()==s},l.Ck=function(e,n,r,s){var o,h,d,m,k;if(s!=null&&!hct(this.a,s))throw at(new fE(xU+(Lt(s,58)?$xt(u(s,58).Dh()):a4t(Wl(s)))+kU+this.a+"'"));if(o=e.Ph(),d=ns(e.Dh(),this.e),$t(s)!==$t(o)||e.Fh()!=d&&s!=null){if(_7(e,u(s,58)))throw at(new zn(oA+e.Ib()));k=null,o&&(k=(h=e.Fh(),h>=0?e.Ah(k):e.Ph().Th(e,-1-h,null,k))),m=u(s,54),m&&(k=m.Rh(e,ns(m.Dh(),this.b),null,k)),k=e.Ch(m,d,k),k&&k.oj()}else e.vh()&&e.wh()&&Ei(e,new ha(e,1,d,s,s))},l.Ek=function(e,n,r){var s,o,h,d;s=e.Ph(),s?(d=(o=e.Fh(),o>=0?e.Ah(null):e.Ph().Th(e,-1-o,null,null)),h=ns(e.Dh(),this.e),d=e.Ch(null,h,d),d&&d.oj()):e.vh()&&e.wh()&&Ei(e,new NS(e,1,this.e,null,null))},l.bl=function(){return!1},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainer",784),D(1351,784,{},ete),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleContainerResolving",1351),D(574,512,{}),l.yk=function(e,n,r,s,o){var h;return h=n.li(r),h==null?this.b:$t(h)===$t(Q0)?null:h},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null&&($t(s)===$t(Q0)||!Ti(s,this.b))},l.Ck=function(e,n,r,s){var o,h;e.vh()&&e.wh()?(o=(h=n.li(r),h==null?this.b:$t(h)===$t(Q0)?null:h),s==null?this.c!=null?(n.mi(r,null),s=this.b):this.b!=null?n.mi(r,Q0):n.mi(r,null):(this.Bl(s),n.mi(r,s)),Ei(e,this.d.Cl(e,1,this.e,o,s))):s==null?this.c!=null?n.mi(r,null):this.b!=null?n.mi(r,Q0):n.mi(r,null):(this.Bl(s),n.mi(r,s))},l.Ek=function(e,n,r){var s,o;e.vh()&&e.wh()?(s=(o=n.li(r),o==null?this.b:$t(o)===$t(Q0)?null:o),n.ni(r),Ei(e,this.d.Cl(e,1,this.e,s,this.b))):n.ni(r)},l.Bl=function(e){throw at(new dKt)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData",574),D(O5,1,{},mC),l.Cl=function(e,n,r,s,o){return new NS(e,n,r,s,o)},l.Dl=function(e,n,r,s,o,h){return new sst(e,n,r,s,o,h)};var HIt,VIt,UIt,GIt,KIt,WIt,YIt,s0t,XIt;I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator",O5),D(1368,O5,{},b1),l.Cl=function(e,n,r,s,o){return new D3t(e,n,r,Ie(Me(s)),Ie(Me(o)))},l.Dl=function(e,n,r,s,o,h){return new Fre(e,n,r,Ie(Me(s)),Ie(Me(o)),h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/1",1368),D(1369,O5,{},uM),l.Cl=function(e,n,r,s,o){return new l4t(e,n,r,u(s,222).a,u(o,222).a)},l.Dl=function(e,n,r,s,o,h){return new Lre(e,n,r,u(s,222).a,u(o,222).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/2",1369),D(1370,O5,{},lM),l.Cl=function(e,n,r,s,o){return new h4t(e,n,r,u(s,180).a,u(o,180).a)},l.Dl=function(e,n,r,s,o,h){return new Dre(e,n,r,u(s,180).a,u(o,180).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/3",1370),D(1371,O5,{},u6),l.Cl=function(e,n,r,s,o){return new A3t(e,n,r,Rt(Ht(s)),Rt(Ht(o)))},l.Dl=function(e,n,r,s,o,h){return new Mre(e,n,r,Rt(Ht(s)),Rt(Ht(o)),h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/4",1371),D(1372,O5,{},eet),l.Cl=function(e,n,r,s,o){return new g4t(e,n,r,u(s,161).a,u(o,161).a)},l.Dl=function(e,n,r,s,o,h){return new Ire(e,n,r,u(s,161).a,u(o,161).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/5",1372),D(1373,O5,{},net),l.Cl=function(e,n,r,s,o){return new L3t(e,n,r,u(s,17).a,u(o,17).a)},l.Dl=function(e,n,r,s,o,h){return new Ore(e,n,r,u(s,17).a,u(o,17).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/6",1373),D(1374,O5,{},ret),l.Cl=function(e,n,r,s,o){return new f4t(e,n,r,u(s,168).a,u(o,168).a)},l.Dl=function(e,n,r,s,o,h){return new Nre(e,n,r,u(s,168).a,u(o,168).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/7",1374),D(1375,O5,{},iet),l.Cl=function(e,n,r,s,o){return new d4t(e,n,r,u(s,191).a,u(o,191).a)},l.Dl=function(e,n,r,s,o,h){return new Pre(e,n,r,u(s,191).a,u(o,191).a,h)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleData/NotificationCreator/8",1375),D(1353,574,{},fne),l.Bl=function(e){if(!this.a.fk(e))throw at(new fE(xU+Wl(e)+kU+this.a+"'"))},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataDynamic",1353),D(1354,574,{},Zte),l.Bl=function(e){},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataStatic",1354),D(785,574,{}),l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null},l.Ck=function(e,n,r,s){var o,h;e.vh()&&e.wh()?(o=!0,h=n.li(r),h==null?(o=!1,h=this.b):$t(h)===$t(Q0)&&(h=null),s==null?this.c!=null?(n.mi(r,null),s=this.b):n.mi(r,Q0):(this.Bl(s),n.mi(r,s)),Ei(e,this.d.Dl(e,1,this.e,h,s,!o))):s==null?this.c!=null?n.mi(r,null):n.mi(r,Q0):(this.Bl(s),n.mi(r,s))},l.Ek=function(e,n,r){var s,o;e.vh()&&e.wh()?(s=!0,o=n.li(r),o==null?(s=!1,o=this.b):$t(o)===$t(Q0)&&(o=null),n.ni(r),Ei(e,this.d.Dl(e,2,this.e,o,this.b,s))):n.ni(r)},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettable",785),D(1355,785,{},dne),l.Bl=function(e){if(!this.a.fk(e))throw at(new fE(xU+Wl(e)+kU+this.a+"'"))},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableDynamic",1355),D(1356,785,{},tee),l.Bl=function(e){},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleDataUnsettableStatic",1356),D(410,512,{},Iz),l.yk=function(e,n,r,s,o){var h,d,m,k,T;if(T=n.li(r),this.tk()&&$t(T)===$t(Q0))return null;if(this.bl()&&s&&T!=null){if(m=u(T,54),m.Vh()&&(k=jb(e,m),m!=k)){if(!hct(this.a,k))throw at(new fE(xU+Wl(k)+kU+this.a+"'"));n.mi(r,T=k),this.al()&&(h=u(k,54),d=m.Th(e,this.b?ns(m.Dh(),this.b):-1-ns(e.Dh(),this.e),null,null),!h.Ph()&&(d=h.Rh(e,this.b?ns(h.Dh(),this.b):-1-ns(e.Dh(),this.e),null,d)),d&&d.oj()),e.vh()&&e.wh()&&Ei(e,new NS(e,9,this.e,m,k))}return T}else return T},l.zk=function(e,n,r,s,o){var h,d;return d=n.li(r),$t(d)===$t(Q0)&&(d=null),n.mi(r,s),this.Mj()?$t(d)!==$t(s)&&d!=null&&(h=u(d,54),o=h.Th(e,ns(h.Dh(),this.b),null,o)):this.al()&&d!=null&&(o=u(d,54).Th(e,-1-ns(e.Dh(),this.e),null,o)),e.vh()&&e.wh()&&(!o&&(o=new xb(4)),o.nj(new NS(e,1,this.e,d,s))),o},l.Ak=function(e,n,r,s,o){var h;return h=n.li(r),$t(h)===$t(Q0)&&(h=null),n.ni(r),e.vh()&&e.wh()&&(!o&&(o=new xb(4)),this.tk()?o.nj(new NS(e,2,this.e,h,null)):o.nj(new NS(e,1,this.e,h,null))),o},l.Bk=function(e,n,r){var s;return s=n.li(r),s!=null},l.Ck=function(e,n,r,s){var o,h,d,m,k;if(s!=null&&!hct(this.a,s))throw at(new fE(xU+(Lt(s,58)?$xt(u(s,58).Dh()):a4t(Wl(s)))+kU+this.a+"'"));k=n.li(r),m=k!=null,this.tk()&&$t(k)===$t(Q0)&&(k=null),d=null,this.Mj()?$t(k)!==$t(s)&&(k!=null&&(o=u(k,54),d=o.Th(e,ns(o.Dh(),this.b),null,d)),s!=null&&(o=u(s,54),d=o.Rh(e,ns(o.Dh(),this.b),null,d))):this.al()&&$t(k)!==$t(s)&&(k!=null&&(d=u(k,54).Th(e,-1-ns(e.Dh(),this.e),null,d)),s!=null&&(d=u(s,54).Rh(e,-1-ns(e.Dh(),this.e),null,d))),s==null&&this.tk()?n.mi(r,Q0):n.mi(r,s),e.vh()&&e.wh()?(h=new sst(e,1,this.e,k,s,this.tk()&&!m),d?(d.nj(h),d.oj()):Ei(e,h)):d&&d.oj()},l.Ek=function(e,n,r){var s,o,h,d,m;m=n.li(r),d=m!=null,this.tk()&&$t(m)===$t(Q0)&&(m=null),h=null,m!=null&&(this.Mj()?(s=u(m,54),h=s.Th(e,ns(s.Dh(),this.b),null,h)):this.al()&&(h=u(m,54).Th(e,-1-ns(e.Dh(),this.e),null,h))),n.ni(r),e.vh()&&e.wh()?(o=new sst(e,this.tk()?2:1,this.e,m,null,d),h?(h.nj(o),h.oj()):Ei(e,o)):h&&h.oj()},l.Mj=function(){return!1},l.al=function(){return!1},l.bl=function(){return!1},l.tk=function(){return!1},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObject",410),D(575,410,{},uit),l.al=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainment",575),D(1359,575,{},JJt),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentResolving",1359),D(787,575,{},Jmt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettable",787),D(1361,787,{},ZJt),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentUnsettableResolving",1361),D(650,575,{},kit),l.Mj=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverse",650),D(1360,650,{},nte),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseResolving",1360),D(788,650,{},Rvt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettable",788),D(1362,788,{},rte),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectContainmentWithInverseUnsettableResolving",1362),D(651,410,{},Zmt),l.bl=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolving",651),D(1363,651,{},tZt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingUnsettable",1363),D(789,651,{},Fvt),l.Mj=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverse",789),D(1364,789,{},ite),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectResolvingWithInverseUnsettable",1364),D(1357,410,{},eZt),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectUnsettable",1357),D(786,410,{},Bvt),l.Mj=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverse",786),D(1358,786,{},ste),l.tk=function(){return!0},I(Rn,"EStructuralFeatureImpl/InternalSettingDelegateSingleEObjectWithInverseUnsettable",1358),D(790,576,yU,Nyt),l.yl=function(e){return new Nyt(this.a,this.c,e)},l.md=function(){return this.b},l.zl=function(e,n,r){return i0n(this,e,this.b,r)},l.Al=function(e,n,r){return s0n(this,e,this.b,r)},I(Rn,"EStructuralFeatureImpl/InverseUpdatingFeatureMapEntry",790),D(1365,1,aht,nKt),l.Fk=function(e){return this.a},l.Qj=function(){return Lt(this.a,97)?u(this.a,97).Qj():!this.a.dc()},l.Wb=function(e){this.a.$b(),this.a.Gc(u(e,15))},l.Gk=function(){Lt(this.a,97)?u(this.a,97).Gk():this.a.$b()},I(Rn,"EStructuralFeatureImpl/SettingMany",1365),D(1366,576,yU,_ie),l.xl=function(e){return new fit((Ni(),DL),this.b.ri(this.a,e))},l.md=function(){return null},l.zl=function(e,n,r){return r},l.Al=function(e,n,r){return r},I(Rn,"EStructuralFeatureImpl/SimpleContentFeatureMapEntry",1366),D(652,576,yU,fit),l.xl=function(e){return new fit(this.c,e)},l.md=function(){return this.a},l.zl=function(e,n,r){return r},l.Al=function(e,n,r){return r},I(Rn,"EStructuralFeatureImpl/SimpleFeatureMapEntry",652),D(403,505,o0,x0),l.aj=function(e){return Vt(mf,Ln,29,e,0,1)},l.Yi=function(){return!1},I(Rn,"ESuperAdapter/1",403),D(456,448,{110:1,94:1,93:1,155:1,197:1,58:1,114:1,850:1,54:1,99:1,158:1,456:1,119:1,120:1},vC),l.Lh=function(e,n,r){var s;switch(e){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),this.Ab;case 1:return this.zb;case 2:return!this.a&&(this.a=new DS(this,Do,this)),this.a}return Ih(this,e-fr((wn(),Pv)),En((s=u(jn(this,16),29),s||Pv),e),n,r)},l.Uh=function(e,n,r){var s,o;switch(n){case 0:return!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),so(this.Ab,e,r);case 2:return!this.a&&(this.a=new DS(this,Do,this)),so(this.a,e,r)}return o=u(En((s=u(jn(this,16),29),s||(wn(),Pv)),n),69),o.wk().Ak(this,Au(this),n-fr((wn(),Pv)),e,r)},l.Wh=function(e){var n;switch(e){case 0:return!!this.Ab&&this.Ab.i!=0;case 1:return this.zb!=null;case 2:return!!this.a&&this.a.i!=0}return Dh(this,e-fr((wn(),Pv)),En((n=u(jn(this,16),29),n||Pv),e))},l.bi=function(e,n){var r;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab),!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),gs(this.Ab,u(n,16));return;case 1:mu(this,Gr(n));return;case 2:!this.a&&(this.a=new DS(this,Do,this)),Ir(this.a),!this.a&&(this.a=new DS(this,Do,this)),gs(this.a,u(n,16));return}Fh(this,e-fr((wn(),Pv)),En((r=u(jn(this,16),29),r||Pv),e),n)},l.ii=function(){return wn(),Pv},l.ki=function(e){var n;switch(e){case 0:!this.Ab&&(this.Ab=new Jt(ci,this,0,3)),Ir(this.Ab);return;case 1:mu(this,null);return;case 2:!this.a&&(this.a=new DS(this,Do,this)),Ir(this.a);return}Ph(this,e-fr((wn(),Pv)),En((n=u(jn(this,16),29),n||Pv),e))},I(Rn,"ETypeParameterImpl",456),D(457,83,ic,DS),l.Nj=function(e,n){return v3n(this,u(e,89),n)},l.Oj=function(e,n){return y3n(this,u(e,89),n)},I(Rn,"ETypeParameterImpl/1",457),D(647,45,E5,Gnt),l.ec=function(){return new s$(this)},I(Rn,"ETypeParameterImpl/2",647),D(570,dd,sl,s$),l.Fc=function(e){return _Zt(this,u(e,89))},l.Gc=function(e){var n,r,s;for(s=!1,r=e.Kc();r.Ob();)n=u(r.Pb(),89),hi(this.a,n,"")==null&&(s=!0);return s},l.$b=function(){dl(this.a)},l.Hc=function(e){return Tu(this.a,e)},l.Kc=function(){var e;return e=new sw(new mr(this.a).a),new a$(e)},l.Mc=function(e){return wse(this,e)},l.gc=function(){return QC(this.a)},I(Rn,"ETypeParameterImpl/2/1",570),D(571,1,wa,a$),l.Nb=function(e){Na(this,e)},l.Pb=function(){return u(Um(this.a).ld(),89)},l.Ob=function(){return this.a.b},l.Qb=function(){Sae(this.a)},I(Rn,"ETypeParameterImpl/2/1/1",571),D(1329,45,E5,GKt),l._b=function(e){return ba(e)?ost(this,e):!!Eo(this.f,e)},l.xc=function(e){var n,r;return n=ba(e)?nu(this,e):Ko(Eo(this.f,e)),Lt(n,851)?(r=u(n,851),n=r.Kk(),hi(this,u(e,241),n),n):n??(e==null?(hrt(),OTe):null)},I(Rn,"EValidatorRegistryImpl",1329),D(1349,720,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,2040:1,54:1,99:1,158:1,119:1,120:1},l6),l.ri=function(e,n){switch(e.hk()){case 21:case 22:case 23:case 24:case 26:case 31:case 32:case 37:case 38:case 39:case 40:case 43:case 44:case 48:case 49:case 20:return n==null?null:rc(n);case 25:return bgn(n);case 27:return D0n(n);case 28:return M0n(n);case 29:return n==null?null:iJt(TL[0],u(n,206));case 41:return n==null?"":V2(u(n,296));case 42:return rc(n);case 50:return Gr(n);default:throw at(new zn(lT+e.xe()+fv))}},l.si=function(e){var n,r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht;switch(e.G==-1&&(e.G=($=sh(e),$?Np($.vi(),e):-1)),e.G){case 0:return r=new Hnt,r;case 1:return n=new aM,n;case 2:return s=new Pj,s;case 4:return o=new o$,o;case 5:return h=new UKt,h;case 6:return d=new bKt,d;case 7:return m=new Fj,m;case 10:return T=new E4,T;case 11:return A=new Vnt,A;case 12:return P=new xne,P;case 13:return U=new Unt,U;case 14:return J=new nvt,J;case 17:return tt=new wC,tt;case 18:return k=new lm,k;case 19:return ht=new vC,ht;default:throw at(new zn(Vlt+e.zb+fv))}},l.ti=function(e,n){switch(e.hk()){case 20:return n==null?null:new Twt(n);case 21:return n==null?null:new Sb(n);case 23:case 22:return n==null?null:Lwn(n);case 26:case 24:return n==null?null:GI(lh(n,-128,127)<<24>>24);case 25:return Wxn(n);case 27:return bvn(n);case 28:return wvn(n);case 29:return $3n(n);case 32:case 31:return n==null?null:Jy(n);case 38:case 37:return n==null?null:new z2t(n);case 40:case 39:return n==null?null:he(lh(n,Ga,xi));case 41:return null;case 42:return n==null,null;case 44:case 43:return n==null?null:Mg(mV(n));case 49:case 48:return n==null?null:w7(lh(n,EU,32767)<<16>>16);case 50:return n;default:throw at(new zn(lT+e.xe()+fv))}},I(Rn,"EcoreFactoryImpl",1349),D(560,184,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,2038:1,54:1,99:1,158:1,184:1,560:1,119:1,120:1,690:1},Uee),l.gb=!1,l.hb=!1;var QIt,ITe=!1;I(Rn,"EcorePackageImpl",560),D(1234,1,{851:1},K1),l.Kk=function(){return wJt(),NTe},I(Rn,"EcorePackageImpl/1",1234),D(1243,1,li,JR),l.fk=function(e){return Lt(e,155)},l.gk=function(e){return Vt(HP,Ln,155,e,0,1)},I(Rn,"EcorePackageImpl/10",1243),D(1244,1,li,ZR),l.fk=function(e){return Lt(e,197)},l.gk=function(e){return Vt(Xdt,Ln,197,e,0,1)},I(Rn,"EcorePackageImpl/11",1244),D(1245,1,li,tj),l.fk=function(e){return Lt(e,58)},l.gk=function(e){return Vt(p2,Ln,58,e,0,1)},I(Rn,"EcorePackageImpl/12",1245),D(1246,1,li,ej),l.fk=function(e){return Lt(e,411)},l.gk=function(e){return Vt(vf,zTt,62,e,0,1)},I(Rn,"EcorePackageImpl/13",1246),D(1247,1,li,nj),l.fk=function(e){return Lt(e,241)},l.gk=function(e){return Vt(F1,Ln,241,e,0,1)},I(Rn,"EcorePackageImpl/14",1247),D(1248,1,li,rj),l.fk=function(e){return Lt(e,518)},l.gk=function(e){return Vt(Ov,Ln,2116,e,0,1)},I(Rn,"EcorePackageImpl/15",1248),D(1249,1,li,w1),l.fk=function(e){return Lt(e,102)},l.gk=function(e){return Vt(U3,I5,19,e,0,1)},I(Rn,"EcorePackageImpl/16",1249),D(1250,1,li,Bu),l.fk=function(e){return Lt(e,179)},l.gk=function(e){return Vt(Wu,I5,179,e,0,1)},I(Rn,"EcorePackageImpl/17",1250),D(1251,1,li,set),l.fk=function(e){return Lt(e,480)},l.gk=function(e){return Vt(H3,Ln,480,e,0,1)},I(Rn,"EcorePackageImpl/18",1251),D(1252,1,li,aet),l.fk=function(e){return Lt(e,561)},l.gk=function(e){return Vt(Mc,Nme,561,e,0,1)},I(Rn,"EcorePackageImpl/19",1252),D(1235,1,li,oet),l.fk=function(e){return Lt(e,331)},l.gk=function(e){return Vt(V3,I5,35,e,0,1)},I(Rn,"EcorePackageImpl/2",1235),D(1253,1,li,Ru),l.fk=function(e){return Lt(e,248)},l.gk=function(e){return Vt(Do,Qme,89,e,0,1)},I(Rn,"EcorePackageImpl/20",1253),D(1254,1,li,yC),l.fk=function(e){return Lt(e,456)},l.gk=function(e){return Vt(Nu,Ln,850,e,0,1)},I(Rn,"EcorePackageImpl/21",1254),D(1255,1,li,ij),l.fk=function(e){return Ty(e)},l.gk=function(e){return Vt(ys,ue,484,e,8,1)},I(Rn,"EcorePackageImpl/22",1255),D(1256,1,li,sj),l.fk=function(e){return Lt(e,195)},l.gk=function(e){return Vt(ul,ue,195,e,0,2)},I(Rn,"EcorePackageImpl/23",1256),D(1257,1,li,h6),l.fk=function(e){return Lt(e,222)},l.gk=function(e){return Vt(Fk,ue,222,e,0,1)},I(Rn,"EcorePackageImpl/24",1257),D(1258,1,li,cet),l.fk=function(e){return Lt(e,180)},l.gk=function(e){return Vt(vA,ue,180,e,0,1)},I(Rn,"EcorePackageImpl/25",1258),D(1259,1,li,X8),l.fk=function(e){return Lt(e,206)},l.gk=function(e){return Vt(OU,ue,206,e,0,1)},I(Rn,"EcorePackageImpl/26",1259),D(1260,1,li,uet),l.fk=function(e){return!1},l.gk=function(e){return Vt(pOt,Ln,2215,e,0,1)},I(Rn,"EcorePackageImpl/27",1260),D(1261,1,li,aj),l.fk=function(e){return Cy(e)},l.gk=function(e){return Vt(zs,ue,345,e,7,1)},I(Rn,"EcorePackageImpl/28",1261),D(1262,1,li,het),l.fk=function(e){return Lt(e,61)},l.gk=function(e){return Vt(DIt,l3,61,e,0,1)},I(Rn,"EcorePackageImpl/29",1262),D(1236,1,li,fet),l.fk=function(e){return Lt(e,519)},l.gk=function(e){return Vt(ci,{3:1,4:1,5:1,2033:1},598,e,0,1)},I(Rn,"EcorePackageImpl/3",1236),D(1263,1,li,xC),l.fk=function(e){return Lt(e,582)},l.gk=function(e){return Vt(OIt,Ln,2039,e,0,1)},I(Rn,"EcorePackageImpl/30",1263),D(1264,1,li,oj),l.fk=function(e){return Lt(e,160)},l.gk=function(e){return Vt(nOt,l3,160,e,0,1)},I(Rn,"EcorePackageImpl/31",1264),D(1265,1,li,hM),l.fk=function(e){return Lt(e,76)},l.gk=function(e){return Vt(XK,ave,76,e,0,1)},I(Rn,"EcorePackageImpl/32",1265),D(1266,1,li,kC),l.fk=function(e){return Lt(e,161)},l.gk=function(e){return Vt(wT,ue,161,e,0,1)},I(Rn,"EcorePackageImpl/33",1266),D(1267,1,li,det),l.fk=function(e){return Lt(e,17)},l.gk=function(e){return Vt(Ra,ue,17,e,0,1)},I(Rn,"EcorePackageImpl/34",1267),D(1268,1,li,get),l.fk=function(e){return Lt(e,296)},l.gk=function(e){return Vt(t9t,Ln,296,e,0,1)},I(Rn,"EcorePackageImpl/35",1268),D(1269,1,li,fM),l.fk=function(e){return Lt(e,168)},l.gk=function(e){return Vt(gv,ue,168,e,0,1)},I(Rn,"EcorePackageImpl/36",1269),D(1270,1,li,EC),l.fk=function(e){return Lt(e,85)},l.gk=function(e){return Vt(e9t,Ln,85,e,0,1)},I(Rn,"EcorePackageImpl/37",1270),D(1271,1,li,W1),l.fk=function(e){return Lt(e,599)},l.gk=function(e){return Vt(JIt,Ln,599,e,0,1)},I(Rn,"EcorePackageImpl/38",1271),D(1272,1,li,Q8),l.fk=function(e){return!1},l.gk=function(e){return Vt(bOt,Ln,2216,e,0,1)},I(Rn,"EcorePackageImpl/39",1272),D(1237,1,li,pet),l.fk=function(e){return Lt(e,90)},l.gk=function(e){return Vt(mf,Ln,29,e,0,1)},I(Rn,"EcorePackageImpl/4",1237),D(1273,1,li,J8),l.fk=function(e){return Lt(e,191)},l.gk=function(e){return Vt(pv,ue,191,e,0,1)},I(Rn,"EcorePackageImpl/40",1273),D(1274,1,li,dM),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I(Rn,"EcorePackageImpl/41",1274),D(1275,1,li,R2),l.fk=function(e){return Lt(e,596)},l.gk=function(e){return Vt(IIt,Ln,596,e,0,1)},I(Rn,"EcorePackageImpl/42",1275),D(1276,1,li,TC),l.fk=function(e){return!1},l.gk=function(e){return Vt(wOt,ue,2217,e,0,1)},I(Rn,"EcorePackageImpl/43",1276),D(1277,1,li,gM),l.fk=function(e){return Lt(e,44)},l.gk=function(e){return Vt(Sw,xV,44,e,0,1)},I(Rn,"EcorePackageImpl/44",1277),D(1238,1,li,m1),l.fk=function(e){return Lt(e,142)},l.gk=function(e){return Vt(B1,Ln,142,e,0,1)},I(Rn,"EcorePackageImpl/5",1238),D(1239,1,li,CC),l.fk=function(e){return Lt(e,156)},l.gk=function(e){return Vt(n0t,Ln,156,e,0,1)},I(Rn,"EcorePackageImpl/6",1239),D(1240,1,li,Y1),l.fk=function(e){return Lt(e,468)},l.gk=function(e){return Vt(YK,Ln,685,e,0,1)},I(Rn,"EcorePackageImpl/7",1240),D(1241,1,li,X1),l.fk=function(e){return Lt(e,582)},l.gk=function(e){return Vt(Vg,Ln,694,e,0,1)},I(Rn,"EcorePackageImpl/8",1241),D(1242,1,li,bet),l.fk=function(e){return Lt(e,479)},l.gk=function(e){return Vt(EL,Ln,479,e,0,1)},I(Rn,"EcorePackageImpl/9",1242),D(1038,2080,Ome,dWt),l.Mi=function(e,n){i2n(this,u(n,424))},l.Qi=function(e,n){o1e(this,e,u(n,424))},I(Rn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList",1038),D(1039,152,LN,Pee),l.jj=function(){return this.a.a},I(Rn,"MinimalEObjectImpl/1ArrayDelegatingAdapterList/1",1039),D(1067,1066,{},YQt),I("org.eclipse.emf.ecore.plugin","EcorePlugin",1067);var JIt=os(ove,"Resource");D(799,1524,cve),l.Hl=function(e){},l.Il=function(e){},l.El=function(){return!this.a&&(this.a=new Bnt(this)),this.a},l.Fl=function(e){var n,r,s,o,h;if(s=e.length,s>0)if(qn(0,e.length),e.charCodeAt(0)==47){for(h=new wu(4),o=1,n=1;n0&&(e=(Da(0,r,e.length),e.substr(0,r))));return O5n(this,e)},l.Gl=function(){return this.c},l.Ib=function(){var e;return V2(this.Rm)+"@"+(e=$i(this)>>>0,e.toString(16))+" uri='"+this.d+"'"},l.b=!1,I(oht,"ResourceImpl",799),D(1525,799,cve,rKt),I(oht,"BinaryResourceImpl",1525),D(1190,708,eht),l.bj=function(e){return Lt(e,58)?Thn(this,u(e,58)):Lt(e,599)?new Zn(u(e,599).El()):$t(e)===$t(this.f)?u(e,16).Kc():(_E(),GP.a)},l.Ob=function(){return O6t(this)},l.a=!1,I(Yi,"EcoreUtil/ContentTreeIterator",1190),D(1526,1190,eht,hee),l.bj=function(e){return $t(e)===$t(this.f)?u(e,15).Kc():new cie(u(e,58))},I(oht,"ResourceImpl/5",1526),D(658,2092,Xme,Bnt),l.Hc=function(e){return this.i<=4?L7(this,e):Lt(e,54)&&u(e,54).Jh()==this.a},l.Mi=function(e,n){e==this.i-1&&(this.a.b||(this.a.b=!0))},l.Oi=function(e,n){e==0?this.a.b||(this.a.b=!0):Fst(this,e,n)},l.Qi=function(e,n){},l.Ri=function(e,n,r){},l.Lj=function(){return 2},l.jj=function(){return this.a},l.Mj=function(){return!0},l.Nj=function(e,n){var r;return r=u(e,54),n=r.fi(this.a,n),n},l.Oj=function(e,n){var r;return r=u(e,54),r.fi(null,n)},l.Pj=function(){return!1},l.Si=function(){return!0},l.aj=function(e){return Vt(p2,Ln,58,e,0,1)},l.Yi=function(){return!1},I(oht,"ResourceImpl/ContentsEList",658),D(970,2062,W7,iKt),l.fd=function(e){return this.a.Ki(e)},l.gc=function(){return this.a.gc()},I(Yi,"AbstractSequentialInternalEList/1",970);var ZIt,tOt,ja,eOt;D(634,1,{},dte);var QK,JK;I(Yi,"BasicExtendedMetaData",634),D(1181,1,{},pQt),l.Jl=function(){return null},l.Kl=function(){return this.a==-2&&Ut(this,O3n(this.d,this.b)),this.a},l.Ll=function(){return null},l.Ml=function(){return mn(),mn(),co},l.xe=function(){return this.c==dT&&de(this,Mle(this.d,this.b)),this.c},l.Nl=function(){return 0},l.a=-2,l.c=dT,I(Yi,"BasicExtendedMetaData/EClassExtendedMetaDataImpl",1181),D(1182,1,{},Rre),l.Jl=function(){return this.a==(VE(),QK)&&Te(this,I8n(this.f,this.b)),this.a},l.Kl=function(){return 0},l.Ll=function(){return this.c==(VE(),QK)&&Yt(this,O8n(this.f,this.b)),this.c},l.Ml=function(){return!this.d&&ze(this,w7n(this.f,this.b)),this.d},l.xe=function(){return this.e==dT&&yn(this,Mle(this.f,this.b)),this.e},l.Nl=function(){return this.g==-2&&qe(this,Jyn(this.f,this.b)),this.g},l.e=dT,l.g=-2,I(Yi,"BasicExtendedMetaData/EDataTypeExtendedMetaDataImpl",1182),D(1180,1,{},bQt),l.b=!1,l.c=!1,I(Yi,"BasicExtendedMetaData/EPackageExtendedMetaDataImpl",1180),D(1183,1,{},jre),l.c=-2,l.e=dT,l.f=dT,I(Yi,"BasicExtendedMetaData/EStructuralFeatureExtendedMetaDataImpl",1183),D(593,632,ic,kz),l.Lj=function(){return this.c},l.ol=function(){return!1},l.Wi=function(e,n){return n},l.c=0,I(Yi,"EDataTypeEList",593);var nOt=os(Yi,"FeatureMap");D(78,593,{3:1,4:1,20:1,31:1,56:1,16:1,15:1,59:1,70:1,66:1,61:1,79:1,160:1,220:1,2036:1,71:1,97:1},ps),l.bd=function(e,n){Q6n(this,e,u(n,76))},l.Fc=function(e){return p6n(this,u(e,76))},l.Hi=function(e){xln(this,u(e,76))},l.Nj=function(e,n){return qan(this,u(e,76),n)},l.Oj=function(e,n){return Svt(this,u(e,76),n)},l.Ti=function(e,n){return EEn(this,e,n)},l.Wi=function(e,n){return u9n(this,e,u(n,76))},l.hd=function(e,n){return Rkn(this,e,u(n,76))},l.Uj=function(e,n){return Han(this,u(e,76),n)},l.Vj=function(e,n){return qZt(this,u(e,76),n)},l.Wj=function(e,n,r){return jyn(this,u(e,76),u(n,76),r)},l.Zi=function(e,n){return Dot(this,e,u(n,76))},l.Ol=function(e,n){return Tkt(this,e,n)},l.cd=function(e,n){var r,s,o,h,d,m,k,T,A;for(T=new $m(n.gc()),o=n.Kc();o.Ob();)if(s=u(o.Pb(),76),h=s.Lk(),Ng(this.e,h))(!h.Si()||!dq(this,h,s.md())&&!L7(T,s))&&Or(T,s);else{for(A=Lu(this.e.Dh(),h),r=u(this.g,124),d=!0,m=0;m=0;)if(n=e[this.c],this.k.am(n.Lk()))return this.j=this.f?n:n.md(),this.i=-2,!0;return this.i=-1,this.g=-1,!1},I(Yi,"BasicFeatureMap/FeatureEIterator",420),D(676,420,P0,Krt),l.ul=function(){return!0},I(Yi,"BasicFeatureMap/ResolvingFeatureEIterator",676),D(968,495,mU,sJt),l.pj=function(){return this},I(Yi,"EContentsEList/1",968),D(969,495,mU,LQt),l.ul=function(){return!1},I(Yi,"EContentsEList/2",969),D(967,287,vU,aJt),l.wl=function(e){},l.Ob=function(){return!1},l.Sb=function(){return!1},I(Yi,"EContentsEList/FeatureIteratorImpl/1",967),D(840,593,ic,Omt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EDataTypeEList/Unsettable",840),D(1958,593,ic,dJt),l.Si=function(){return!0},I(Yi,"EDataTypeUniqueEList",1958),D(1959,840,ic,gJt),l.Si=function(){return!0},I(Yi,"EDataTypeUniqueEList/Unsettable",1959),D(147,83,ic,Ju),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentEList/Resolving",147),D(1184,555,ic,pJt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentEList/Unsettable/Resolving",1184),D(766,14,ic,vvt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EObjectContainmentWithInverseEList/Unsettable",766),D(1222,766,ic,AZt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectContainmentWithInverseEList/Unsettable/Resolving",1222),D(757,504,ic,Nmt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EObjectEList/Unsettable",757),D(338,504,ic,G4),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectResolvingEList",338),D(1844,757,ic,bJt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectResolvingEList/Unsettable",1844),D(1527,1,{},wet);var OTe;I(Yi,"EObjectValidator",1527),D(559,504,ic,jz),l.il=function(){return this.d},l.jl=function(){return this.b},l.Mj=function(){return!0},l.ml=function(){return!0},l.b=0,I(Yi,"EObjectWithInverseEList",559),D(1225,559,ic,LZt),l.ll=function(){return!0},I(Yi,"EObjectWithInverseEList/ManyInverse",1225),D(635,559,ic,git),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EObjectWithInverseEList/Unsettable",635),D(1224,635,ic,DZt),l.ll=function(){return!0},I(Yi,"EObjectWithInverseEList/Unsettable/ManyInverse",1224),D(767,559,ic,yvt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectWithInverseResolvingEList",767),D(32,767,ic,kn),l.ll=function(){return!0},I(Yi,"EObjectWithInverseResolvingEList/ManyInverse",32),D(768,635,ic,xvt),l.nl=function(){return!0},l.Wi=function(e,n){return yk(this,e,u(n,58))},I(Yi,"EObjectWithInverseResolvingEList/Unsettable",768),D(1223,768,ic,MZt),l.ll=function(){return!0},I(Yi,"EObjectWithInverseResolvingEList/Unsettable/ManyInverse",1223),D(1185,632,ic),l.Li=function(){return(this.b&1792)==0},l.Ni=function(){this.b|=1},l.kl=function(){return(this.b&4)!=0},l.Mj=function(){return(this.b&40)!=0},l.ll=function(){return(this.b&16)!=0},l.ml=function(){return(this.b&8)!=0},l.nl=function(){return(this.b&b3)!=0},l.al=function(){return(this.b&32)!=0},l.ol=function(){return(this.b&Uf)!=0},l.fk=function(e){return this.d?wie(this.d,e):this.Lk().Hk().fk(e)},l.Qj=function(){return this.b&2?(this.b&1)!=0:this.i!=0},l.Si=function(){return(this.b&128)!=0},l.Gk=function(){var e;Ir(this),this.b&2&&(Hl(this.e)?(e=(this.b&1)!=0,this.b&=-2,hE(this,new jf(this.e,2,ns(this.e.Dh(),this.Lk()),e,!1))):this.b&=-2)},l.Yi=function(){return(this.b&1536)==0},l.b=0,I(Yi,"EcoreEList/Generic",1185),D(1186,1185,ic,Ene),l.Lk=function(){return this.a},I(Yi,"EcoreEList/Dynamic",1186),D(765,66,o0,P2t),l.aj=function(e){return XI(this.a.a,e)},I(Yi,"EcoreEMap/1",765),D(764,83,ic,vyt),l.Mi=function(e,n){IH(this.b,u(n,136))},l.Oi=function(e,n){yce(this.b)},l.Pi=function(e,n,r){var s;++(s=this.b,u(n,136),s).e},l.Qi=function(e,n){jat(this.b,u(n,136))},l.Ri=function(e,n,r){jat(this.b,u(r,136)),$t(r)===$t(n)&&u(r,136).Ci($in(u(n,136).ld())),IH(this.b,u(n,136))},I(Yi,"EcoreEMap/DelegateEObjectContainmentEList",764),D(1220,141,$Tt,Boe),I(Yi,"EcoreEMap/Unsettable",1220),D(1221,764,ic,IZt),l.Ni=function(){this.a=!0},l.Qj=function(){return this.a},l.Gk=function(){var e;Ir(this),Hl(this.e)?(e=this.a,this.a=!1,Ei(this.e,new jf(this.e,2,this.c,e,!1))):this.a=!1},l.a=!1,I(Yi,"EcoreEMap/Unsettable/UnsettableDelegateEObjectContainmentEList",1221),D(1189,215,E5,Tee),l.a=!1,l.b=!1,I(Yi,"EcoreUtil/Copier",1189),D(759,1,wa,cie),l.Nb=function(e){Na(this,e)},l.Ob=function(){return ble(this)},l.Pb=function(){var e;return ble(this),e=this.b,this.b=null,e},l.Qb=function(){this.a.Qb()},I(Yi,"EcoreUtil/ProperContentIterator",759),D(1528,1527,{},Bj);var NTe;I(Yi,"EcoreValidator",1528);var PTe;os(Yi,"FeatureMapUtil/Validator"),D(1295,1,{2041:1},T4),l.am=function(e){return!0},I(Yi,"FeatureMapUtil/1",1295),D(773,1,{2041:1},t8t),l.am=function(e){var n;return this.c==e?!0:(n=Me(tr(this.a,e)),n==null?j8n(this,e)?(cse(this.a,e,(Pn(),bT)),!0):(cse(this.a,e,(Pn(),t2)),!1):n==(Pn(),bT))},l.e=!1;var a0t;I(Yi,"FeatureMapUtil/BasicValidator",773),D(774,45,E5,Mmt),I(Yi,"FeatureMapUtil/BasicValidator/Cache",774),D(509,56,{20:1,31:1,56:1,16:1,15:1,61:1,79:1,71:1,97:1},eI),l.bd=function(e,n){Jde(this.c,this.b,e,n)},l.Fc=function(e){return Tkt(this.c,this.b,e)},l.cd=function(e,n){return aTn(this.c,this.b,e,n)},l.Gc=function(e){return xS(this,e)},l.Gi=function(e,n){egn(this.c,this.b,e,n)},l.Wk=function(e,n){return bkt(this.c,this.b,e,n)},l.$i=function(e){return dV(this.c,this.b,e,!1)},l.Ii=function(){return zQt(this.c,this.b)},l.Ji=function(){return _in(this.c,this.b)},l.Ki=function(e){return a0n(this.c,this.b,e)},l.Xk=function(e,n){return hZt(this,e,n)},l.$b=function(){T6(this)},l.Hc=function(e){return dq(this.c,this.b,e)},l.Ic=function(e){return spn(this.c,this.b,e)},l.Xb=function(e){return dV(this.c,this.b,e,!0)},l.Fk=function(e){return this},l.dd=function(e){return ddn(this.c,this.b,e)},l.dc=function(){return Q$(this)},l.Qj=function(){return!wO(this.c,this.b)},l.Kc=function(){return U0n(this.c,this.b)},l.ed=function(){return G0n(this.c,this.b)},l.fd=function(e){return E2n(this.c,this.b,e)},l.Ti=function(e,n){return dge(this.c,this.b,e,n)},l.Ui=function(e,n){u0n(this.c,this.b,e,n)},l.gd=function(e){return Vfe(this.c,this.b,e)},l.Mc=function(e){return cEn(this.c,this.b,e)},l.hd=function(e,n){return kge(this.c,this.b,e,n)},l.Wb=function(e){WH(this.c,this.b),xS(this,u(e,15))},l.gc=function(){return k2n(this.c,this.b)},l.Pc=function(){return p1n(this.c,this.b)},l.Qc=function(e){return gdn(this.c,this.b,e)},l.Ib=function(){var e,n;for(n=new dp,n.a+="[",e=zQt(this.c,this.b);Lat(e);)Mo(n,ES(LH(e))),Lat(e)&&(n.a+=ao);return n.a+="]",n.a},l.Gk=function(){WH(this.c,this.b)},I(Yi,"FeatureMapUtil/FeatureEList",509),D(644,38,LN,Cst),l.hj=function(e){return l_(this,e)},l.mj=function(e){var n,r,s,o,h,d,m;switch(this.d){case 1:case 2:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.g=e.ij(),e.gj()==1&&(this.d=1),!0;break}case 3:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.d=5,n=new $m(2),Or(n,this.g),Or(n,e.ij()),this.g=n,!0;break}}break}case 5:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return r=u(this.g,16),r.Fc(e.ij()),!0;break}}break}case 4:{switch(o=e.gj(),o){case 3:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.d=1,this.g=e.ij(),!0;break}case 4:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return this.d=6,m=new $m(2),Or(m,this.n),Or(m,e.kj()),this.n=m,d=lt(ut(Fr,1),ii,28,15,[this.o,e.lj()]),this.g=d,!0;break}}break}case 6:{switch(o=e.gj(),o){case 4:{if(h=e.jj(),$t(h)===$t(this.c)&&l_(this,null)==e.hj(null))return r=u(this.n,16),r.Fc(e.kj()),d=u(this.g,53),s=Vt(Fr,ii,28,d.length+1,15,1),Xc(d,0,s,0,d.length),s[d.length]=e.lj(),this.g=s,!0;break}}break}}return!1},I(Yi,"FeatureMapUtil/FeatureENotificationImpl",644),D(564,509,{20:1,31:1,56:1,16:1,15:1,61:1,79:1,160:1,220:1,2036:1,71:1,97:1},Sz),l.Ol=function(e,n){return Tkt(this.c,e,n)},l.Pl=function(e,n,r){return bkt(this.c,e,n,r)},l.Ql=function(e,n,r){return qkt(this.c,e,n,r)},l.Rl=function(){return this},l.Sl=function(e,n){return YO(this.c,e,n)},l.Tl=function(e){return u(dV(this.c,this.b,e,!1),76).Lk()},l.Ul=function(e){return u(dV(this.c,this.b,e,!1),76).md()},l.Vl=function(){return this.a},l.Wl=function(e){return!wO(this.c,e)},l.Xl=function(e,n){gV(this.c,e,n)},l.Yl=function(e){return $oe(this.c,e)},l.Zl=function(e){mhe(this.c,e)},I(Yi,"FeatureMapUtil/FeatureFeatureMap",564),D(1294,1,aht,gQt),l.Fk=function(e){return dV(this.b,this.a,-1,e)},l.Qj=function(){return!wO(this.b,this.a)},l.Wb=function(e){gV(this.b,this.a,e)},l.Gk=function(){WH(this.b,this.a)},I(Yi,"FeatureMapUtil/FeatureValue",1294);var i8,o0t,c0t,s8,FTe,WP=os(_U,"AnyType");D(680,63,Pg,trt),I(_U,"InvalidDatatypeValueException",680);var ZK=os(_U,lve),YP=os(_U,hve),rOt=os(_U,fve),BTe,Bc,iOt,Hw,RTe,jTe,$Te,zTe,qTe,HTe,VTe,UTe,GTe,KTe,WTe,gx,YTe,px,AL,XTe,Fv,XP,QP,QTe,LL,DL;D(844,516,{110:1,94:1,93:1,58:1,54:1,99:1,857:1},twt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.c&&(this.c=new ps(this,0)),this.c):(!this.c&&(this.c=new ps(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)):(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Vl();case 2:return r?(!this.b&&(this.b=new ps(this,2)),this.b):(!this.b&&(this.b=new ps(this,2)),this.b.b)}return Ih(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e),n,r)},l.Uh=function(e,n,r){var s;switch(n){case 0:return!this.c&&(this.c=new ps(this,0)),UO(this.c,e,r);case 1:return(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),71)).Xk(e,r);case 2:return!this.b&&(this.b=new ps(this,2)),UO(this.b,e,r)}return s=u(En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),n),69),s.wk().Ak(this,r4t(this),n-fr(this.ii()),e,r)},l.Wh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).dc();case 2:return!!this.b&&this.b.i!=0}return Dh(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e))},l.bi=function(e,n){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),xI(this.c,n);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Wb(n);return;case 2:!this.b&&(this.b=new ps(this,2)),xI(this.b,n);return}Fh(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e),n)},l.ii=function(){return Ni(),iOt},l.ki=function(e){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),Ir(this.c);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).$b();return;case 2:!this.b&&(this.b=new ps(this,2)),Ir(this.b);return}Ph(this,e-fr(this.ii()),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():this.ii(),e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new ef(qf(this)),e.a+=" (mixed: ",wS(e,this.c),e.a+=", anyAttribute: ",wS(e,this.b),e.a+=")",e.a)},I($s,"AnyTypeImpl",844),D(681,516,{110:1,94:1,93:1,58:1,54:1,99:1,2119:1,681:1},xet),l.Lh=function(e,n,r){switch(e){case 0:return this.a;case 1:return this.b}return Ih(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e),n,r)},l.Wh=function(e){switch(e){case 0:return this.a!=null;case 1:return this.b!=null}return Dh(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e))},l.bi=function(e,n){switch(e){case 0:lr(this,Gr(n));return;case 1:or(this,Gr(n));return}Fh(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e),n)},l.ii=function(){return Ni(),gx},l.ki=function(e){switch(e){case 0:this.a=null;return;case 1:this.b=null;return}Ph(this,e-fr((Ni(),gx)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():gx,e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new ef(qf(this)),e.a+=" (data: ",Mo(e,this.a),e.a+=", target: ",Mo(e,this.b),e.a+=")",e.a)},l.a=null,l.b=null,I($s,"ProcessingInstructionImpl",681),D(682,844,{110:1,94:1,93:1,58:1,54:1,99:1,857:1,2120:1,682:1},KKt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.c&&(this.c=new ps(this,0)),this.c):(!this.c&&(this.c=new ps(this,0)),this.c.b);case 1:return r?(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)):(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Vl();case 2:return r?(!this.b&&(this.b=new ps(this,2)),this.b):(!this.b&&(this.b=new ps(this,2)),this.b.b);case 3:return!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0));case 4:return Evt(this.a,(!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0))));case 5:return this.a}return Ih(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e),n,r)},l.Wh=function(e){switch(e){case 0:return!!this.c&&this.c.i!=0;case 1:return!(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).dc();case 2:return!!this.b&&this.b.i!=0;case 3:return!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0))!=null;case 4:return Evt(this.a,(!this.c&&(this.c=new ps(this,0)),Gr(YO(this.c,(Ni(),AL),!0))))!=null;case 5:return!!this.a}return Dh(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e))},l.bi=function(e,n){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),xI(this.c,n);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(u(ru(this.c,(Ni(),Hw)),160),220)).Wb(n);return;case 2:!this.b&&(this.b=new ps(this,2)),xI(this.b,n);return;case 3:h3t(this,Gr(n));return;case 4:h3t(this,kvt(this.a,n));return;case 5:Sn(this,u(n,156));return}Fh(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e),n)},l.ii=function(){return Ni(),px},l.ki=function(e){switch(e){case 0:!this.c&&(this.c=new ps(this,0)),Ir(this.c);return;case 1:(!this.c&&(this.c=new ps(this,0)),u(ru(this.c,(Ni(),Hw)),160)).$b();return;case 2:!this.b&&(this.b=new ps(this,2)),Ir(this.b);return;case 3:!this.c&&(this.c=new ps(this,0)),gV(this.c,(Ni(),AL),null);return;case 4:h3t(this,kvt(this.a,null));return;case 5:this.a=null;return}Ph(this,e-fr((Ni(),px)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():px,e))},I($s,"SimpleAnyTypeImpl",682),D(683,516,{110:1,94:1,93:1,58:1,54:1,99:1,2121:1,683:1},WKt),l.Lh=function(e,n,r){switch(e){case 0:return r?(!this.a&&(this.a=new ps(this,0)),this.a):(!this.a&&(this.a=new ps(this,0)),this.a.b);case 1:return r?(!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),this.b):(!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),RI(this.b));case 2:return r?(!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),this.c):(!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),RI(this.c));case 3:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),XP));case 4:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),QP));case 5:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),LL));case 6:return!this.a&&(this.a=new ps(this,0)),ru(this.a,(Ni(),DL))}return Ih(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e),n,r)},l.Uh=function(e,n,r){var s;switch(n){case 0:return!this.a&&(this.a=new ps(this,0)),UO(this.a,e,r);case 1:return!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),pz(this.b,e,r);case 2:return!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),pz(this.c,e,r);case 5:return!this.a&&(this.a=new ps(this,0)),hZt(ru(this.a,(Ni(),LL)),e,r)}return s=u(En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():(Ni(),Fv),n),69),s.wk().Ak(this,r4t(this),n-fr((Ni(),Fv)),e,r)},l.Wh=function(e){switch(e){case 0:return!!this.a&&this.a.i!=0;case 1:return!!this.b&&this.b.f!=0;case 2:return!!this.c&&this.c.f!=0;case 3:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),XP)));case 4:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),QP)));case 5:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),LL)));case 6:return!this.a&&(this.a=new ps(this,0)),!Q$(ru(this.a,(Ni(),DL)))}return Dh(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e))},l.bi=function(e,n){switch(e){case 0:!this.a&&(this.a=new ps(this,0)),xI(this.a,n);return;case 1:!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),Jq(this.b,n);return;case 2:!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),Jq(this.c,n);return;case 3:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),XP))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,XP),u(n,16));return;case 4:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),QP))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,QP),u(n,16));return;case 5:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),LL))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,LL),u(n,16));return;case 6:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),DL))),!this.a&&(this.a=new ps(this,0)),xS(ru(this.a,DL),u(n,16));return}Fh(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e),n)},l.ii=function(){return Ni(),Fv},l.ki=function(e){switch(e){case 0:!this.a&&(this.a=new ps(this,0)),Ir(this.a);return;case 1:!this.b&&(this.b=new nl((wn(),wo),Mc,this,1)),this.b.c.$b();return;case 2:!this.c&&(this.c=new nl((wn(),wo),Mc,this,2)),this.c.c.$b();return;case 3:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),XP)));return;case 4:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),QP)));return;case 5:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),LL)));return;case 6:!this.a&&(this.a=new ps(this,0)),T6(ru(this.a,(Ni(),DL)));return}Ph(this,e-fr((Ni(),Fv)),En(this.j&2?(!this.k&&(this.k=new Zh),this.k).Nk():Fv,e))},l.Ib=function(){var e;return this.j&4?qf(this):(e=new ef(qf(this)),e.a+=" (mixed: ",wS(e,this.a),e.a+=")",e.a)},I($s,"XMLTypeDocumentRootImpl",683),D(2028,720,{110:1,94:1,93:1,479:1,155:1,58:1,114:1,54:1,99:1,158:1,119:1,120:1,2122:1},Z8),l.ri=function(e,n){switch(e.hk()){case 7:case 8:case 9:case 10:case 16:case 22:case 23:case 24:case 25:case 26:case 32:case 33:case 34:case 36:case 37:case 44:case 45:case 50:case 51:case 53:case 55:case 56:case 57:case 58:case 60:case 61:case 4:return n==null?null:rc(n);case 19:case 28:case 29:case 35:case 38:case 39:case 41:case 46:case 52:case 54:case 5:return Gr(n);case 6:return Zsn(u(n,195));case 12:case 47:case 49:case 11:return upe(this,e,n);case 13:return n==null?null:lTn(u(n,247));case 15:case 14:return n==null?null:pln(Rt(Ht(n)));case 17:return sfe((Ni(),n));case 18:return sfe(n);case 21:case 20:return n==null?null:bln(u(n,161).a);case 27:return tan(u(n,195));case 30:return vhe((Ni(),u(n,15)));case 31:return vhe(u(n,15));case 40:return nan((Ni(),n));case 42:return afe((Ni(),n));case 43:return afe(n);case 59:case 48:return ean((Ni(),n));default:throw at(new zn(lT+e.xe()+fv))}},l.si=function(e){var n,r,s,o,h;switch(e.G==-1&&(e.G=(r=sh(e),r?Np(r.vi(),e):-1)),e.G){case 0:return n=new twt,n;case 1:return s=new xet,s;case 2:return o=new KKt,o;case 3:return h=new WKt,h;default:throw at(new zn(Vlt+e.zb+fv))}},l.ti=function(e,n){var r,s,o,h,d,m,k,T,A,P,$,U,J,tt,ht,Tt;switch(e.hk()){case 5:case 52:case 4:return n;case 6:return cmn(n);case 8:case 7:return n==null?null:Wyn(n);case 9:return n==null?null:GI(lh((s=su(n,!0),s.length>0&&(qn(0,s.length),s.charCodeAt(0)==43)?(qn(1,s.length+1),s.substr(1)):s),-128,127)<<24>>24);case 10:return n==null?null:GI(lh((o=su(n,!0),o.length>0&&(qn(0,o.length),o.charCodeAt(0)==43)?(qn(1,o.length+1),o.substr(1)):o),-128,127)<<24>>24);case 11:return Gr(iv(this,(Ni(),$Te),n));case 12:return Gr(iv(this,(Ni(),zTe),n));case 13:return n==null?null:new Twt(su(n,!0));case 15:case 14:return w6n(n);case 16:return Gr(iv(this,(Ni(),qTe),n));case 17:return xle((Ni(),n));case 18:return xle(n);case 28:case 29:case 35:case 38:case 39:case 41:case 54:case 19:return su(n,!0);case 21:case 20:return _6n(n);case 22:return Gr(iv(this,(Ni(),HTe),n));case 23:return Gr(iv(this,(Ni(),VTe),n));case 24:return Gr(iv(this,(Ni(),UTe),n));case 25:return Gr(iv(this,(Ni(),GTe),n));case 26:return Gr(iv(this,(Ni(),KTe),n));case 27:return Xwn(n);case 30:return kle((Ni(),n));case 31:return kle(n);case 32:return n==null?null:he(lh((A=su(n,!0),A.length>0&&(qn(0,A.length),A.charCodeAt(0)==43)?(qn(1,A.length+1),A.substr(1)):A),Ga,xi));case 33:return n==null?null:new Sb((P=su(n,!0),P.length>0&&(qn(0,P.length),P.charCodeAt(0)==43)?(qn(1,P.length+1),P.substr(1)):P));case 34:return n==null?null:he(lh(($=su(n,!0),$.length>0&&(qn(0,$.length),$.charCodeAt(0)==43)?(qn(1,$.length+1),$.substr(1)):$),Ga,xi));case 36:return n==null?null:Mg(mV((U=su(n,!0),U.length>0&&(qn(0,U.length),U.charCodeAt(0)==43)?(qn(1,U.length+1),U.substr(1)):U)));case 37:return n==null?null:Mg(mV((J=su(n,!0),J.length>0&&(qn(0,J.length),J.charCodeAt(0)==43)?(qn(1,J.length+1),J.substr(1)):J)));case 40:return Kmn((Ni(),n));case 42:return Ele((Ni(),n));case 43:return Ele(n);case 44:return n==null?null:new Sb((tt=su(n,!0),tt.length>0&&(qn(0,tt.length),tt.charCodeAt(0)==43)?(qn(1,tt.length+1),tt.substr(1)):tt));case 45:return n==null?null:new Sb((ht=su(n,!0),ht.length>0&&(qn(0,ht.length),ht.charCodeAt(0)==43)?(qn(1,ht.length+1),ht.substr(1)):ht));case 46:return su(n,!1);case 47:return Gr(iv(this,(Ni(),WTe),n));case 59:case 48:return Gmn((Ni(),n));case 49:return Gr(iv(this,(Ni(),YTe),n));case 50:return n==null?null:w7(lh((Tt=su(n,!0),Tt.length>0&&(qn(0,Tt.length),Tt.charCodeAt(0)==43)?(qn(1,Tt.length+1),Tt.substr(1)):Tt),EU,32767)<<16>>16);case 51:return n==null?null:w7(lh((h=su(n,!0),h.length>0&&(qn(0,h.length),h.charCodeAt(0)==43)?(qn(1,h.length+1),h.substr(1)):h),EU,32767)<<16>>16);case 53:return Gr(iv(this,(Ni(),XTe),n));case 55:return n==null?null:w7(lh((d=su(n,!0),d.length>0&&(qn(0,d.length),d.charCodeAt(0)==43)?(qn(1,d.length+1),d.substr(1)):d),EU,32767)<<16>>16);case 56:return n==null?null:w7(lh((m=su(n,!0),m.length>0&&(qn(0,m.length),m.charCodeAt(0)==43)?(qn(1,m.length+1),m.substr(1)):m),EU,32767)<<16>>16);case 57:return n==null?null:Mg(mV((k=su(n,!0),k.length>0&&(qn(0,k.length),k.charCodeAt(0)==43)?(qn(1,k.length+1),k.substr(1)):k)));case 58:return n==null?null:Mg(mV((T=su(n,!0),T.length>0&&(qn(0,T.length),T.charCodeAt(0)==43)?(qn(1,T.length+1),T.substr(1)):T)));case 60:return n==null?null:he(lh((r=su(n,!0),r.length>0&&(qn(0,r.length),r.charCodeAt(0)==43)?(qn(1,r.length+1),r.substr(1)):r),Ga,xi));case 61:return n==null?null:he(lh(su(n,!0),Ga,xi));default:throw at(new zn(lT+e.xe()+fv))}};var JTe,sOt,ZTe,aOt;I($s,"XMLTypeFactoryImpl",2028),D(594,184,{110:1,94:1,93:1,155:1,197:1,58:1,241:1,114:1,54:1,99:1,158:1,184:1,119:1,120:1,690:1,2044:1,594:1},Gee),l.N=!1,l.O=!1;var t9e=!1;I($s,"XMLTypePackageImpl",594),D(1961,1,{851:1},tE),l.Kk=function(){return Okt(),u9e},I($s,"XMLTypePackageImpl/1",1961),D(1970,1,li,SC),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/10",1970),D(1971,1,li,met),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/11",1971),D(1972,1,li,vet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/12",1972),D(1973,1,li,f6),l.fk=function(e){return Cy(e)},l.gk=function(e){return Vt(zs,ue,345,e,7,1)},I($s,"XMLTypePackageImpl/13",1973),D(1974,1,li,cj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/14",1974),D(1975,1,li,uj),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/15",1975),D(1976,1,li,yet),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/16",1976),D(1977,1,li,lj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/17",1977),D(1978,1,li,hj),l.fk=function(e){return Lt(e,161)},l.gk=function(e){return Vt(wT,ue,161,e,0,1)},I($s,"XMLTypePackageImpl/18",1978),D(1979,1,li,pM),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/19",1979),D(1962,1,li,ket),l.fk=function(e){return Lt(e,857)},l.gk=function(e){return Vt(WP,Ln,857,e,0,1)},I($s,"XMLTypePackageImpl/2",1962),D(1980,1,li,_C),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/20",1980),D(1981,1,li,Eet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/21",1981),D(1982,1,li,Tet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/22",1982),D(1983,1,li,Cet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/23",1983),D(1984,1,li,_et),l.fk=function(e){return Lt(e,195)},l.gk=function(e){return Vt(ul,ue,195,e,0,2)},I($s,"XMLTypePackageImpl/24",1984),D(1985,1,li,Aet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/25",1985),D(1986,1,li,fj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/26",1986),D(1987,1,li,Let),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/27",1987),D(1988,1,li,Det),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/28",1988),D(1989,1,li,Met),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/29",1989),D(1963,1,li,dj),l.fk=function(e){return Lt(e,681)},l.gk=function(e){return Vt(ZK,Ln,2119,e,0,1)},I($s,"XMLTypePackageImpl/3",1963),D(1990,1,li,Iet),l.fk=function(e){return Lt(e,17)},l.gk=function(e){return Vt(Ra,ue,17,e,0,1)},I($s,"XMLTypePackageImpl/30",1990),D(1991,1,li,Oet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/31",1991),D(1992,1,li,AC),l.fk=function(e){return Lt(e,168)},l.gk=function(e){return Vt(gv,ue,168,e,0,1)},I($s,"XMLTypePackageImpl/32",1992),D(1993,1,li,Net),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/33",1993),D(1994,1,li,Pet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/34",1994),D(1995,1,li,Fet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/35",1995),D(1996,1,li,Bet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/36",1996),D(1997,1,li,Ret),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/37",1997),D(1998,1,li,jet),l.fk=function(e){return Lt(e,15)},l.gk=function(e){return Vt(Vh,l3,15,e,0,1)},I($s,"XMLTypePackageImpl/38",1998),D(1999,1,li,gj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/39",1999),D(1964,1,li,$et),l.fk=function(e){return Lt(e,682)},l.gk=function(e){return Vt(YP,Ln,2120,e,0,1)},I($s,"XMLTypePackageImpl/4",1964),D(2e3,1,li,pj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/40",2e3),D(2001,1,li,zet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/41",2001),D(2002,1,li,bM),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/42",2002),D(2003,1,li,qet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/43",2003),D(2004,1,li,bj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/44",2004),D(2005,1,li,Het),l.fk=function(e){return Lt(e,191)},l.gk=function(e){return Vt(pv,ue,191,e,0,1)},I($s,"XMLTypePackageImpl/45",2005),D(2006,1,li,wj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/46",2006),D(2007,1,li,Vet),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/47",2007),D(2008,1,li,mj),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/48",2008),D(2009,1,li,vj),l.fk=function(e){return Lt(e,191)},l.gk=function(e){return Vt(pv,ue,191,e,0,1)},I($s,"XMLTypePackageImpl/49",2009),D(1965,1,li,yj),l.fk=function(e){return Lt(e,683)},l.gk=function(e){return Vt(rOt,Ln,2121,e,0,1)},I($s,"XMLTypePackageImpl/5",1965),D(2010,1,li,wM),l.fk=function(e){return Lt(e,168)},l.gk=function(e){return Vt(gv,ue,168,e,0,1)},I($s,"XMLTypePackageImpl/50",2010),D(2011,1,li,C4),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/51",2011),D(2012,1,li,LC),l.fk=function(e){return Lt(e,17)},l.gk=function(e){return Vt(Ra,ue,17,e,0,1)},I($s,"XMLTypePackageImpl/52",2012),D(1966,1,li,Q1),l.fk=function(e){return ba(e)},l.gk=function(e){return Vt(Pe,ue,2,e,6,1)},I($s,"XMLTypePackageImpl/6",1966),D(1967,1,li,xj),l.fk=function(e){return Lt(e,195)},l.gk=function(e){return Vt(ul,ue,195,e,0,2)},I($s,"XMLTypePackageImpl/7",1967),D(1968,1,li,eE),l.fk=function(e){return Ty(e)},l.gk=function(e){return Vt(ys,ue,484,e,8,1)},I($s,"XMLTypePackageImpl/8",1968),D(1969,1,li,mM),l.fk=function(e){return Lt(e,222)},l.gk=function(e){return Vt(Fk,ue,222,e,0,1)},I($s,"XMLTypePackageImpl/9",1969);var _d,nb,ML,tW,vt;D(55,63,Pg,Yr),I(qp,"RegEx/ParseException",55),D(836,1,{},kj),l.bm=function(e){return er*16)throw at(new Yr(Qr((Ur(),Eme))));r=r*16+o}while(!0);if(this.a!=125)throw at(new Yr(Qr((Ur(),Tme))));if(r>gT)throw at(new Yr(Qr((Ur(),Cme))));e=r}else{if(o=0,this.c!=0||(o=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(r=o,wi(this),this.c!=0||(o=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));r=r*16+o,e=r}break;case 117:if(s=0,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));n=n*16+s,e=n;break;case 118:if(wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,wi(this),this.c!=0||(s=hw(this.a))<0)throw at(new Yr(Qr((Ur(),zp))));if(n=n*16+s,n>gT)throw at(new Yr(Qr((Ur(),"parser.descappe.4"))));e=n;break;case 65:case 90:case 122:throw at(new Yr(Qr((Ur(),Sme))))}return e},l.dm=function(e){var n,r;switch(e){case 100:r=(this.e&32)==32?Gb("Nd",!0):(yi(),eW);break;case 68:r=(this.e&32)==32?Gb("Nd",!1):(yi(),fOt);break;case 119:r=(this.e&32)==32?Gb("IsWord",!0):(yi(),t9);break;case 87:r=(this.e&32)==32?Gb("IsWord",!1):(yi(),gOt);break;case 115:r=(this.e&32)==32?Gb("IsSpace",!0):(yi(),a8);break;case 83:r=(this.e&32)==32?Gb("IsSpace",!1):(yi(),dOt);break;default:throw at(new uc((n=e,Sve+n.toString(16))))}return r},l.em=function(e){var n,r,s,o,h,d,m,k,T,A,P,$;for(this.b=1,wi(this),n=null,this.c==0&&this.a==94?(wi(this),e?A=(yi(),yi(),new ih(5)):(n=(yi(),yi(),new ih(4)),iu(n,0,gT),A=new ih(4))):A=(yi(),yi(),new ih(4)),o=!0;($=this.c)!=1&&!($==0&&this.a==93&&!o);){if(o=!1,r=this.a,s=!1,$==10)switch(r){case 100:case 68:case 119:case 87:case 115:case 83:a3(A,this.dm(r)),s=!0;break;case 105:case 73:case 99:case 67:r=this.um(A,r),r<0&&(s=!0);break;case 112:case 80:if(P=M6t(this,r),!P)throw at(new Yr(Qr((Ur(),rht))));a3(A,P),s=!0;break;default:r=this.cm()}else if($==20){if(d=TE(this.i,58,this.d),d<0)throw at(new Yr(Qr((Ur(),NTt))));if(m=!0,Va(this.i,this.d)==94&&(++this.d,m=!1),h=Lh(this.i,this.d,d),k=Qse(h,m,(this.e&512)==512),!k)throw at(new Yr(Qr((Ur(),mme))));if(a3(A,k),s=!0,d+1>=this.j||Va(this.i,d+1)!=93)throw at(new Yr(Qr((Ur(),NTt))));this.d=d+2}if(wi(this),!s)if(this.c!=0||this.a!=45)iu(A,r,r);else{if(wi(this),($=this.c)==1)throw at(new Yr(Qr((Ur(),bU))));$==0&&this.a==93?(iu(A,r,r),iu(A,45,45)):(T=this.a,$==10&&(T=this.cm()),wi(this),iu(A,r,T))}(this.e&Uf)==Uf&&this.c==0&&this.a==44&&wi(this)}if(this.c==1)throw at(new Yr(Qr((Ur(),bU))));return n&&($_(n,A),A=n),g5(A),R_(A),this.b=0,wi(this),A},l.fm=function(){var e,n,r,s;for(r=this.em(!1);(s=this.c)!=7;)if(e=this.a,s==0&&(e==45||e==38)||s==4){if(wi(this),this.c!=9)throw at(new Yr(Qr((Ur(),yme))));if(n=this.em(!1),s==4)a3(r,n);else if(e==45)$_(r,n);else if(e==38)spe(r,n);else throw at(new uc("ASSERT"))}else throw at(new Yr(Qr((Ur(),xme))));return wi(this),r},l.gm=function(){var e,n;return e=this.a-48,n=(yi(),yi(),new lst(12,null,e)),!this.g&&(this.g=new u$),c$(this.g,new F2t(e)),wi(this),n},l.hm=function(){return wi(this),yi(),r9e},l.im=function(){return wi(this),yi(),n9e},l.jm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.km=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.lm=function(){return wi(this),hbn()},l.mm=function(){return wi(this),yi(),s9e},l.nm=function(){return wi(this),yi(),o9e},l.om=function(){var e;if(this.d>=this.j||((e=Va(this.i,this.d++))&65504)!=64)throw at(new Yr(Qr((Ur(),pme))));return wi(this),yi(),yi(),new _0(0,e-64)},l.pm=function(){return wi(this),g7n()},l.qm=function(){return wi(this),yi(),c9e},l.rm=function(){var e;return e=(yi(),yi(),new _0(0,105)),wi(this),e},l.sm=function(){return wi(this),yi(),a9e},l.tm=function(){return wi(this),yi(),i9e},l.um=function(e,n){return this.cm()},l.vm=function(){return wi(this),yi(),lOt},l.wm=function(){var e,n,r,s,o;if(this.d+1>=this.j)throw at(new Yr(Qr((Ur(),fme))));if(s=-1,n=null,e=Va(this.i,this.d),49<=e&&e<=57){if(s=e-48,!this.g&&(this.g=new u$),c$(this.g,new F2t(s)),++this.d,Va(this.i,this.d)!=41)throw at(new Yr(Qr((Ur(),Tw))));++this.d}else switch(e==63&&--this.d,wi(this),n=i8t(this),n.e){case 20:case 21:case 22:case 23:break;case 8:if(this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));break;default:throw at(new Yr(Qr((Ur(),dme))))}if(wi(this),o=Xm(this),r=null,o.e==2){if(o.Pm()!=2)throw at(new Yr(Qr((Ur(),gme))));r=o.Lm(1),o=o.Lm(0)}if(this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),yi(),yi(),new Iae(s,n,o,r)},l.xm=function(){return wi(this),yi(),hOt},l.ym=function(){var e;if(wi(this),e=$z(24,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.zm=function(){var e;if(wi(this),e=$z(20,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Am=function(){var e;if(wi(this),e=$z(22,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Bm=function(){var e,n,r,s,o;for(e=0,r=0,n=-1;this.d=this.j)throw at(new Yr(Qr((Ur(),ITt))));if(n==45){for(++this.d;this.d=this.j)throw at(new Yr(Qr((Ur(),ITt))))}if(n==58){if(++this.d,wi(this),s=_ee(Xm(this),e,r),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));wi(this)}else if(n==41)++this.d,wi(this),s=_ee(Xm(this),e,r);else throw at(new Yr(Qr((Ur(),hme))));return s},l.Cm=function(){var e;if(wi(this),e=$z(21,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Dm=function(){var e;if(wi(this),e=$z(23,Xm(this)),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Em=function(){var e,n;if(wi(this),e=this.f++,n=Rit(Xm(this),e),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),n},l.Fm=function(){var e;if(wi(this),e=Rit(Xm(this),0),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Gm=function(e){return wi(this),this.c==5?(wi(this),Mz(e,(yi(),yi(),new By(9,e)))):Mz(e,(yi(),yi(),new By(3,e)))},l.Hm=function(e){var n;return wi(this),n=(yi(),yi(),new yS(2)),this.c==5?(wi(this),gw(n,OL),gw(n,e)):(gw(n,e),gw(n,OL)),n},l.Im=function(e){return wi(this),this.c==5?(wi(this),yi(),yi(),new By(9,e)):(yi(),yi(),new By(3,e))},l.a=0,l.b=0,l.c=0,l.d=0,l.e=0,l.f=1,l.g=null,l.j=0,I(qp,"RegEx/RegexParser",836),D(1947,836,{},YKt),l.bm=function(e){return!1},l.cm=function(){return fkt(this)},l.dm=function(e){return j7(e)},l.em=function(e){return tbe(this)},l.fm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.gm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.hm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.im=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.jm=function(){return wi(this),j7(67)},l.km=function(){return wi(this),j7(73)},l.lm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.mm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.nm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.om=function(){return wi(this),j7(99)},l.pm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.qm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.rm=function(){return wi(this),j7(105)},l.sm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.tm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.um=function(e,n){return a3(e,j7(n)),-1},l.vm=function(){return wi(this),yi(),yi(),new _0(0,94)},l.wm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.xm=function(){return wi(this),yi(),yi(),new _0(0,36)},l.ym=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.zm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Am=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Bm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Cm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Dm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Em=function(){var e;if(wi(this),e=Rit(Xm(this),0),this.c!=7)throw at(new Yr(Qr((Ur(),Tw))));return wi(this),e},l.Fm=function(){throw at(new Yr(Qr((Ur(),Hh))))},l.Gm=function(e){return wi(this),Mz(e,(yi(),yi(),new By(3,e)))},l.Hm=function(e){var n;return wi(this),n=(yi(),yi(),new yS(2)),gw(n,e),gw(n,OL),n},l.Im=function(e){return wi(this),yi(),yi(),new By(3,e)};var bx=null,JT=null;I(qp,"RegEx/ParserForXMLSchema",1947),D(122,1,pT,um),l.Jm=function(e){throw at(new uc("Not supported."))},l.Km=function(){return-1},l.Lm=function(e){return null},l.Mm=function(){return null},l.Nm=function(e){},l.Om=function(e){},l.Pm=function(){return 0},l.Ib=function(){return this.Qm(0)},l.Qm=function(e){return this.e==11?".":""},l.e=0;var oOt,ZT,IL,e9e,cOt,W3=null,eW,u0t=null,uOt,OL,l0t=null,lOt,hOt,fOt,dOt,gOt,n9e,a8,r9e,i9e,s9e,a9e,t9,o9e,c9e,T_n=I(qp,"RegEx/Token",122);D(138,122,{3:1,138:1,122:1},ih),l.Qm=function(e){var n,r,s;if(this.e==4)if(this==uOt)r=".";else if(this==eW)r="\\d";else if(this==t9)r="\\w";else if(this==a8)r="\\s";else{for(s=new dp,s.a+="[",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?Mo(s,WO(this.b[n])):(Mo(s,WO(this.b[n])),s.a+="-",Mo(s,WO(this.b[n+1])));s.a+="]",r=s.a}else if(this==fOt)r="\\D";else if(this==gOt)r="\\W";else if(this==dOt)r="\\S";else{for(s=new dp,s.a+="[^",n=0;n0&&(s.a+=","),this.b[n]===this.b[n+1]?Mo(s,WO(this.b[n])):(Mo(s,WO(this.b[n])),s.a+="-",Mo(s,WO(this.b[n+1])));s.a+="]",r=s.a}return r},l.a=!1,l.c=!1,I(qp,"RegEx/RangeToken",138),D(592,1,{592:1},F2t),l.a=0,I(qp,"RegEx/RegexParser/ReferencePosition",592),D(591,1,{3:1,591:1},lYt),l.Fb=function(e){var n;return e==null||!Lt(e,591)?!1:(n=u(e,591),hn(this.b,n.b)&&this.a==n.a)},l.Hb=function(){return _p(this.b+"/"+skt(this.a))},l.Ib=function(){return this.c.Qm(this.a)},l.a=0,I(qp,"RegEx/RegularExpression",591),D(228,122,pT,_0),l.Km=function(){return this.a},l.Qm=function(e){var n,r,s;switch(this.e){case 0:switch(this.a){case 124:case 42:case 43:case 63:case 40:case 41:case 46:case 91:case 123:case 92:s="\\"+dit(this.a&js);break;case 12:s="\\f";break;case 10:s="\\n";break;case 13:s="\\r";break;case 9:s="\\t";break;case 27:s="\\e";break;default:this.a>=po?(r=(n=this.a>>>0,"0"+n.toString(16)),s="\\v"+Lh(r,r.length-6,r.length)):s=""+dit(this.a&js)}break;case 8:this==lOt||this==hOt?s=""+dit(this.a&js):s="\\"+dit(this.a&js);break;default:s=null}return s},l.a=0,I(qp,"RegEx/Token/CharToken",228),D(318,122,pT,By),l.Lm=function(e){return this.a},l.Nm=function(e){this.b=e},l.Om=function(e){this.c=e},l.Pm=function(){return 1},l.Qm=function(e){var n;if(this.e==3)if(this.c<0&&this.b<0)n=this.a.Qm(e)+"*";else if(this.c==this.b)n=this.a.Qm(e)+"{"+this.c+"}";else if(this.c>=0&&this.b>=0)n=this.a.Qm(e)+"{"+this.c+","+this.b+"}";else if(this.c>=0&&this.b<0)n=this.a.Qm(e)+"{"+this.c+",}";else throw at(new uc("Token#toString(): CLOSURE "+this.c+ao+this.b));else if(this.c<0&&this.b<0)n=this.a.Qm(e)+"*?";else if(this.c==this.b)n=this.a.Qm(e)+"{"+this.c+"}?";else if(this.c>=0&&this.b>=0)n=this.a.Qm(e)+"{"+this.c+","+this.b+"}?";else if(this.c>=0&&this.b<0)n=this.a.Qm(e)+"{"+this.c+",}?";else throw at(new uc("Token#toString(): NONGREEDYCLOSURE "+this.c+ao+this.b));return n},l.b=0,l.c=0,I(qp,"RegEx/Token/ClosureToken",318),D(837,122,pT,Cyt),l.Lm=function(e){return e==0?this.a:this.b},l.Pm=function(){return 2},l.Qm=function(e){var n;return this.b.e==3&&this.b.Lm(0)==this.a?n=this.a.Qm(e)+"+":this.b.e==9&&this.b.Lm(0)==this.a?n=this.a.Qm(e)+"+?":n=this.a.Qm(e)+(""+this.b.Qm(e)),n},I(qp,"RegEx/Token/ConcatToken",837),D(1945,122,pT,Iae),l.Lm=function(e){if(e==0)return this.d;if(e==1)return this.b;throw at(new uc("Internal Error: "+e))},l.Pm=function(){return this.b?2:1},l.Qm=function(e){var n;return this.c>0?n="(?("+this.c+")":this.a.e==8?n="(?("+this.a+")":n="(?"+this.a,this.b?n+=this.d+"|"+this.b+")":n+=this.d+")",n},l.c=0,I(qp,"RegEx/Token/ConditionToken",1945),D(1946,122,pT,kre),l.Lm=function(e){return this.b},l.Pm=function(){return 1},l.Qm=function(e){return"(?"+(this.a==0?"":skt(this.a))+(this.c==0?"":skt(this.c))+":"+this.b.Qm(e)+")"},l.a=0,l.c=0,I(qp,"RegEx/Token/ModifierToken",1946),D(838,122,pT,Pyt),l.Lm=function(e){return this.a},l.Pm=function(){return 1},l.Qm=function(e){var n;switch(n=null,this.e){case 6:this.b==0?n="(?:"+this.a.Qm(e)+")":n="("+this.a.Qm(e)+")";break;case 20:n="(?="+this.a.Qm(e)+")";break;case 21:n="(?!"+this.a.Qm(e)+")";break;case 22:n="(?<="+this.a.Qm(e)+")";break;case 23:n="(?"+this.a.Qm(e)+")"}return n},l.b=0,I(qp,"RegEx/Token/ParenToken",838),D(530,122,{3:1,122:1,530:1},lst),l.Mm=function(){return this.b},l.Qm=function(e){return this.e==12?"\\"+this.a:a6n(this.b)},l.a=0,I(qp,"RegEx/Token/StringToken",530),D(476,122,pT,yS),l.Jm=function(e){gw(this,e)},l.Lm=function(e){return u(Im(this.a,e),122)},l.Pm=function(){return this.a?this.a.a.c.length:0},l.Qm=function(e){var n,r,s,o,h;if(this.e==1){if(this.a.a.c.length==2)n=u(Im(this.a,0),122),r=u(Im(this.a,1),122),r.e==3&&r.Lm(0)==n?o=n.Qm(e)+"+":r.e==9&&r.Lm(0)==n?o=n.Qm(e)+"+?":o=n.Qm(e)+(""+r.Qm(e));else{for(h=new dp,s=0;s=this.c.b:this.a<=this.c.b},l.Sb=function(){return this.b>0},l.Tb=function(){return this.b},l.Vb=function(){return this.b-1},l.Qb=function(){throw at(new hp(Ove))},l.a=0,l.b=0,I(ZTt,"ExclusiveRange/RangeIterator",258);var Yh=FE(wU,"C"),Fr=FE(dA,"I"),Fl=FE(kk,"Z"),x2=FE(gA,"J"),ul=FE(lA,"B"),ma=FE(hA,"D"),Y3=FE(fA,"F"),wx=FE(pA,"S"),C_n=os("org.eclipse.elk.core.labels","ILabelManager"),pOt=os(oo,"DiagnosticChain"),bOt=os(ove,"ResourceSet"),wOt=I(oo,"InvocationTargetException",null),l9e=(d$(),jdn),h9e=h9e=Dyn;Ign(Ann),Agn("permProps",[[["locale","default"],[Nve,"gecko1_8"]],[["locale","default"],[Nve,"safari"]]]),h9e(null,"elk",null)}).call(this)}).call(this,typeof Z0<"u"?Z0:typeof self<"u"?self:typeof window<"u"?window:{})},{}],3:[function(f,g,w){function v(M,F){if(!(M instanceof F))throw new TypeError("Cannot call a class as a function")}function b(M,F){if(!M)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return F&&(typeof F=="object"||typeof F=="function")?F:M}function E(M,F){if(typeof F!="function"&&F!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof F);M.prototype=Object.create(F&&F.prototype,{constructor:{value:M,enumerable:!1,writable:!0,configurable:!0}}),F&&(Object.setPrototypeOf?Object.setPrototypeOf(M,F):M.__proto__=F)}var S=f("./elk-api.js").default,_=function(M){E(F,M);function F(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};v(this,F);var B=Object.assign({},R),z=!1;try{f.resolve("web-worker"),z=!0}catch{}if(R.workerUrl)if(z){var Y=f("web-worker");B.workerFactory=function(ft){return new Y(ft)}}else console.warn(`Web worker requested but 'web-worker' package not installed. +Consider installing the package or pass your own 'workerFactory' to ELK's constructor. +... Falling back to non-web worker version.`);if(!B.workerFactory){var nt=f("./elk-worker.min.js"),ot=nt.Worker;B.workerFactory=function(ft){return new ot(ft)}}return b(this,(F.__proto__||Object.getPrototypeOf(F)).call(this,B))}return F}(S);Object.defineProperty(g.exports,"__esModule",{value:!0}),g.exports=_,_.default=_},{"./elk-api.js":1,"./elk-worker.min.js":2,"web-worker":4}],4:[function(f,g,w){g.exports=Worker},{}]},{},[3])(3)})})(THt);var ptn=THt.exports;const btn=e9(ptn),CHt=new btn;let nm={};const wtn={};let Ux={};const mtn=async function(i,a,f,g,w,v,b){const S=f.select(`[id="${a}"]`).insert("g").attr("class","nodes"),_=Object.keys(i);return await Promise.all(_.map(async function(M){const F=i[M];let R="default";F.classes.length>0&&(R=F.classes.join(" ")),R=R+" flowchart-label";const B=C2(F.styles);let z=F.text!==void 0?F.text:F.id;const Y={width:0,height:0},nt=[{id:F.id+"-west",layoutOptions:{"port.side":"WEST"}},{id:F.id+"-east",layoutOptions:{"port.side":"EAST"}},{id:F.id+"-south",layoutOptions:{"port.side":"SOUTH"}},{id:F.id+"-north",layoutOptions:{"port.side":"NORTH"}}];let ot=0,ft="",wt={};switch(F.type){case"round":ot=5,ft="rect";break;case"square":ft="rect";break;case"diamond":ft="question",wt={portConstraints:"FIXED_SIDE"};break;case"hexagon":ft="hexagon";break;case"odd":ft="rect_left_inv_arrow";break;case"lean_right":ft="lean_right";break;case"lean_left":ft="lean_left";break;case"trapezoid":ft="trapezoid";break;case"inv_trapezoid":ft="inv_trapezoid";break;case"odd_right":ft="rect_left_inv_arrow";break;case"circle":ft="circle";break;case"ellipse":ft="ellipse";break;case"stadium":ft="stadium";break;case"subroutine":ft="subroutine";break;case"cylinder":ft="cylinder";break;case"group":ft="rect";break;case"doublecircle":ft="doublecircle";break;default:ft="rect"}const mt={labelStyle:B.labelStyle,shape:ft,labelText:z,labelType:F.labelType,rx:ot,ry:ot,class:R,style:B.style,id:F.id,link:F.link,linkTarget:F.linkTarget,tooltip:w.db.getTooltip(F.id)||"",domId:w.db.lookUpDomId(F.id),haveCallback:F.haveCallback,width:F.type==="group"?500:void 0,dir:F.dir,type:F.type,props:F.props,padding:o1().flowchart.padding};let ct,rt;if(mt.type!=="group")rt=await nX(S,mt,F.dir),ct=rt.node().getBBox();else{g.createElementNS("http://www.w3.org/2000/svg","text");const{shapeSvg:gt,bbox:Q}=await $1(S,mt,void 0,!0);Y.width=Q.width,Y.wrappingWidth=o1().flowchart.wrappingWidth,Y.height=Q.height,Y.labelNode=gt.node(),mt.labelData=Y}const it={id:F.id,ports:F.type==="diamond"?nt:[],layoutOptions:wt,labelText:z,labelData:Y,domId:w.db.lookUpDomId(F.id),width:ct==null?void 0:ct.width,height:ct==null?void 0:ct.height,type:F.type,el:rt,parent:v.parentById[F.id]};Ux[mt.id]=it})),b},SHt=(i,a,f)=>{const g={TB:{in:{north:"north"},out:{south:"west",west:"east",east:"south"}},LR:{in:{west:"west"},out:{east:"south",south:"north",north:"east"}},RL:{in:{east:"east"},out:{west:"north",north:"south",south:"west"}},BT:{in:{south:"south"},out:{north:"east",east:"west",west:"north"}}};return g.TD=g.TB,g[f][a][i]},_Ht=(i,a,f)=>{if(Kt.info("getNextPort",{node:i,edgeDirection:a,graphDirection:f}),!nm[i])switch(f){case"TB":case"TD":nm[i]={inPosition:"north",outPosition:"south"};break;case"BT":nm[i]={inPosition:"south",outPosition:"north"};break;case"RL":nm[i]={inPosition:"east",outPosition:"west"};break;case"LR":nm[i]={inPosition:"west",outPosition:"east"};break}const g=a==="in"?nm[i].inPosition:nm[i].outPosition;return a==="in"?nm[i].inPosition=SHt(nm[i].inPosition,a,f):nm[i].outPosition=SHt(nm[i].outPosition,a,f),g},vtn=(i,a)=>{let f=i.start,g=i.end;const w=f,v=g,b=Ux[f],E=Ux[g];return!b||!E?{source:f,target:g}:(b.type==="diamond"&&(f=`${f}-${_Ht(f,"out",a)}`),E.type==="diamond"&&(g=`${g}-${_Ht(g,"in",a)}`),{source:f,target:g,sourceId:w,targetId:v})},ytn=function(i,a,f,g){Kt.info("abc78 edges = ",i);const w=g.insert("g").attr("class","edgeLabels");let v={},b=a.db.getDirection(),E,S;if(i.defaultStyle!==void 0){const _=C2(i.defaultStyle);E=_.style,S=_.labelStyle}return i.forEach(function(_){const M="L-"+_.start+"-"+_.end;v[M]===void 0?(v[M]=0,Kt.info("abc78 new entry",M,v[M])):(v[M]++,Kt.info("abc78 new entry",M,v[M]));let F=M+"-"+v[M];Kt.info("abc78 new link id to be used is",M,F,v[M]);const R="LS-"+_.start,B="LE-"+_.end,z={style:"",labelStyle:""};switch(z.minlen=_.length||1,_.type==="arrow_open"?z.arrowhead="none":z.arrowhead="normal",z.arrowTypeStart="arrow_open",z.arrowTypeEnd="arrow_open",_.type){case"double_arrow_cross":z.arrowTypeStart="arrow_cross";case"arrow_cross":z.arrowTypeEnd="arrow_cross";break;case"double_arrow_point":z.arrowTypeStart="arrow_point";case"arrow_point":z.arrowTypeEnd="arrow_point";break;case"double_arrow_circle":z.arrowTypeStart="arrow_circle";case"arrow_circle":z.arrowTypeEnd="arrow_circle";break}let Y="",nt="";switch(_.stroke){case"normal":Y="fill:none;",E!==void 0&&(Y=E),S!==void 0&&(nt=S),z.thickness="normal",z.pattern="solid";break;case"dotted":z.thickness="normal",z.pattern="dotted",z.style="fill:none;stroke-width:2px;stroke-dasharray:3;";break;case"thick":z.thickness="thick",z.pattern="solid",z.style="stroke-width: 3.5px;fill:none;";break}if(_.style!==void 0){const rt=C2(_.style);Y=rt.style,nt=rt.labelStyle}z.style=z.style+=Y,z.labelStyle=z.labelStyle+=nt,_.interpolate!==void 0?z.curve=Xw(_.interpolate,Kg):i.defaultInterpolate!==void 0?z.curve=Xw(i.defaultInterpolate,Kg):z.curve=Xw(wtn.curve,Kg),_.text===void 0?_.style!==void 0&&(z.arrowheadStyle="fill: #333"):(z.arrowheadStyle="fill: #333",z.labelpos="c"),z.labelType=_.labelType,z.label=_.text.replace(ei.lineBreakRegex,` +`),_.style===void 0&&(z.style=z.style||"stroke: #333; stroke-width: 1.5px;fill:none;"),z.labelStyle=z.labelStyle.replace("color:","fill:"),z.id=F,z.classes="flowchart-link "+R+" "+B;const ot=tbt(w,z),{source:ft,target:wt,sourceId:mt,targetId:ct}=vtn(_,b);Kt.debug("abc78 source and target",ft,wt),f.edges.push({id:"e"+_.start+_.end,sources:[ft],targets:[wt],sourceId:mt,targetId:ct,labelEl:ot,labels:[{width:z.width,height:z.height,orgWidth:z.width,orgHeight:z.height,text:z.label,layoutOptions:{"edgeLabels.inline":"true","edgeLabels.placement":"CENTER"}}],edgeData:z})}),f},xtn=function(i,a,f,g,w){let v="";g&&(v=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,v=v.replace(/\(/g,"\\("),v=v.replace(/\)/g,"\\)")),uzt(i,a,v,w,f)},ktn=function(i,a){return Kt.info("Extracting classes"),a.db.getClasses()},Etn=function(i){const a={parentById:{},childrenById:{}},f=i.getSubGraphs();return Kt.info("Subgraphs - ",f),f.forEach(function(g){g.nodes.forEach(function(w){a.parentById[w]=g.id,a.childrenById[g.id]===void 0&&(a.childrenById[g.id]=[]),a.childrenById[g.id].push(w)})}),f.forEach(function(g){g.id,a.parentById[g.id]!==void 0&&a.parentById[g.id]}),a},Ttn=function(i,a,f){const g=gtn(i,a,f);if(g===void 0||g==="root")return{x:0,y:0};const w=Ux[g].offset;return{x:w.posX,y:w.posY}},Ctn=function(i,a,f,g,w,v){const b=Ttn(a.sourceId,a.targetId,w),E=a.sections[0].startPoint,S=a.sections[0].endPoint,M=(a.sections[0].bendPoints?a.sections[0].bendPoints:[]).map(wt=>[wt.x+b.x,wt.y+b.y]),F=[[E.x+b.x,E.y+b.y],...M,[S.x+b.x,S.y+b.y]],{x:R,y:B}=czt(a.edgeData),z=Ax().x(R).y(B).curve(Kg),Y=i.insert("path").attr("d",z(F)).attr("class","path "+f.classes).attr("fill","none"),nt=i.insert("g").attr("class","edgeLabel"),ot=Tr(nt.node().appendChild(a.labelEl)),ft=ot.node().firstChild.getBoundingClientRect();ot.attr("width",ft.width),ot.attr("height",ft.height),nt.attr("transform",`translate(${a.labels[0].x+b.x}, ${a.labels[0].y+b.y})`),xtn(Y,f,g.type,g.arrowMarkerAbsolute,v)},AHt=(i,a)=>{i.forEach(f=>{f.children||(f.children=[]);const g=a.childrenById[f.id];g&&g.forEach(w=>{f.children.push(Ux[w])}),AHt(f.children,a)})},Stn=async function(i,a,f,g){var it;g.db.clear(),Ux={},nm={},g.db.setGen("gen-2"),g.parser.parse(i);const w=Tr("body").append("div").attr("style","height:400px").attr("id","cy");let v={id:"root",layoutOptions:{"elk.hierarchyHandling":"INCLUDE_CHILDREN","org.eclipse.elk.padding":"[top=100, left=100, bottom=110, right=110]","elk.layered.spacing.edgeNodeBetweenLayers":"30","elk.direction":"DOWN"},children:[],edges:[]};switch(Kt.info("Drawing flowchart using v3 renderer",CHt),g.db.getDirection()){case"BT":v.layoutOptions["elk.direction"]="UP";break;case"TB":v.layoutOptions["elk.direction"]="DOWN";break;case"LR":v.layoutOptions["elk.direction"]="RIGHT";break;case"RL":v.layoutOptions["elk.direction"]="LEFT";break}const{securityLevel:E,flowchart:S}=o1();let _;E==="sandbox"&&(_=Tr("#i"+a));const M=Tr(E==="sandbox"?_.nodes()[0].contentDocument.body:"body"),F=E==="sandbox"?_.nodes()[0].contentDocument:document,R=M.select(`[id="${a}"]`);jpt(R,["point","circle","cross"],g.type,a);const z=g.db.getVertices();let Y;const nt=g.db.getSubGraphs();Kt.info("Subgraphs - ",nt);for(let gt=nt.length-1;gt>=0;gt--)Y=nt[gt],g.db.addVertex(Y.id,{text:Y.title,type:Y.labelType},"group",void 0,Y.classes,Y.dir);const ot=R.insert("g").attr("class","subgraphs"),ft=Etn(g.db);v=await mtn(z,a,M,F,g,ft,v);const wt=R.insert("g").attr("class","edges edgePath"),mt=g.db.getEdges();v=ytn(mt,g,v,R),Object.keys(Ux).forEach(gt=>{const Q=Ux[gt];Q.parent||v.children.push(Q),ft.childrenById[gt]!==void 0&&(Q.labels=[{text:Q.labelText,layoutOptions:{"nodeLabels.placement":"[H_CENTER, V_TOP, INSIDE]"},width:Q.labelData.width,height:Q.labelData.height}],delete Q.x,delete Q.y,delete Q.width,delete Q.height)}),AHt(v.children,ft),Kt.info("after layout",JSON.stringify(v,null,2));const rt=await CHt.layout(v);LHt(0,0,rt.children,R,ot,g,0),Kt.info("after layout",rt),(it=rt.edges)==null||it.map(gt=>{Ctn(wt,gt,gt.edgeData,g,ft,a)}),w8({},R,S.diagramPadding,S.useMaxWidth),w.remove()},LHt=(i,a,f,g,w,v,b)=>{f.forEach(function(E){if(E)if(Ux[E.id].offset={posX:E.x+i,posY:E.y+a,x:i,y:a,depth:b,width:E.width,height:E.height},E.type==="group"){const S=w.insert("g").attr("class","subgraph");S.insert("rect").attr("class","subgraph subgraph-lvl-"+b%5+" node").attr("x",E.x+i).attr("y",E.y+a).attr("width",E.width).attr("height",E.height);const _=S.insert("g").attr("class","label"),M=o1().flowchart.htmlLabels?E.labelData.width/2:0;_.attr("transform",`translate(${E.labels[0].x+i+E.x+M}, ${E.labels[0].y+a+E.y+3})`),_.node().appendChild(E.labelData.labelNode),Kt.info("Id (UGH)= ",E.type,E.labels)}else Kt.info("Id (UGH)= ",E.id),E.el.attr("transform",`translate(${E.x+i+E.width/2}, ${E.y+a+E.height/2})`)}),f.forEach(function(E){E&&E.type==="group"&&LHt(i+E.x,a+E.y,E.children,g,w,v,b+1)})},_tn={getClasses:ktn,draw:Stn},Atn=i=>{let a="";for(let f=0;f<5;f++)a+=` + .subgraph-lvl-${f} { + fill: ${i[`surface${f}`]}; + stroke: ${i[`surfacePeer${f}`]}; + } + `;return a},Ltn=Object.freeze(Object.defineProperty({__proto__:null,diagram:{db:wje,renderer:_tn,parser:spt,styles:i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span { + color: ${i.titleColor}; + } + + .label text,span { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.85; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + .cluster rect { + fill: ${i.clusterBkg}; + stroke: ${i.clusterBorder}; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } + .subgraph { + stroke-width:2; + rx:3; + } + // .subgraph-lvl-1 { + // fill:#ccc; + // // stroke:black; + // } + + .flowchart-label text { + text-anchor: middle; + } + + ${Atn(i)} +`}},Symbol.toStringTag,{value:"Module"}));var l2t=function(){var i=function(R,B,z,Y){for(z=z||{},Y=R.length;Y--;z[R[Y]]=B);return z},a=[6,8,10,11,12,14,16,17,20,21],f=[1,9],g=[1,10],w=[1,11],v=[1,12],b=[1,13],E=[1,16],S=[1,17],_={trace:function(){},yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:function(B,z,Y,nt,ot,ft,wt){var mt=ft.length-1;switch(ot){case 1:return ft[mt-1];case 2:this.$=[];break;case 3:ft[mt-1].push(ft[mt]),this.$=ft[mt-1];break;case 4:case 5:this.$=ft[mt];break;case 6:case 7:this.$=[];break;case 8:nt.getCommonDb().setDiagramTitle(ft[mt].substr(6)),this.$=ft[mt].substr(6);break;case 9:this.$=ft[mt].trim(),nt.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=ft[mt].trim(),nt.getCommonDb().setAccDescription(this.$);break;case 12:nt.addSection(ft[mt].substr(8)),this.$=ft[mt].substr(8);break;case 15:nt.addTask(ft[mt],0,""),this.$=ft[mt];break;case 16:nt.addEvent(ft[mt].substr(2)),this.$=ft[mt];break}},table:[{3:1,4:[1,2]},{1:[3]},i(a,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:f,12:g,14:w,16:v,17:b,18:14,19:15,20:E,21:S},i(a,[2,7],{1:[2,1]}),i(a,[2,3]),{9:18,11:f,12:g,14:w,16:v,17:b,18:14,19:15,20:E,21:S},i(a,[2,5]),i(a,[2,6]),i(a,[2,8]),{13:[1,19]},{15:[1,20]},i(a,[2,11]),i(a,[2,12]),i(a,[2,13]),i(a,[2,14]),i(a,[2,15]),i(a,[2,16]),i(a,[2,4]),i(a,[2,9]),i(a,[2,10])],defaultActions:{},parseError:function(B,z){if(z.recoverable)this.trace(B);else{var Y=new Error(B);throw Y.hash=z,Y}},parse:function(B){var z=this,Y=[0],nt=[],ot=[null],ft=[],wt=this.table,mt="",ct=0,rt=0,it=2,gt=1,Q=ft.slice.call(arguments,1),dt=Object.create(this.lexer),K={yy:{}};for(var yt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,yt)&&(K.yy[yt]=this.yy[yt]);dt.setInput(B,K.yy),K.yy.lexer=dt,K.yy.parser=this,typeof dt.yylloc>"u"&&(dt.yylloc={});var V=dt.yylloc;ft.push(V);var Ot=dt.options&&dt.options.ranges;typeof K.yy.parseError=="function"?this.parseError=K.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function It(){var ye;return ye=nt.pop()||dt.lex()||gt,typeof ye!="number"&&(ye instanceof Array&&(nt=ye,ye=nt.pop()),ye=z.symbols_[ye]||ye),ye}for(var jt,xt,Ft,Ct,kt={},Gt,Fe,Mt,pn;;){if(xt=Y[Y.length-1],this.defaultActions[xt]?Ft=this.defaultActions[xt]:((jt===null||typeof jt>"u")&&(jt=It()),Ft=wt[xt]&&wt[xt][jt]),typeof Ft>"u"||!Ft.length||!Ft[0]){var Ae="";pn=[];for(Gt in wt[xt])this.terminals_[Gt]&&Gt>it&&pn.push("'"+this.terminals_[Gt]+"'");dt.showPosition?Ae="Parse error on line "+(ct+1)+`: +`+dt.showPosition()+` +Expecting `+pn.join(", ")+", got '"+(this.terminals_[jt]||jt)+"'":Ae="Parse error on line "+(ct+1)+": Unexpected "+(jt==gt?"end of input":"'"+(this.terminals_[jt]||jt)+"'"),this.parseError(Ae,{text:dt.match,token:this.terminals_[jt]||jt,line:dt.yylineno,loc:V,expected:pn})}if(Ft[0]instanceof Array&&Ft.length>1)throw new Error("Parse Error: multiple actions possible at state: "+xt+", token: "+jt);switch(Ft[0]){case 1:Y.push(jt),ot.push(dt.yytext),ft.push(dt.yylloc),Y.push(Ft[1]),jt=null,rt=dt.yyleng,mt=dt.yytext,ct=dt.yylineno,V=dt.yylloc;break;case 2:if(Fe=this.productions_[Ft[1]][1],kt.$=ot[ot.length-Fe],kt._$={first_line:ft[ft.length-(Fe||1)].first_line,last_line:ft[ft.length-1].last_line,first_column:ft[ft.length-(Fe||1)].first_column,last_column:ft[ft.length-1].last_column},Ot&&(kt._$.range=[ft[ft.length-(Fe||1)].range[0],ft[ft.length-1].range[1]]),Ct=this.performAction.apply(kt,[mt,rt,ct,K.yy,Ft[1],ot,ft].concat(Q)),typeof Ct<"u")return Ct;Fe&&(Y=Y.slice(0,-1*Fe*2),ot=ot.slice(0,-1*Fe),ft=ft.slice(0,-1*Fe)),Y.push(this.productions_[Ft[1]][0]),ot.push(kt.$),ft.push(kt._$),Mt=wt[Y[Y.length-2]][Y[Y.length-1]],Y.push(Mt);break;case 3:return!0}}return!0}},M=function(){var R={EOF:1,parseError:function(z,Y){if(this.yy.parser)this.yy.parser.parseError(z,Y);else throw new Error(z)},setInput:function(B,z){return this.yy=z||this.yy||{},this._input=B,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var B=this._input[0];this.yytext+=B,this.yyleng++,this.offset++,this.match+=B,this.matched+=B;var z=B.match(/(?:\r\n?|\n).*/g);return z?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),B},unput:function(B){var z=B.length,Y=B.split(/(?:\r\n?|\n)/g);this._input=B+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-z),this.offset-=z;var nt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),Y.length-1&&(this.yylineno-=Y.length-1);var ot=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:Y?(Y.length===nt.length?this.yylloc.first_column:0)+nt[nt.length-Y.length].length-Y[0].length:this.yylloc.first_column-z},this.options.ranges&&(this.yylloc.range=[ot[0],ot[0]+this.yyleng-z]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(B){this.unput(this.match.slice(B))},pastInput:function(){var B=this.matched.substr(0,this.matched.length-this.match.length);return(B.length>20?"...":"")+B.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var B=this.match;return B.length<20&&(B+=this._input.substr(0,20-B.length)),(B.substr(0,20)+(B.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var B=this.pastInput(),z=new Array(B.length+1).join("-");return B+this.upcomingInput()+` +`+z+"^"},test_match:function(B,z){var Y,nt,ot;if(this.options.backtrack_lexer&&(ot={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(ot.yylloc.range=this.yylloc.range.slice(0))),nt=B[0].match(/(?:\r\n?|\n).*/g),nt&&(this.yylineno+=nt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:nt?nt[nt.length-1].length-nt[nt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+B[0].length},this.yytext+=B[0],this.match+=B[0],this.matches=B,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(B[0].length),this.matched+=B[0],Y=this.performAction.call(this,this.yy,this,z,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),Y)return Y;if(this._backtrack){for(var ft in ot)this[ft]=ot[ft];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var B,z,Y,nt;this._more||(this.yytext="",this.match="");for(var ot=this._currentRules(),ft=0;ftz[0].length)){if(z=Y,nt=ft,this.options.backtrack_lexer){if(B=this.test_match(Y,ot[ft]),B!==!1)return B;if(this._backtrack){z=!1;continue}else return!1}else if(!this.options.flex)break}return z?(B=this.test_match(z,ot[nt]),B!==!1?B:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var z=this.next();return z||this.lex()},begin:function(z){this.conditionStack.push(z)},popState:function(){var z=this.conditionStack.length-1;return z>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(z){return z=this.conditionStack.length-1-Math.abs(z||0),z>=0?this.conditionStack[z]:"INITIAL"},pushState:function(z){this.begin(z)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(z,Y,nt,ot){switch(nt){case 0:break;case 1:break;case 2:return 10;case 3:break;case 4:break;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}},rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?::\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}};return R}();_.lexer=M;function F(){this.yy={}}return F.prototype=_,_.Parser=F,new F}();l2t.parser=l2t;const Dtn=l2t;let ND="",DHt=0;const h2t=[],IX=[],PD=[],MHt=()=>uBt,IHt=function(){h2t.length=0,IX.length=0,ND="",PD.length=0,ag()},OHt=function(i){ND=i,h2t.push(i)},NHt=function(){return h2t},PHt=function(){let i=jHt();const a=100;let f=0;for(;!i&&ff.id===DHt-1).events.push(i)},RHt=function(i){const a={section:ND,type:ND,description:i,task:i,classes:[]};IX.push(a)},jHt=function(){const i=function(f){return PD[f].processed};let a=!0;for(const[f,g]of PD.entries())i(f),a=a&&g.processed;return a},Mtn=Object.freeze(Object.defineProperty({__proto__:null,addEvent:BHt,addSection:OHt,addTask:FHt,addTaskOrg:RHt,clear:IHt,default:{clear:IHt,getCommonDb:MHt,addSection:OHt,getSections:NHt,getTasks:PHt,addTask:FHt,addTaskOrg:RHt,addEvent:BHt},getCommonDb:MHt,getSections:NHt,getTasks:PHt},Symbol.toStringTag,{value:"Module"})),Itn=12,OX=function(i,a){const f=i.append("rect");return f.attr("x",a.x),f.attr("y",a.y),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("width",a.width),f.attr("height",a.height),f.attr("rx",a.rx),f.attr("ry",a.ry),a.class!==void 0&&f.attr("class",a.class),f},Otn=function(i,a){const g=i.append("circle").attr("cx",a.cx).attr("cy",a.cy).attr("class","face").attr("r",15).attr("stroke-width",2).attr("overflow","visible"),w=i.append("g");w.append("circle").attr("cx",a.cx-15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),w.append("circle").attr("cx",a.cx+15/3).attr("cy",a.cy-15/3).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666");function v(S){const _=YL().startAngle(Math.PI/2).endAngle(3*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+2)+")")}function b(S){const _=YL().startAngle(3*Math.PI/2).endAngle(5*(Math.PI/2)).innerRadius(7.5).outerRadius(6.8181818181818175);S.append("path").attr("class","mouth").attr("d",_).attr("transform","translate("+a.cx+","+(a.cy+7)+")")}function E(S){S.append("line").attr("class","mouth").attr("stroke",2).attr("x1",a.cx-5).attr("y1",a.cy+7).attr("x2",a.cx+5).attr("y2",a.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.score>3?v(w):a.score<3?b(w):E(w),g},Ntn=function(i,a){const f=i.append("circle");return f.attr("cx",a.cx),f.attr("cy",a.cy),f.attr("class","actor-"+a.pos),f.attr("fill",a.fill),f.attr("stroke",a.stroke),f.attr("r",a.r),f.class!==void 0&&f.attr("class",f.class),a.title!==void 0&&f.append("title").text(a.title),f},$Ht=function(i,a){const f=a.text.replace(//gi," "),g=i.append("text");g.attr("x",a.x),g.attr("y",a.y),g.attr("class","legend"),g.style("text-anchor",a.anchor),a.class!==void 0&&g.attr("class",a.class);const w=g.append("tspan");return w.attr("x",a.x+a.textMargin*2),w.text(f),g},Ptn=function(i,a){function f(w,v,b,E,S){return w+","+v+" "+(w+b)+","+v+" "+(w+b)+","+(v+E-S)+" "+(w+b-S*1.2)+","+(v+E)+" "+w+","+(v+E)}const g=i.append("polygon");g.attr("points",f(a.x,a.y,50,20,7)),g.attr("class","labelBox"),a.y=a.y+a.labelMargin,a.x=a.x+.5*a.labelMargin,$Ht(i,a)},Ftn=function(i,a,f){const g=i.append("g"),w=f2t();w.x=a.x,w.y=a.y,w.fill=a.fill,w.width=f.width,w.height=f.height,w.class="journey-section section-type-"+a.num,w.rx=3,w.ry=3,OX(g,w),qHt(f)(a.text,g,w.x,w.y,w.width,w.height,{class:"journey-section section-type-"+a.num},f,a.colour)};let zHt=-1;const Btn=function(i,a,f){const g=a.x+f.width/2,w=i.append("g");zHt++;const v=300+5*30;w.append("line").attr("id","task"+zHt).attr("x1",g).attr("y1",a.y).attr("x2",g).attr("y2",v).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),Otn(w,{cx:g,cy:300+(5-a.score)*30,score:a.score});const b=f2t();b.x=a.x,b.y=a.y,b.fill=a.fill,b.width=f.width,b.height=f.height,b.class="task task-type-"+a.num,b.rx=3,b.ry=3,OX(w,b),a.x+14,qHt(f)(a.task,w,b.x,b.y,b.width,b.height,{class:"task"},f,a.colour)},Rtn=function(i,a){OX(i,{x:a.startx,y:a.starty,width:a.stopx-a.startx,height:a.stopy-a.starty,fill:a.fill,class:"rect"}).lower()},jtn=function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}},f2t=function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}},qHt=function(){function i(w,v,b,E,S,_,M,F){const R=v.append("text").attr("x",b+S/2).attr("y",E+_/2+5).style("font-color",F).style("text-anchor","middle").text(w);g(R,M)}function a(w,v,b,E,S,_,M,F,R){const{taskFontSize:B,taskFontFamily:z}=F,Y=w.split(//gi);for(let nt=0;nt)/).reverse(),w,v=[],b=1.1,E=f.attr("y"),S=parseFloat(f.attr("dy")),_=f.text(null).append("tspan").attr("x",0).attr("y",E).attr("dy",S+"em");for(let M=0;Ma||w==="
    ")&&(v.pop(),_.text(v.join(" ").trim()),w==="
    "?v=[""]:v=[w],_=f.append("tspan").attr("x",0).attr("y",E).attr("dy",b+"em").text(w))})}const ztn=function(i,a,f,g){const w=f%Itn-1,v=i.append("g");a.section=w,v.attr("class",(a.class?a.class+" ":"")+"timeline-node "+("section-"+w));const b=v.append("g"),E=v.append("g"),_=E.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(HHt,a.width).node().getBBox(),M=g.fontSize&&g.fontSize.replace?g.fontSize.replace("px",""):g.fontSize;return a.height=_.height+M*1.1*.5+a.padding,a.height=Math.max(a.height,a.maxHeight),a.width=a.width+2*a.padding,E.attr("transform","translate("+a.width/2+", "+a.padding/2+")"),Htn(b,a,w),a},qtn=function(i,a,f){const g=i.append("g"),v=g.append("text").text(a.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(HHt,a.width).node().getBBox(),b=f.fontSize&&f.fontSize.replace?f.fontSize.replace("px",""):f.fontSize;return g.remove(),v.height+b*1.1*.5+a.padding},Htn=function(i,a,f){i.append("path").attr("id","node-"+a.id).attr("class","node-bkg node-"+a.type).attr("d",`M0 ${a.height-5} v${-a.height+2*5} q0,-5 5,-5 h${a.width-2*5} q5,0 5,5 v${a.height-5} H0 Z`),i.append("line").attr("class","node-line-"+f).attr("x1",0).attr("y1",a.height).attr("x2",a.width).attr("y2",a.height)},H9={drawRect:OX,drawCircle:Ntn,drawSection:Ftn,drawText:$Ht,drawLabel:Ptn,drawTask:Btn,drawBackgroundRect:Rtn,getTextObj:jtn,getNoteRect:f2t,initGraphics:$tn,drawNode:ztn,getVirtualNodeHeight:qtn},Vtn=function(i,a,f,g){var Q,dt;const w=Re(),v=w.leftMargin??50;Kt.debug("timeline",g.db);const b=w.securityLevel;let E;b==="sandbox"&&(E=Tr("#i"+a));const _=Tr(b==="sandbox"?E.nodes()[0].contentDocument.body:"body").select("#"+a);_.append("g");const M=g.db.getTasks(),F=g.db.getCommonDb().getDiagramTitle();Kt.debug("task",M),H9.initGraphics(_);const R=g.db.getSections();Kt.debug("sections",R);let B=0,z=0,Y=0,nt=0,ot=50+v,ft=50;nt=50;let wt=0,mt=!0;R.forEach(function(K){const yt={number:wt,descr:K,section:wt,width:150,padding:20,maxHeight:B},V=H9.getVirtualNodeHeight(_,yt,w);Kt.debug("sectionHeight before draw",V),B=Math.max(B,V+20)});let ct=0,rt=0;Kt.debug("tasks.length",M.length);for(const[K,yt]of M.entries()){const V={number:K,descr:yt,section:yt.section,width:150,padding:20,maxHeight:z},Ot=H9.getVirtualNodeHeight(_,V,w);Kt.debug("taskHeight before draw",Ot),z=Math.max(z,Ot+20),ct=Math.max(ct,yt.events.length);let It=0;for(let jt=0;jt0?R.forEach(K=>{const yt=M.filter(jt=>jt.section===K),V={number:wt,descr:K,section:wt,width:200*Math.max(yt.length,1)-50,padding:20,maxHeight:B};Kt.debug("sectionNode",V);const Ot=_.append("g"),It=H9.drawNode(Ot,V,wt,w);Kt.debug("sectionNode output",It),Ot.attr("transform",`translate(${ot}, ${nt})`),ft+=B+50,yt.length>0&&VHt(_,yt,wt,ot,ft,z,w,ct,rt,B,!1),ot+=200*Math.max(yt.length,1),ft=nt,wt++}):(mt=!1,VHt(_,M,wt,ot,ft,z,w,ct,rt,B,!0));const it=_.node().getBBox();Kt.debug("bounds",it),F&&_.append("text").text(F).attr("x",it.width/2-v).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),Y=mt?B+z+150:z+100,_.append("g").attr("class","lineWrapper").append("line").attr("x1",v).attr("y1",Y).attr("x2",it.width+3*v).attr("y2",Y).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),w8(void 0,_,((Q=w.timeline)==null?void 0:Q.padding)??50,((dt=w.timeline)==null?void 0:dt.useMaxWidth)??!1)},VHt=function(i,a,f,g,w,v,b,E,S,_,M){var F;for(const R of a){const B={descr:R.task,section:f,number:f,width:150,padding:20,maxHeight:v};Kt.debug("taskNode",B);const z=i.append("g").attr("class","taskWrapper"),nt=H9.drawNode(z,B,f,b).height;if(Kt.debug("taskHeight after draw",nt),z.attr("transform",`translate(${g}, ${w})`),v=Math.max(v,nt),R.events){const ot=i.append("g").attr("class","lineWrapper");let ft=v;w+=100,ft=ft+Utn(i,R.events,f,g,w,b),w-=100,ot.append("line").attr("x1",g+190/2).attr("y1",w+v).attr("x2",g+190/2).attr("y2",w+v+(M?v:_)+S+120).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}g=g+200,M&&!((F=b.timeline)!=null&&F.disableMulticolor)&&f++}w=w-10},Utn=function(i,a,f,g,w,v){let b=0;const E=w;w=w+100;for(const S of a){const _={descr:S,section:f,number:f,width:150,padding:20,maxHeight:50};Kt.debug("eventNode",_);const M=i.append("g").attr("class","eventWrapper"),R=H9.drawNode(M,_,f,v).height;b=b+R,M.attr("transform",`translate(${g}, ${w})`),w=w+10+R}return w=E,b},Gtn={setConf:()=>{},draw:Vtn},Ktn=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${Ktn(i)} + .section-root rect, .section-root path, .section-root circle { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .eventWrapper { + filter: brightness(120%); + } +`}},Symbol.toStringTag,{value:"Module"}));var d2t=function(){var i=function(mt,ct,rt,it){for(rt=rt||{},it=mt.length;it--;rt[mt[it]]=ct);return rt},a=[1,4],f=[1,13],g=[1,12],w=[1,15],v=[1,16],b=[1,20],E=[1,19],S=[6,7,8],_=[1,26],M=[1,24],F=[1,25],R=[6,7,11],B=[1,6,13,15,16,19,22],z=[1,33],Y=[1,34],nt=[1,6,7,11,13,15,16,19,22],ot={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(ct,rt,it,gt,Q,dt,K){var yt=dt.length-1;switch(Q){case 6:case 7:return gt;case 8:gt.getLogger().trace("Stop NL ");break;case 9:gt.getLogger().trace("Stop EOF ");break;case 11:gt.getLogger().trace("Stop NL2 ");break;case 12:gt.getLogger().trace("Stop EOF2 ");break;case 15:gt.getLogger().info("Node: ",dt[yt].id),gt.addNode(dt[yt-1].length,dt[yt].id,dt[yt].descr,dt[yt].type);break;case 16:gt.getLogger().trace("Icon: ",dt[yt]),gt.decorateNode({icon:dt[yt]});break;case 17:case 21:gt.decorateNode({class:dt[yt]});break;case 18:gt.getLogger().trace("SPACELIST");break;case 19:gt.getLogger().trace("Node: ",dt[yt].id),gt.addNode(0,dt[yt].id,dt[yt].descr,dt[yt].type);break;case 20:gt.decorateNode({icon:dt[yt]});break;case 25:gt.getLogger().trace("node found ..",dt[yt-2]),this.$={id:dt[yt-1],descr:dt[yt-1],type:gt.getType(dt[yt-2],dt[yt])};break;case 26:this.$={id:dt[yt],descr:dt[yt],type:gt.nodeType.DEFAULT};break;case 27:gt.getLogger().trace("node found ..",dt[yt-3]),this.$={id:dt[yt-3],descr:dt[yt-1],type:gt.getType(dt[yt-2],dt[yt])};break}},table:[{3:1,4:2,5:3,6:[1,5],8:a},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:a},{6:f,7:[1,10],9:9,12:11,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},i(S,[2,3]),{1:[2,2]},i(S,[2,4]),i(S,[2,5]),{1:[2,6],6:f,12:21,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},{6:f,9:22,12:11,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},{6:_,7:M,10:23,11:F},i(R,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:b,22:E}),i(R,[2,18]),i(R,[2,19]),i(R,[2,20]),i(R,[2,21]),i(R,[2,23]),i(R,[2,24]),i(R,[2,26],{19:[1,30]}),{20:[1,31]},{6:_,7:M,10:32,11:F},{1:[2,7],6:f,12:21,13:g,14:14,15:w,16:v,17:17,18:18,19:b,22:E},i(B,[2,14],{7:z,11:Y}),i(nt,[2,8]),i(nt,[2,9]),i(nt,[2,10]),i(R,[2,15]),i(R,[2,16]),i(R,[2,17]),{20:[1,35]},{21:[1,36]},i(B,[2,13],{7:z,11:Y}),i(nt,[2,11]),i(nt,[2,12]),{21:[1,37]},i(R,[2,25]),i(R,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(ct,rt){if(rt.recoverable)this.trace(ct);else{var it=new Error(ct);throw it.hash=rt,it}},parse:function(ct){var rt=this,it=[0],gt=[],Q=[null],dt=[],K=this.table,yt="",V=0,Ot=0,It=2,jt=1,xt=dt.slice.call(arguments,1),Ft=Object.create(this.lexer),Ct={yy:{}};for(var kt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,kt)&&(Ct.yy[kt]=this.yy[kt]);Ft.setInput(ct,Ct.yy),Ct.yy.lexer=Ft,Ct.yy.parser=this,typeof Ft.yylloc>"u"&&(Ft.yylloc={});var Gt=Ft.yylloc;dt.push(Gt);var Fe=Ft.options&&Ft.options.ranges;typeof Ct.yy.parseError=="function"?this.parseError=Ct.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Mt(){var Mn;return Mn=gt.pop()||Ft.lex()||jt,typeof Mn!="number"&&(Mn instanceof Array&&(gt=Mn,Mn=gt.pop()),Mn=rt.symbols_[Mn]||Mn),Mn}for(var pn,Ae,ye,tn,sn={},be,Ne,Xt,_e;;){if(Ae=it[it.length-1],this.defaultActions[Ae]?ye=this.defaultActions[Ae]:((pn===null||typeof pn>"u")&&(pn=Mt()),ye=K[Ae]&&K[Ae][pn]),typeof ye>"u"||!ye.length||!ye[0]){var xe="";_e=[];for(be in K[Ae])this.terminals_[be]&&be>It&&_e.push("'"+this.terminals_[be]+"'");Ft.showPosition?xe="Parse error on line "+(V+1)+`: +`+Ft.showPosition()+` +Expecting `+_e.join(", ")+", got '"+(this.terminals_[pn]||pn)+"'":xe="Parse error on line "+(V+1)+": Unexpected "+(pn==jt?"end of input":"'"+(this.terminals_[pn]||pn)+"'"),this.parseError(xe,{text:Ft.match,token:this.terminals_[pn]||pn,line:Ft.yylineno,loc:Gt,expected:_e})}if(ye[0]instanceof Array&&ye.length>1)throw new Error("Parse Error: multiple actions possible at state: "+Ae+", token: "+pn);switch(ye[0]){case 1:it.push(pn),Q.push(Ft.yytext),dt.push(Ft.yylloc),it.push(ye[1]),pn=null,Ot=Ft.yyleng,yt=Ft.yytext,V=Ft.yylineno,Gt=Ft.yylloc;break;case 2:if(Ne=this.productions_[ye[1]][1],sn.$=Q[Q.length-Ne],sn._$={first_line:dt[dt.length-(Ne||1)].first_line,last_line:dt[dt.length-1].last_line,first_column:dt[dt.length-(Ne||1)].first_column,last_column:dt[dt.length-1].last_column},Fe&&(sn._$.range=[dt[dt.length-(Ne||1)].range[0],dt[dt.length-1].range[1]]),tn=this.performAction.apply(sn,[yt,Ot,V,Ct.yy,ye[1],Q,dt].concat(xt)),typeof tn<"u")return tn;Ne&&(it=it.slice(0,-1*Ne*2),Q=Q.slice(0,-1*Ne),dt=dt.slice(0,-1*Ne)),it.push(this.productions_[ye[1]][0]),Q.push(sn.$),dt.push(sn._$),Xt=K[it[it.length-2]][it[it.length-1]],it.push(Xt);break;case 3:return!0}}return!0}},ft=function(){var mt={EOF:1,parseError:function(rt,it){if(this.yy.parser)this.yy.parser.parseError(rt,it);else throw new Error(rt)},setInput:function(ct,rt){return this.yy=rt||this.yy||{},this._input=ct,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var ct=this._input[0];this.yytext+=ct,this.yyleng++,this.offset++,this.match+=ct,this.matched+=ct;var rt=ct.match(/(?:\r\n?|\n).*/g);return rt?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),ct},unput:function(ct){var rt=ct.length,it=ct.split(/(?:\r\n?|\n)/g);this._input=ct+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-rt),this.offset-=rt;var gt=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),it.length-1&&(this.yylineno-=it.length-1);var Q=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:it?(it.length===gt.length?this.yylloc.first_column:0)+gt[gt.length-it.length].length-it[0].length:this.yylloc.first_column-rt},this.options.ranges&&(this.yylloc.range=[Q[0],Q[0]+this.yyleng-rt]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(ct){this.unput(this.match.slice(ct))},pastInput:function(){var ct=this.matched.substr(0,this.matched.length-this.match.length);return(ct.length>20?"...":"")+ct.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var ct=this.match;return ct.length<20&&(ct+=this._input.substr(0,20-ct.length)),(ct.substr(0,20)+(ct.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var ct=this.pastInput(),rt=new Array(ct.length+1).join("-");return ct+this.upcomingInput()+` +`+rt+"^"},test_match:function(ct,rt){var it,gt,Q;if(this.options.backtrack_lexer&&(Q={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(Q.yylloc.range=this.yylloc.range.slice(0))),gt=ct[0].match(/(?:\r\n?|\n).*/g),gt&&(this.yylineno+=gt.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:gt?gt[gt.length-1].length-gt[gt.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+ct[0].length},this.yytext+=ct[0],this.match+=ct[0],this.matches=ct,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(ct[0].length),this.matched+=ct[0],it=this.performAction.call(this,this.yy,this,rt,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),it)return it;if(this._backtrack){for(var dt in Q)this[dt]=Q[dt];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var ct,rt,it,gt;this._more||(this.yytext="",this.match="");for(var Q=this._currentRules(),dt=0;dtrt[0].length)){if(rt=it,gt=dt,this.options.backtrack_lexer){if(ct=this.test_match(it,Q[dt]),ct!==!1)return ct;if(this._backtrack){rt=!1;continue}else return!1}else if(!this.options.flex)break}return rt?(ct=this.test_match(rt,Q[gt]),ct!==!1?ct:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var rt=this.next();return rt||this.lex()},begin:function(rt){this.conditionStack.push(rt)},popState:function(){var rt=this.conditionStack.length-1;return rt>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(rt){return rt=this.conditionStack.length-1-Math.abs(rt||0),rt>=0?this.conditionStack[rt]:"INITIAL"},pushState:function(rt){this.begin(rt)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(rt,it,gt,Q){switch(gt){case 0:return rt.getLogger().trace("Found comment",it.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:this.popState();break;case 5:rt.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return rt.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:rt.getLogger().trace("end icon"),this.popState();break;case 10:return rt.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return rt.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return rt.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return rt.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:return this.begin("NODE"),19;case 15:return this.begin("NODE"),19;case 16:return this.begin("NODE"),19;case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 23:this.popState();break;case 24:rt.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return rt.getLogger().trace("description:",it.yytext),"NODE_DESCR";case 26:this.popState();break;case 27:return this.popState(),rt.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),rt.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),rt.getLogger().trace("node end ...",it.yytext),"NODE_DEND";case 30:return this.popState(),rt.getLogger().trace("node end (("),"NODE_DEND";case 31:return this.popState(),rt.getLogger().trace("node end (-"),"NODE_DEND";case 32:return this.popState(),rt.getLogger().trace("node end (-"),"NODE_DEND";case 33:return this.popState(),rt.getLogger().trace("node end (("),"NODE_DEND";case 34:return this.popState(),rt.getLogger().trace("node end (("),"NODE_DEND";case 35:return rt.getLogger().trace("Long description:",it.yytext),20;case 36:return rt.getLogger().trace("Long description:",it.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};return mt}();ot.lexer=ft;function wt(){this.yy={}}return wt.prototype=ot,ot.Parser=wt,new wt}();d2t.parser=d2t;const Ytn=d2t;let ry=[],UHt=0,g2t={};const Xtn=()=>{ry=[],UHt=0,g2t={}},Qtn=function(i){for(let a=ry.length-1;a>=0;a--)if(ry[a].levelry.length>0?ry[0]:null,Ztn=(i,a,f,g)=>{var S,_;Kt.info("addNode",i,a,f,g);const w=Re();let v=((S=w.mindmap)==null?void 0:S.padding)??Bl.mindmap.padding;switch(g){case V1.ROUNDED_RECT:case V1.RECT:case V1.HEXAGON:v*=2}const b={id:UHt++,nodeId:Ef(a,w),level:i,descr:Ef(f,w),type:g,children:[],width:((_=w.mindmap)==null?void 0:_.maxNodeWidth)??Bl.mindmap.maxNodeWidth,padding:v},E=Qtn(i);if(E)E.children.push(b),ry.push(b);else if(ry.length===0)ry.push(b);else throw new Error('There can be only one root. No parent could be found for ("'+b.descr+'")')},V1={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},ten={clear:Xtn,addNode:Ztn,getMindmap:Jtn,nodeType:V1,getType:(i,a)=>{switch(Kt.debug("In get type",i,a),i){case"[":return V1.RECT;case"(":return a===")"?V1.ROUNDED_RECT:V1.CLOUD;case"((":return V1.CIRCLE;case")":return V1.CLOUD;case"))":return V1.BANG;case"{{":return V1.HEXAGON;default:return V1.DEFAULT}},setElementForId:(i,a)=>{g2t[i]=a},decorateNode:i=>{if(!i)return;const a=Re(),f=ry[ry.length-1];i.icon&&(f.icon=Ef(i.icon,a)),i.class&&(f.class=Ef(i.class,a))},type2Str:i=>{switch(i){case V1.DEFAULT:return"no-border";case V1.RECT:return"rect";case V1.ROUNDED_RECT:return"rounded-rect";case V1.CIRCLE:return"circle";case V1.CLOUD:return"cloud";case V1.BANG:return"bang";case V1.HEXAGON:return"hexgon";default:return"no-border"}},getLogger:()=>Kt,getElementById:i=>g2t[i]};var GHt={exports:{}};(function(i,a){(function(f,g){i.exports=g()})(Z0,function(){function f(y){"@babel/helpers - typeof";return f=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p},f(y)}function g(y,p){if(!(y instanceof p))throw new TypeError("Cannot call a class as a function")}function w(y,p){for(var x=0;xy.length)&&(p=y.length);for(var x=0,C=new Array(p);x"u"?null:window,z=B?B.navigator:null;B&&B.document;var Y=f(""),nt=f({}),ot=f(function(){}),ft=typeof HTMLElement>"u"?"undefined":f(HTMLElement),wt=function(p){return p&&p.instanceString&&ct(p.instanceString)?p.instanceString():null},mt=function(p){return p!=null&&f(p)==Y},ct=function(p){return p!=null&&f(p)===ot},rt=function(p){return!yt(p)&&(Array.isArray?Array.isArray(p):p!=null&&p instanceof Array)},it=function(p){return p!=null&&f(p)===nt&&!rt(p)&&p.constructor===Object},gt=function(p){return p!=null&&f(p)===nt},Q=function(p){return p!=null&&f(p)===f(1)&&!isNaN(p)},dt=function(p){return Q(p)&&Math.floor(p)===p},K=function(p){if(ft!=="undefined")return p!=null&&p instanceof HTMLElement},yt=function(p){return V(p)||Ot(p)},V=function(p){return wt(p)==="collection"&&p._private.single},Ot=function(p){return wt(p)==="collection"&&!p._private.single},It=function(p){return wt(p)==="core"},jt=function(p){return wt(p)==="stylesheet"},xt=function(p){return wt(p)==="event"},Ft=function(p){return p==null?!0:!!(p===""||p.match(/^\s+$/))},Ct=function(p){return typeof HTMLElement>"u"?!1:p instanceof HTMLElement},kt=function(p){return it(p)&&Q(p.x1)&&Q(p.x2)&&Q(p.y1)&&Q(p.y2)},Gt=function(p){return gt(p)&&ct(p.then)},Fe=function(){return z&&z.userAgent.match(/msie|trident|edge/i)},Mt=function(p,x){x||(x=function(){if(arguments.length===1)return arguments[0];if(arguments.length===0)return"undefined";for(var O=[],N=0;Nx?1:0},Br=function(p,x){return-1*ce(p,x)},we=Object.assign!=null?Object.assign.bind(Object):function(y){for(var p=arguments,x=1;x1&&(St-=1),St<1/6?pt+(_t-pt)*6*St:St<1/2?_t:St<2/3?pt+(_t-pt)*(2/3-St)*6:pt}var Z=new RegExp("^"+Xt+"$").exec(p);if(Z){if(C=parseInt(Z[1]),C<0?C=(360- -1*C%360)%360:C>360&&(C=C%360),C/=360,L=parseFloat(Z[2]),L<0||L>100||(L=L/100,O=parseFloat(Z[3]),O<0||O>100)||(O=O/100,N=Z[4],N!==void 0&&(N=parseFloat(N),N<0||N>1)))return;if(L===0)j=H=q=Math.round(O*255);else{var st=O<.5?O*(1+L):O+L-O*L,bt=2*O-st;j=Math.round(255*W(bt,st,C+1/3)),H=Math.round(255*W(bt,st,C)),q=Math.round(255*W(bt,st,C-1/3))}x=[j,H,q,N]}return x},ga=function(p){var x,C=new RegExp("^"+be+"$").exec(p);if(C){x=[];for(var L=[],O=1;O<=3;O++){var N=C[O];if(N[N.length-1]==="%"&&(L[O]=!0),N=parseFloat(N),L[O]&&(N=N/100*255),N<0||N>255)return;x.push(Math.floor(N))}var j=L[1]||L[2]||L[3],H=L[1]&&L[2]&&L[3];if(j&&!H)return;var q=C[4];if(q!==void 0){if(q=parseFloat(q),q<0||q>1)return;x.push(q)}}return x},Ss=function(p){return br[p.toLowerCase()]},za=function(p){return(rt(p)?p:null)||Ss(p)||Fi(p)||ga(p)||mi(p)},br={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},An=function(p){for(var x=p.map,C=p.keys,L=C.length,O=0;O=p||Ut<0||Z&&de>=O}function Et(){var ee=Ha();if(St(ee))return Nt(ee);j=setTimeout(Et,_t(ee))}function Nt(ee){return j=void 0,st&&C?bt(ee):(C=L=void 0,N)}function Pt(){j!==void 0&&clearTimeout(j),q=0,C=H=L=j=void 0}function qt(){return j===void 0?N:Nt(Ha())}function re(){var ee=Ha(),Ut=St(ee);if(C=arguments,L=this,H=ee,Ut){if(j===void 0)return pt(H);if(Z)return clearTimeout(j),j=setTimeout(Et,p),bt(H)}return j===void 0&&(j=setTimeout(Et,p)),N}return re.cancel=Pt,re.flush=qt,re}var pu=Ci,Le=B?B.performance:null,iy=Le&&Le.now?function(){return Le.now()}:function(){return Date.now()},$e=function(){if(B){if(B.requestAnimationFrame)return function(y){B.requestAnimationFrame(y)};if(B.mozRequestAnimationFrame)return function(y){B.mozRequestAnimationFrame(y)};if(B.webkitRequestAnimationFrame)return function(y){B.webkitRequestAnimationFrame(y)};if(B.msRequestAnimationFrame)return function(y){B.msRequestAnimationFrame(y)}}return function(y){y&&setTimeout(function(){y(iy())},1e3/60)}}(),g1=function(p){return $e(p)},ip=iy,sy=9261,D8=65599,g4=5381,th=function(p){for(var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:sy,C=x,L;L=p.next(),!L.done;)C=C*D8+L.value|0;return C},fg=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:sy;return x*D8+p|0},O2=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:g4;return(x<<5)+x+p|0},M8=function(p,x){return p*2097152+x},N2=function(p){return p[0]*2097152+p[1]},p4=function(p,x){return[fg(p[0],x[0]),O2(p[1],x[1])]},U1=function(p,x){var C={value:0,done:!1},L=0,O=p.length,N={next:function(){return L=0&&!(p[L]===x&&(p.splice(L,1),C));L--);},G9=function(p){p.splice(0,p.length)},OB=function(p,x){for(var C=0;C"u"?"undefined":f(Set))!==VX?Set:UX,K9=function(p,x){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(p===void 0||x===void 0||!It(p)){$l("An element must have a core reference and parameters set");return}var L=x.group;if(L==null&&(x.data&&x.data.source!=null&&x.data.target!=null?L="edges":L="nodes"),L!=="nodes"&&L!=="edges"){$l("An element must be of type `nodes` or `edges`; you specified `"+L+"`");return}this.length=1,this[0]=this;var O=this._private={cy:p,single:!0,data:x.data||{},position:x.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:L,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!x.selected,selectable:x.selectable===void 0?!0:!!x.selectable,locked:!!x.locked,grabbed:!1,grabbable:x.grabbable===void 0?!0:!!x.grabbable,pannable:x.pannable===void 0?L==="edges":!!x.pannable,active:!1,classes:new Wx,animation:{current:[],queue:[]},rscratch:{},scratch:x.scratch||{},edges:[],children:[],parent:x.parent&&x.parent.isNode()?x.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(O.position.x==null&&(O.position.x=0),O.position.y==null&&(O.position.y=0),x.renderedPosition){var N=x.renderedPosition,j=p.pan(),H=p.zoom();O.position={x:(N.x-j.x)/H,y:(N.y-j.y)/H}}var q=[];rt(x.classes)?q=x.classes:mt(x.classes)&&(q=x.classes.split(/\s+/));for(var W=0,Z=q.length;WNt?1:0},W=function(Et,Nt,Pt,qt,re){var ee;if(Pt==null&&(Pt=0),re==null&&(re=C),Pt<0)throw new Error("lo must be non-negative");for(qt==null&&(qt=Et.length);PtEe;0<=Ee?Yt++:Yt--)de.push(Yt);return de}).apply(this).reverse(),Ut=[],qt=0,re=ee.length;qtTe;0<=Te?++de:--de)ie.push(N(Et,Pt));return ie},_t=function(Et,Nt,Pt,qt){var re,ee,Ut;for(qt==null&&(qt=C),re=Et[Pt];Pt>Nt;){if(Ut=Pt-1>>1,ee=Et[Ut],qt(re,ee)<0){Et[Pt]=ee,Pt=Ut;continue}break}return Et[Pt]=re},St=function(Et,Nt,Pt){var qt,re,ee,Ut,de;for(Pt==null&&(Pt=C),re=Et.length,de=Nt,ee=Et[Nt],qt=2*Nt+1;qt0;){var ee=Nt.pop(),Ut=St(ee),de=ee.id();if(st[de]=Ut,Ut!==1/0)for(var Yt=ee.neighborhood().intersect(pt),Ee=0;Ee0)for(Tn.unshift(qe);Z[lr];){var Sn=Z[lr];Tn.unshift(Sn.edge),Tn.unshift(Sn.node),Xn=Sn.node,lr=Xn.id()}return j.spawn(Tn)}}}},YX={kruskal:function(p){p=p||function(Pt){return 1};for(var x=this.byGroup(),C=x.nodes,L=x.edges,O=C.length,N=new Array(O),j=C,H=function(qt){for(var re=0;re0;){if(re(),Ut++,qt===W){for(var de=[],Yt=O,Ee=W,Te=Et[Ee];de.unshift(Yt),Te!=null&&de.unshift(Te),Yt=St[Ee],Yt!=null;)Ee=Yt.id(),Te=Et[Ee];return{found:!0,distance:Z[qt],path:this.spawn(de),steps:Ut}}bt[qt]=!0;for(var ie=Pt._private.edges,ze=0;zeTe&&(pt[Ee]=Te,Nt[Ee]=Yt,Pt[Ee]=re),!O){var ie=Yt*W+de;!O&&pt[ie]>Te&&(pt[ie]=Te,Nt[ie]=de,Pt[ie]=re)}}}for(var ze=0;ze1&&arguments[1]!==void 0?arguments[1]:N,eo=Pt(as),Ta=[],pa=eo;;){if(pa==null)return x.spawn();var mo=Nt(pa),Kn=mo.edge,G=mo.pred;if(Ta.unshift(pa[0]),pa.same(Es)&&Ta.length>0)break;Kn!=null&&Ta.unshift(Kn),pa=G}return H.spawn(Ta)},ee=0;ee=0;W--){var Z=q[W],st=Z[1],bt=Z[2];(x[st]===j&&x[bt]===H||x[st]===H&&x[bt]===j)&&q.splice(W,1)}for(var pt=0;ptL;){var O=Math.floor(Math.random()*x.length);x=rQ(O,p,x),C--}return x},iQ={kargerStein:function(){var p=this,x=this.byGroup(),C=x.nodes,L=x.edges;L.unmergeBy(function(Tn){return Tn.isLoop()});var O=C.length,N=L.length,j=Math.ceil(Math.pow(Math.log(O)/Math.LN2,2)),H=Math.floor(O/nQ);if(O<2){$l("At least 2 nodes are required for Karger-Stein algorithm");return}for(var q=[],W=0;W1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=1/0,O=x;O1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=-1/0,O=x;O1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=0,O=0,N=x;N1&&arguments[1]!==void 0?arguments[1]:0,C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:p.length,L=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,O=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,N=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;L?p=p.slice(x,C):(C0&&p.splice(0,x));for(var j=0,H=p.length-1;H>=0;H--){var q=p[H];N?isFinite(q)||(p[H]=-1/0,j++):p.splice(H,1)}O&&p.sort(function(st,bt){return st-bt});var W=p.length,Z=Math.floor(W/2);return W%2!==0?p[Z+1+j]:(p[Z-1+j]+p[Z+j])/2},lQ=function(p){return Math.PI*p/180},Y9=function(p,x){return Math.atan2(x,p)-Math.PI/2},jD=Math.log2||function(y){return Math.log(y)/Math.log(2)},FB=function(p){return p>0?1:p<0?-1:0},w4=function(p,x){return Math.sqrt(m4(p,x))},m4=function(p,x){var C=x.x-p.x,L=x.y-p.y;return C*C+L*L},hQ=function(p){for(var x=p.length,C=0,L=0;L=p.x1&&p.y2>=p.y1)return{x1:p.x1,y1:p.y1,x2:p.x2,y2:p.y2,w:p.x2-p.x1,h:p.y2-p.y1};if(p.w!=null&&p.h!=null&&p.w>=0&&p.h>=0)return{x1:p.x1,y1:p.y1,x2:p.x1+p.w,y2:p.y1+p.h,w:p.w,h:p.h}}},dQ=function(p){return{x1:p.x1,x2:p.x2,w:p.w,y1:p.y1,y2:p.y2,h:p.h}},gQ=function(p){p.x1=1/0,p.y1=1/0,p.x2=-1/0,p.y2=-1/0,p.w=0,p.h=0},pQ=function(p,x,C){return{x1:p.x1+x,x2:p.x2+x,y1:p.y1+C,y2:p.y2+C,w:p.w,h:p.h}},BB=function(p,x){p.x1=Math.min(p.x1,x.x1),p.x2=Math.max(p.x2,x.x2),p.w=p.x2-p.x1,p.y1=Math.min(p.y1,x.y1),p.y2=Math.max(p.y2,x.y2),p.h=p.y2-p.y1},bQ=function(p,x,C){p.x1=Math.min(p.x1,x),p.x2=Math.max(p.x2,x),p.w=p.x2-p.x1,p.y1=Math.min(p.y1,C),p.y2=Math.max(p.y2,C),p.h=p.y2-p.y1},X9=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return p.x1-=x,p.x2+=x,p.y1-=x,p.y2+=x,p.w=p.x2-p.x1,p.h=p.y2-p.y1,p},Q9=function(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0],C,L,O,N;if(x.length===1)C=L=O=N=x[0];else if(x.length===2)C=O=x[0],N=L=x[1];else if(x.length===4){var j=E(x,4);C=j[0],L=j[1],O=j[2],N=j[3]}return p.x1-=N,p.x2+=L,p.y1-=C,p.y2+=O,p.w=p.x2-p.x1,p.h=p.y2-p.y1,p},RB=function(p,x){p.x1=x.x1,p.y1=x.y1,p.x2=x.x2,p.y2=x.y2,p.w=p.x2-p.x1,p.h=p.y2-p.y1},$D=function(p,x){return!(p.x1>x.x2||x.x1>p.x2||p.x2x.y2||x.y1>p.y2)},Qx=function(p,x,C){return p.x1<=x&&x<=p.x2&&p.y1<=C&&C<=p.y2},wQ=function(p,x){return Qx(p,x.x,x.y)},jB=function(p,x){return Qx(p,x.x1,x.y1)&&Qx(p,x.x2,x.y2)},$B=function(p,x,C,L,O,N,j){var H=R8(O,N),q=O/2,W=N/2,Z;{var st=C-q+H-j,bt=L-W-j,pt=C+q-H+j,_t=bt;if(Z=uy(p,x,C,L,st,bt,pt,_t,!1),Z.length>0)return Z}{var St=C+q+j,Et=L-W+H-j,Nt=St,Pt=L+W-H+j;if(Z=uy(p,x,C,L,St,Et,Nt,Pt,!1),Z.length>0)return Z}{var qt=C-q+H-j,re=L+W+j,ee=C+q-H+j,Ut=re;if(Z=uy(p,x,C,L,qt,re,ee,Ut,!1),Z.length>0)return Z}{var de=C-q-j,Yt=L-W+H-j,Ee=de,Te=L+W-H+j;if(Z=uy(p,x,C,L,de,Yt,Ee,Te,!1),Z.length>0)return Z}var ie;{var ze=C-q+H,me=L-W+H;if(ie=F8(p,x,C,L,ze,me,H+j),ie.length>0&&ie[0]<=ze&&ie[1]<=me)return[ie[0],ie[1]]}{var yn=C+q-H,nn=L-W+H;if(ie=F8(p,x,C,L,yn,nn,H+j),ie.length>0&&ie[0]>=yn&&ie[1]<=nn)return[ie[0],ie[1]]}{var qe=C+q-H,Tn=L+W-H;if(ie=F8(p,x,C,L,qe,Tn,H+j),ie.length>0&&ie[0]>=qe&&ie[1]>=Tn)return[ie[0],ie[1]]}{var Xn=C-q+H,lr=L+W-H;if(ie=F8(p,x,C,L,Xn,lr,H+j),ie.length>0&&ie[0]<=Xn&&ie[1]>=lr)return[ie[0],ie[1]]}return[]},mQ=function(p,x,C,L,O,N,j){var H=j,q=Math.min(C,O),W=Math.max(C,O),Z=Math.min(L,N),st=Math.max(L,N);return q-H<=p&&p<=W+H&&Z-H<=x&&x<=st+H},vQ=function(p,x,C,L,O,N,j,H,q){var W={x1:Math.min(C,j,O)-q,x2:Math.max(C,j,O)+q,y1:Math.min(L,H,N)-q,y2:Math.max(L,H,N)+q};return!(pW.x2||xW.y2)},yQ=function(p,x,C,L){C-=L;var O=x*x-4*p*C;if(O<0)return[];var N=Math.sqrt(O),j=2*p,H=(-x+N)/j,q=(-x-N)/j;return[H,q]},xQ=function(p,x,C,L,O){var N=1e-5;p===0&&(p=N),x/=p,C/=p,L/=p;var j,H,q,W,Z,st,bt,pt;if(H=(3*C-x*x)/9,q=-(27*L)+x*(9*C-2*(x*x)),q/=54,j=H*H*H+q*q,O[1]=0,bt=x/3,j>0){Z=q+Math.sqrt(j),Z=Z<0?-Math.pow(-Z,1/3):Math.pow(Z,1/3),st=q-Math.sqrt(j),st=st<0?-Math.pow(-st,1/3):Math.pow(st,1/3),O[0]=-bt+Z+st,bt+=(Z+st)/2,O[4]=O[2]=-bt,bt=Math.sqrt(3)*(-st+Z)/2,O[3]=bt,O[5]=-bt;return}if(O[5]=O[3]=0,j===0){pt=q<0?-Math.pow(-q,1/3):Math.pow(q,1/3),O[0]=-bt+2*pt,O[4]=O[2]=-(pt+bt);return}H=-H,W=H*H*H,W=Math.acos(q/Math.sqrt(W)),pt=2*Math.sqrt(H),O[0]=-bt+pt*Math.cos(W/3),O[2]=-bt+pt*Math.cos((W+2*Math.PI)/3),O[4]=-bt+pt*Math.cos((W+4*Math.PI)/3)},kQ=function(p,x,C,L,O,N,j,H){var q=1*C*C-4*C*O+2*C*j+4*O*O-4*O*j+j*j+L*L-4*L*N+2*L*H+4*N*N-4*N*H+H*H,W=1*9*C*O-3*C*C-3*C*j-6*O*O+3*O*j+9*L*N-3*L*L-3*L*H-6*N*N+3*N*H,Z=1*3*C*C-6*C*O+C*j-C*p+2*O*O+2*O*p-j*p+3*L*L-6*L*N+L*H-L*x+2*N*N+2*N*x-H*x,st=1*C*O-C*C+C*p-O*p+L*N-L*L+L*x-N*x,bt=[];xQ(q,W,Z,st,bt);for(var pt=1e-7,_t=[],St=0;St<6;St+=2)Math.abs(bt[St+1])=0&&bt[St]<=1&&_t.push(bt[St]);_t.push(1),_t.push(0);for(var Et=-1,Nt,Pt,qt,re=0;re<_t.length;re++)Nt=Math.pow(1-_t[re],2)*C+2*(1-_t[re])*_t[re]*O+_t[re]*_t[re]*j,Pt=Math.pow(1-_t[re],2)*L+2*(1-_t[re])*_t[re]*N+_t[re]*_t[re]*H,qt=Math.pow(Nt-p,2)+Math.pow(Pt-x,2),Et>=0?qtq?(p-O)*(p-O)+(x-N)*(x-N):W-st},y0=function(p,x,C){for(var L,O,N,j,H,q=0,W=0;W=p&&p>=N||L<=p&&p<=N)H=(p-L)/(N-L)*(j-O)+O,H>x&&q++;else continue;return q%2!==0},sm=function(p,x,C,L,O,N,j,H,q){var W=new Array(C.length),Z;H[0]!=null?(Z=Math.atan(H[1]/H[0]),H[0]<0?Z=Z+Math.PI/2:Z=-Z-Math.PI/2):Z=H;for(var st=Math.cos(-Z),bt=Math.sin(-Z),pt=0;pt0){var St=Z9(W,-q);_t=J9(St)}else _t=W;return y0(p,x,_t)},TQ=function(p,x,C,L,O,N,j){for(var H=new Array(C.length),q=N/2,W=j/2,Z=HD(N,j),st=Z*Z,bt=0;bt=0&&St<=1&&Nt.push(St),Et>=0&&Et<=1&&Nt.push(Et),Nt.length===0)return[];var Pt=Nt[0]*H[0]+p,qt=Nt[0]*H[1]+x;if(Nt.length>1){if(Nt[0]==Nt[1])return[Pt,qt];var re=Nt[1]*H[0]+p,ee=Nt[1]*H[1]+x;return[Pt,qt,re,ee]}else return[Pt,qt]},zD=function(p,x,C){return x<=p&&p<=C||C<=p&&p<=x?p:p<=x&&x<=C||C<=x&&x<=p?x:C},uy=function(p,x,C,L,O,N,j,H,q){var W=p-O,Z=C-p,st=j-O,bt=x-N,pt=L-x,_t=H-N,St=st*bt-_t*W,Et=Z*bt-pt*W,Nt=_t*Z-st*pt;if(Nt!==0){var Pt=St/Nt,qt=Et/Nt,re=.001,ee=0-re,Ut=1+re;return ee<=Pt&&Pt<=Ut&&ee<=qt&&qt<=Ut?[p+Pt*Z,x+Pt*pt]:q?[p+Pt*Z,x+Pt*pt]:[]}else return St===0||Et===0?zD(p,C,j)===j?[j,H]:zD(p,C,O)===O?[O,N]:zD(O,j,C)===C?[C,L]:[]:[]},B8=function(p,x,C,L,O,N,j,H){var q=[],W,Z=new Array(C.length),st=!0;N==null&&(st=!1);var bt;if(st){for(var pt=0;pt0){var _t=Z9(Z,-H);bt=J9(_t)}else bt=Z}else bt=C;for(var St,Et,Nt,Pt,qt=0;qt2){for(var nn=[q[0],q[1]],qe=Math.pow(nn[0]-p,2)+Math.pow(nn[1]-x,2),Tn=1;TnW&&(W=qt)},get:function(Pt){return q[Pt]}},st=0;st0?nn=yn.edgesTo(me)[0]:nn=me.edgesTo(yn)[0];var qe=L(nn);me=me.id(),de[me]>de[ie]+qe&&(de[me]=de[ie]+qe,Yt.nodes.indexOf(me)<0?Yt.push(me):Yt.updateItem(me),Ut[me]=0,ee[me]=[]),de[me]==de[ie]+qe&&(Ut[me]=Ut[me]+Ut[ie],ee[me].push(ie))}else for(var Tn=0;Tn0;){for(var or=re.pop(),pr=0;pr0&&j.push(C[H]);j.length!==0&&O.push(L.collection(j))}return O},jQ=function(p,x){for(var C=0;C5&&arguments[5]!==void 0?arguments[5]:qQ,j=L,H,q,W=0;W=2?j8(p,x,C,0,XB,HQ):j8(p,x,C,0,YB)},squaredEuclidean:function(p,x,C){return j8(p,x,C,0,XB)},manhattan:function(p,x,C){return j8(p,x,C,0,YB)},max:function(p,x,C){return j8(p,x,C,-1/0,VQ)}};t6["squared-euclidean"]=t6.squaredEuclidean,t6.squaredeuclidean=t6.squaredEuclidean;function eC(y,p,x,C,L,O){var N;return ct(y)?N=y:N=t6[y]||t6.euclidean,p===0&&ct(y)?N(L,O):N(p,x,C,L,O)}var UQ=p1({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),GD=function(p){return UQ(p)},nC=function(p,x,C,L,O){var N=O!=="kMedoids",j=N?function(Z){return C[Z]}:function(Z){return L[Z](C)},H=function(st){return L[st](x)},q=C,W=x;return eC(p,L.length,j,H,q,W)},KD=function(p,x,C){for(var L=C.length,O=new Array(L),N=new Array(L),j=new Array(x),H=null,q=0;qC)return!1}return!0},WQ=function(p,x,C){for(var L=0;Lj&&(j=x[q][W],H=W);O[H].push(p[q])}for(var Z=0;Z=O.threshold||O.mode==="dendrogram"&&p.length===1)return!1;var pt=x[N],_t=x[L[N]],St;O.mode==="dendrogram"?St={left:pt,right:_t,key:pt.key}:St={value:pt.value.concat(_t.value),key:pt.key},p[pt.index]=St,p.splice(_t.index,1),x[pt.key]=St;for(var Et=0;EtC[_t.key][Nt.key]&&(H=C[_t.key][Nt.key])):O.linkage==="max"?(H=C[pt.key][Nt.key],C[pt.key][Nt.key]0&&L.push(O);return L},iR=function(p,x,C){for(var L=[],O=0;Oj&&(N=q,j=x[O*p+q])}N>0&&L.push(N)}for(var W=0;Wq&&(H=W,q=Z)}C[O]=N[H]}return L=iR(p,x,C),L},sR=function(p){for(var x=this.cy(),C=this.nodes(),L=cJ(p),O={},N=0;N=Te?(ie=Te,Te=me,ze=yn):me>ie&&(ie=me);for(var nn=0;nn0?1:0;Ut[Yt%L.minIterations*j+or]=pr,Sn+=pr}if(Sn>0&&(Yt>=L.minIterations-1||Yt==L.maxIterations-1)){for(var kr=0,wr=0;wr1||ee>1)&&(j=!0),Z[Pt]=[],Nt.outgoers().forEach(function(de){de.isEdge()&&Z[Pt].push(de.id())})}else st[Pt]=[void 0,Nt.target().id()]}):N.forEach(function(Nt){var Pt=Nt.id();if(Nt.isNode()){var qt=Nt.degree(!0);qt%2&&(H?q?j=!0:q=Pt:H=Pt),Z[Pt]=[],Nt.connectedEdges().forEach(function(re){return Z[Pt].push(re.id())})}else st[Pt]=[Nt.source().id(),Nt.target().id()]});var bt={found:!1,trail:void 0};if(j)return bt;if(q&&H)if(O){if(W&&q!=W)return bt;W=q}else{if(W&&q!=W&&H!=W)return bt;W||(W=q)}else W||(W=N[0].id());var pt=function(Pt){for(var qt=Pt,re=[Pt],ee,Ut,de;Z[qt].length;)ee=Z[qt].shift(),Ut=st[ee][0],de=st[ee][1],qt!=de?(Z[de]=Z[de].filter(function(Yt){return Yt!=ee}),qt=de):!O&&qt!=Ut&&(Z[Ut]=Z[Ut].filter(function(Yt){return Yt!=ee}),qt=Ut),re.unshift(ee),re.unshift(qt);return re},_t=[],St=[];for(St=pt(W);St.length!=1;)Z[St[0]].length==0?(_t.unshift(N.getElementById(St.shift())),_t.unshift(N.getElementById(St.shift()))):St=pt(St.shift()).concat(St);_t.unshift(N.getElementById(St.shift()));for(var Et in Z)if(Z[Et].length)return bt;return bt.found=!0,bt.trail=this.spawn(_t,!0),bt}},iC=function(){var p=this,x={},C=0,L=0,O=[],N=[],j={},H=function(st,bt){for(var pt=N.length-1,_t=[],St=p.spawn();N[pt].x!=st||N[pt].y!=bt;)_t.push(N.pop().edge),pt--;_t.push(N.pop().edge),_t.forEach(function(Et){var Nt=Et.connectedNodes().intersection(p);St.merge(Et),Nt.forEach(function(Pt){var qt=Pt.id(),re=Pt.connectedEdges().intersection(p);St.merge(Pt),x[qt].cutVertex?St.merge(re.filter(function(ee){return ee.isLoop()})):St.merge(re)})}),O.push(St)},q=function Z(st,bt,pt){st===pt&&(L+=1),x[bt]={id:C,low:C++,cutVertex:!1};var _t=p.getElementById(bt).connectedEdges().intersection(p);if(_t.size()===0)O.push(p.spawn(p.getElementById(bt)));else{var St,Et,Nt,Pt;_t.forEach(function(qt){St=qt.source().id(),Et=qt.target().id(),Nt=St===bt?Et:St,Nt!==pt&&(Pt=qt.id(),j[Pt]||(j[Pt]=!0,N.push({x:bt,y:Nt,edge:qt})),Nt in x?x[bt].low=Math.min(x[bt].low,x[Nt].id):(Z(st,Nt,bt),x[bt].low=Math.min(x[bt].low,x[Nt].low),x[bt].id<=x[Nt].low&&(x[bt].cutVertex=!0,H(bt,Nt))))})}};p.forEach(function(Z){if(Z.isNode()){var st=Z.id();st in x||(L=0,q(st,st),x[st].cutVertex=L>1)}});var W=Object.keys(x).filter(function(Z){return x[Z].cutVertex}).map(function(Z){return p.getElementById(Z)});return{cut:p.spawn(W),components:O}},bJ={hopcroftTarjanBiconnected:iC,htbc:iC,htb:iC,hopcroftTarjanBiconnectedComponents:iC},sC=function(){var p=this,x={},C=0,L=[],O=[],N=p.spawn(p),j=function H(q){O.push(q),x[q]={index:C,low:C++,explored:!1};var W=p.getElementById(q).connectedEdges().intersection(p);if(W.forEach(function(_t){var St=_t.target().id();St!==q&&(St in x||H(St),x[St].explored||(x[q].low=Math.min(x[q].low,x[St].low)))}),x[q].index===x[q].low){for(var Z=p.spawn();;){var st=O.pop();if(Z.merge(p.getElementById(st)),x[st].low=x[q].index,x[st].explored=!0,st===q)break}var bt=Z.edgesWith(Z),pt=Z.merge(bt);L.push(pt),N=N.difference(pt)}};return p.forEach(function(H){if(H.isNode()){var q=H.id();q in x||j(q)}}),{cut:N,components:L}},wJ={tarjanStronglyConnected:sC,tsc:sC,tscc:sC,tarjanStronglyConnectedComponents:sC},aR={};[O8,WX,YX,QX,ZX,eQ,iQ,LQ,Jx,Zx,UD,zQ,tJ,aJ,dJ,pJ,bJ,wJ].forEach(function(y){we(aR,y)});/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/var oR=0,cR=1,uR=2,am=function y(p){if(!(this instanceof y))return new y(p);this.id="Thenable/1.0.7",this.state=oR,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},typeof p=="function"&&p.call(this,this.fulfill.bind(this),this.reject.bind(this))};am.prototype={fulfill:function(p){return lR(this,cR,"fulfillValue",p)},reject:function(p){return lR(this,uR,"rejectReason",p)},then:function(p,x){var C=this,L=new am;return C.onFulfilled.push(dR(p,L,"fulfill")),C.onRejected.push(dR(x,L,"reject")),hR(C),L.proxy}};var lR=function(p,x,C,L){return p.state===oR&&(p.state=x,p[C]=L,hR(p)),p},hR=function(p){p.state===cR?fR(p,"onFulfilled",p.fulfillValue):p.state===uR&&fR(p,"onRejected",p.rejectReason)},fR=function(p,x,C){if(p[x].length!==0){var L=p[x];p[x]=[];var O=function(){for(var j=0;j0}},clearQueue:function(){return function(){var x=this,C=x.length!==void 0,L=C?x:[x],O=this._private.cy||this;if(!O.styleEnabled())return this;for(var N=0;N-1}var mZ=wZ;function vZ(y,p){var x=this.__data__,C=cC(x,y);return C<0?(++this.size,x.push([y,p])):x[C][1]=p,this}var yZ=vZ;function r6(y){var p=-1,x=y==null?0:y.length;for(this.clear();++p-1&&y%1==0&&y0&&this.spawn(L).updateStyle().emit("class"),x},addClass:function(p){return this.toggleClass(p,!0)},hasClass:function(p){var x=this[0];return x!=null&&x._private.classes.has(p)},toggleClass:function(p,x){rt(p)||(p=p.match(/\S+/g)||[]);for(var C=this,L=x===void 0,O=[],N=0,j=C.length;N0&&this.spawn(O).updateStyle().emit("class"),C},removeClass:function(p){return this.toggleClass(p,!1)},flashClass:function(p,x){var C=this;if(x==null)x=250;else if(x===0)return C;return C.addClass(p),setTimeout(function(){C.removeClass(p)},x),C}};lC.className=lC.classNames=lC.classes;var yc={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:`"(?:\\\\"|[^"])*"|'(?:\\\\'|[^'])*'`,number:sn,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};yc.variable="(?:[\\w-.]|(?:\\\\"+yc.metaChar+"))+",yc.className="(?:[\\w-]|(?:\\\\"+yc.metaChar+"))+",yc.value=yc.string+"|"+yc.number,yc.id=yc.variable,function(){var y,p,x;for(y=yc.comparatorOp.split("|"),x=0;x=0)&&p!=="="&&(yc.comparatorOp+="|\\!"+p)}();var bu=function(){return{checks:[]}},Xi={GROUP:0,COLLECTION:1,FILTER:2,DATA_COMPARE:3,DATA_EXIST:4,DATA_BOOL:5,META_COMPARE:6,STATE:7,ID:8,CLASS:9,UNDIRECTED_EDGE:10,DIRECTED_EDGE:11,NODE_SOURCE:12,NODE_TARGET:13,NODE_NEIGHBOR:14,CHILD:15,DESCENDANT:16,PARENT:17,ANCESTOR:18,COMPOUND_SPLIT:19,TRUE:20},JD=[{selector:":selected",matches:function(p){return p.selected()}},{selector:":unselected",matches:function(p){return!p.selected()}},{selector:":selectable",matches:function(p){return p.selectable()}},{selector:":unselectable",matches:function(p){return!p.selectable()}},{selector:":locked",matches:function(p){return p.locked()}},{selector:":unlocked",matches:function(p){return!p.locked()}},{selector:":visible",matches:function(p){return p.visible()}},{selector:":hidden",matches:function(p){return!p.visible()}},{selector:":transparent",matches:function(p){return p.transparent()}},{selector:":grabbed",matches:function(p){return p.grabbed()}},{selector:":free",matches:function(p){return!p.grabbed()}},{selector:":removed",matches:function(p){return p.removed()}},{selector:":inside",matches:function(p){return!p.removed()}},{selector:":grabbable",matches:function(p){return p.grabbable()}},{selector:":ungrabbable",matches:function(p){return!p.grabbable()}},{selector:":animated",matches:function(p){return p.animated()}},{selector:":unanimated",matches:function(p){return!p.animated()}},{selector:":parent",matches:function(p){return p.isParent()}},{selector:":childless",matches:function(p){return p.isChildless()}},{selector:":child",matches:function(p){return p.isChild()}},{selector:":orphan",matches:function(p){return p.isOrphan()}},{selector:":nonorphan",matches:function(p){return p.isChild()}},{selector:":compound",matches:function(p){return p.isNode()?p.isParent():p.source().isParent()||p.target().isParent()}},{selector:":loop",matches:function(p){return p.isLoop()}},{selector:":simple",matches:function(p){return p.isSimple()}},{selector:":active",matches:function(p){return p.active()}},{selector:":inactive",matches:function(p){return!p.active()}},{selector:":backgrounding",matches:function(p){return p.backgrounding()}},{selector:":nonbackgrounding",matches:function(p){return!p.backgrounding()}}].sort(function(y,p){return Br(y.selector,p.selector)}),Ett=function(){for(var y={},p,x=0;x0&&W.edgeCount>0)return Gc("The selector `"+p+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(W.edgeCount>1)return Gc("The selector `"+p+"` is invalid because it uses multiple edge selectors"),!1;W.edgeCount===1&&Gc("The selector `"+p+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},Att=function(){if(this.toStringCache!=null)return this.toStringCache;for(var p=function(W){return W??""},x=function(W){return mt(W)?'"'+W+'"':p(W)},C=function(W){return" "+W+" "},L=function(W,Z){var st=W.type,bt=W.value;switch(st){case Xi.GROUP:{var pt=p(bt);return pt.substring(0,pt.length-1)}case Xi.DATA_COMPARE:{var _t=W.field,St=W.operator;return"["+_t+C(p(St))+x(bt)+"]"}case Xi.DATA_BOOL:{var Et=W.operator,Nt=W.field;return"["+p(Et)+Nt+"]"}case Xi.DATA_EXIST:{var Pt=W.field;return"["+Pt+"]"}case Xi.META_COMPARE:{var qt=W.operator,re=W.field;return"[["+re+C(p(qt))+x(bt)+"]]"}case Xi.STATE:return bt;case Xi.ID:return"#"+bt;case Xi.CLASS:return"."+bt;case Xi.PARENT:case Xi.CHILD:return O(W.parent,Z)+C(">")+O(W.child,Z);case Xi.ANCESTOR:case Xi.DESCENDANT:return O(W.ancestor,Z)+" "+O(W.descendant,Z);case Xi.COMPOUND_SPLIT:{var ee=O(W.left,Z),Ut=O(W.subject,Z),de=O(W.right,Z);return ee+(ee.length>0?" ":"")+Ut+de}case Xi.TRUE:return""}},O=function(W,Z){return W.checks.reduce(function(st,bt,pt){return st+(Z===W&&pt===0?"$":"")+L(bt,Z)},"")},N="",j=0;j1&&j=0&&(x=x.replace("!",""),Z=!0),x.indexOf("@")>=0&&(x=x.replace("@",""),W=!0),(O||j||W)&&(H=!O&&!N?"":""+p,q=""+C),W&&(p=H=H.toLowerCase(),C=q=q.toLowerCase()),x){case"*=":L=H.indexOf(q)>=0;break;case"$=":L=H.indexOf(q,H.length-q.length)>=0;break;case"^=":L=H.indexOf(q)===0;break;case"=":L=p===C;break;case">":st=!0,L=p>C;break;case">=":st=!0,L=p>=C;break;case"<":st=!0,L=p0;){var W=L.shift();p(W),O.add(W.id()),j&&C(L,O,W)}return y}function NR(y,p,x){if(x.isParent())for(var C=x._private.children,L=0;L1&&arguments[1]!==void 0?arguments[1]:!0;return eM(this,y,p,NR)};function PR(y,p,x){if(x.isChild()){var C=x._private.parent;p.has(C.id())||y.push(C)}}a6.forEachUp=function(y){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return eM(this,y,p,PR)};function Ptt(y,p,x){PR(y,p,x),NR(y,p,x)}a6.forEachUpAndDown=function(y){var p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return eM(this,y,p,Ptt)},a6.ancestors=a6.parents;var G1,FR;G1=FR={data:Kc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:Kc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:Kc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Kc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:Kc.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:Kc.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var p=this[0];if(p)return p._private.data.id}},G1.attr=G1.data,G1.removeAttr=G1.removeData;var fy=FR,q8={};function nM(y){return function(p){var x=this;if(p===void 0&&(p=!0),x.length!==0)if(x.isNode()&&!x.removed()){for(var C=0,L=x[0],O=L._private.edges,N=0;Np}),minIndegree:o6("indegree",function(y,p){return yp}),minOutdegree:o6("outdegree",function(y,p){return yp})}),we(q8,{totalDegree:function(p){for(var x=0,C=this.nodes(),L=0;L0,st=Z;Z&&(W=W[0]);var bt=st?W.position():{x:0,y:0};x!==void 0?q.position(p,x+bt[p]):O!==void 0&&q.position({x:O.x+bt.x,y:O.y+bt.y})}else{var pt=C.position(),_t=j?C.parent():null,St=_t&&_t.length>0,Et=St;St&&(_t=_t[0]);var Nt=Et?_t.position():{x:0,y:0};return O={x:pt.x-Nt.x,y:pt.y-Nt.y},p===void 0?O:O[p]}else if(!N)return;return this}},db.modelPosition=db.point=db.position,db.modelPositions=db.points=db.positions,db.renderedPoint=db.renderedPosition,db.relativePoint=db.relativePosition;var Ftt=BR,c6,dy;c6=dy={},dy.renderedBoundingBox=function(y){var p=this.boundingBox(y),x=this.cy(),C=x.zoom(),L=x.pan(),O=p.x1*C+L.x,N=p.x2*C+L.x,j=p.y1*C+L.y,H=p.y2*C+L.y;return{x1:O,x2:N,y1:j,y2:H,w:N-O,h:H-j}},dy.dirtyCompoundBoundsCache=function(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,p=this.cy();return!p.styleEnabled()||!p.hasCompoundNodes()?this:(this.forEachUp(function(x){if(x.isParent()){var C=x._private;C.compoundBoundsClean=!1,C.bbCache=null,y||x.emitAndNotify("bounds")}}),this)},dy.updateCompoundBounds=function(){var y=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1,p=this.cy();if(!p.styleEnabled()||!p.hasCompoundNodes())return this;if(!y&&p.batching())return this;function x(N){if(!N.isParent())return;var j=N._private,H=N.children(),q=N.pstyle("compound-sizing-wrt-labels").value==="include",W={width:{val:N.pstyle("min-width").pfValue,left:N.pstyle("min-width-bias-left"),right:N.pstyle("min-width-bias-right")},height:{val:N.pstyle("min-height").pfValue,top:N.pstyle("min-height-bias-top"),bottom:N.pstyle("min-height-bias-bottom")}},Z=H.boundingBox({includeLabels:q,includeOverlays:!1,useCache:!1}),st=j.position;(Z.w===0||Z.h===0)&&(Z={w:N.pstyle("width").pfValue,h:N.pstyle("height").pfValue},Z.x1=st.x-Z.w/2,Z.x2=st.x+Z.w/2,Z.y1=st.y-Z.h/2,Z.y2=st.y+Z.h/2);function bt(Yt,Ee,Te){var ie=0,ze=0,me=Ee+Te;return Yt>0&&me>0&&(ie=Ee/me*Yt,ze=Te/me*Yt),{biasDiff:ie,biasComplementDiff:ze}}function pt(Yt,Ee,Te,ie){if(Te.units==="%")switch(ie){case"width":return Yt>0?Te.pfValue*Yt:0;case"height":return Ee>0?Te.pfValue*Ee:0;case"average":return Yt>0&&Ee>0?Te.pfValue*(Yt+Ee)/2:0;case"min":return Yt>0&&Ee>0?Yt>Ee?Te.pfValue*Ee:Te.pfValue*Yt:0;case"max":return Yt>0&&Ee>0?Yt>Ee?Te.pfValue*Yt:Te.pfValue*Ee:0;default:return 0}else return Te.units==="px"?Te.pfValue:0}var _t=W.width.left.value;W.width.left.units==="px"&&W.width.val>0&&(_t=_t*100/W.width.val);var St=W.width.right.value;W.width.right.units==="px"&&W.width.val>0&&(St=St*100/W.width.val);var Et=W.height.top.value;W.height.top.units==="px"&&W.height.val>0&&(Et=Et*100/W.height.val);var Nt=W.height.bottom.value;W.height.bottom.units==="px"&&W.height.val>0&&(Nt=Nt*100/W.height.val);var Pt=bt(W.width.val-Z.w,_t,St),qt=Pt.biasDiff,re=Pt.biasComplementDiff,ee=bt(W.height.val-Z.h,Et,Nt),Ut=ee.biasDiff,de=ee.biasComplementDiff;j.autoPadding=pt(Z.w,Z.h,N.pstyle("padding"),N.pstyle("padding-relative-to").value),j.autoWidth=Math.max(Z.w,W.width.val),st.x=(-qt+Z.x1+Z.x2+re)/2,j.autoHeight=Math.max(Z.h,W.height.val),st.y=(-Ut+Z.y1+Z.y2+de)/2}for(var C=0;Cp.x2?L:p.x2,p.y1=Cp.y2?O:p.y2,p.w=p.x2-p.x1,p.h=p.y2-p.y1)},k4=function(p,x){return x==null?p:gb(p,x.x1,x.y1,x.x2,x.y2)},H8=function(p,x,C){return fb(p,x,C)},hC=function(p,x,C){if(!x.cy().headless()){var L=x._private,O=L.rstyle,N=O.arrowWidth/2,j=x.pstyle(C+"-arrow-shape").value,H,q;if(j!=="none"){C==="source"?(H=O.srcX,q=O.srcY):C==="target"?(H=O.tgtX,q=O.tgtY):(H=O.midX,q=O.midY);var W=L.arrowBounds=L.arrowBounds||{},Z=W[C]=W[C]||{};Z.x1=H-N,Z.y1=q-N,Z.x2=H+N,Z.y2=q+N,Z.w=Z.x2-Z.x1,Z.h=Z.y2-Z.y1,X9(Z,1),gb(p,Z.x1,Z.y1,Z.x2,Z.y2)}}},rM=function(p,x,C){if(!x.cy().headless()){var L;C?L=C+"-":L="";var O=x._private,N=O.rstyle,j=x.pstyle(L+"label").strValue;if(j){var H=x.pstyle("text-halign"),q=x.pstyle("text-valign"),W=H8(N,"labelWidth",C),Z=H8(N,"labelHeight",C),st=H8(N,"labelX",C),bt=H8(N,"labelY",C),pt=x.pstyle(L+"text-margin-x").pfValue,_t=x.pstyle(L+"text-margin-y").pfValue,St=x.isEdge(),Et=x.pstyle(L+"text-rotation"),Nt=x.pstyle("text-outline-width").pfValue,Pt=x.pstyle("text-border-width").pfValue,qt=Pt/2,re=x.pstyle("text-background-padding").pfValue,ee=2,Ut=Z,de=W,Yt=de/2,Ee=Ut/2,Te,ie,ze,me;if(St)Te=st-Yt,ie=st+Yt,ze=bt-Ee,me=bt+Ee;else{switch(H.value){case"left":Te=st-de,ie=st;break;case"center":Te=st-Yt,ie=st+Yt;break;case"right":Te=st,ie=st+de;break}switch(q.value){case"top":ze=bt-Ut,me=bt;break;case"center":ze=bt-Ee,me=bt+Ee;break;case"bottom":ze=bt,me=bt+Ut;break}}Te+=pt-Math.max(Nt,qt)-re-ee,ie+=pt+Math.max(Nt,qt)+re+ee,ze+=_t-Math.max(Nt,qt)-re-ee,me+=_t+Math.max(Nt,qt)+re+ee;var yn=C||"main",nn=O.labelBounds,qe=nn[yn]=nn[yn]||{};qe.x1=Te,qe.y1=ze,qe.x2=ie,qe.y2=me,qe.w=ie-Te,qe.h=me-ze;var Tn=St&&Et.strValue==="autorotate",Xn=Et.pfValue!=null&&Et.pfValue!==0;if(Tn||Xn){var lr=Tn?H8(O.rstyle,"labelAngle",C):Et.pfValue,Sn=Math.cos(lr),or=Math.sin(lr),pr=(Te+ie)/2,kr=(ze+me)/2;if(!St){switch(H.value){case"left":pr=ie;break;case"right":pr=Te;break}switch(q.value){case"top":kr=me;break;case"bottom":kr=ze;break}}var wr=function(na,vi){return na=na-pr,vi=vi-kr,{x:na*Sn-vi*or+pr,y:na*or+vi*Sn+kr}},Cr=wr(Te,ze),$n=wr(Te,me),cr=wr(ie,ze),mr=wr(ie,me);Te=Math.min(Cr.x,$n.x,cr.x,mr.x),ie=Math.max(Cr.x,$n.x,cr.x,mr.x),ze=Math.min(Cr.y,$n.y,cr.y,mr.y),me=Math.max(Cr.y,$n.y,cr.y,mr.y)}var Sr=yn+"Rot",gi=nn[Sr]=nn[Sr]||{};gi.x1=Te,gi.y1=ze,gi.x2=ie,gi.y2=me,gi.w=ie-Te,gi.h=me-ze,gb(p,Te,ze,ie,me),gb(O.labelBounds.all,Te,ze,ie,me)}return p}},Btt=function(p,x){if(!x.cy().headless()){var C=x.pstyle("outline-opacity").value,L=x.pstyle("outline-width").value;if(C>0&&L>0){var O=x.pstyle("outline-offset").value,N=x.pstyle("shape").value,j=L+O,H=(p.w+j*2)/p.w,q=(p.h+j*2)/p.h,W=0,Z=0;["diamond","pentagon","round-triangle"].includes(N)?(H=(p.w+j*2.4)/p.w,Z=-j/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(N)?H=(p.w+j*2.4)/p.w:N==="star"?(H=(p.w+j*2.8)/p.w,q=(p.h+j*2.6)/p.h,Z=-j/3.8):N==="triangle"?(H=(p.w+j*2.8)/p.w,q=(p.h+j*2.4)/p.h,Z=-j/1.4):N==="vee"&&(H=(p.w+j*4.4)/p.w,q=(p.h+j*3.8)/p.h,Z=-j*.5);var st=p.h*q-p.h,bt=p.w*H-p.w;if(Q9(p,[Math.ceil(st/2),Math.ceil(bt/2)]),W!=0||Z!==0){var pt=pQ(p,W,Z);BB(p,pt)}}}},Rtt=function(p,x){var C=p._private.cy,L=C.styleEnabled(),O=C.headless(),N=v0(),j=p._private,H=p.isNode(),q=p.isEdge(),W,Z,st,bt,pt,_t,St=j.rstyle,Et=H&&L?p.pstyle("bounds-expansion").pfValue:[0],Nt=function(Qi){return Qi.pstyle("display").value!=="none"},Pt=!L||Nt(p)&&(!q||Nt(p.source())&&Nt(p.target()));if(Pt){var qt=0,re=0;L&&x.includeOverlays&&(qt=p.pstyle("overlay-opacity").value,qt!==0&&(re=p.pstyle("overlay-padding").value));var ee=0,Ut=0;L&&x.includeUnderlays&&(ee=p.pstyle("underlay-opacity").value,ee!==0&&(Ut=p.pstyle("underlay-padding").value));var de=Math.max(re,Ut),Yt=0,Ee=0;if(L&&(Yt=p.pstyle("width").pfValue,Ee=Yt/2),H&&x.includeNodes){var Te=p.position();pt=Te.x,_t=Te.y;var ie=p.outerWidth(),ze=ie/2,me=p.outerHeight(),yn=me/2;W=pt-ze,Z=pt+ze,st=_t-yn,bt=_t+yn,gb(N,W,st,Z,bt),L&&x.includeOutlines&&Btt(N,p)}else if(q&&x.includeEdges)if(L&&!O){var nn=p.pstyle("curve-style").strValue;if(W=Math.min(St.srcX,St.midX,St.tgtX),Z=Math.max(St.srcX,St.midX,St.tgtX),st=Math.min(St.srcY,St.midY,St.tgtY),bt=Math.max(St.srcY,St.midY,St.tgtY),W-=Ee,Z+=Ee,st-=Ee,bt+=Ee,gb(N,W,st,Z,bt),nn==="haystack"){var qe=St.haystackPts;if(qe&&qe.length===2){if(W=qe[0].x,st=qe[0].y,Z=qe[1].x,bt=qe[1].y,W>Z){var Tn=W;W=Z,Z=Tn}if(st>bt){var Xn=st;st=bt,bt=Xn}gb(N,W-Ee,st-Ee,Z+Ee,bt+Ee)}}else if(nn==="bezier"||nn==="unbundled-bezier"||nn==="segments"||nn==="taxi"){var lr;switch(nn){case"bezier":case"unbundled-bezier":lr=St.bezierPts;break;case"segments":case"taxi":lr=St.linePts;break}if(lr!=null)for(var Sn=0;SnZ){var $n=W;W=Z,Z=$n}if(st>bt){var cr=st;st=bt,bt=cr}W-=Ee,Z+=Ee,st-=Ee,bt+=Ee,gb(N,W,st,Z,bt)}if(L&&x.includeEdges&&q&&(hC(N,p,"mid-source"),hC(N,p,"mid-target"),hC(N,p,"source"),hC(N,p,"target")),L){var mr=p.pstyle("ghost").value==="yes";if(mr){var Sr=p.pstyle("ghost-offset-x").pfValue,gi=p.pstyle("ghost-offset-y").pfValue;gb(N,N.x1+Sr,N.y1+gi,N.x2+Sr,N.y2+gi)}}var ss=j.bodyBounds=j.bodyBounds||{};RB(ss,N),Q9(ss,Et),X9(ss,1),L&&(W=N.x1,Z=N.x2,st=N.y1,bt=N.y2,gb(N,W-de,st-de,Z+de,bt+de));var na=j.overlayBounds=j.overlayBounds||{};RB(na,N),Q9(na,Et),X9(na,1);var vi=j.labelBounds=j.labelBounds||{};vi.all!=null?gQ(vi.all):vi.all=v0(),L&&x.includeLabels&&(x.includeMainLabels&&rM(N,p,null),q&&(x.includeSourceLabels&&rM(N,p,"source"),x.includeTargetLabels&&rM(N,p,"target")))}return N.x1=op(N.x1),N.y1=op(N.y1),N.x2=op(N.x2),N.y2=op(N.y2),N.w=op(N.x2-N.x1),N.h=op(N.y2-N.y1),N.w>0&&N.h>0&&Pt&&(Q9(N,Et),X9(N,1)),N},$R=function(p){var x=0,C=function(N){return(N?1:0)<0&&arguments[0]!==void 0?arguments[0]:Xtt,p=arguments.length>1?arguments[1]:void 0,x=0;x=0;j--)N(j);return this},pb.removeAllListeners=function(){return this.removeListener("*")},pb.emit=pb.trigger=function(y,p,x){var C=this.listeners,L=C.length;return this.emitting++,rt(p)||(p=[p]),gC(this,function(O,N){x!=null&&(C=[{event:N.event,type:N.type,namespace:N.namespace,callback:x}],L=C.length);for(var j=function(W){var Z=C[W];if(Z.type===N.type&&(!Z.namespace||Z.namespace===N.namespace||Z.namespace===Ytt)&&O.eventMatches(O.context,Z,N)){var st=[N];p!=null&&OB(st,p),O.beforeEmit(O.context,Z,N),Z.conf&&Z.conf.one&&(O.listeners=O.listeners.filter(function(_t){return _t!==Z}));var bt=O.callbackContext(O.context,Z,N),pt=Z.callback.apply(bt,st);O.afterEmit(O.context,Z,N),pt===!1&&(N.stopPropagation(),N.preventDefault())}},H=0;H1&&!N){var j=this.length-1,H=this[j],q=H._private.data.id;this[j]=void 0,this[p]=H,O.set(q,{ele:H,index:p})}return this.length--,this},unmergeOne:function(p){p=p[0];var x=this._private,C=p._private.data.id,L=x.map,O=L.get(C);if(!O)return this;var N=O.index;return this.unmergeAt(N),this},unmerge:function(p){var x=this._private.cy;if(!p)return this;if(p&&mt(p)){var C=p;p=x.mutableElements().filter(C)}for(var L=0;L=0;x--){var C=this[x];p(C)&&this.unmergeAt(x)}return this},map:function(p,x){for(var C=[],L=this,O=0;OC&&(C=H,L=j)}return{value:C,ele:L}},min:function(p,x){for(var C=1/0,L,O=this,N=0;N=0&&O"u"?"undefined":f(Symbol))!=p&&f(Symbol.iterator)!=p;x&&(pC[Symbol.iterator]=function(){var C=this,L={value:void 0,done:!1},O=0,N=this.length;return b({next:function(){return O1&&arguments[1]!==void 0?arguments[1]:!0,C=this[0],L=C.cy();if(L.styleEnabled()&&C){this.cleanStyle();var O=C._private.style[p];return O??(x?L.style().getDefaultProperty(p):null)}},numericStyle:function(p){var x=this[0];if(x.cy().styleEnabled()&&x){var C=x.pstyle(p);return C.pfValue!==void 0?C.pfValue:C.value}},numericStyleUnits:function(p){var x=this[0];if(x.cy().styleEnabled()&&x)return x.pstyle(p).units},renderedStyle:function(p){var x=this.cy();if(!x.styleEnabled())return this;var C=this[0];if(C)return x.style().getRenderedStyle(C,p)},style:function(p,x){var C=this.cy();if(!C.styleEnabled())return this;var L=!1,O=C.style();if(it(p)){var N=p;O.applyBypass(this,N,L),this.emitAndNotify("style")}else if(mt(p))if(x===void 0){var j=this[0];return j?O.getStylePropertyValue(j,p):void 0}else O.applyBypass(this,p,x,L),this.emitAndNotify("style");else if(p===void 0){var H=this[0];return H?O.getRawStyle(H):void 0}return this},removeStyle:function(p){var x=this.cy();if(!x.styleEnabled())return this;var C=!1,L=x.style(),O=this;if(p===void 0)for(var N=0;N0&&p.push(W[0]),p.push(j[0])}return this.spawn(p,!0).filter(y)},"neighborhood"),closedNeighborhood:function(p){return this.neighborhood().add(this).filter(p)},openNeighborhood:function(p){return this.neighborhood(p)}}),K1.neighbourhood=K1.neighborhood,K1.closedNeighbourhood=K1.closedNeighborhood,K1.openNeighbourhood=K1.openNeighborhood,we(K1,{source:ap(function(p){var x=this[0],C;return x&&(C=x._private.source||x.cy().collection()),C&&p?C.filter(p):C},"source"),target:ap(function(p){var x=this[0],C;return x&&(C=x._private.target||x.cy().collection()),C&&p?C.filter(p):C},"target"),sources:ej({attr:"source"}),targets:ej({attr:"target"})});function ej(y){return function(x){for(var C=[],L=0;L0);return N},component:function(){var p=this[0];return p.cy().mutableElements().components(p)[0]}}),K1.componentsOf=K1.components;var w1=function(p,x){var C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,L=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(p===void 0){$l("A collection must have a reference to the core");return}var O=new F2,N=!1;if(!x)x=[];else if(x.length>0&&it(x[0])&&!V(x[0])){N=!0;for(var j=[],H=new Wx,q=0,W=x.length;q0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,x=this,C=x.cy(),L=C._private,O=[],N=[],j,H=0,q=x.length;H0){for(var Xn=j.length===x.length?x:new w1(C,j),lr=0;lr0&&arguments[0]!==void 0?arguments[0]:!0,p=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,x=this,C=[],L={},O=x._private.cy;function N(me){for(var yn=me._private.edges,nn=0;nn0&&(y?Te.emitAndNotify("remove"):p&&Te.emit("remove"));for(var ie=0;ie0?ie=me:Te=me;while(Math.abs(ze)>N&&++yn=O?Nt(Ee,yn):nn===0?yn:qt(Ee,Te,Te+q)}var ee=!1;function Ut(){ee=!0,(y!==p||x!==C)&&Pt()}var de=function(Te){return ee||Ut(),y===p&&x===C?Te:Te===0?0:Te===1?1:St(re(Te),p,C)};de.getControlPoints=function(){return[{x:y,y:p},{x,y:C}]};var Yt="generateBezier("+[y,p,x,C]+")";return de.toString=function(){return Yt},de}/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */var oet=function(){function y(C){return-C.tension*C.x-C.friction*C.v}function p(C,L,O){var N={x:C.x+O.dx*L,v:C.v+O.dv*L,tension:C.tension,friction:C.friction};return{dx:N.v,dv:y(N)}}function x(C,L){var O={dx:C.v,dv:y(C)},N=p(C,L*.5,O),j=p(C,L*.5,N),H=p(C,L,j),q=1/6*(O.dx+2*(N.dx+j.dx)+H.dx),W=1/6*(O.dv+2*(N.dv+j.dv)+H.dv);return C.x=C.x+q*L,C.v=C.v+W*L,C}return function C(L,O,N){var j={x:-1,v:0,tension:null,friction:null},H=[0],q=0,W=1/1e4,Z=16/1e3,st,bt,pt;for(L=parseFloat(L)||500,O=parseFloat(O)||20,N=N||null,j.tension=L,j.friction=O,st=N!==null,st?(q=C(L,O),bt=q/N*Z):bt=Z;pt=x(pt||j,bt),H.push(1+pt.x),q+=16,Math.abs(pt.x)>W&&Math.abs(pt.v)>W;);return st?function(_t){return H[_t*(H.length-1)|0]}:q}}(),Ru=function(p,x,C,L){var O=aet(p,x,C,L);return function(N,j,H){return N+(j-N)*O(H)}},yC={linear:function(p,x,C){return p+(x-p)*C},ease:Ru(.25,.1,.25,1),"ease-in":Ru(.42,0,1,1),"ease-out":Ru(0,0,.58,1),"ease-in-out":Ru(.42,0,.58,1),"ease-in-sine":Ru(.47,0,.745,.715),"ease-out-sine":Ru(.39,.575,.565,1),"ease-in-out-sine":Ru(.445,.05,.55,.95),"ease-in-quad":Ru(.55,.085,.68,.53),"ease-out-quad":Ru(.25,.46,.45,.94),"ease-in-out-quad":Ru(.455,.03,.515,.955),"ease-in-cubic":Ru(.55,.055,.675,.19),"ease-out-cubic":Ru(.215,.61,.355,1),"ease-in-out-cubic":Ru(.645,.045,.355,1),"ease-in-quart":Ru(.895,.03,.685,.22),"ease-out-quart":Ru(.165,.84,.44,1),"ease-in-out-quart":Ru(.77,0,.175,1),"ease-in-quint":Ru(.755,.05,.855,.06),"ease-out-quint":Ru(.23,1,.32,1),"ease-in-out-quint":Ru(.86,0,.07,1),"ease-in-expo":Ru(.95,.05,.795,.035),"ease-out-expo":Ru(.19,1,.22,1),"ease-in-out-expo":Ru(1,0,0,1),"ease-in-circ":Ru(.6,.04,.98,.335),"ease-out-circ":Ru(.075,.82,.165,1),"ease-in-out-circ":Ru(.785,.135,.15,.86),spring:function(p,x,C){if(C===0)return yC.linear;var L=oet(p,x,C);return function(O,N,j){return O+(N-O)*L(j)}},"cubic-bezier":Ru};function ij(y,p,x,C,L){if(C===1||p===x)return x;var O=L(p,x,C);return y==null||((y.roundValue||y.color)&&(O=Math.round(O)),y.min!==void 0&&(O=Math.max(O,y.min)),y.max!==void 0&&(O=Math.min(O,y.max))),O}function sj(y,p){return y.pfValue!=null||y.value!=null?y.pfValue!=null&&(p==null||p.type.units!=="%")?y.pfValue:y.value:y}function h6(y,p,x,C,L){var O=L!=null?L.type:null;x<0?x=0:x>1&&(x=1);var N=sj(y,L),j=sj(p,L);if(Q(N)&&Q(j))return ij(O,N,j,x,C);if(rt(N)&&rt(j)){for(var H=[],q=0;q0?(bt==="spring"&&pt.push(N.duration),N.easingImpl=yC[bt].apply(null,pt)):N.easingImpl=yC[bt]}var _t=N.easingImpl,St;if(N.duration===0?St=1:St=(x-H)/N.duration,N.applying&&(St=N.progress),St<0?St=0:St>1&&(St=1),N.delay==null){var Et=N.startPosition,Nt=N.position;if(Nt&&L&&!y.locked()){var Pt={};X8(Et.x,Nt.x)&&(Pt.x=h6(Et.x,Nt.x,St,_t)),X8(Et.y,Nt.y)&&(Pt.y=h6(Et.y,Nt.y,St,_t)),y.position(Pt)}var qt=N.startPan,re=N.pan,ee=O.pan,Ut=re!=null&&C;Ut&&(X8(qt.x,re.x)&&(ee.x=h6(qt.x,re.x,St,_t)),X8(qt.y,re.y)&&(ee.y=h6(qt.y,re.y,St,_t)),y.emit("pan"));var de=N.startZoom,Yt=N.zoom,Ee=Yt!=null&&C;Ee&&(X8(de,Yt)&&(O.zoom=P8(O.minZoom,h6(de,Yt,St,_t),O.maxZoom)),y.emit("zoom")),(Ut||Ee)&&y.emit("viewport");var Te=N.style;if(Te&&Te.length>0&&L){for(var ie=0;ie=0;Ut--){var de=ee[Ut];de()}ee.splice(0,ee.length)},Nt=bt.length-1;Nt>=0;Nt--){var Pt=bt[Nt],qt=Pt._private;if(qt.stopped){bt.splice(Nt,1),qt.hooked=!1,qt.playing=!1,qt.started=!1,Et(qt.frames);continue}!qt.playing&&!qt.applying||(qt.playing&&qt.applying&&(qt.applying=!1),qt.started||uet(W,Pt,y),cet(W,Pt,y,Z),qt.applying&&(qt.applying=!1),Et(qt.frames),qt.step!=null&&qt.step(y),Pt.completed()&&(bt.splice(Nt,1),qt.hooked=!1,qt.playing=!1,qt.started=!1,Et(qt.completes)),_t=!0)}return!Z&&bt.length===0&&pt.length===0&&C.push(W),_t}for(var O=!1,N=0;N0?p.notify("draw",x):p.notify("draw")),x.unmerge(C),p.emit("step")}var het={animate:Kc.animate(),animation:Kc.animation(),animated:Kc.animated(),clearQueue:Kc.clearQueue(),delay:Kc.delay(),delayAnimation:Kc.delayAnimation(),stop:Kc.stop(),addToAnimationPool:function(p){var x=this;x.styleEnabled()&&x._private.aniEles.merge(p)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var p=this;if(p._private.animationsRunning=!0,!p.styleEnabled())return;function x(){p._private.animationsRunning&&g1(function(O){aj(O,p),x()})}var C=p.renderer();C&&C.beforeRender?C.beforeRender(function(O,N){aj(N,p)},C.beforeRenderPriorities.animations):x()}},fet={qualifierCompare:function(p,x){return p==null||x==null?p==null&&x==null:p.sameText(x)},eventMatches:function(p,x,C){var L=x.qualifier;return L!=null?p!==C.target&&V(C.target)&&L.matches(C.target):!0},addEventFields:function(p,x){x.cy=p,x.target=p},callbackContext:function(p,x,C){return x.qualifier!=null?C.target:p}},xC=function(p){return mt(p)?new ly(p):p},oj={createEmitter:function(){var p=this._private;return p.emitter||(p.emitter=new dC(fet,this)),this},emitter:function(){return this._private.emitter},on:function(p,x,C){return this.emitter().on(p,xC(x),C),this},removeListener:function(p,x,C){return this.emitter().removeListener(p,xC(x),C),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(p,x,C){return this.emitter().one(p,xC(x),C),this},once:function(p,x,C){return this.emitter().one(p,xC(x),C),this},emit:function(p,x){return this.emitter().emit(p,x),this},emitAndNotify:function(p,x){return this.emit(p),this.notify(p,x),this}};Kc.eventAliasesOn(oj);var hM={png:function(p){var x=this._private.renderer;return p=p||{},x.png(p)},jpg:function(p){var x=this._private.renderer;return p=p||{},p.bg=p.bg||"#fff",x.jpg(p)}};hM.jpeg=hM.jpg;var kC={layout:function(p){var x=this;if(p==null){$l("Layout options must be specified to make a layout");return}if(p.name==null){$l("A `name` must be specified to make a layout");return}var C=p.name,L=x.extension("layout",C);if(L==null){$l("No such layout `"+C+"` found. Did you forget to import it and `cytoscape.use()` it?");return}var O;mt(p.eles)?O=x.$(p.eles):O=p.eles!=null?p.eles:x.$();var N=new L(we({},p,{cy:x,eles:O}));return N}};kC.createLayout=kC.makeLayout=kC.layout;var det={notify:function(p,x){var C=this._private;if(this.batching()){C.batchNotifications=C.batchNotifications||{};var L=C.batchNotifications[p]=C.batchNotifications[p]||this.collection();x!=null&&L.merge(x);return}if(C.notificationsEnabled){var O=this.renderer();this.destroyed()||!O||O.notify(p,x)}},notifications:function(p){var x=this._private;return p===void 0?x.notificationsEnabled:(x.notificationsEnabled=!!p,this)},noNotifications:function(p){this.notifications(!1),p(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var p=this._private;return p.batchCount==null&&(p.batchCount=0),p.batchCount===0&&(p.batchStyleEles=this.collection(),p.batchNotifications={}),p.batchCount++,this},endBatch:function(){var p=this._private;if(p.batchCount===0)return this;if(p.batchCount--,p.batchCount===0){p.batchStyleEles.updateStyle();var x=this.renderer();Object.keys(p.batchNotifications).forEach(function(C){var L=p.batchNotifications[C];L.empty()?x.notify(C):x.notify(C,L)})}return this},batch:function(p){return this.startBatch(),p(),this.endBatch(),this},batchData:function(p){var x=this;return this.batch(function(){for(var C=Object.keys(p),L=0;L0;)x.removeChild(x.childNodes[0]);p._private.renderer=null,p.mutableElements().forEach(function(C){var L=C._private;L.rscratch={},L.rstyle={},L.animation.current=[],L.animation.queue=[]})},onRender:function(p){return this.on("render",p)},offRender:function(p){return this.off("render",p)}};fM.invalidateDimensions=fM.resize;var EC={collection:function(p,x){return mt(p)?this.$(p):yt(p)?p.collection():rt(p)?(x||(x={}),new w1(this,p,x.unique,x.removed)):new w1(this)},nodes:function(p){var x=this.$(function(C){return C.isNode()});return p?x.filter(p):x},edges:function(p){var x=this.$(function(C){return C.isEdge()});return p?x.filter(p):x},$:function(p){var x=this._private.elements;return p?x.filter(p):x.spawnSelf()},mutableElements:function(){return this._private.elements}};EC.elements=EC.filter=EC.$;var W1={},Q8="t",pet="f";W1.apply=function(y){for(var p=this,x=p._private,C=x.cy,L=C.collection(),O=0;O0;if(st||Z&&bt){var pt=void 0;st&&bt||st?pt=q.properties:bt&&(pt=q.mappedProperties);for(var _t=0;_t1&&(qt=1),j.color){var ee=C.valueMin[0],Ut=C.valueMax[0],de=C.valueMin[1],Yt=C.valueMax[1],Ee=C.valueMin[2],Te=C.valueMax[2],ie=C.valueMin[3]==null?1:C.valueMin[3],ze=C.valueMax[3]==null?1:C.valueMax[3],me=[Math.round(ee+(Ut-ee)*qt),Math.round(de+(Yt-de)*qt),Math.round(Ee+(Te-Ee)*qt),Math.round(ie+(ze-ie)*qt)];O={bypass:C.bypass,name:C.name,value:me,strValue:"rgb("+me[0]+", "+me[1]+", "+me[2]+")"}}else if(j.number){var yn=C.valueMin+(C.valueMax-C.valueMin)*qt;O=this.parse(C.name,yn,C.bypass,st)}else return!1;if(!O)return _t(),!1;O.mapping=C,C=O;break}case N.data:{for(var nn=C.field.split("."),qe=Z.data,Tn=0;Tn0&&O>0){for(var j={},H=!1,q=0;q0?y.delayAnimation(N).play().promise().then(Pt):Pt()}).then(function(){return y.animation({style:j,duration:O,easing:y.pstyle("transition-timing-function").value,queue:!1}).play().promise()}).then(function(){x.removeBypasses(y,L),y.emitAndNotify("style"),C.transitioning=!1})}else C.transitioning&&(this.removeBypasses(y,L),y.emitAndNotify("style"),C.transitioning=!1)},W1.checkTrigger=function(y,p,x,C,L,O){var N=this.properties[p],j=L(N);j!=null&&j(x,C)&&O(N)},W1.checkZOrderTrigger=function(y,p,x,C){var L=this;this.checkTrigger(y,p,x,C,function(O){return O.triggersZOrder},function(){L._private.cy.notify("zorder",y)})},W1.checkBoundsTrigger=function(y,p,x,C){this.checkTrigger(y,p,x,C,function(L){return L.triggersBounds},function(L){y.dirtyCompoundBoundsCache(),y.dirtyBoundingBoxCache(),L.triggersBoundsOfParallelBeziers&&p==="curve-style"&&(x==="bezier"||C==="bezier")&&y.parallelEdges().forEach(function(O){O.isBundledBezier()&&O.dirtyBoundingBoxCache()}),L.triggersBoundsOfConnectedEdges&&p==="display"&&(x==="none"||C==="none")&&y.connectedEdges().forEach(function(O){O.dirtyBoundingBoxCache()})})},W1.checkTriggers=function(y,p,x,C){y.dirtyStyleCache(),this.checkZOrderTrigger(y,p,x,C),this.checkBoundsTrigger(y,p,x,C)};var J8={};J8.applyBypass=function(y,p,x,C){var L=this,O=[],N=!0;if(p==="*"||p==="**"){if(x!==void 0)for(var j=0;jL.length?C=C.substr(L.length):C=""}function H(){O.length>N.length?O=O.substr(N.length):O=""}for(;;){var q=C.match(/^\s*$/);if(q)break;var W=C.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!W){Gc("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+C);break}L=W[0];var Z=W[1];if(Z!=="core"){var st=new ly(Z);if(st.invalid){Gc("Skipping parsing of block: Invalid selector found in string stylesheet: "+Z),j();continue}}var bt=W[2],pt=!1;O=bt;for(var _t=[];;){var St=O.match(/^\s*$/);if(St)break;var Et=O.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!Et){Gc("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+bt),pt=!0;break}N=Et[0];var Nt=Et[1],Pt=Et[2],qt=p.properties[Nt];if(!qt){Gc("Skipping property: Invalid property name in: "+N),H();continue}var re=x.parse(Nt,Pt);if(!re){Gc("Skipping property: Invalid property definition in: "+N),H();continue}_t.push({name:Nt,val:Pt}),H()}if(pt){j();break}x.selector(Z);for(var ee=0;ee<_t.length;ee++){var Ut=_t[ee];x.css(Ut.name,Ut.val)}j()}return x},gM.fromString=function(y){var p=this;return p.resetToDefault(),p.appendFromString(y),p};var m1={};(function(){var y=sn,p=Ne,x=_e,C=xe,L=Mn,O=function(mr){return"^"+mr+"\\s*\\(\\s*([\\w\\.]+)\\s*\\)$"},N=function(mr){var Sr=y+"|\\w+|"+p+"|"+x+"|"+C+"|"+L;return"^"+mr+"\\s*\\(([\\w\\.]+)\\s*\\,\\s*("+y+")\\s*\\,\\s*("+y+")\\s*,\\s*("+Sr+")\\s*\\,\\s*("+Sr+")\\)$"},j=[`^url\\s*\\(\\s*['"]?(.+?)['"]?\\s*\\)$`,"^(none)$","^(.+)$"];m1.types={time:{number:!0,min:0,units:"s|ms",implicitUnits:"ms"},percent:{number:!0,min:0,max:100,units:"%",implicitUnits:"%"},percentages:{number:!0,min:0,max:100,units:"%",implicitUnits:"%",multiple:!0},zeroOneNumber:{number:!0,min:0,max:1,unitless:!0},zeroOneNumbers:{number:!0,min:0,max:1,unitless:!0,multiple:!0},nOneOneNumber:{number:!0,min:-1,max:1,unitless:!0},nonNegativeInt:{number:!0,min:0,integer:!0,unitless:!0},nonNegativeNumber:{number:!0,min:0,unitless:!0},position:{enums:["parent","origin"]},nodeSize:{number:!0,min:0,enums:["label"]},number:{number:!0,unitless:!0},numbers:{number:!0,unitless:!0,multiple:!0},positiveNumber:{number:!0,unitless:!0,min:0,strictMin:!0},size:{number:!0,min:0},bidirectionalSize:{number:!0},bidirectionalSizeMaybePercent:{number:!0,allowPercent:!0},bidirectionalSizes:{number:!0,multiple:!0},sizeMaybePercent:{number:!0,min:0,allowPercent:!0},axisDirection:{enums:["horizontal","leftward","rightward","vertical","upward","downward","auto"]},paddingRelativeTo:{enums:["width","height","average","min","max"]},bgWH:{number:!0,min:0,allowPercent:!0,enums:["auto"],multiple:!0},bgPos:{number:!0,allowPercent:!0,multiple:!0},bgRelativeTo:{enums:["inner","include-padding"],multiple:!0},bgRepeat:{enums:["repeat","repeat-x","repeat-y","no-repeat"],multiple:!0},bgFit:{enums:["none","contain","cover"],multiple:!0},bgCrossOrigin:{enums:["anonymous","use-credentials","null"],multiple:!0},bgClip:{enums:["none","node"],multiple:!0},bgContainment:{enums:["inside","over"],multiple:!0},color:{color:!0},colors:{color:!0,multiple:!0},fill:{enums:["solid","linear-gradient","radial-gradient"]},bool:{enums:["yes","no"]},bools:{enums:["yes","no"],multiple:!0},lineStyle:{enums:["solid","dotted","dashed"]},lineCap:{enums:["butt","round","square"]},borderStyle:{enums:["solid","dotted","dashed","double"]},curveStyle:{enums:["bezier","unbundled-bezier","haystack","segments","straight","straight-triangle","taxi"]},fontFamily:{regex:'^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$'},fontStyle:{enums:["italic","normal","oblique"]},fontWeight:{enums:["normal","bold","bolder","lighter","100","200","300","400","500","600","800","900",100,200,300,400,500,600,700,800,900]},textDecoration:{enums:["none","underline","overline","line-through"]},textTransform:{enums:["none","uppercase","lowercase"]},textWrap:{enums:["none","wrap","ellipsis"]},textOverflowWrap:{enums:["whitespace","anywhere"]},textBackgroundShape:{enums:["rectangle","roundrectangle","round-rectangle"]},nodeShape:{enums:["rectangle","roundrectangle","round-rectangle","cutrectangle","cut-rectangle","bottomroundrectangle","bottom-round-rectangle","barrel","ellipse","triangle","round-triangle","square","pentagon","round-pentagon","hexagon","round-hexagon","concavehexagon","concave-hexagon","heptagon","round-heptagon","octagon","round-octagon","tag","round-tag","star","diamond","round-diamond","vee","rhomboid","right-rhomboid","polygon"]},overlayShape:{enums:["roundrectangle","round-rectangle","ellipse"]},compoundIncludeLabels:{enums:["include","exclude"]},arrowShape:{enums:["tee","triangle","triangle-tee","circle-triangle","triangle-cross","triangle-backcurve","vee","square","circle","diamond","chevron","none"]},arrowFill:{enums:["filled","hollow"]},arrowWidth:{number:!0,units:"%|px|em",implicitUnits:"px",enums:["match-line"]},display:{enums:["element","none"]},visibility:{enums:["hidden","visible"]},zCompoundDepth:{enums:["bottom","orphan","auto","top"]},zIndexCompare:{enums:["auto","manual"]},valign:{enums:["top","center","bottom"]},halign:{enums:["left","center","right"]},justification:{enums:["left","center","right","auto"]},text:{string:!0},data:{mapping:!0,regex:O("data")},layoutData:{mapping:!0,regex:O("layoutData")},scratch:{mapping:!0,regex:O("scratch")},mapData:{mapping:!0,regex:N("mapData")},mapLayoutData:{mapping:!0,regex:N("mapLayoutData")},mapScratch:{mapping:!0,regex:N("mapScratch")},fn:{mapping:!0,fn:!0},url:{regexes:j,singleRegexMatchValue:!0},urls:{regexes:j,singleRegexMatchValue:!0,multiple:!0},propList:{propList:!0},angle:{number:!0,units:"deg|rad",implicitUnits:"rad"},textRotation:{number:!0,units:"deg|rad",implicitUnits:"rad",enums:["none","autorotate"]},polygonPointList:{number:!0,multiple:!0,evenMultiple:!0,min:-1,max:1,unitless:!0},edgeDistances:{enums:["intersection","node-position","endpoints"]},edgeEndpoint:{number:!0,multiple:!0,units:"%|px|em|deg|rad",implicitUnits:"px",enums:["inside-to-node","outside-to-node","outside-to-node-or-label","outside-to-line","outside-to-line-or-label"],singleEnum:!0,validate:function(mr,Sr){switch(mr.length){case 2:return Sr[0]!=="deg"&&Sr[0]!=="rad"&&Sr[1]!=="deg"&&Sr[1]!=="rad";case 1:return mt(mr[0])||Sr[0]==="deg"||Sr[0]==="rad";default:return!1}}},easing:{regexes:["^(spring)\\s*\\(\\s*("+y+")\\s*,\\s*("+y+")\\s*\\)$","^(cubic-bezier)\\s*\\(\\s*("+y+")\\s*,\\s*("+y+")\\s*,\\s*("+y+")\\s*,\\s*("+y+")\\s*\\)$"],enums:["linear","ease","ease-in","ease-out","ease-in-out","ease-in-sine","ease-out-sine","ease-in-out-sine","ease-in-quad","ease-out-quad","ease-in-out-quad","ease-in-cubic","ease-out-cubic","ease-in-out-cubic","ease-in-quart","ease-out-quart","ease-in-out-quart","ease-in-quint","ease-out-quint","ease-in-out-quint","ease-in-expo","ease-out-expo","ease-in-out-expo","ease-in-circ","ease-out-circ","ease-in-out-circ"]},gradientDirection:{enums:["to-bottom","to-top","to-left","to-right","to-bottom-right","to-bottom-left","to-top-right","to-top-left","to-right-bottom","to-left-bottom","to-right-top","to-left-top"]},boundsExpansion:{number:!0,multiple:!0,min:0,validate:function(mr){var Sr=mr.length;return Sr===1||Sr===2||Sr===4}}};var H={zeroNonZero:function(mr,Sr){return(mr==null||Sr==null)&&mr!==Sr||mr==0&&Sr!=0?!0:mr!=0&&Sr==0},any:function(mr,Sr){return mr!=Sr},emptyNonEmpty:function(mr,Sr){var gi=Ft(mr),ss=Ft(Sr);return gi&&!ss||!gi&&ss}},q=m1.types,W=[{name:"label",type:q.text,triggersBounds:H.any,triggersZOrder:H.emptyNonEmpty},{name:"text-rotation",type:q.textRotation,triggersBounds:H.any},{name:"text-margin-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"text-margin-y",type:q.bidirectionalSize,triggersBounds:H.any}],Z=[{name:"source-label",type:q.text,triggersBounds:H.any},{name:"source-text-rotation",type:q.textRotation,triggersBounds:H.any},{name:"source-text-margin-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"source-text-margin-y",type:q.bidirectionalSize,triggersBounds:H.any},{name:"source-text-offset",type:q.size,triggersBounds:H.any}],st=[{name:"target-label",type:q.text,triggersBounds:H.any},{name:"target-text-rotation",type:q.textRotation,triggersBounds:H.any},{name:"target-text-margin-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"target-text-margin-y",type:q.bidirectionalSize,triggersBounds:H.any},{name:"target-text-offset",type:q.size,triggersBounds:H.any}],bt=[{name:"font-family",type:q.fontFamily,triggersBounds:H.any},{name:"font-style",type:q.fontStyle,triggersBounds:H.any},{name:"font-weight",type:q.fontWeight,triggersBounds:H.any},{name:"font-size",type:q.size,triggersBounds:H.any},{name:"text-transform",type:q.textTransform,triggersBounds:H.any},{name:"text-wrap",type:q.textWrap,triggersBounds:H.any},{name:"text-overflow-wrap",type:q.textOverflowWrap,triggersBounds:H.any},{name:"text-max-width",type:q.size,triggersBounds:H.any},{name:"text-outline-width",type:q.size,triggersBounds:H.any},{name:"line-height",type:q.positiveNumber,triggersBounds:H.any}],pt=[{name:"text-valign",type:q.valign,triggersBounds:H.any},{name:"text-halign",type:q.halign,triggersBounds:H.any},{name:"color",type:q.color},{name:"text-outline-color",type:q.color},{name:"text-outline-opacity",type:q.zeroOneNumber},{name:"text-background-color",type:q.color},{name:"text-background-opacity",type:q.zeroOneNumber},{name:"text-background-padding",type:q.size,triggersBounds:H.any},{name:"text-border-opacity",type:q.zeroOneNumber},{name:"text-border-color",type:q.color},{name:"text-border-width",type:q.size,triggersBounds:H.any},{name:"text-border-style",type:q.borderStyle,triggersBounds:H.any},{name:"text-background-shape",type:q.textBackgroundShape,triggersBounds:H.any},{name:"text-justification",type:q.justification}],_t=[{name:"events",type:q.bool,triggersZOrder:H.any},{name:"text-events",type:q.bool,triggersZOrder:H.any}],St=[{name:"display",type:q.display,triggersZOrder:H.any,triggersBounds:H.any,triggersBoundsOfConnectedEdges:!0},{name:"visibility",type:q.visibility,triggersZOrder:H.any},{name:"opacity",type:q.zeroOneNumber,triggersZOrder:H.zeroNonZero},{name:"text-opacity",type:q.zeroOneNumber},{name:"min-zoomed-font-size",type:q.size},{name:"z-compound-depth",type:q.zCompoundDepth,triggersZOrder:H.any},{name:"z-index-compare",type:q.zIndexCompare,triggersZOrder:H.any},{name:"z-index",type:q.number,triggersZOrder:H.any}],Et=[{name:"overlay-padding",type:q.size,triggersBounds:H.any},{name:"overlay-color",type:q.color},{name:"overlay-opacity",type:q.zeroOneNumber,triggersBounds:H.zeroNonZero},{name:"overlay-shape",type:q.overlayShape,triggersBounds:H.any}],Nt=[{name:"underlay-padding",type:q.size,triggersBounds:H.any},{name:"underlay-color",type:q.color},{name:"underlay-opacity",type:q.zeroOneNumber,triggersBounds:H.zeroNonZero},{name:"underlay-shape",type:q.overlayShape,triggersBounds:H.any}],Pt=[{name:"transition-property",type:q.propList},{name:"transition-duration",type:q.time},{name:"transition-delay",type:q.time},{name:"transition-timing-function",type:q.easing}],qt=function(mr,Sr){return Sr.value==="label"?-mr.poolIndex():Sr.pfValue},re=[{name:"height",type:q.nodeSize,triggersBounds:H.any,hashOverride:qt},{name:"width",type:q.nodeSize,triggersBounds:H.any,hashOverride:qt},{name:"shape",type:q.nodeShape,triggersBounds:H.any},{name:"shape-polygon-points",type:q.polygonPointList,triggersBounds:H.any},{name:"background-color",type:q.color},{name:"background-fill",type:q.fill},{name:"background-opacity",type:q.zeroOneNumber},{name:"background-blacken",type:q.nOneOneNumber},{name:"background-gradient-stop-colors",type:q.colors},{name:"background-gradient-stop-positions",type:q.percentages},{name:"background-gradient-direction",type:q.gradientDirection},{name:"padding",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"padding-relative-to",type:q.paddingRelativeTo,triggersBounds:H.any},{name:"bounds-expansion",type:q.boundsExpansion,triggersBounds:H.any}],ee=[{name:"border-color",type:q.color},{name:"border-opacity",type:q.zeroOneNumber},{name:"border-width",type:q.size,triggersBounds:H.any},{name:"border-style",type:q.borderStyle}],Ut=[{name:"outline-color",type:q.color},{name:"outline-opacity",type:q.zeroOneNumber},{name:"outline-width",type:q.size,triggersBounds:H.any},{name:"outline-style",type:q.borderStyle},{name:"outline-offset",type:q.size,triggersBounds:H.any}],de=[{name:"background-image",type:q.urls},{name:"background-image-crossorigin",type:q.bgCrossOrigin},{name:"background-image-opacity",type:q.zeroOneNumbers},{name:"background-image-containment",type:q.bgContainment},{name:"background-image-smoothing",type:q.bools},{name:"background-position-x",type:q.bgPos},{name:"background-position-y",type:q.bgPos},{name:"background-width-relative-to",type:q.bgRelativeTo},{name:"background-height-relative-to",type:q.bgRelativeTo},{name:"background-repeat",type:q.bgRepeat},{name:"background-fit",type:q.bgFit},{name:"background-clip",type:q.bgClip},{name:"background-width",type:q.bgWH},{name:"background-height",type:q.bgWH},{name:"background-offset-x",type:q.bgPos},{name:"background-offset-y",type:q.bgPos}],Yt=[{name:"position",type:q.position,triggersBounds:H.any},{name:"compound-sizing-wrt-labels",type:q.compoundIncludeLabels,triggersBounds:H.any},{name:"min-width",type:q.size,triggersBounds:H.any},{name:"min-width-bias-left",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"min-width-bias-right",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"min-height",type:q.size,triggersBounds:H.any},{name:"min-height-bias-top",type:q.sizeMaybePercent,triggersBounds:H.any},{name:"min-height-bias-bottom",type:q.sizeMaybePercent,triggersBounds:H.any}],Ee=[{name:"line-style",type:q.lineStyle},{name:"line-color",type:q.color},{name:"line-fill",type:q.fill},{name:"line-cap",type:q.lineCap},{name:"line-opacity",type:q.zeroOneNumber},{name:"line-dash-pattern",type:q.numbers},{name:"line-dash-offset",type:q.number},{name:"line-gradient-stop-colors",type:q.colors},{name:"line-gradient-stop-positions",type:q.percentages},{name:"curve-style",type:q.curveStyle,triggersBounds:H.any,triggersBoundsOfParallelBeziers:!0},{name:"haystack-radius",type:q.zeroOneNumber,triggersBounds:H.any},{name:"source-endpoint",type:q.edgeEndpoint,triggersBounds:H.any},{name:"target-endpoint",type:q.edgeEndpoint,triggersBounds:H.any},{name:"control-point-step-size",type:q.size,triggersBounds:H.any},{name:"control-point-distances",type:q.bidirectionalSizes,triggersBounds:H.any},{name:"control-point-weights",type:q.numbers,triggersBounds:H.any},{name:"segment-distances",type:q.bidirectionalSizes,triggersBounds:H.any},{name:"segment-weights",type:q.numbers,triggersBounds:H.any},{name:"taxi-turn",type:q.bidirectionalSizeMaybePercent,triggersBounds:H.any},{name:"taxi-turn-min-distance",type:q.size,triggersBounds:H.any},{name:"taxi-direction",type:q.axisDirection,triggersBounds:H.any},{name:"edge-distances",type:q.edgeDistances,triggersBounds:H.any},{name:"arrow-scale",type:q.positiveNumber,triggersBounds:H.any},{name:"loop-direction",type:q.angle,triggersBounds:H.any},{name:"loop-sweep",type:q.angle,triggersBounds:H.any},{name:"source-distance-from-node",type:q.size,triggersBounds:H.any},{name:"target-distance-from-node",type:q.size,triggersBounds:H.any}],Te=[{name:"ghost",type:q.bool,triggersBounds:H.any},{name:"ghost-offset-x",type:q.bidirectionalSize,triggersBounds:H.any},{name:"ghost-offset-y",type:q.bidirectionalSize,triggersBounds:H.any},{name:"ghost-opacity",type:q.zeroOneNumber}],ie=[{name:"selection-box-color",type:q.color},{name:"selection-box-opacity",type:q.zeroOneNumber},{name:"selection-box-border-color",type:q.color},{name:"selection-box-border-width",type:q.size},{name:"active-bg-color",type:q.color},{name:"active-bg-opacity",type:q.zeroOneNumber},{name:"active-bg-size",type:q.size},{name:"outside-texture-bg-color",type:q.color},{name:"outside-texture-bg-opacity",type:q.zeroOneNumber}],ze=[];m1.pieBackgroundN=16,ze.push({name:"pie-size",type:q.sizeMaybePercent});for(var me=1;me<=m1.pieBackgroundN;me++)ze.push({name:"pie-"+me+"-background-color",type:q.color}),ze.push({name:"pie-"+me+"-background-size",type:q.percent}),ze.push({name:"pie-"+me+"-background-opacity",type:q.zeroOneNumber});var yn=[],nn=m1.arrowPrefixes=["source","mid-source","target","mid-target"];[{name:"arrow-shape",type:q.arrowShape,triggersBounds:H.any},{name:"arrow-color",type:q.color},{name:"arrow-fill",type:q.arrowFill},{name:"arrow-width",type:q.arrowWidth}].forEach(function(cr){nn.forEach(function(mr){var Sr=mr+"-"+cr.name,gi=cr.type,ss=cr.triggersBounds;yn.push({name:Sr,type:gi,triggersBounds:ss})})},{});var qe=m1.properties=[].concat(_t,Pt,St,Et,Nt,Te,pt,bt,W,Z,st,re,ee,Ut,de,ze,Yt,Ee,yn,ie),Tn=m1.propertyGroups={behavior:_t,transition:Pt,visibility:St,overlay:Et,underlay:Nt,ghost:Te,commonLabel:pt,labelDimensions:bt,mainLabel:W,sourceLabel:Z,targetLabel:st,nodeBody:re,nodeBorder:ee,nodeOutline:Ut,backgroundImage:de,pie:ze,compound:Yt,edgeLine:Ee,edgeArrow:yn,core:ie},Xn=m1.propertyGroupNames={},lr=m1.propertyGroupKeys=Object.keys(Tn);lr.forEach(function(cr){Xn[cr]=Tn[cr].map(function(mr){return mr.name}),Tn[cr].forEach(function(mr){return mr.groupKey=cr})});var Sn=m1.aliases=[{name:"content",pointsTo:"label"},{name:"control-point-distance",pointsTo:"control-point-distances"},{name:"control-point-weight",pointsTo:"control-point-weights"},{name:"edge-text-rotation",pointsTo:"text-rotation"},{name:"padding-left",pointsTo:"padding"},{name:"padding-right",pointsTo:"padding"},{name:"padding-top",pointsTo:"padding"},{name:"padding-bottom",pointsTo:"padding"}];m1.propertyNames=qe.map(function(cr){return cr.name});for(var or=0;or=7&&p[0]==="d"&&(W=new RegExp(j.data.regex).exec(p))){if(x)return!1;var st=j.data;return{name:y,value:W,strValue:""+p,mapped:st,field:W[1],bypass:x}}else if(p.length>=10&&p[0]==="m"&&(Z=new RegExp(j.mapData.regex).exec(p))){if(x||q.multiple)return!1;var bt=j.mapData;if(!(q.color||q.number))return!1;var pt=this.parse(y,Z[4]);if(!pt||pt.mapped)return!1;var _t=this.parse(y,Z[5]);if(!_t||_t.mapped)return!1;if(pt.pfValue===_t.pfValue||pt.strValue===_t.strValue)return Gc("`"+y+": "+p+"` is not a valid mapper because the output range is zero; converting to `"+y+": "+pt.strValue+"`"),this.parse(y,pt.strValue);if(q.color){var St=pt.value,Et=_t.value,Nt=St[0]===Et[0]&&St[1]===Et[1]&&St[2]===Et[2]&&(St[3]===Et[3]||(St[3]==null||St[3]===1)&&(Et[3]==null||Et[3]===1));if(Nt)return!1}return{name:y,value:Z,strValue:""+p,mapped:bt,field:Z[1],fieldMin:parseFloat(Z[2]),fieldMax:parseFloat(Z[3]),valueMin:pt.value,valueMax:_t.value,bypass:x}}}if(q.multiple&&C!=="multiple"){var Pt;if(H?Pt=p.split(/\s+/):rt(p)?Pt=p:Pt=[p],q.evenMultiple&&Pt.length%2!==0)return null;for(var qt=[],re=[],ee=[],Ut="",de=!1,Yt=0;Yt0?" ":"")+Ee.strValue}return q.validate&&!q.validate(qt,re)?null:q.singleEnum&&de?qt.length===1&&mt(qt[0])?{name:y,value:qt[0],strValue:qt[0],bypass:x}:null:{name:y,value:qt,pfValue:ee,strValue:Ut,bypass:x,units:re}}var Te=function(){for(var mr=0;mrq.max||q.strictMax&&p===q.max))return null;var nn={name:y,value:p,strValue:""+p+(ie||""),units:ie,bypass:x};return q.unitless||ie!=="px"&&ie!=="em"?nn.pfValue=p:nn.pfValue=ie==="px"||!ie?p:this.getEmSizeInPixels()*p,(ie==="ms"||ie==="s")&&(nn.pfValue=ie==="ms"?p:1e3*p),(ie==="deg"||ie==="rad")&&(nn.pfValue=ie==="rad"?p:lQ(p)),ie==="%"&&(nn.pfValue=p/100),nn}else if(q.propList){var qe=[],Tn=""+p;if(Tn!=="none"){for(var Xn=Tn.split(/\s*,\s*|\s+/),lr=0;lr0&&j>0&&!isNaN(C.w)&&!isNaN(C.h)&&C.w>0&&C.h>0){H=Math.min((N-2*x)/C.w,(j-2*x)/C.h),H=H>this._private.maxZoom?this._private.maxZoom:H,H=H=C.minZoom&&(C.maxZoom=x),this},minZoom:function(p){return p===void 0?this._private.minZoom:this.zoomRange({min:p})},maxZoom:function(p){return p===void 0?this._private.maxZoom:this.zoomRange({max:p})},getZoomedViewport:function(p){var x=this._private,C=x.pan,L=x.zoom,O,N,j=!1;if(x.zoomingEnabled||(j=!0),Q(p)?N=p:it(p)&&(N=p.level,p.position!=null?O=W9(p.position,L,C):p.renderedPosition!=null&&(O=p.renderedPosition),O!=null&&!x.panningEnabled&&(j=!0)),N=N>x.maxZoom?x.maxZoom:N,N=Nx.maxZoom||!x.zoomingEnabled?N=!0:(x.zoom=H,O.push("zoom"))}if(L&&(!N||!p.cancelOnFailedZoom)&&x.panningEnabled){var q=p.pan;Q(q.x)&&(x.pan.x=q.x,j=!1),Q(q.y)&&(x.pan.y=q.y,j=!1),j||O.push("pan")}return O.length>0&&(O.push("viewport"),this.emit(O.join(" ")),this.notify("viewport")),this},center:function(p){var x=this.getCenterPan(p);return x&&(this._private.pan=x,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(p,x){if(this._private.panningEnabled){if(mt(p)){var C=p;p=this.mutableElements().filter(C)}else yt(p)||(p=this.mutableElements());if(p.length!==0){var L=p.boundingBox(),O=this.width(),N=this.height();x=x===void 0?this._private.zoom:x;var j={x:(O-x*(L.x1+L.x2))/2,y:(N-x*(L.y1+L.y2))/2};return j}}},reset:function(){return!this._private.panningEnabled||!this._private.zoomingEnabled?this:(this.viewport({pan:{x:0,y:0},zoom:1}),this)},invalidateSize:function(){this._private.sizeCache=null},size:function(){var p=this._private,x=p.container,C=this;return p.sizeCache=p.sizeCache||(x?function(){var L=C.window().getComputedStyle(x),O=function(j){return parseFloat(L.getPropertyValue(j))};return{width:x.clientWidth-O("padding-left")-O("padding-right"),height:x.clientHeight-O("padding-top")-O("padding-bottom")}}():{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var p=this._private.pan,x=this._private.zoom,C=this.renderedExtent(),L={x1:(C.x1-p.x)/x,x2:(C.x2-p.x)/x,y1:(C.y1-p.y)/x,y2:(C.y2-p.y)/x};return L.w=L.x2-L.x1,L.h=L.y2-L.y1,L},renderedExtent:function(){var p=this.width(),x=this.height();return{x1:0,y1:0,x2:p,y2:x,w:p,h:x}},multiClickDebounceTime:function(p){if(p)this._private.multiClickDebounceTime=p;else return this._private.multiClickDebounceTime;return this}};T4.centre=T4.center,T4.autolockNodes=T4.autolock,T4.autoungrabifyNodes=T4.autoungrabify;var Z8={data:Kc.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:Kc.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:Kc.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:Kc.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Z8.attr=Z8.data,Z8.removeAttr=Z8.removeData;var tE=function(p){var x=this;p=we({},p);var C=p.container;C&&!K(C)&&K(C[0])&&(C=C[0]);var L=C?C._cyreg:null;L=L||{},L&&L.cy&&(L.cy.destroy(),L={});var O=L.readies=L.readies||[];C&&(C._cyreg=L),L.cy=x;var N=B!==void 0&&C!==void 0&&!p.headless,j=p;j.layout=we({name:N?"grid":"null"},j.layout),j.renderer=we({name:N?"canvas":"null"},j.renderer);var H=function(pt,_t,St){return _t!==void 0?_t:St!==void 0?St:pt},q=this._private={container:C,ready:!1,options:j,elements:new w1(this),listeners:[],aniEles:new w1(this),data:j.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:H(!0,j.zoomingEnabled),userZoomingEnabled:H(!0,j.userZoomingEnabled),panningEnabled:H(!0,j.panningEnabled),userPanningEnabled:H(!0,j.userPanningEnabled),boxSelectionEnabled:H(!0,j.boxSelectionEnabled),autolock:H(!1,j.autolock,j.autolockNodes),autoungrabify:H(!1,j.autoungrabify,j.autoungrabifyNodes),autounselectify:H(!1,j.autounselectify),styleEnabled:j.styleEnabled===void 0?N:j.styleEnabled,zoom:Q(j.zoom)?j.zoom:1,pan:{x:it(j.pan)&&Q(j.pan.x)?j.pan.x:0,y:it(j.pan)&&Q(j.pan.y)?j.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:H(250,j.multiClickDebounceTime)};this.createEmitter(),this.selectionType(j.selectionType),this.zoomRange({min:j.minZoom,max:j.maxZoom});var W=function(pt,_t){var St=pt.some(Gt);if(St)return e6.all(pt).then(_t);_t(pt)};q.styleEnabled&&x.setStyle([]);var Z=we({},j,j.renderer);x.initRenderer(Z);var st=function(pt,_t,St){x.notifications(!1);var Et=x.mutableElements();Et.length>0&&Et.remove(),pt!=null&&(it(pt)||rt(pt))&&x.add(pt),x.one("layoutready",function(Pt){x.notifications(!0),x.emit(Pt),x.one("load",_t),x.emitAndNotify("load")}).one("layoutstop",function(){x.one("done",St),x.emit("done")});var Nt=we({},x._private.options.layout);Nt.eles=x.elements(),x.layout(Nt).run()};W([j.style,j.elements],function(bt){var pt=bt[0],_t=bt[1];q.styleEnabled&&x.style().append(pt),st(_t,function(){x.startAnimationLoop(),q.ready=!0,ct(j.ready)&&x.on("ready",j.ready);for(var St=0;St0,H=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()}),q;if(yt(p.roots))q=p.roots;else if(rt(p.roots)){for(var W=[],Z=0;Z0;){var yn=me(),nn=Ee(yn,ie);if(nn)yn.outgoers().filter(function(vi){return vi.isNode()&&C.has(vi)}).forEach(ze);else if(nn===null){Gc("Detected double maximal shift for node `"+yn.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}Yt();var qe=0;if(p.avoidOverlap)for(var Tn=0;Tn0&&Et[0].length<=3?pa/2:0),G=2*Math.PI/Et[ks].length*as;return ks===0&&Et[0].length===1&&(Kn=1),{x:gi.x+Kn*Math.cos(G),y:gi.y+Kn*Math.sin(G)}}else{var mo={x:gi.x+(as+1-(Es+1)/2)*eo,y:(ks+1)*Ta};return mo}};return C.nodes().layoutPositions(this,p,na),this};var yet={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function lj(y){this.options=we({},yet,y)}lj.prototype.run=function(){var y=this.options,p=y,x=y.cy,C=p.eles,L=p.counterclockwise!==void 0?!p.counterclockwise:p.clockwise,O=C.nodes().not(":parent");p.sort&&(O=O.sort(p.sort));for(var N=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()}),j={x:N.x1+N.w/2,y:N.y1+N.h/2},H=p.sweep===void 0?2*Math.PI-2*Math.PI/O.length:p.sweep,q=H/Math.max(1,O.length-1),W,Z=0,st=0;st1&&p.avoidOverlap){Z*=1.75;var Et=Math.cos(q)-Math.cos(0),Nt=Math.sin(q)-Math.sin(0),Pt=Math.sqrt(Z*Z/(Et*Et+Nt*Nt));W=Math.max(Pt,W)}var qt=function(ee,Ut){var de=p.startAngle+Ut*q*(L?1:-1),Yt=W*Math.cos(de),Ee=W*Math.sin(de),Te={x:j.x+Yt,y:j.y+Ee};return Te};return C.nodes().layoutPositions(this,p,qt),this};var xet={fit:!0,padding:30,startAngle:3/2*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(p){return p.degree()},levelWidth:function(p){return p.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function hj(y){this.options=we({},xet,y)}hj.prototype.run=function(){for(var y=this.options,p=y,x=p.counterclockwise!==void 0?!p.counterclockwise:p.clockwise,C=y.cy,L=p.eles,O=L.nodes().not(":parent"),N=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:C.width(),h:C.height()}),j={x:N.x1+N.w/2,y:N.y1+N.h/2},H=[],q=0,W=0;W0){var re=Math.abs(Nt[0].value-qt.value);re>=St&&(Nt=[],Et.push(Nt))}Nt.push(qt)}var ee=q+p.minNodeSpacing;if(!p.avoidOverlap){var Ut=Et.length>0&&Et[0].length>1,de=Math.min(N.w,N.h)/2-ee,Yt=de/(Et.length+Ut?1:0);ee=Math.min(ee,Yt)}for(var Ee=0,Te=0;Te1&&p.avoidOverlap){var yn=Math.cos(me)-Math.cos(0),nn=Math.sin(me)-Math.sin(0),qe=Math.sqrt(ee*ee/(yn*yn+nn*nn));Ee=Math.max(qe,Ee)}ie.r=Ee,Ee+=ee}if(p.equidistant){for(var Tn=0,Xn=0,lr=0;lr=y.numIter||(Det(C,y),C.temperature=C.temperature*y.coolingFactor,C.temperature=y.animationThreshold&&O(),g1(Z)}};W()}else{for(;q;)q=N(H),H++;gj(C,y),j()}return this},_C.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},_C.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Eet=function(p,x,C){for(var L=C.eles.edges(),O=C.eles.nodes(),N=v0(C.boundingBox?C.boundingBox:{x1:0,y1:0,w:p.width(),h:p.height()}),j={isCompound:p.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:O.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:L.size(),temperature:C.initialTemp,clientWidth:N.w,clientHeight:N.h,boundingBox:N},H=C.eles.components(),q={},W=0;W0){j.graphSet.push(de);for(var W=0;WL.count?0:L.graph},Cet=function y(p,x,C,L){var O=L.graphSet[C];if(-10)var Z=L.nodeOverlap*W,st=Math.sqrt(j*j+H*H),bt=Z*j/st,pt=Z*H/st;else var _t=AC(p,j,H),St=AC(x,-1*j,-1*H),Et=St.x-_t.x,Nt=St.y-_t.y,Pt=Et*Et+Nt*Nt,st=Math.sqrt(Pt),Z=(p.nodeRepulsion+x.nodeRepulsion)/Pt,bt=Z*Et/st,pt=Z*Nt/st;p.isLocked||(p.offsetX-=bt,p.offsetY-=pt),x.isLocked||(x.offsetX+=bt,x.offsetY+=pt)}},Oet=function(p,x,C,L){if(C>0)var O=p.maxX-x.minX;else var O=x.maxX-p.minX;if(L>0)var N=p.maxY-x.minY;else var N=x.maxY-p.minY;return O>=0&&N>=0?Math.sqrt(O*O+N*N):0},AC=function(p,x,C){var L=p.positionX,O=p.positionY,N=p.height||1,j=p.width||1,H=C/x,q=N/j,W={};return x===0&&0C?(W.x=L,W.y=O+N/2,W):0x&&-1*q<=H&&H<=q?(W.x=L-j/2,W.y=O-j*C/2/x,W):0=q)?(W.x=L+N*x/2/C,W.y=O+N/2,W):(0>C&&(H<=-1*q||H>=q)&&(W.x=L-N*x/2/C,W.y=O-N/2),W)},Net=function(p,x){for(var C=0;CC){var St=x.gravity*bt/_t,Et=x.gravity*pt/_t;st.offsetX+=St,st.offsetY+=Et}}}}},Fet=function(p,x){var C=[],L=0,O=-1;for(C.push.apply(C,p.graphSet[0]),O+=p.graphSet[0].length;L<=O;){var N=C[L++],j=p.idToIndex[N],H=p.layoutNodes[j],q=H.children;if(0C)var O={x:C*p/L,y:C*x/L};else var O={x:p,y:x};return O},jet=function y(p,x){var C=p.parentId;if(C!=null){var L=x.layoutNodes[x.idToIndex[C]],O=!1;if((L.maxX==null||p.maxX+L.padRight>L.maxX)&&(L.maxX=p.maxX+L.padRight,O=!0),(L.minX==null||p.minX-L.padLeftL.maxY)&&(L.maxY=p.maxY+L.padBottom,O=!0),(L.minY==null||p.minY-L.padTopEt&&(pt+=St+x.componentSpacing,bt=0,_t=0,St=0)}}},$et={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(p){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(p,x){return!0},ready:void 0,stop:void 0,transform:function(p,x){return x}};function pj(y){this.options=we({},$et,y)}pj.prototype.run=function(){var y=this.options,p=y,x=y.cy,C=p.eles,L=C.nodes().not(":parent");p.sort&&(L=L.sort(p.sort));var O=v0(p.boundingBox?p.boundingBox:{x1:0,y1:0,w:x.width(),h:x.height()});if(O.h===0||O.w===0)C.nodes().layoutPositions(this,p,function(pr){return{x:O.x1,y:O.y1}});else{var N=L.size(),j=Math.sqrt(N*O.h/O.w),H=Math.round(j),q=Math.round(O.w/O.h*j),W=function(kr){if(kr==null)return Math.min(H,q);var wr=Math.min(H,q);wr==H?H=kr:q=kr},Z=function(kr){if(kr==null)return Math.max(H,q);var wr=Math.max(H,q);wr==H?H=kr:q=kr},st=p.rows,bt=p.cols!=null?p.cols:p.columns;if(st!=null&&bt!=null)H=st,q=bt;else if(st!=null&&bt==null)H=st,q=Math.ceil(N/H);else if(st==null&&bt!=null)q=bt,H=Math.ceil(N/q);else if(q*H>N){var pt=W(),_t=Z();(pt-1)*_t>=N?W(pt-1):(_t-1)*pt>=N&&Z(_t-1)}else for(;q*H=N?Z(Et+1):W(St+1)}var Nt=O.w/q,Pt=O.h/H;if(p.condense&&(Nt=0,Pt=0),p.avoidOverlap)for(var qt=0;qt=q&&(yn=0,me++)},qe={},Tn=0;Tn(yn=EQ(y,p,nn[qe],nn[qe+1],nn[qe+2],nn[qe+3])))return St(Ut,yn),!0}else if(Yt.edgeType==="bezier"||Yt.edgeType==="multibezier"||Yt.edgeType==="self"||Yt.edgeType==="compound"){for(var nn=Yt.allpts,qe=0;qe+5(yn=kQ(y,p,nn[qe],nn[qe+1],nn[qe+2],nn[qe+3],nn[qe+4],nn[qe+5])))return St(Ut,yn),!0}for(var Tn=Tn||de.source,Xn=Xn||de.target,lr=L.getArrowWidth(Ee,Te),Sn=[{name:"source",x:Yt.arrowStartX,y:Yt.arrowStartY,angle:Yt.srcArrowAngle},{name:"target",x:Yt.arrowEndX,y:Yt.arrowEndY,angle:Yt.tgtArrowAngle},{name:"mid-source",x:Yt.midX,y:Yt.midY,angle:Yt.midsrcArrowAngle},{name:"mid-target",x:Yt.midX,y:Yt.midY,angle:Yt.midtgtArrowAngle}],qe=0;qe0&&(Et(Tn),Et(Xn))}function Pt(Ut,de,Yt){return fb(Ut,de,Yt)}function qt(Ut,de){var Yt=Ut._private,Ee=st,Te;de?Te=de+"-":Te="",Ut.boundingBox();var ie=Yt.labelBounds[de||"main"],ze=Ut.pstyle(Te+"label").value,me=Ut.pstyle("text-events").strValue==="yes";if(!(!me||!ze)){var yn=Pt(Yt.rscratch,"labelX",de),nn=Pt(Yt.rscratch,"labelY",de),qe=Pt(Yt.rscratch,"labelAngle",de),Tn=Ut.pstyle(Te+"text-margin-x").pfValue,Xn=Ut.pstyle(Te+"text-margin-y").pfValue,lr=ie.x1-Ee-Tn,Sn=ie.x2+Ee-Tn,or=ie.y1-Ee-Xn,pr=ie.y2+Ee-Xn;if(qe){var kr=Math.cos(qe),wr=Math.sin(qe),Cr=function(na,vi){return na=na-yn,vi=vi-nn,{x:na*kr-vi*wr+yn,y:na*wr+vi*kr+nn}},$n=Cr(lr,or),cr=Cr(lr,pr),mr=Cr(Sn,or),Sr=Cr(Sn,pr),gi=[$n.x+Tn,$n.y+Xn,mr.x+Tn,mr.y+Xn,Sr.x+Tn,Sr.y+Xn,cr.x+Tn,cr.y+Xn];if(y0(y,p,gi))return St(Ut),!0}else if(Qx(ie,y,p))return St(Ut),!0}}for(var re=N.length-1;re>=0;re--){var ee=N[re];ee.isNode()?Et(ee)||qt(ee):Nt(ee)||qt(ee)||qt(ee,"source")||qt(ee,"target")}return j},C4.getAllInBox=function(y,p,x,C){var L=this.getCachedZSortedEles().interactive,O=[],N=Math.min(y,x),j=Math.max(y,x),H=Math.min(p,C),q=Math.max(p,C);y=N,x=j,p=H,C=q;for(var W=v0({x1:y,y1:p,x2:x,y2:C}),Z=0;Z0?Math.max(hr-us,0):Math.min(hr+us,0)},ze=ie(Ee,de),me=ie(Te,Yt),yn=!1;Nt===q?Et=Math.abs(ze)>Math.abs(me)?L:C:Nt===H||Nt===j?(Et=C,yn=!0):(Nt===O||Nt===N)&&(Et=L,yn=!0);var nn=Et===C,qe=nn?me:ze,Tn=nn?Te:Ee,Xn=FB(Tn),lr=!1;!(yn&&(qt||ee))&&(Nt===j&&Tn<0||Nt===H&&Tn>0||Nt===O&&Tn>0||Nt===N&&Tn<0)&&(Xn*=-1,qe=Xn*Math.abs(qe),lr=!0);var Sn;if(qt){var or=re<0?1+re:re;Sn=or*qe}else{var pr=re<0?qe:0;Sn=pr+re*Xn}var kr=function(hr){return Math.abs(hr)=Math.abs(qe)},wr=kr(Sn),Cr=kr(Math.abs(qe)-Math.abs(Sn)),$n=wr||Cr;if($n&&!lr)if(nn){var cr=Math.abs(Tn)<=st/2,mr=Math.abs(Ee)<=bt/2;if(cr){var Sr=(W.x1+W.x2)/2,gi=W.y1,ss=W.y2;x.segpts=[Sr,gi,Sr,ss]}else if(mr){var na=(W.y1+W.y2)/2,vi=W.x1,si=W.x2;x.segpts=[vi,na,si,na]}else x.segpts=[W.x1,W.y2]}else{var Qi=Math.abs(Tn)<=Z/2,ks=Math.abs(Te)<=pt/2;if(Qi){var as=(W.y1+W.y2)/2,Es=W.x1,eo=W.x2;x.segpts=[Es,as,eo,as]}else if(ks){var Ta=(W.x1+W.x2)/2,pa=W.y1,mo=W.y2;x.segpts=[Ta,pa,Ta,mo]}else x.segpts=[W.x2,W.y1]}else if(nn){var Kn=W.y1+Sn+(St?st/2*Xn:0),G=W.x1,Vn=W.x2;x.segpts=[G,Kn,Vn,Kn]}else{var gr=W.x1+Sn+(St?Z/2*Xn:0),nr=W.y1,Be=W.y2;x.segpts=[gr,nr,gr,Be]}},Q1.tryToCorrectInvalidPoints=function(y,p){var x=y._private.rscratch;if(x.edgeType==="bezier"){var C=p.srcPos,L=p.tgtPos,O=p.srcW,N=p.srcH,j=p.tgtW,H=p.tgtH,q=p.srcShape,W=p.tgtShape,Z=!Q(x.startX)||!Q(x.startY),st=!Q(x.arrowStartX)||!Q(x.arrowStartY),bt=!Q(x.endX)||!Q(x.endY),pt=!Q(x.arrowEndX)||!Q(x.arrowEndY),_t=3,St=this.getArrowWidth(y.pstyle("width").pfValue,y.pstyle("arrow-scale").value)*this.arrowShapeWidth,Et=_t*St,Nt=w4({x:x.ctrlpts[0],y:x.ctrlpts[1]},{x:x.startX,y:x.startY}),Pt=Ntme.poolIndex()){var yn=ze;ze=me,me=yn}var nn=Yt.srcPos=ze.position(),qe=Yt.tgtPos=me.position(),Tn=Yt.srcW=ze.outerWidth(),Xn=Yt.srcH=ze.outerHeight(),lr=Yt.tgtW=me.outerWidth(),Sn=Yt.tgtH=me.outerHeight(),or=Yt.srcShape=x.nodeShapes[p.getNodeShape(ze)],pr=Yt.tgtShape=x.nodeShapes[p.getNodeShape(me)];Yt.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var kr=0;kr0){var cr=O,mr=m4(cr,Yx(x)),Sr=m4(cr,Yx($n)),gi=mr;if(Sr2){var ss=m4(cr,{x:$n[2],y:$n[3]});ss0){var G=N,Vn=m4(G,Yx(x)),gr=m4(G,Yx(Kn)),nr=Vn;if(gr2){var Be=m4(G,{x:Kn[2],y:Kn[3]});Be=pt||Ut){St={cp:qt,segment:ee};break}}if(St)break}var de=St.cp,Yt=St.segment,Ee=(pt-Et)/Yt.length,Te=Yt.t1-Yt.t0,ie=bt?Yt.t0+Te*Ee:Yt.t1-Te*Ee;ie=P8(0,ie,1),p=Xx(de.p0,de.p1,de.p2,ie),st=Uet(de.p0,de.p1,de.p2,ie);break}case"straight":case"segments":case"haystack":{for(var ze=0,me,yn,nn,qe,Tn=C.allpts.length,Xn=0;Xn+3=pt));Xn+=2);var lr=pt-yn,Sn=lr/me;Sn=P8(0,Sn,1),p=fQ(nn,qe,Sn),st=DC(nn,qe);break}}N("labelX",Z,p.x),N("labelY",Z,p.y),N("labelAutoAngle",Z,st)}};q("source"),q("target"),this.applyLabelDimensions(y)}},j2.applyLabelDimensions=function(y){this.applyPrefixedLabelDimensions(y),y.isEdge()&&(this.applyPrefixedLabelDimensions(y,"source"),this.applyPrefixedLabelDimensions(y,"target"))},j2.applyPrefixedLabelDimensions=function(y,p){var x=y._private,C=this.getLabelText(y,p),L=this.calculateLabelDimensions(y,C),O=y.pstyle("line-height").pfValue,N=y.pstyle("text-wrap").strValue,j=fb(x.rscratch,"labelWrapCachedLines",p)||[],H=N!=="wrap"?1:Math.max(j.length,1),q=L.height/H,W=q*O,Z=L.width,st=L.height+(H-1)*(O-1)*q;cy(x.rstyle,"labelWidth",p,Z),cy(x.rscratch,"labelWidth",p,Z),cy(x.rstyle,"labelHeight",p,st),cy(x.rscratch,"labelHeight",p,st),cy(x.rscratch,"labelLineHeight",p,W)},j2.getLabelText=function(y,p){var x=y._private,C=p?p+"-":"",L=y.pstyle(C+"label").strValue,O=y.pstyle("text-transform").value,N=function(lr,Sn){return Sn?(cy(x.rscratch,lr,p,Sn),Sn):fb(x.rscratch,lr,p)};if(!L)return"";O=="none"||(O=="uppercase"?L=L.toUpperCase():O=="lowercase"&&(L=L.toLowerCase()));var j=y.pstyle("text-wrap").value;if(j==="wrap"){var H=N("labelKey");if(H!=null&&N("labelWrapKey")===H)return N("labelWrapCachedText");for(var q="​",W=L.split(` +`),Z=y.pstyle("text-max-width").pfValue,st=y.pstyle("text-overflow-wrap").value,bt=st==="anywhere",pt=[],_t=/[\s\u200b]+/,St=bt?"":" ",Et=0;EtZ){for(var ee=Nt.split(_t),Ut="",de=0;deze)break;me+=L[qe],qe===L.length-1&&(nn=!0)}return nn||(me+=yn),me}return L},j2.getLabelJustification=function(y){var p=y.pstyle("text-justification").strValue,x=y.pstyle("text-halign").strValue;if(p==="auto")if(y.isNode())switch(x){case"left":return"right";case"right":return"left";default:return"center"}else return"center";else return p},j2.calculateLabelDimensions=function(y,p){var x=this,C=Nd(p,y._private.labelDimsKey),L=x.labelDimCache||(x.labelDimCache=[]),O=L[C];if(O!=null)return O;var N=0,j=y.pstyle("font-style").strValue,H=y.pstyle("font-size").pfValue,q=y.pstyle("font-family").strValue,W=y.pstyle("font-weight").strValue,Z=this.labelCalcCanvas,st=this.labelCalcCanvasContext;if(!Z){Z=this.labelCalcCanvas=document.createElement("canvas"),st=this.labelCalcCanvasContext=Z.getContext("2d");var bt=Z.style;bt.position="absolute",bt.left="-9999px",bt.top="-9999px",bt.zIndex="-1",bt.visibility="hidden",bt.pointerEvents="none"}st.font="".concat(j," ").concat(W," ").concat(H,"px ").concat(q);for(var pt=0,_t=0,St=p.split(` +`),Et=0;Et1&&arguments[1]!==void 0?arguments[1]:!0;if(p.merge(N),j)for(var H=0;H=y.desktopTapThreshold2}var cm=L(G);Sl&&(y.hoverData.tapholdCancelled=!0);var py=function(){var $2=y.hoverData.dragDelta=y.hoverData.dragDelta||[];$2.length===0?($2.push(no[0]),$2.push(no[1])):($2[0]+=no[0],$2[1]+=no[1])};gr=!0,C(Ca,["mousemove","vmousemove","tapdrag"],G,{x:hr[0],y:hr[1]});var y6=function(){y.data.bgActivePosistion=void 0,y.hoverData.selecting||nr.emit({originalEvent:G,type:"boxstart",position:{x:hr[0],y:hr[1]}}),kc[4]=1,y.hoverData.selecting=!0,y.redrawHint("select",!0),y.redraw()};if(y.hoverData.which===3){if(Sl){var _4={originalEvent:G,type:"cxtdrag",position:{x:hr[0],y:hr[1]}};ra?ra.emit(_4):nr.emit(_4),y.hoverData.cxtDragged=!0,(!y.hoverData.cxtOver||Ca!==y.hoverData.cxtOver)&&(y.hoverData.cxtOver&&y.hoverData.cxtOver.emit({originalEvent:G,type:"cxtdragout",position:{x:hr[0],y:hr[1]}}),y.hoverData.cxtOver=Ca,Ca&&Ca.emit({originalEvent:G,type:"cxtdragover",position:{x:hr[0],y:hr[1]}}))}}else if(y.hoverData.dragging){if(gr=!0,nr.panningEnabled()&&nr.userPanningEnabled()){var x6;if(y.hoverData.justStartedPan){var BC=y.hoverData.mdownPos;x6={x:(hr[0]-BC[0])*Be,y:(hr[1]-BC[1])*Be},y.hoverData.justStartedPan=!1}else x6={x:no[0]*Be,y:no[1]*Be};nr.panBy(x6),nr.emit("dragpan"),y.hoverData.dragged=!0}hr=y.projectIntoViewport(G.clientX,G.clientY)}else if(kc[4]==1&&(ra==null||ra.pannable())){if(Sl){if(!y.hoverData.dragging&&nr.boxSelectionEnabled()&&(cm||!nr.panningEnabled()||!nr.userPanningEnabled()))y6();else if(!y.hoverData.selecting&&nr.panningEnabled()&&nr.userPanningEnabled()){var A4=O(ra,y.hoverData.downs);A4&&(y.hoverData.dragging=!0,y.hoverData.justStartedPan=!0,kc[4]=0,y.data.bgActivePosistion=Yx(us),y.redrawHint("select",!0),y.redraw())}ra&&ra.pannable()&&ra.active()&&ra.unactivate()}}else{if(ra&&ra.pannable()&&ra.active()&&ra.unactivate(),(!ra||!ra.grabbed())&&Ca!=oc&&(oc&&C(oc,["mouseout","tapdragout"],G,{x:hr[0],y:hr[1]}),Ca&&C(Ca,["mouseover","tapdragover"],G,{x:hr[0],y:hr[1]}),y.hoverData.last=Ca),ra)if(Sl){if(nr.boxSelectionEnabled()&&cm)ra&&ra.grabbed()&&(St(ql),ra.emit("freeon"),ql.emit("free"),y.dragData.didDrag&&(ra.emit("dragfreeon"),ql.emit("dragfree"))),y6();else if(ra&&ra.grabbed()&&y.nodeIsDraggable(ra)){var k0=!y.dragData.didDrag;k0&&y.redrawHint("eles",!0),y.dragData.didDrag=!0,y.hoverData.draggingEles||pt(ql,{inDragLayer:!0});var J1={x:0,y:0};if(Q(no[0])&&Q(no[1])&&(J1.x+=no[0],J1.y+=no[1],k0)){var E0=y.hoverData.dragDelta;E0&&Q(E0[0])&&Q(E0[1])&&(J1.x+=E0[0],J1.y+=E0[1])}y.hoverData.draggingEles=!0,ql.silentShift(J1).emit("position drag"),y.redrawHint("drag",!0),y.redraw()}}else py();gr=!0}if(kc[2]=hr[0],kc[3]=hr[1],gr)return G.stopPropagation&&G.stopPropagation(),G.preventDefault&&G.preventDefault(),!1}},!1);var Ee,Te,ie;y.registerBinding(p,"mouseup",function(G){var Vn=y.hoverData.capture;if(Vn){y.hoverData.capture=!1;var gr=y.cy,nr=y.projectIntoViewport(G.clientX,G.clientY),Be=y.selection,Ls=y.findNearestElement(nr[0],nr[1],!0,!1),hr=y.dragData.possibleDragElements,us=y.hoverData.down,Ya=L(G);if(y.data.bgActivePosistion&&(y.redrawHint("select",!0),y.redraw()),y.hoverData.tapholdCancelled=!0,y.data.bgActivePosistion=void 0,us&&us.unactivate(),y.hoverData.which===3){var kc={originalEvent:G,type:"cxttapend",position:{x:nr[0],y:nr[1]}};if(us?us.emit(kc):gr.emit(kc),!y.hoverData.cxtDragged){var Ca={originalEvent:G,type:"cxttap",position:{x:nr[0],y:nr[1]}};us?us.emit(Ca):gr.emit(Ca)}y.hoverData.cxtDragged=!1,y.hoverData.which=null}else if(y.hoverData.which===1){if(C(Ls,["mouseup","tapend","vmouseup"],G,{x:nr[0],y:nr[1]}),!y.dragData.didDrag&&!y.hoverData.dragged&&!y.hoverData.selecting&&!y.hoverData.isOverThresholdDrag&&(C(us,["click","tap","vclick"],G,{x:nr[0],y:nr[1]}),Te=!1,G.timeStamp-ie<=gr.multiClickDebounceTime()?(Ee&&clearTimeout(Ee),Te=!0,ie=null,C(us,["dblclick","dbltap","vdblclick"],G,{x:nr[0],y:nr[1]})):(Ee=setTimeout(function(){Te||C(us,["oneclick","onetap","voneclick"],G,{x:nr[0],y:nr[1]})},gr.multiClickDebounceTime()),ie=G.timeStamp)),us==null&&!y.dragData.didDrag&&!y.hoverData.selecting&&!y.hoverData.dragged&&!L(G)&&(gr.$(x).unselect(["tapunselect"]),hr.length>0&&y.redrawHint("eles",!0),y.dragData.possibleDragElements=hr=gr.collection()),Ls==us&&!y.dragData.didDrag&&!y.hoverData.selecting&&Ls!=null&&Ls._private.selectable&&(y.hoverData.dragging||(gr.selectionType()==="additive"||Ya?Ls.selected()?Ls.unselect(["tapunselect"]):Ls.select(["tapselect"]):Ya||(gr.$(x).unmerge(Ls).unselect(["tapunselect"]),Ls.select(["tapselect"]))),y.redrawHint("eles",!0)),y.hoverData.selecting){var oc=gr.collection(y.getAllInBox(Be[0],Be[1],Be[2],Be[3]));y.redrawHint("select",!0),oc.length>0&&y.redrawHint("eles",!0),gr.emit({type:"boxend",originalEvent:G,position:{x:nr[0],y:nr[1]}});var ra=function(Sl){return Sl.selectable()&&!Sl.selected()};gr.selectionType()==="additive"||Ya||gr.$(x).unmerge(oc).unselect(),oc.emit("box").stdFilter(ra).select().emit("boxselect"),y.redraw()}if(y.hoverData.dragging&&(y.hoverData.dragging=!1,y.redrawHint("select",!0),y.redrawHint("eles",!0),y.redraw()),!Be[4]){y.redrawHint("drag",!0),y.redrawHint("eles",!0);var no=us&&us.grabbed();St(hr),no&&(us.emit("freeon"),hr.emit("free"),y.dragData.didDrag&&(us.emit("dragfreeon"),hr.emit("dragfree")))}}Be[4]=0,y.hoverData.down=null,y.hoverData.cxtStarted=!1,y.hoverData.draggingEles=!1,y.hoverData.selecting=!1,y.hoverData.isOverThresholdDrag=!1,y.dragData.didDrag=!1,y.hoverData.dragged=!1,y.hoverData.dragDelta=[],y.hoverData.mdownPos=null,y.hoverData.mdownGPos=null}},!1);var ze=function(G){if(!y.scrollingPage){var Vn=y.cy,gr=Vn.zoom(),nr=Vn.pan(),Be=y.projectIntoViewport(G.clientX,G.clientY),Ls=[Be[0]*gr+nr.x,Be[1]*gr+nr.y];if(y.hoverData.draggingEles||y.hoverData.dragging||y.hoverData.cxtStarted||de()){G.preventDefault();return}if(Vn.panningEnabled()&&Vn.userPanningEnabled()&&Vn.zoomingEnabled()&&Vn.userZoomingEnabled()){G.preventDefault(),y.data.wheelZooming=!0,clearTimeout(y.data.wheelTimeout),y.data.wheelTimeout=setTimeout(function(){y.data.wheelZooming=!1,y.redrawHint("eles",!0),y.redraw()},150);var hr;G.deltaY!=null?hr=G.deltaY/-250:G.wheelDeltaY!=null?hr=G.wheelDeltaY/1e3:hr=G.wheelDelta/1e3,hr=hr*y.wheelSensitivity;var us=G.deltaMode===1;us&&(hr*=33);var Ya=Vn.zoom()*Math.pow(10,hr);G.type==="gesturechange"&&(Ya=y.gestureStartZoom*G.scale),Vn.zoom({level:Ya,renderedPosition:{x:Ls[0],y:Ls[1]}}),Vn.emit(G.type==="gesturechange"?"pinchzoom":"scrollzoom")}}};y.registerBinding(y.container,"wheel",ze,!0),y.registerBinding(p,"scroll",function(G){y.scrollingPage=!0,clearTimeout(y.scrollingPageTimeout),y.scrollingPageTimeout=setTimeout(function(){y.scrollingPage=!1},250)},!0),y.registerBinding(y.container,"gesturestart",function(G){y.gestureStartZoom=y.cy.zoom(),y.hasTouchStarted||G.preventDefault()},!0),y.registerBinding(y.container,"gesturechange",function(Kn){y.hasTouchStarted||ze(Kn)},!0),y.registerBinding(y.container,"mouseout",function(G){var Vn=y.projectIntoViewport(G.clientX,G.clientY);y.cy.emit({originalEvent:G,type:"mouseout",position:{x:Vn[0],y:Vn[1]}})},!1),y.registerBinding(y.container,"mouseover",function(G){var Vn=y.projectIntoViewport(G.clientX,G.clientY);y.cy.emit({originalEvent:G,type:"mouseover",position:{x:Vn[0],y:Vn[1]}})},!1);var me,yn,nn,qe,Tn,Xn,lr,Sn,or,pr,kr,wr,Cr,$n=function(G,Vn,gr,nr){return Math.sqrt((gr-G)*(gr-G)+(nr-Vn)*(nr-Vn))},cr=function(G,Vn,gr,nr){return(gr-G)*(gr-G)+(nr-Vn)*(nr-Vn)},mr;y.registerBinding(y.container,"touchstart",mr=function(G){if(y.hasTouchStarted=!0,!!Yt(G)){Nt(),y.touchData.capture=!0,y.data.bgActivePosistion=void 0;var Vn=y.cy,gr=y.touchData.now,nr=y.touchData.earlier;if(G.touches[0]){var Be=y.projectIntoViewport(G.touches[0].clientX,G.touches[0].clientY);gr[0]=Be[0],gr[1]=Be[1]}if(G.touches[1]){var Be=y.projectIntoViewport(G.touches[1].clientX,G.touches[1].clientY);gr[2]=Be[0],gr[3]=Be[1]}if(G.touches[2]){var Be=y.projectIntoViewport(G.touches[2].clientX,G.touches[2].clientY);gr[4]=Be[0],gr[5]=Be[1]}if(G.touches[1]){y.touchData.singleTouchMoved=!0,St(y.dragData.touchDragEles);var Ls=y.findContainerClientCoords();or=Ls[0],pr=Ls[1],kr=Ls[2],wr=Ls[3],me=G.touches[0].clientX-or,yn=G.touches[0].clientY-pr,nn=G.touches[1].clientX-or,qe=G.touches[1].clientY-pr,Cr=0<=me&&me<=kr&&0<=nn&&nn<=kr&&0<=yn&&yn<=wr&&0<=qe&&qe<=wr;var hr=Vn.pan(),us=Vn.zoom();Tn=$n(me,yn,nn,qe),Xn=cr(me,yn,nn,qe),lr=[(me+nn)/2,(yn+qe)/2],Sn=[(lr[0]-hr.x)/us,(lr[1]-hr.y)/us];var Ya=200,kc=Ya*Ya;if(Xn=1){for(var vb=y.touchData.startPosition=[null,null,null,null,null,null],v1=0;v1=y.touchTapThreshold2}if(Vn&&y.touchData.cxt){G.preventDefault();var vb=G.touches[0].clientX-or,v1=G.touches[0].clientY-pr,up=G.touches[1].clientX-or,Bd=G.touches[1].clientY-pr,cm=cr(vb,v1,up,Bd),py=cm/Xn,y6=150,_4=y6*y6,x6=1.5,BC=x6*x6;if(py>=BC||cm>=_4){y.touchData.cxt=!1,y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var A4={originalEvent:G,type:"cxttapend",position:{x:Be[0],y:Be[1]}};y.touchData.start?(y.touchData.start.unactivate().emit(A4),y.touchData.start=null):nr.emit(A4)}}if(Vn&&y.touchData.cxt){var A4={originalEvent:G,type:"cxtdrag",position:{x:Be[0],y:Be[1]}};y.data.bgActivePosistion=void 0,y.redrawHint("select",!0),y.touchData.start?y.touchData.start.emit(A4):nr.emit(A4),y.touchData.start&&(y.touchData.start._private.grabbed=!1),y.touchData.cxtDragged=!0;var k0=y.findNearestElement(Be[0],Be[1],!0,!0);(!y.touchData.cxtOver||k0!==y.touchData.cxtOver)&&(y.touchData.cxtOver&&y.touchData.cxtOver.emit({originalEvent:G,type:"cxtdragout",position:{x:Be[0],y:Be[1]}}),y.touchData.cxtOver=k0,k0&&k0.emit({originalEvent:G,type:"cxtdragover",position:{x:Be[0],y:Be[1]}}))}else if(Vn&&G.touches[2]&&nr.boxSelectionEnabled())G.preventDefault(),y.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,y.touchData.selecting||nr.emit({originalEvent:G,type:"boxstart",position:{x:Be[0],y:Be[1]}}),y.touchData.selecting=!0,y.touchData.didSelect=!0,gr[4]=1,!gr||gr.length===0||gr[0]===void 0?(gr[0]=(Be[0]+Be[2]+Be[4])/3,gr[1]=(Be[1]+Be[3]+Be[5])/3,gr[2]=(Be[0]+Be[2]+Be[4])/3+1,gr[3]=(Be[1]+Be[3]+Be[5])/3+1):(gr[2]=(Be[0]+Be[2]+Be[4])/3,gr[3]=(Be[1]+Be[3]+Be[5])/3),y.redrawHint("select",!0),y.redraw();else if(Vn&&G.touches[1]&&!y.touchData.didSelect&&nr.zoomingEnabled()&&nr.panningEnabled()&&nr.userZoomingEnabled()&&nr.userPanningEnabled()){G.preventDefault(),y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var J1=y.dragData.touchDragEles;if(J1){y.redrawHint("drag",!0);for(var E0=0;E00&&!y.hoverData.draggingEles&&!y.swipePanning&&y.data.bgActivePosistion!=null&&(y.data.bgActivePosistion=void 0,y.redrawHint("select",!0),y.redraw())}},!1);var gi;y.registerBinding(p,"touchcancel",gi=function(G){var Vn=y.touchData.start;y.touchData.capture=!1,Vn&&Vn.unactivate()});var ss,na,vi,si;if(y.registerBinding(p,"touchend",ss=function(G){var Vn=y.touchData.start,gr=y.touchData.capture;if(gr)G.touches.length===0&&(y.touchData.capture=!1),G.preventDefault();else return;var nr=y.selection;y.swipePanning=!1,y.hoverData.draggingEles=!1;var Be=y.cy,Ls=Be.zoom(),hr=y.touchData.now,us=y.touchData.earlier;if(G.touches[0]){var Ya=y.projectIntoViewport(G.touches[0].clientX,G.touches[0].clientY);hr[0]=Ya[0],hr[1]=Ya[1]}if(G.touches[1]){var Ya=y.projectIntoViewport(G.touches[1].clientX,G.touches[1].clientY);hr[2]=Ya[0],hr[3]=Ya[1]}if(G.touches[2]){var Ya=y.projectIntoViewport(G.touches[2].clientX,G.touches[2].clientY);hr[4]=Ya[0],hr[5]=Ya[1]}Vn&&Vn.unactivate();var kc;if(y.touchData.cxt){if(kc={originalEvent:G,type:"cxttapend",position:{x:hr[0],y:hr[1]}},Vn?Vn.emit(kc):Be.emit(kc),!y.touchData.cxtDragged){var Ca={originalEvent:G,type:"cxttap",position:{x:hr[0],y:hr[1]}};Vn?Vn.emit(Ca):Be.emit(Ca)}y.touchData.start&&(y.touchData.start._private.grabbed=!1),y.touchData.cxt=!1,y.touchData.start=null,y.redraw();return}if(!G.touches[2]&&Be.boxSelectionEnabled()&&y.touchData.selecting){y.touchData.selecting=!1;var oc=Be.collection(y.getAllInBox(nr[0],nr[1],nr[2],nr[3]));nr[0]=void 0,nr[1]=void 0,nr[2]=void 0,nr[3]=void 0,nr[4]=0,y.redrawHint("select",!0),Be.emit({type:"boxend",originalEvent:G,position:{x:hr[0],y:hr[1]}});var ra=function(_4){return _4.selectable()&&!_4.selected()};oc.emit("box").stdFilter(ra).select().emit("boxselect"),oc.nonempty()&&y.redrawHint("eles",!0),y.redraw()}if(Vn!=null&&Vn.unactivate(),G.touches[2])y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);else if(!G.touches[1]){if(!G.touches[0]){if(!G.touches[0]){y.data.bgActivePosistion=void 0,y.redrawHint("select",!0);var no=y.dragData.touchDragEles;if(Vn!=null){var ql=Vn._private.grabbed;St(no),y.redrawHint("drag",!0),y.redrawHint("eles",!0),ql&&(Vn.emit("freeon"),no.emit("free"),y.dragData.didDrag&&(Vn.emit("dragfreeon"),no.emit("dragfree"))),C(Vn,["touchend","tapend","vmouseup","tapdragout"],G,{x:hr[0],y:hr[1]}),Vn.unactivate(),y.touchData.start=null}else{var Sl=y.findNearestElement(hr[0],hr[1],!0,!0);C(Sl,["touchend","tapend","vmouseup","tapdragout"],G,{x:hr[0],y:hr[1]})}var mb=y.touchData.startPosition[0]-hr[0],vb=mb*mb,v1=y.touchData.startPosition[1]-hr[1],up=v1*v1,Bd=vb+up,cm=Bd*Ls*Ls;y.touchData.singleTouchMoved||(Vn||Be.$(":selected").unselect(["tapunselect"]),C(Vn,["tap","vclick"],G,{x:hr[0],y:hr[1]}),na=!1,G.timeStamp-si<=Be.multiClickDebounceTime()?(vi&&clearTimeout(vi),na=!0,si=null,C(Vn,["dbltap","vdblclick"],G,{x:hr[0],y:hr[1]})):(vi=setTimeout(function(){na||C(Vn,["onetap","voneclick"],G,{x:hr[0],y:hr[1]})},Be.multiClickDebounceTime()),si=G.timeStamp)),Vn!=null&&!y.dragData.didDrag&&Vn._private.selectable&&cm"u"){var Qi=[],ks=function(G){return{clientX:G.clientX,clientY:G.clientY,force:1,identifier:G.pointerId,pageX:G.pageX,pageY:G.pageY,radiusX:G.width/2,radiusY:G.height/2,screenX:G.screenX,screenY:G.screenY,target:G.target}},as=function(G){return{event:G,touch:ks(G)}},Es=function(G){Qi.push(as(G))},eo=function(G){for(var Vn=0;Vn0)return Sn[0]}return null},bt=Object.keys(Z),pt=0;pt0?st:$B(O,N,p,x,C,L,j)},checkPoint:function(p,x,C,L,O,N,j){var H=R8(L,O),q=2*H;if(sm(p,x,this.points,N,j,L,O-q,[0,-1],C)||sm(p,x,this.points,N,j,L-q,O,[0,-1],C))return!0;var W=L/2+2*C,Z=O/2+2*C,st=[N-W,j-Z,N-W,j,N+W,j,N+W,j-Z];return!!(y0(p,x,st)||v4(p,x,q,q,N+L/2-H,j+O/2-H,C)||v4(p,x,q,q,N-L/2+H,j+O/2-H,C))}}},om.registerNodeShapes=function(){var y=this.nodeShapes={},p=this;this.generateEllipse(),this.generatePolygon("triangle",Fd(3,0)),this.generateRoundPolygon("round-triangle",Fd(3,0)),this.generatePolygon("rectangle",Fd(4,0)),y.square=y.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();{var x=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",x),this.generateRoundPolygon("round-diamond",x)}this.generatePolygon("pentagon",Fd(5,0)),this.generateRoundPolygon("round-pentagon",Fd(5,0)),this.generatePolygon("hexagon",Fd(6,0)),this.generateRoundPolygon("round-hexagon",Fd(6,0)),this.generatePolygon("heptagon",Fd(7,0)),this.generateRoundPolygon("round-heptagon",Fd(7,0)),this.generatePolygon("octagon",Fd(8,0)),this.generateRoundPolygon("round-octagon",Fd(8,0));var C=new Array(20);{var L=qD(5,0),O=qD(5,Math.PI/5),N=.5*(3-Math.sqrt(5));N*=1.57;for(var j=0;j=p.deqFastCost*qt)break}else if(q){if(Nt>=p.deqCost*bt||Nt>=p.deqAvgCost*st)break}else if(Pt>=p.deqNoDrawCost*vM)break;var re=p.deq(C,St,_t);if(re.length>0)for(var ee=0;ee0&&(p.onDeqd(C,pt),!q&&p.shouldRedraw(C,pt,St,_t)&&O())},j=p.priority||BD;L.beforeRender(N,j(C))}}}},Ket=function(){function y(p){var x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:ay;g(this,y),this.idsByKey=new F2,this.keyForId=new F2,this.cachesByLvl=new F2,this.lvls=[],this.getKey=p,this.doesEleInvalidateKey=x}return v(y,[{key:"getIdsFor",value:function(x){x==null&&$l("Can not get id list for null key");var C=this.idsByKey,L=this.idsByKey.get(x);return L||(L=new Wx,C.set(x,L)),L}},{key:"addIdForKey",value:function(x,C){x!=null&&this.getIdsFor(x).add(C)}},{key:"deleteIdForKey",value:function(x,C){x!=null&&this.getIdsFor(x).delete(C)}},{key:"getNumberOfIdsForKey",value:function(x){return x==null?0:this.getIdsFor(x).size}},{key:"updateKeyMappingFor",value:function(x){var C=x.id(),L=this.keyForId.get(C),O=this.getKey(x);this.deleteIdForKey(L,C),this.addIdForKey(O,C),this.keyForId.set(C,O)}},{key:"deleteKeyMappingFor",value:function(x){var C=x.id(),L=this.keyForId.get(C);this.deleteIdForKey(L,C),this.keyForId.delete(C)}},{key:"keyHasChangedFor",value:function(x){var C=x.id(),L=this.keyForId.get(C),O=this.getKey(x);return L!==O}},{key:"isInvalid",value:function(x){return this.keyHasChangedFor(x)||this.doesEleInvalidateKey(x)}},{key:"getCachesAt",value:function(x){var C=this.cachesByLvl,L=this.lvls,O=C.get(x);return O||(O=new F2,C.set(x,O),L.push(x)),O}},{key:"getCache",value:function(x,C){return this.getCachesAt(C).get(x)}},{key:"get",value:function(x,C){var L=this.getKey(x),O=this.getCache(L,C);return O!=null&&this.updateKeyMappingFor(x),O}},{key:"getForCachedKey",value:function(x,C){var L=this.keyForId.get(x.id()),O=this.getCache(L,C);return O}},{key:"hasCache",value:function(x,C){return this.getCachesAt(C).has(x)}},{key:"has",value:function(x,C){var L=this.getKey(x);return this.hasCache(L,C)}},{key:"setCache",value:function(x,C,L){L.key=x,this.getCachesAt(C).set(x,L)}},{key:"set",value:function(x,C,L){var O=this.getKey(x);this.setCache(O,C,L),this.updateKeyMappingFor(x)}},{key:"deleteCache",value:function(x,C){this.getCachesAt(C).delete(x)}},{key:"delete",value:function(x,C){var L=this.getKey(x);this.deleteCache(L,C)}},{key:"invalidateKey",value:function(x){var C=this;this.lvls.forEach(function(L){return C.deleteCache(x,L)})}},{key:"invalidate",value:function(x){var C=x.id(),L=this.keyForId.get(C);this.deleteKeyMappingFor(x);var O=this.doesEleInvalidateKey(x);return O&&this.invalidateKey(L),O||this.getNumberOfIdsForKey(L)===0}}]),y}(),Ij=25,OC=50,NC=-4,yM=3,Wet=7.99,Yet=8,Xet=1024,Qet=1024,Jet=1024,Zet=.2,tnt=.8,ent=10,nnt=.15,rnt=.1,int=.9,snt=.9,ant=100,ont=1,p6={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},cnt=p1({getKey:null,doesEleInvalidateKey:ay,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:b4,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),rE=function(p,x){var C=this;C.renderer=p,C.onDequeues=[];var L=cnt(x);we(C,L),C.lookup=new Ket(L.getKey,L.doesEleInvalidateKey),C.setupDequeueing()},Jh=rE.prototype;Jh.reasons=p6,Jh.getTextureQueue=function(y){var p=this;return p.eleImgCaches=p.eleImgCaches||{},p.eleImgCaches[y]=p.eleImgCaches[y]||[]},Jh.getRetiredTextureQueue=function(y){var p=this,x=p.eleImgCaches.retired=p.eleImgCaches.retired||{},C=x[y]=x[y]||[];return C},Jh.getElementQueue=function(){var y=this,p=y.eleCacheQueue=y.eleCacheQueue||new N8(function(x,C){return C.reqs-x.reqs});return p},Jh.getElementKeyToQueue=function(){var y=this,p=y.eleKeyToCacheQueue=y.eleKeyToCacheQueue||{};return p},Jh.getElement=function(y,p,x,C,L){var O=this,N=this.renderer,j=N.cy.zoom(),H=this.lookup;if(!p||p.w===0||p.h===0||isNaN(p.w)||isNaN(p.h)||!y.visible()||y.removed()||!O.allowEdgeTxrCaching&&y.isEdge()||!O.allowParentTxrCaching&&y.isParent())return null;if(C==null&&(C=Math.ceil(jD(j*x))),C=Wet||C>yM)return null;var q=Math.pow(2,C),W=p.h*q,Z=p.w*q,st=N.eleTextBiggerThanMin(y,q);if(!this.isVisible(y,st))return null;var bt=H.get(y,C);if(bt&&bt.invalidated&&(bt.invalidated=!1,bt.texture.invalidatedWidth-=bt.width),bt)return bt;var pt;if(W<=Ij?pt=Ij:W<=OC?pt=OC:pt=Math.ceil(W/OC)*OC,W>Jet||Z>Qet)return null;var _t=O.getTextureQueue(pt),St=_t[_t.length-2],Et=function(){return O.recycleTexture(pt,Z)||O.addTexture(pt,Z)};St||(St=_t[_t.length-1]),St||(St=Et()),St.width-St.usedWidthC;Te--)Yt=O.getElement(y,p,x,Te,p6.downscale);Ee()}else return O.queueElement(y,ee.level-1),ee;else{var ie;if(!Pt&&!qt&&!re)for(var ze=C-1;ze>=NC;ze--){var me=H.get(y,ze);if(me){ie=me;break}}if(Nt(ie))return O.queueElement(y,C),ie;St.context.translate(St.usedWidth,0),St.context.scale(q,q),this.drawElement(St.context,y,p,st,!1),St.context.scale(1/q,1/q),St.context.translate(-St.usedWidth,0)}return bt={x:St.usedWidth,texture:St,level:C,scale:q,width:Z,height:W,scaledLabelShown:st},St.usedWidth+=Math.ceil(Z+Yet),St.eleCaches.push(bt),H.set(y,C,bt),O.checkTextureFullness(St),bt},Jh.invalidateElements=function(y){for(var p=0;p=Zet*y.width&&this.retireTexture(y)},Jh.checkTextureFullness=function(y){var p=this,x=p.getTextureQueue(y.height);y.usedWidth/y.width>tnt&&y.fullnessChecks>=ent?oy(x,y):y.fullnessChecks++},Jh.retireTexture=function(y){var p=this,x=y.height,C=p.getTextureQueue(x),L=this.lookup;oy(C,y),y.retired=!0;for(var O=y.eleCaches,N=0;N=p)return N.retired=!1,N.usedWidth=0,N.invalidatedWidth=0,N.fullnessChecks=0,G9(N.eleCaches),N.context.setTransform(1,0,0,1,0,0),N.context.clearRect(0,0,N.width,N.height),oy(L,N),C.push(N),N}},Jh.queueElement=function(y,p){var x=this,C=x.getElementQueue(),L=x.getElementKeyToQueue(),O=this.getKey(y),N=L[O];if(N)N.level=Math.max(N.level,p),N.eles.merge(y),N.reqs++,C.updateItem(N);else{var j={eles:y.spawn().merge(y),level:p,reqs:1,key:O};C.push(j),L[O]=j}},Jh.dequeue=function(y){for(var p=this,x=p.getElementQueue(),C=p.getElementKeyToQueue(),L=[],O=p.lookup,N=0;N0;N++){var j=x.pop(),H=j.key,q=j.eles[0],W=O.hasCache(q,j.level);if(C[H]=null,W)continue;L.push(j);var Z=p.getBoundingBox(q);p.getElement(q,Z,y,j.level,p6.dequeue)}return L},Jh.removeFromQueue=function(y){var p=this,x=p.getElementQueue(),C=p.getElementKeyToQueue(),L=this.getKey(y),O=C[L];O!=null&&(O.eles.length===1?(O.reqs=Kx,x.updateItem(O),x.pop(),C[L]=null):O.eles.unmerge(y))},Jh.onDequeue=function(y){this.onDequeues.push(y)},Jh.offDequeue=function(y){oy(this.onDequeues,y)},Jh.setupDequeueing=Mj.setupDequeueing({deqRedrawThreshold:ant,deqCost:nnt,deqAvgCost:rnt,deqNoDrawCost:int,deqFastCost:snt,deq:function(p,x,C){return p.dequeue(x,C)},onDeqd:function(p,x){for(var C=0;C=lnt||x>PC)return null}C.validateLayersElesOrdering(x,y);var H=C.layersByLevel,q=Math.pow(2,x),W=H[x]=H[x]||[],Z,st=C.levelIsComplete(x,y),bt,pt=function(){var Ee=function(yn){if(C.validateLayersElesOrdering(yn,y),C.levelIsComplete(yn,y))return bt=H[yn],!0},Te=function(yn){if(!bt)for(var nn=x+yn;iE<=nn&&nn<=PC&&!Ee(nn);nn+=yn);};Te(1),Te(-1);for(var ie=W.length-1;ie>=0;ie--){var ze=W[ie];ze.invalid&&oy(W,ze)}};if(!st)pt();else return W;var _t=function(){if(!Z){Z=v0();for(var Ee=0;EePj)return null;var ze=C.makeLayer(Z,x);if(Te!=null){var me=W.indexOf(Te)+1;W.splice(me,0,ze)}else(Ee.insert===void 0||Ee.insert)&&W.unshift(ze);return ze};if(C.skipping&&!j)return null;for(var Et=null,Nt=y.length/unt,Pt=!j,qt=0;qt=Nt||!jB(Et.bb,re.boundingBox()))&&(Et=St({insert:!0,after:Et}),!Et))return null;bt||Pt?C.queueLayer(Et,re):C.drawEleInLayer(Et,re,x,p),Et.eles.push(re),Ut[x]=Et}return bt||(Pt?null:W)},Df.getEleLevelForLayerLevel=function(y,p){return y},Df.drawEleInLayer=function(y,p,x,C){var L=this,O=this.renderer,N=y.context,j=p.boundingBox();j.w===0||j.h===0||!p.visible()||(x=L.getEleLevelForLayerLevel(x,C),O.setImgSmoothing(N,!1),O.drawCachedElement(N,p,null,null,x,Fj),O.setImgSmoothing(N,!0))},Df.levelIsComplete=function(y,p){var x=this,C=x.layersByLevel[y];if(!C||C.length===0)return!1;for(var L=0,O=0;O0||N.invalid)return!1;L+=N.eles.length}return L===p.length},Df.validateLayersElesOrdering=function(y,p){var x=this.layersByLevel[y];if(x)for(var C=0;C0){p=!0;break}}return p},Df.invalidateElements=function(y){var p=this;y.length!==0&&(p.lastInvalidationTime=ip(),!(y.length===0||!p.haveLayers())&&p.updateElementsInLayers(y,function(C,L,O){p.invalidateLayer(C)}))},Df.invalidateLayer=function(y){if(this.lastInvalidationTime=ip(),!y.invalid){var p=y.level,x=y.eles,C=this.layersByLevel[p];oy(C,y),y.elesQueue=[],y.invalid=!0,y.replacement&&(y.replacement.invalid=!0);for(var L=0;L3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,N=this,j=p._private.rscratch;if(!(O&&!p.visible())&&!(j.badLine||j.allpts==null||isNaN(j.allpts[0]))){var H;x&&(H=x,y.translate(-H.x1,-H.y1));var q=O?p.pstyle("opacity").value:1,W=O?p.pstyle("line-opacity").value:1,Z=p.pstyle("curve-style").value,st=p.pstyle("line-style").value,bt=p.pstyle("width").pfValue,pt=p.pstyle("line-cap").value,_t=q*W,St=q*W,Et=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:_t;Z==="straight-triangle"?(N.eleStrokeStyle(y,p,ie),N.drawEdgeTrianglePath(p,y,j.allpts)):(y.lineWidth=bt,y.lineCap=pt,N.eleStrokeStyle(y,p,ie),N.drawEdgePath(p,y,j.allpts,st),y.lineCap="butt")},Nt=function(){L&&N.drawEdgeOverlay(y,p)},Pt=function(){L&&N.drawEdgeUnderlay(y,p)},qt=function(){var ie=arguments.length>0&&arguments[0]!==void 0?arguments[0]:St;N.drawArrowheads(y,p,ie)},re=function(){N.drawElementText(y,p,null,C)};y.lineJoin="round";var ee=p.pstyle("ghost").value==="yes";if(ee){var Ut=p.pstyle("ghost-offset-x").pfValue,de=p.pstyle("ghost-offset-y").pfValue,Yt=p.pstyle("ghost-opacity").value,Ee=_t*Yt;y.translate(Ut,de),Et(Ee),qt(Ee),y.translate(-Ut,-de)}Pt(),Et(),qt(),Nt(),re(),x&&y.translate(H.x1,H.y1)}};var Hj=function(p){if(!["overlay","underlay"].includes(p))throw new Error("Invalid state");return function(x,C){if(C.visible()){var L=C.pstyle("".concat(p,"-opacity")).value;if(L!==0){var O=this,N=O.usePaths(),j=C._private.rscratch,H=C.pstyle("".concat(p,"-padding")).pfValue,q=2*H,W=C.pstyle("".concat(p,"-color")).value;x.lineWidth=q,j.edgeType==="self"&&!N?x.lineCap="butt":x.lineCap="round",O.colorStrokeStyle(x,W[0],W[1],W[2],L),O.drawEdgePath(C,x,j.allpts,"solid")}}}};wb.drawEdgeOverlay=Hj("overlay"),wb.drawEdgeUnderlay=Hj("underlay"),wb.drawEdgePath=function(y,p,x,C){var L=y._private.rscratch,O=p,N,j=!1,H=this.usePaths(),q=y.pstyle("line-dash-pattern").pfValue,W=y.pstyle("line-dash-offset").pfValue;if(H){var Z=x.join("$"),st=L.pathCacheKey&&L.pathCacheKey===Z;st?(N=p=L.pathCache,j=!0):(N=p=new Path2D,L.pathCacheKey=Z,L.pathCache=N)}if(O.setLineDash)switch(C){case"dotted":O.setLineDash([1,1]);break;case"dashed":O.setLineDash(q),O.lineDashOffset=W;break;case"solid":O.setLineDash([]);break}if(!j&&!L.badLine)switch(p.beginPath&&p.beginPath(),p.moveTo(x[0],x[1]),L.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var bt=2;bt+35&&arguments[5]!==void 0?arguments[5]:!0,N=this;if(C==null){if(O&&!N.eleTextBiggerThanMin(p))return}else if(C===!1)return;if(p.isNode()){var j=p.pstyle("label");if(!j||!j.value)return;var H=N.getLabelJustification(p);y.textAlign=H,y.textBaseline="bottom"}else{var q=p.element()._private.rscratch.badLine,W=p.pstyle("label"),Z=p.pstyle("source-label"),st=p.pstyle("target-label");if(q||(!W||!W.value)&&(!Z||!Z.value)&&(!st||!st.value))return;y.textAlign="center",y.textBaseline="bottom"}var bt=!x,pt;x&&(pt=x,y.translate(-pt.x1,-pt.y1)),L==null?(N.drawText(y,p,null,bt,O),p.isEdge()&&(N.drawText(y,p,"source",bt,O),N.drawText(y,p,"target",bt,O))):N.drawText(y,p,L,bt,O),x&&y.translate(pt.x1,pt.y1)},S4.getFontCache=function(y){var p;this.fontCaches=this.fontCaches||[];for(var x=0;x2&&arguments[2]!==void 0?arguments[2]:!0,C=p.pstyle("font-style").strValue,L=p.pstyle("font-size").pfValue+"px",O=p.pstyle("font-family").strValue,N=p.pstyle("font-weight").strValue,j=x?p.effectiveOpacity()*p.pstyle("text-opacity").value:1,H=p.pstyle("text-outline-opacity").value*j,q=p.pstyle("color").value,W=p.pstyle("text-outline-color").value;y.font=C+" "+N+" "+L+" "+O,y.lineJoin="round",this.colorFillStyle(y,q[0],q[1],q[2],j),this.colorStrokeStyle(y,W[0],W[1],W[2],H)};function kM(y,p,x,C,L){var O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:5,N=arguments.length>6?arguments[6]:void 0;y.beginPath(),y.moveTo(p+O,x),y.lineTo(p+C-O,x),y.quadraticCurveTo(p+C,x,p+C,x+O),y.lineTo(p+C,x+L-O),y.quadraticCurveTo(p+C,x+L,p+C-O,x+L),y.lineTo(p+O,x+L),y.quadraticCurveTo(p,x+L,p,x+L-O),y.lineTo(p,x+O),y.quadraticCurveTo(p,x,p+O,x),y.closePath(),N?y.stroke():y.fill()}S4.getTextAngle=function(y,p){var x,C=y._private,L=C.rscratch,O=p?p+"-":"",N=y.pstyle(O+"text-rotation"),j=fb(L,"labelAngle",p);return N.strValue==="autorotate"?x=y.isEdge()?j:0:N.strValue==="none"?x=0:x=N.pfValue,x},S4.drawText=function(y,p,x){var C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=p._private,N=O.rscratch,j=L?p.effectiveOpacity():1;if(!(L&&(j===0||p.pstyle("text-opacity").value===0))){x==="main"&&(x=null);var H=fb(N,"labelX",x),q=fb(N,"labelY",x),W,Z,st=this.getLabelText(p,x);if(st!=null&&st!==""&&!isNaN(H)&&!isNaN(q)){this.setupTextStyle(y,p,L);var bt=x?x+"-":"",pt=fb(N,"labelWidth",x),_t=fb(N,"labelHeight",x),St=p.pstyle(bt+"text-margin-x").pfValue,Et=p.pstyle(bt+"text-margin-y").pfValue,Nt=p.isEdge(),Pt=p.pstyle("text-halign").value,qt=p.pstyle("text-valign").value;Nt&&(Pt="center",qt="center"),H+=St,q+=Et;var re;switch(C?re=this.getTextAngle(p,x):re=0,re!==0&&(W=H,Z=q,y.translate(W,Z),y.rotate(re),H=0,q=0),qt){case"top":break;case"center":q+=_t/2;break;case"bottom":q+=_t;break}var ee=p.pstyle("text-background-opacity").value,Ut=p.pstyle("text-border-opacity").value,de=p.pstyle("text-border-width").pfValue,Yt=p.pstyle("text-background-padding").pfValue,Ee=p.pstyle("text-background-shape").strValue,Te=Ee.indexOf("round")===0,ie=2;if(ee>0||de>0&&Ut>0){var ze=H-Yt;switch(Pt){case"left":ze-=pt;break;case"center":ze-=pt/2;break}var me=q-_t-Yt,yn=pt+2*Yt,nn=_t+2*Yt;if(ee>0){var qe=y.fillStyle,Tn=p.pstyle("text-background-color").value;y.fillStyle="rgba("+Tn[0]+","+Tn[1]+","+Tn[2]+","+ee*j+")",Te?kM(y,ze,me,yn,nn,ie):y.fillRect(ze,me,yn,nn),y.fillStyle=qe}if(de>0&&Ut>0){var Xn=y.strokeStyle,lr=y.lineWidth,Sn=p.pstyle("text-border-color").value,or=p.pstyle("text-border-style").value;if(y.strokeStyle="rgba("+Sn[0]+","+Sn[1]+","+Sn[2]+","+Ut*j+")",y.lineWidth=de,y.setLineDash)switch(or){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"double":y.lineWidth=de/4,y.setLineDash([]);break;case"solid":y.setLineDash([]);break}if(Te?kM(y,ze,me,yn,nn,ie,"stroke"):y.strokeRect(ze,me,yn,nn),or==="double"){var pr=de/2;Te?kM(y,ze+pr,me+pr,yn-pr*2,nn-pr*2,ie,"stroke"):y.strokeRect(ze+pr,me+pr,yn-pr*2,nn-pr*2)}y.setLineDash&&y.setLineDash([]),y.lineWidth=lr,y.strokeStyle=Xn}}var kr=2*p.pstyle("text-outline-width").pfValue;if(kr>0&&(y.lineWidth=kr),p.pstyle("text-wrap").value==="wrap"){var wr=fb(N,"labelWrapCachedLines",x),Cr=fb(N,"labelLineHeight",x),$n=pt/2,cr=this.getLabelJustification(p);switch(cr==="auto"||(Pt==="left"?cr==="left"?H+=-pt:cr==="center"&&(H+=-$n):Pt==="center"?cr==="left"?H+=-$n:cr==="right"&&(H+=$n):Pt==="right"&&(cr==="center"?H+=$n:cr==="right"&&(H+=pt))),qt){case"top":q-=(wr.length-1)*Cr;break;case"center":case"bottom":q-=(wr.length-1)*Cr;break}for(var mr=0;mr0&&y.strokeText(wr[mr],H,q),y.fillText(wr[mr],H,q),q+=Cr}else kr>0&&y.strokeText(st,H,q),y.fillText(st,H,q);re!==0&&(y.rotate(-re),y.translate(-W,-Z))}}};var b6={};b6.drawNode=function(y,p,x){var C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0,L=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!0,O=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0,N=this,j,H,q=p._private,W=q.rscratch,Z=p.position();if(!(!Q(Z.x)||!Q(Z.y))&&!(O&&!p.visible())){var st=O?p.effectiveOpacity():1,bt=N.usePaths(),pt,_t=!1,St=p.padding();j=p.width()+2*St,H=p.height()+2*St;var Et;x&&(Et=x,y.translate(-Et.x1,-Et.y1));for(var Nt=p.pstyle("background-image"),Pt=Nt.value,qt=new Array(Pt.length),re=new Array(Pt.length),ee=0,Ut=0;Ut0&&arguments[0]!==void 0?arguments[0]:ze;N.eleFillStyle(y,p,Kn)},pr=function(){var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:nn;N.colorStrokeStyle(y,me[0],me[1],me[2],Kn)},kr=function(){var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:lr;N.colorStrokeStyle(y,Tn[0],Tn[1],Tn[2],Kn)},wr=function(Kn,G,Vn,gr){var nr=N.nodePathCache=N.nodePathCache||[],Be=Pd(Vn==="polygon"?Vn+","+gr.join(","):Vn,""+G,""+Kn),Ls=nr[Be],hr,us=!1;return Ls!=null?(hr=Ls,us=!0,W.pathCache=hr):(hr=new Path2D,nr[Be]=W.pathCache=hr),{path:hr,cacheHit:us}},Cr=p.pstyle("shape").strValue,$n=p.pstyle("shape-polygon-points").pfValue;if(bt){y.translate(Z.x,Z.y);var cr=wr(j,H,Cr,$n);pt=cr.path,_t=cr.cacheHit}var mr=function(){if(!_t){var Kn=Z;bt&&(Kn={x:0,y:0}),N.nodeShapes[N.getNodeShape(p)].draw(pt||y,Kn.x,Kn.y,j,H)}bt?y.fill(pt):y.fill()},Sr=function(){for(var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:st,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,Vn=q.backgrounding,gr=0,nr=0;nr0&&arguments[0]!==void 0?arguments[0]:!1,G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:st;N.hasPie(p)&&(N.drawPie(y,p,G),Kn&&(bt||N.nodeShapes[N.getNodeShape(p)].draw(y,Z.x,Z.y,j,H)))},ss=function(){var Kn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:st,G=(Te>0?Te:-Te)*Kn,Vn=Te>0?0:255;Te!==0&&(N.colorFillStyle(y,Vn,Vn,Vn,G),bt?y.fill(pt):y.fill())},na=function(){if(ie>0){if(y.lineWidth=ie,y.lineCap="butt",y.setLineDash)switch(yn){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"solid":case"double":y.setLineDash([]);break}if(bt?y.stroke(pt):y.stroke(),yn==="double"){y.lineWidth=ie/3;var Kn=y.globalCompositeOperation;y.globalCompositeOperation="destination-out",bt?y.stroke(pt):y.stroke(),y.globalCompositeOperation=Kn}y.setLineDash&&y.setLineDash([])}},vi=function(){if(qe>0){if(y.lineWidth=qe,y.lineCap="butt",y.setLineDash)switch(Xn){case"dotted":y.setLineDash([1,1]);break;case"dashed":y.setLineDash([4,2]);break;case"solid":case"double":y.setLineDash([]);break}var Kn=Z;bt&&(Kn={x:0,y:0});var G=N.getNodeShape(p),Vn=(j+ie+(qe+Sn))/j,gr=(H+ie+(qe+Sn))/H,nr=j*Vn,Be=H*gr,Ls=N.nodeShapes[G].points,hr;if(bt){var us=wr(nr,Be,G,Ls);hr=us.path}if(G==="ellipse")N.drawEllipsePath(hr||y,Kn.x,Kn.y,nr,Be);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(G)){var Ya=0,kc=0,Ca=0;G==="round-diamond"?Ya=(ie+Sn+qe)*1.4:G==="round-heptagon"?(Ya=(ie+Sn+qe)*1.075,Ca=-(ie/2+Sn+qe)/35):G==="round-hexagon"?Ya=(ie+Sn+qe)*1.12:G==="round-pentagon"?(Ya=(ie+Sn+qe)*1.13,Ca=-(ie/2+Sn+qe)/15):G==="round-tag"?(Ya=(ie+Sn+qe)*1.12,kc=(ie/2+qe+Sn)*.07):G==="round-triangle"&&(Ya=(ie+Sn+qe)*(Math.PI/2),Ca=-(ie+Sn/2+qe)/Math.PI),Ya!==0&&(Vn=(j+Ya)/j,gr=(H+Ya)/H),N.drawRoundPolygonPath(hr||y,Kn.x+kc,Kn.y+Ca,j*Vn,H*gr,Ls)}else if(["roundrectangle","round-rectangle"].includes(G))N.drawRoundRectanglePath(hr||y,Kn.x,Kn.y,nr,Be);else if(["cutrectangle","cut-rectangle"].includes(G))N.drawCutRectanglePath(hr||y,Kn.x,Kn.y,nr,Be);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(G))N.drawBottomRoundRectanglePath(hr||y,Kn.x,Kn.y,nr,Be);else if(G==="barrel")N.drawBarrelPath(hr||y,Kn.x,Kn.y,nr,Be);else if(G.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(G)){var oc=(ie+qe+Sn)/j;Ls=J9(Z9(Ls,oc)),N.drawPolygonPath(hr||y,Kn.x,Kn.y,j,H,Ls)}else{var ra=(ie+qe+Sn)/j;Ls=J9(Z9(Ls,-ra)),N.drawPolygonPath(hr||y,Kn.x,Kn.y,j,H,Ls)}if(bt?y.stroke(hr):y.stroke(),Xn==="double"){y.lineWidth=ie/3;var no=y.globalCompositeOperation;y.globalCompositeOperation="destination-out",bt?y.stroke(hr):y.stroke(),y.globalCompositeOperation=no}y.setLineDash&&y.setLineDash([])}},si=function(){L&&N.drawNodeOverlay(y,p,Z,j,H)},Qi=function(){L&&N.drawNodeUnderlay(y,p,Z,j,H)},ks=function(){N.drawElementText(y,p,null,C)},as=p.pstyle("ghost").value==="yes";if(as){var Es=p.pstyle("ghost-offset-x").pfValue,eo=p.pstyle("ghost-offset-y").pfValue,Ta=p.pstyle("ghost-opacity").value,pa=Ta*st;y.translate(Es,eo),kr(),vi(),or(Ta*ze),mr(),Sr(pa,!0),pr(Ta*nn),na(),gi(Te!==0||ie!==0),Sr(pa,!1),ss(pa),y.translate(-Es,-eo)}bt&&y.translate(-Z.x,-Z.y),Qi(),bt&&y.translate(Z.x,Z.y),kr(),vi(),or(),mr(),Sr(st,!0),pr(),na(),gi(Te!==0||ie!==0),Sr(st,!1),ss(),bt&&y.translate(-Z.x,-Z.y),ks(),si(),x&&y.translate(Et.x1,Et.y1)}};var EM=function(p){if(!["overlay","underlay"].includes(p))throw new Error("Invalid state");return function(x,C,L,O,N){var j=this;if(C.visible()){var H=C.pstyle("".concat(p,"-padding")).pfValue,q=C.pstyle("".concat(p,"-opacity")).value,W=C.pstyle("".concat(p,"-color")).value,Z=C.pstyle("".concat(p,"-shape")).value;if(q>0){if(L=L||C.position(),O==null||N==null){var st=C.padding();O=C.width()+2*st,N=C.height()+2*st}j.colorFillStyle(x,W[0],W[1],W[2],q),j.nodeShapes[Z].draw(x,L.x,L.y,O+H*2,N+H*2),x.fill()}}}};b6.drawNodeOverlay=EM("overlay"),b6.drawNodeUnderlay=EM("underlay"),b6.hasPie=function(y){return y=y[0],y._private.hasPie},b6.drawPie=function(y,p,x,C){p=p[0],C=C||p.position();var L=p.cy().style(),O=p.pstyle("pie-size"),N=C.x,j=C.y,H=p.width(),q=p.height(),W=Math.min(H,q)/2,Z=0,st=this.usePaths();st&&(N=0,j=0),O.units==="%"?W=W*O.pfValue:O.pfValue!==void 0&&(W=O.pfValue/2);for(var bt=1;bt<=L.pieBackgroundN;bt++){var pt=p.pstyle("pie-"+bt+"-background-size").value,_t=p.pstyle("pie-"+bt+"-background-color").value,St=p.pstyle("pie-"+bt+"-background-opacity").value*x,Et=pt/100;Et+Z>1&&(Et=1-Z);var Nt=1.5*Math.PI+2*Math.PI*Z,Pt=2*Math.PI*Et,qt=Nt+Pt;pt===0||Z>=1||Z+Et>1||(y.beginPath(),y.moveTo(N,j),y.arc(N,j,W,Nt,qt),y.closePath(),this.colorFillStyle(y,_t[0],_t[1],_t[2],St),y.fill(),Z+=Et)}};var dg={},Ent=100;dg.getPixelRatio=function(){var y=this.data.contexts[0];if(this.forcedPixelRatio!=null)return this.forcedPixelRatio;var p=y.backingStorePixelRatio||y.webkitBackingStorePixelRatio||y.mozBackingStorePixelRatio||y.msBackingStorePixelRatio||y.oBackingStorePixelRatio||y.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/p},dg.paintCache=function(y){for(var p=this.paintCaches=this.paintCaches||[],x=!0,C,L=0;LN.minMbLowQualFrames&&(N.motionBlurPxRatio=N.mbPxRBlurry)),N.clearingMotionBlur&&(N.motionBlurPxRatio=1),N.textureDrawLastFrame&&!Z&&(W[N.NODE]=!0,W[N.SELECT_BOX]=!0);var Nt=H.style(),Pt=H.zoom(),qt=L!==void 0?L:Pt,re=H.pan(),ee={x:re.x,y:re.y},Ut={zoom:Pt,pan:{x:re.x,y:re.y}},de=N.prevViewport,Yt=de===void 0||Ut.zoom!==de.zoom||Ut.pan.x!==de.pan.x||Ut.pan.y!==de.pan.y;!Yt&&!(_t&&!pt)&&(N.motionBlurPxRatio=1),O&&(ee=O),qt*=j,ee.x*=j,ee.y*=j;var Ee=N.getCachedZSortedEles();function Te(vi,si,Qi,ks,as){var Es=vi.globalCompositeOperation;vi.globalCompositeOperation="destination-out",N.colorFillStyle(vi,255,255,255,N.motionBlurTransparency),vi.fillRect(si,Qi,ks,as),vi.globalCompositeOperation=Es}function ie(vi,si){var Qi,ks,as,Es;!N.clearingMotionBlur&&(vi===q.bufferContexts[N.MOTIONBLUR_BUFFER_NODE]||vi===q.bufferContexts[N.MOTIONBLUR_BUFFER_DRAG])?(Qi={x:re.x*bt,y:re.y*bt},ks=Pt*bt,as=N.canvasWidth*bt,Es=N.canvasHeight*bt):(Qi=ee,ks=qt,as=N.canvasWidth,Es=N.canvasHeight),vi.setTransform(1,0,0,1,0,0),si==="motionBlur"?Te(vi,0,0,as,Es):!p&&(si===void 0||si)&&vi.clearRect(0,0,as,Es),x||(vi.translate(Qi.x,Qi.y),vi.scale(ks,ks)),O&&vi.translate(O.x,O.y),L&&vi.scale(L,L)}if(Z||(N.textureDrawLastFrame=!1),Z){if(N.textureDrawLastFrame=!0,!N.textureCache){N.textureCache={},N.textureCache.bb=H.mutableElements().boundingBox(),N.textureCache.texture=N.data.bufferCanvases[N.TEXTURE_BUFFER];var ze=N.data.bufferContexts[N.TEXTURE_BUFFER];ze.setTransform(1,0,0,1,0,0),ze.clearRect(0,0,N.canvasWidth*N.textureMult,N.canvasHeight*N.textureMult),N.render({forcedContext:ze,drawOnlyNodeLayer:!0,forcedPxRatio:j*N.textureMult});var Ut=N.textureCache.viewport={zoom:H.zoom(),pan:H.pan(),width:N.canvasWidth,height:N.canvasHeight};Ut.mpan={x:(0-Ut.pan.x)/Ut.zoom,y:(0-Ut.pan.y)/Ut.zoom}}W[N.DRAG]=!1,W[N.NODE]=!1;var me=q.contexts[N.NODE],yn=N.textureCache.texture,Ut=N.textureCache.viewport;me.setTransform(1,0,0,1,0,0),st?Te(me,0,0,Ut.width,Ut.height):me.clearRect(0,0,Ut.width,Ut.height);var nn=Nt.core("outside-texture-bg-color").value,qe=Nt.core("outside-texture-bg-opacity").value;N.colorFillStyle(me,nn[0],nn[1],nn[2],qe),me.fillRect(0,0,Ut.width,Ut.height);var Pt=H.zoom();ie(me,!1),me.clearRect(Ut.mpan.x,Ut.mpan.y,Ut.width/Ut.zoom/j,Ut.height/Ut.zoom/j),me.drawImage(yn,Ut.mpan.x,Ut.mpan.y,Ut.width/Ut.zoom/j,Ut.height/Ut.zoom/j)}else N.textureOnViewport&&!p&&(N.textureCache=null);var Tn=H.extent(),Xn=N.pinching||N.hoverData.dragging||N.swipePanning||N.data.wheelZooming||N.hoverData.draggingEles||N.cy.animated(),lr=N.hideEdgesOnViewport&&Xn,Sn=[];if(Sn[N.NODE]=!W[N.NODE]&&st&&!N.clearedForMotionBlur[N.NODE]||N.clearingMotionBlur,Sn[N.NODE]&&(N.clearedForMotionBlur[N.NODE]=!0),Sn[N.DRAG]=!W[N.DRAG]&&st&&!N.clearedForMotionBlur[N.DRAG]||N.clearingMotionBlur,Sn[N.DRAG]&&(N.clearedForMotionBlur[N.DRAG]=!0),W[N.NODE]||x||C||Sn[N.NODE]){var or=st&&!Sn[N.NODE]&&bt!==1,me=p||(or?N.data.bufferContexts[N.MOTIONBLUR_BUFFER_NODE]:q.contexts[N.NODE]),pr=st&&!or?"motionBlur":void 0;ie(me,pr),lr?N.drawCachedNodes(me,Ee.nondrag,j,Tn):N.drawLayeredElements(me,Ee.nondrag,j,Tn),N.debug&&N.drawDebugPoints(me,Ee.nondrag),!x&&!st&&(W[N.NODE]=!1)}if(!C&&(W[N.DRAG]||x||Sn[N.DRAG])){var or=st&&!Sn[N.DRAG]&&bt!==1,me=p||(or?N.data.bufferContexts[N.MOTIONBLUR_BUFFER_DRAG]:q.contexts[N.DRAG]);ie(me,st&&!or?"motionBlur":void 0),lr?N.drawCachedNodes(me,Ee.drag,j,Tn):N.drawCachedElements(me,Ee.drag,j,Tn),N.debug&&N.drawDebugPoints(me,Ee.drag),!x&&!st&&(W[N.DRAG]=!1)}if(N.showFps||!C&&W[N.SELECT_BOX]&&!x){var me=p||q.contexts[N.SELECT_BOX];if(ie(me),N.selection[4]==1&&(N.hoverData.selecting||N.touchData.selecting)){var Pt=N.cy.zoom(),kr=Nt.core("selection-box-border-width").value/Pt;me.lineWidth=kr,me.fillStyle="rgba("+Nt.core("selection-box-color").value[0]+","+Nt.core("selection-box-color").value[1]+","+Nt.core("selection-box-color").value[2]+","+Nt.core("selection-box-opacity").value+")",me.fillRect(N.selection[0],N.selection[1],N.selection[2]-N.selection[0],N.selection[3]-N.selection[1]),kr>0&&(me.strokeStyle="rgba("+Nt.core("selection-box-border-color").value[0]+","+Nt.core("selection-box-border-color").value[1]+","+Nt.core("selection-box-border-color").value[2]+","+Nt.core("selection-box-opacity").value+")",me.strokeRect(N.selection[0],N.selection[1],N.selection[2]-N.selection[0],N.selection[3]-N.selection[1]))}if(q.bgActivePosistion&&!N.hoverData.selecting){var Pt=N.cy.zoom(),wr=q.bgActivePosistion;me.fillStyle="rgba("+Nt.core("active-bg-color").value[0]+","+Nt.core("active-bg-color").value[1]+","+Nt.core("active-bg-color").value[2]+","+Nt.core("active-bg-opacity").value+")",me.beginPath(),me.arc(wr.x,wr.y,Nt.core("active-bg-size").pfValue/Pt,0,2*Math.PI),me.fill()}var Cr=N.lastRedrawTime;if(N.showFps&&Cr){Cr=Math.round(Cr);var $n=Math.round(1e3/Cr);me.setTransform(1,0,0,1,0,0),me.fillStyle="rgba(255, 0, 0, 0.75)",me.strokeStyle="rgba(255, 0, 0, 0.75)",me.lineWidth=1,me.fillText("1 frame = "+Cr+" ms = "+$n+" fps",0,20);var cr=60;me.strokeRect(0,30,250,20),me.fillRect(0,30,250*Math.min($n/cr,1),20)}x||(W[N.SELECT_BOX]=!1)}if(st&&bt!==1){var mr=q.contexts[N.NODE],Sr=N.data.bufferCanvases[N.MOTIONBLUR_BUFFER_NODE],gi=q.contexts[N.DRAG],ss=N.data.bufferCanvases[N.MOTIONBLUR_BUFFER_DRAG],na=function(si,Qi,ks){si.setTransform(1,0,0,1,0,0),ks||!Et?si.clearRect(0,0,N.canvasWidth,N.canvasHeight):Te(si,0,0,N.canvasWidth,N.canvasHeight);var as=bt;si.drawImage(Qi,0,0,N.canvasWidth*as,N.canvasHeight*as,0,0,N.canvasWidth,N.canvasHeight)};(W[N.NODE]||Sn[N.NODE])&&(na(mr,Sr,Sn[N.NODE]),W[N.NODE]=!1),(W[N.DRAG]||Sn[N.DRAG])&&(na(gi,ss,Sn[N.DRAG]),W[N.DRAG]=!1)}N.prevViewport=Ut,N.clearingMotionBlur&&(N.clearingMotionBlur=!1,N.motionBlurCleared=!0,N.motionBlur=!0),st&&(N.motionBlurTimeout=setTimeout(function(){N.motionBlurTimeout=null,N.clearedForMotionBlur[N.NODE]=!1,N.clearedForMotionBlur[N.DRAG]=!1,N.motionBlur=!1,N.clearingMotionBlur=!Z,N.mbFrames=0,W[N.NODE]=!0,W[N.DRAG]=!0,N.redraw()},Ent)),p||H.emit("render")};var gy={};gy.drawPolygonPath=function(y,p,x,C,L,O){var N=C/2,j=L/2;y.beginPath&&y.beginPath(),y.moveTo(p+N*O[0],x+j*O[1]);for(var H=1;H0&&N>0){bt.clearRect(0,0,O,N),bt.globalCompositeOperation="source-over";var pt=this.getCachedZSortedEles();if(y.full)bt.translate(-C.x1*q,-C.y1*q),bt.scale(q,q),this.drawElements(bt,pt),bt.scale(1/q,1/q),bt.translate(C.x1*q,C.y1*q);else{var _t=p.pan(),St={x:_t.x*q,y:_t.y*q};q*=p.zoom(),bt.translate(St.x,St.y),bt.scale(q,q),this.drawElements(bt,pt),bt.scale(1/q,1/q),bt.translate(-St.x,-St.y)}y.bg&&(bt.globalCompositeOperation="destination-over",bt.fillStyle=y.bg,bt.rect(0,0,O,N),bt.fill())}return st};function Tnt(y,p){for(var x=atob(y),C=new ArrayBuffer(x.length),L=new Uint8Array(C),O=0;O"u"?"undefined":f(OffscreenCanvas))!=="undefined"?x=new OffscreenCanvas(y,p):(x=document.createElement("canvas"),x.width=y,x.height=p),x},[jj,bb,wb,aE,S4,b6,dg,gy,oE,Yj].forEach(function(y){we(xc,y)});var cp=[{name:"null",impl:mj},{name:"base",impl:Dj},{name:"canvas",impl:Xj}],Cnt=[{type:"layout",extensions:Vet},{type:"renderer",extensions:cp}],Snt={},_nt={};function Ant(y,p,x){var C=x,L=function(de){Gc("Can not register `"+p+"` for `"+y+"` since `"+de+"` already exists in the prototype and can not be overridden")};if(y==="core"){if(tE.prototype[p])return L(p);tE.prototype[p]=x}else if(y==="collection"){if(w1.prototype[p])return L(p);w1.prototype[p]=x}else if(y==="layout"){for(var O=function(de){this.options=de,x.call(this,de),it(this._private)||(this._private={}),this._private.cy=de.cy,this._private.listeners=[],this.createEmitter()},N=O.prototype=Object.create(x.prototype),j=[],H=0;Hz&&(this.rect.x-=(this.labelWidth-z)/2,this.setWidth(this.labelWidth)),this.labelHeight>Y&&(this.labelPos=="center"?this.rect.y-=(this.labelHeight-Y)/2:this.labelPos=="top"&&(this.rect.y-=this.labelHeight-Y),this.setHeight(this.labelHeight))}}},F.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==b.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},F.prototype.transform=function(B){var z=this.rect.x;z>S.WORLD_BOUNDARY?z=S.WORLD_BOUNDARY:z<-S.WORLD_BOUNDARY&&(z=-S.WORLD_BOUNDARY);var Y=this.rect.y;Y>S.WORLD_BOUNDARY?Y=S.WORLD_BOUNDARY:Y<-S.WORLD_BOUNDARY&&(Y=-S.WORLD_BOUNDARY);var nt=new M(z,Y),ot=B.inverseTransformPoint(nt);this.setLocation(ot.x,ot.y)},F.prototype.getLeft=function(){return this.rect.x},F.prototype.getRight=function(){return this.rect.x+this.rect.width},F.prototype.getTop=function(){return this.rect.y},F.prototype.getBottom=function(){return this.rect.y+this.rect.height},F.prototype.getParent=function(){return this.owner==null?null:this.owner.getParent()},f.exports=F},function(f,g,w){function v(b,E){b==null&&E==null?(this.x=0,this.y=0):(this.x=b,this.y=E)}v.prototype.getX=function(){return this.x},v.prototype.getY=function(){return this.y},v.prototype.setX=function(b){this.x=b},v.prototype.setY=function(b){this.y=b},v.prototype.getDifference=function(b){return new DimensionD(this.x-b.x,this.y-b.y)},v.prototype.getCopy=function(){return new v(this.x,this.y)},v.prototype.translate=function(b){return this.x+=b.width,this.y+=b.height,this},f.exports=v},function(f,g,w){var v=w(2),b=w(10),E=w(0),S=w(6),_=w(3),M=w(1),F=w(13),R=w(12),B=w(11);function z(nt,ot,ft){v.call(this,ft),this.estimatedSize=b.MIN_VALUE,this.margin=E.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=nt,ot!=null&&ot instanceof S?this.graphManager=ot:ot!=null&&ot instanceof Layout&&(this.graphManager=ot.graphManager)}z.prototype=Object.create(v.prototype);for(var Y in v)z[Y]=v[Y];z.prototype.getNodes=function(){return this.nodes},z.prototype.getEdges=function(){return this.edges},z.prototype.getGraphManager=function(){return this.graphManager},z.prototype.getParent=function(){return this.parent},z.prototype.getLeft=function(){return this.left},z.prototype.getRight=function(){return this.right},z.prototype.getTop=function(){return this.top},z.prototype.getBottom=function(){return this.bottom},z.prototype.isConnected=function(){return this.isConnected},z.prototype.add=function(nt,ot,ft){if(ot==null&&ft==null){var wt=nt;if(this.graphManager==null)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(wt)>-1)throw"Node already in graph!";return wt.owner=this,this.getNodes().push(wt),wt}else{var mt=nt;if(!(this.getNodes().indexOf(ot)>-1&&this.getNodes().indexOf(ft)>-1))throw"Source or target not in graph!";if(!(ot.owner==ft.owner&&ot.owner==this))throw"Both owners must be this graph!";return ot.owner!=ft.owner?null:(mt.source=ot,mt.target=ft,mt.isInterGraph=!1,this.getEdges().push(mt),ot.edges.push(mt),ft!=ot&&ft.edges.push(mt),mt)}},z.prototype.remove=function(nt){var ot=nt;if(nt instanceof _){if(ot==null)throw"Node is null!";if(!(ot.owner!=null&&ot.owner==this))throw"Owner graph is invalid!";if(this.graphManager==null)throw"Owner graph manager is invalid!";for(var ft=ot.edges.slice(),wt,mt=ft.length,ct=0;ct-1&>>-1))throw"Source and/or target doesn't know this edge!";wt.source.edges.splice(it,1),wt.target!=wt.source&&wt.target.edges.splice(gt,1);var rt=wt.source.owner.getEdges().indexOf(wt);if(rt==-1)throw"Not in owner's edge list!";wt.source.owner.getEdges().splice(rt,1)}},z.prototype.updateLeftTop=function(){for(var nt=b.MAX_VALUE,ot=b.MAX_VALUE,ft,wt,mt,ct=this.getNodes(),rt=ct.length,it=0;itft&&(nt=ft),ot>wt&&(ot=wt)}return nt==b.MAX_VALUE?null:(ct[0].getParent().paddingLeft!=null?mt=ct[0].getParent().paddingLeft:mt=this.margin,this.left=ot-mt,this.top=nt-mt,new R(this.left,this.top))},z.prototype.updateBounds=function(nt){for(var ot=b.MAX_VALUE,ft=-b.MAX_VALUE,wt=b.MAX_VALUE,mt=-b.MAX_VALUE,ct,rt,it,gt,Q,dt=this.nodes,K=dt.length,yt=0;ytct&&(ot=ct),ftit&&(wt=it),mtct&&(ot=ct),ftit&&(wt=it),mt=this.nodes.length){var K=0;ft.forEach(function(yt){yt.owner==nt&&K++}),K==this.nodes.length&&(this.isConnected=!0)}},f.exports=z},function(f,g,w){var v,b=w(1);function E(S){v=w(5),this.layout=S,this.graphs=[],this.edges=[]}E.prototype.addRoot=function(){var S=this.layout.newGraph(),_=this.layout.newNode(null),M=this.add(S,_);return this.setRootGraph(M),this.rootGraph},E.prototype.add=function(S,_,M,F,R){if(M==null&&F==null&&R==null){if(S==null)throw"Graph is null!";if(_==null)throw"Parent node is null!";if(this.graphs.indexOf(S)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(S),S.parent!=null)throw"Already has a parent!";if(_.child!=null)throw"Already has a child!";return S.parent=_,_.child=S,S}else{R=M,F=_,M=S;var B=F.getOwner(),z=R.getOwner();if(!(B!=null&&B.getGraphManager()==this))throw"Source not in this graph mgr!";if(!(z!=null&&z.getGraphManager()==this))throw"Target not in this graph mgr!";if(B==z)return M.isInterGraph=!1,B.add(M,F,R);if(M.isInterGraph=!0,M.source=F,M.target=R,this.edges.indexOf(M)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(M),!(M.source!=null&&M.target!=null))throw"Edge source and/or target is null!";if(!(M.source.edges.indexOf(M)==-1&&M.target.edges.indexOf(M)==-1))throw"Edge already in source and/or target incidency list!";return M.source.edges.push(M),M.target.edges.push(M),M}},E.prototype.remove=function(S){if(S instanceof v){var _=S;if(_.getGraphManager()!=this)throw"Graph not in this graph mgr";if(!(_==this.rootGraph||_.parent!=null&&_.parent.graphManager==this))throw"Invalid parent node!";var M=[];M=M.concat(_.getEdges());for(var F,R=M.length,B=0;B=S.getRight()?_[0]+=Math.min(S.getX()-E.getX(),E.getRight()-S.getRight()):S.getX()<=E.getX()&&S.getRight()>=E.getRight()&&(_[0]+=Math.min(E.getX()-S.getX(),S.getRight()-E.getRight())),E.getY()<=S.getY()&&E.getBottom()>=S.getBottom()?_[1]+=Math.min(S.getY()-E.getY(),E.getBottom()-S.getBottom()):S.getY()<=E.getY()&&S.getBottom()>=E.getBottom()&&(_[1]+=Math.min(E.getY()-S.getY(),S.getBottom()-E.getBottom()));var R=Math.abs((S.getCenterY()-E.getCenterY())/(S.getCenterX()-E.getCenterX()));S.getCenterY()===E.getCenterY()&&S.getCenterX()===E.getCenterX()&&(R=1);var B=R*_[0],z=_[1]/R;_[0]B)return _[0]=M,_[1]=Y,_[2]=R,_[3]=dt,!1;if(FR)return _[0]=z,_[1]=F,_[2]=gt,_[3]=B,!1;if(MR?(_[0]=ot,_[1]=ft,Ot=!0):(_[0]=nt,_[1]=Y,Ot=!0):jt===Ft&&(M>R?(_[0]=z,_[1]=Y,Ot=!0):(_[0]=wt,_[1]=ft,Ot=!0)),-xt===Ft?R>M?(_[2]=Q,_[3]=dt,It=!0):(_[2]=gt,_[3]=it,It=!0):xt===Ft&&(R>M?(_[2]=rt,_[3]=it,It=!0):(_[2]=K,_[3]=dt,It=!0)),Ot&&It)return!1;if(M>R?F>B?(Ct=this.getCardinalDirection(jt,Ft,4),kt=this.getCardinalDirection(xt,Ft,2)):(Ct=this.getCardinalDirection(-jt,Ft,3),kt=this.getCardinalDirection(-xt,Ft,1)):F>B?(Ct=this.getCardinalDirection(-jt,Ft,1),kt=this.getCardinalDirection(-xt,Ft,3)):(Ct=this.getCardinalDirection(jt,Ft,2),kt=this.getCardinalDirection(xt,Ft,4)),!Ot)switch(Ct){case 1:Fe=Y,Gt=M+-ct/Ft,_[0]=Gt,_[1]=Fe;break;case 2:Gt=wt,Fe=F+mt*Ft,_[0]=Gt,_[1]=Fe;break;case 3:Fe=ft,Gt=M+ct/Ft,_[0]=Gt,_[1]=Fe;break;case 4:Gt=ot,Fe=F+-mt*Ft,_[0]=Gt,_[1]=Fe;break}if(!It)switch(kt){case 1:pn=it,Mt=R+-V/Ft,_[2]=Mt,_[3]=pn;break;case 2:Mt=K,pn=B+yt*Ft,_[2]=Mt,_[3]=pn;break;case 3:pn=dt,Mt=R+V/Ft,_[2]=Mt,_[3]=pn;break;case 4:Mt=Q,pn=B+-yt*Ft,_[2]=Mt,_[3]=pn;break}}return!1},b.getCardinalDirection=function(E,S,_){return E>S?_:1+_%4},b.getIntersection=function(E,S,_,M){if(M==null)return this.getIntersection2(E,S,_);var F=E.x,R=E.y,B=S.x,z=S.y,Y=_.x,nt=_.y,ot=M.x,ft=M.y,wt=void 0,mt=void 0,ct=void 0,rt=void 0,it=void 0,gt=void 0,Q=void 0,dt=void 0,K=void 0;return ct=z-R,it=F-B,Q=B*R-F*z,rt=ft-nt,gt=Y-ot,dt=ot*nt-Y*ft,K=ct*gt-rt*it,K===0?null:(wt=(it*dt-gt*Q)/K,mt=(rt*Q-ct*dt)/K,new v(wt,mt))},b.angleOfVector=function(E,S,_,M){var F=void 0;return E!==_?(F=Math.atan((M-S)/(_-E)),_0?1:b<0?-1:0},v.floor=function(b){return b<0?Math.ceil(b):Math.floor(b)},v.ceil=function(b){return b<0?Math.floor(b):Math.ceil(b)},f.exports=v},function(f,g,w){function v(){}v.MAX_VALUE=2147483647,v.MIN_VALUE=-2147483648,f.exports=v},function(f,g,w){var v=function(){function F(R,B){for(var z=0;z"u"?"undefined":v(E);return E==null||S!="object"&&S!="function"},f.exports=b},function(f,g,w){function v(Y){if(Array.isArray(Y)){for(var nt=0,ot=Array(Y.length);nt0&&nt;){for(ct.push(it[0]);ct.length>0&&nt;){var gt=ct[0];ct.splice(0,1),mt.add(gt);for(var Q=gt.getEdges(),wt=0;wt-1&&it.splice(V,1)}mt=new Set,rt=new Map}}return Y},z.prototype.createDummyNodesForBendpoints=function(Y){for(var nt=[],ot=Y.source,ft=this.graphManager.calcLowestCommonAncestor(Y.source,Y.target),wt=0;wt0){for(var ft=this.edgeToDummyNodes.get(ot),wt=0;wt=0&&nt.splice(dt,1);var K=rt.getNeighborsList();K.forEach(function(Ot){if(ot.indexOf(Ot)<0){var It=ft.get(Ot),jt=It-1;jt==1&>.push(Ot),ft.set(Ot,jt)}})}ot=ot.concat(gt),(nt.length==1||nt.length==2)&&(wt=!0,mt=nt[0])}return mt},z.prototype.setGraphManager=function(Y){this.graphManager=Y},f.exports=z},function(f,g,w){function v(){}v.seed=1,v.x=0,v.nextDouble=function(){return v.x=Math.sin(v.seed++)*1e4,v.x-Math.floor(v.x)},f.exports=v},function(f,g,w){var v=w(4);function b(E,S){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}b.prototype.getWorldOrgX=function(){return this.lworldOrgX},b.prototype.setWorldOrgX=function(E){this.lworldOrgX=E},b.prototype.getWorldOrgY=function(){return this.lworldOrgY},b.prototype.setWorldOrgY=function(E){this.lworldOrgY=E},b.prototype.getWorldExtX=function(){return this.lworldExtX},b.prototype.setWorldExtX=function(E){this.lworldExtX=E},b.prototype.getWorldExtY=function(){return this.lworldExtY},b.prototype.setWorldExtY=function(E){this.lworldExtY=E},b.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},b.prototype.setDeviceOrgX=function(E){this.ldeviceOrgX=E},b.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},b.prototype.setDeviceOrgY=function(E){this.ldeviceOrgY=E},b.prototype.getDeviceExtX=function(){return this.ldeviceExtX},b.prototype.setDeviceExtX=function(E){this.ldeviceExtX=E},b.prototype.getDeviceExtY=function(){return this.ldeviceExtY},b.prototype.setDeviceExtY=function(E){this.ldeviceExtY=E},b.prototype.transformX=function(E){var S=0,_=this.lworldExtX;return _!=0&&(S=this.ldeviceOrgX+(E-this.lworldOrgX)*this.ldeviceExtX/_),S},b.prototype.transformY=function(E){var S=0,_=this.lworldExtY;return _!=0&&(S=this.ldeviceOrgY+(E-this.lworldOrgY)*this.ldeviceExtY/_),S},b.prototype.inverseTransformX=function(E){var S=0,_=this.ldeviceExtX;return _!=0&&(S=this.lworldOrgX+(E-this.ldeviceOrgX)*this.lworldExtX/_),S},b.prototype.inverseTransformY=function(E){var S=0,_=this.ldeviceExtY;return _!=0&&(S=this.lworldOrgY+(E-this.ldeviceOrgY)*this.lworldExtY/_),S},b.prototype.inverseTransformPoint=function(E){var S=new v(this.inverseTransformX(E.x),this.inverseTransformY(E.y));return S},f.exports=b},function(f,g,w){function v(B){if(Array.isArray(B)){for(var z=0,Y=Array(B.length);zE.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*E.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(B-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-E.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT_INCREMENTAL):(B>E.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(E.COOLING_ADAPTATION_FACTOR,1-(B-E.ADAPTATION_LOWER_NODE_LIMIT)/(E.ADAPTATION_UPPER_NODE_LIMIT-E.ADAPTATION_LOWER_NODE_LIMIT)*(1-E.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=E.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(this.getAllNodes().length*5,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},F.prototype.calcSpringForces=function(){for(var B=this.getAllEdges(),z,Y=0;Y0&&arguments[0]!==void 0?arguments[0]:!0,z=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,Y,nt,ot,ft,wt=this.getAllNodes(),mt;if(this.useFRGridVariant)for(this.totalIterations%E.GRID_CALCULATION_CHECK_PERIOD==1&&B&&this.updateGrid(),mt=new Set,Y=0;Yct||mt>ct)&&(B.gravitationForceX=-this.gravityConstant*ot,B.gravitationForceY=-this.gravityConstant*ft)):(ct=z.getEstimatedSize()*this.compoundGravityRangeFactor,(wt>ct||mt>ct)&&(B.gravitationForceX=-this.gravityConstant*ot*this.compoundGravityConstant,B.gravitationForceY=-this.gravityConstant*ft*this.compoundGravityConstant))},F.prototype.isConverged=function(){var B,z=!1;return this.totalIterations>this.maxIterations/3&&(z=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),B=this.totalDisplacement=wt.length||ct>=wt[0].length)){for(var rt=0;rtF}}]),_}();f.exports=S},function(f,g,w){var v=function(){function S(_,M){for(var F=0;F2&&arguments[2]!==void 0?arguments[2]:1,R=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,B=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1;b(this,S),this.sequence1=_,this.sequence2=M,this.match_score=F,this.mismatch_penalty=R,this.gap_penalty=B,this.iMax=_.length+1,this.jMax=M.length+1,this.grid=new Array(this.iMax);for(var z=0;z=0;_--){var M=this.listeners[_];M.event===E&&M.callback===S&&this.listeners.splice(_,1)}},b.emit=function(E,S){for(var _=0;_M.coolingFactor*M.maxNodeDisplacement&&(this.displacementX=M.coolingFactor*M.maxNodeDisplacement*E.sign(this.displacementX)),Math.abs(this.displacementY)>M.coolingFactor*M.maxNodeDisplacement&&(this.displacementY=M.coolingFactor*M.maxNodeDisplacement*E.sign(this.displacementY)),this.child==null?this.moveBy(this.displacementX,this.displacementY):this.child.getNodes().length==0?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),M.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},S.prototype.propogateDisplacementToChildren=function(M,F){for(var R=this.getChild().getNodes(),B,z=0;z0)this.positionNodesRadially(it);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var gt=new Set(this.getAllNodes()),Q=this.nodesWithGravity.filter(function(dt){return gt.has(dt)});this.graphManager.setAllNodesToApplyGravitation(Q),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},ct.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished)if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;if(this.totalIterations%R.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged())if(this.prunedNodesAll.length>0)this.isTreeGrowing=!0;else return!0;this.coolingCycle++,this.layoutQuality==0?this.coolingAdjuster=this.coolingCycle:this.layoutQuality==1&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var it=new Set(this.getAllNodes()),gt=this.nodesWithGravity.filter(function(K){return it.has(K)});this.graphManager.setAllNodesToApplyGravitation(gt),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=R.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=R.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var Q=!this.isTreeGrowing&&!this.isGrowthFinished,dt=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(Q,dt),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},ct.prototype.getPositionsData=function(){for(var it=this.graphManager.getAllNodes(),gt={},Q=0;Q1){var Ot;for(Ot=0;Otdt&&(dt=Math.floor(V.y)),yt=Math.floor(V.x+F.DEFAULT_COMPONENT_SEPERATION)}this.transform(new Y(B.WORLD_CENTER_X-V.x/2,B.WORLD_CENTER_Y-V.y/2))},ct.radialLayout=function(it,gt,Q){var dt=Math.max(this.maxDiagonalInTree(it),F.DEFAULT_RADIAL_SEPARATION);ct.branchRadialLayout(gt,null,0,359,0,dt);var K=wt.calculateBounds(it),yt=new mt;yt.setDeviceOrgX(K.getMinX()),yt.setDeviceOrgY(K.getMinY()),yt.setWorldOrgX(Q.x),yt.setWorldOrgY(Q.y);for(var V=0;V1;){var pn=Mt[0];Mt.splice(0,1);var Ae=Ft.indexOf(pn);Ae>=0&&Ft.splice(Ae,1),Gt--,Ct--}gt!=null?Fe=(Ft.indexOf(Mt[0])+1)%Gt:Fe=0;for(var ye=Math.abs(dt-Q)/Ct,tn=Fe;kt!=Ct;tn=++tn%Gt){var sn=Ft[tn].getOtherEnd(it);if(sn!=gt){var be=(Q+kt*ye)%360,Ne=(be+ye)%360;ct.branchRadialLayout(sn,it,be,Ne,K+yt,yt),kt++}}},ct.maxDiagonalInTree=function(it){for(var gt=ot.MIN_VALUE,Q=0;Qgt&&(gt=K)}return gt},ct.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},ct.prototype.groupZeroDegreeMembers=function(){var it=this,gt={};this.memberGroups={},this.idToDummyNode={};for(var Q=[],dt=this.graphManager.getAllNodes(),K=0;K"u"&&(gt[Ot]=[]),gt[Ot]=gt[Ot].concat(yt)}Object.keys(gt).forEach(function(It){if(gt[It].length>1){var jt="DummyCompound_"+It;it.memberGroups[jt]=gt[It];var xt=gt[It][0].getParent(),Ft=new _(it.graphManager);Ft.id=jt,Ft.paddingLeft=xt.paddingLeft||0,Ft.paddingRight=xt.paddingRight||0,Ft.paddingBottom=xt.paddingBottom||0,Ft.paddingTop=xt.paddingTop||0,it.idToDummyNode[jt]=Ft;var Ct=it.getGraphManager().add(it.newGraph(),Ft),kt=xt.getChild();kt.add(Ft);for(var Gt=0;Gt=0;it--){var gt=this.compoundOrder[it],Q=gt.id,dt=gt.paddingLeft,K=gt.paddingTop;this.adjustLocations(this.tiledMemberPack[Q],gt.rect.x,gt.rect.y,dt,K)}},ct.prototype.repopulateZeroDegreeMembers=function(){var it=this,gt=this.tiledZeroDegreePack;Object.keys(gt).forEach(function(Q){var dt=it.idToDummyNode[Q],K=dt.paddingLeft,yt=dt.paddingTop;it.adjustLocations(gt[Q],dt.rect.x,dt.rect.y,K,yt)})},ct.prototype.getToBeTiled=function(it){var gt=it.id;if(this.toBeTiled[gt]!=null)return this.toBeTiled[gt];var Q=it.getChild();if(Q==null)return this.toBeTiled[gt]=!1,!1;for(var dt=Q.getNodes(),K=0;K0)return this.toBeTiled[gt]=!1,!1;if(yt.getChild()==null){this.toBeTiled[yt.id]=!1;continue}if(!this.getToBeTiled(yt))return this.toBeTiled[gt]=!1,!1}return this.toBeTiled[gt]=!0,!0},ct.prototype.getNodeDegree=function(it){it.id;for(var gt=it.getEdges(),Q=0,dt=0;dtIt&&(It=xt.rect.height)}Q+=It+it.verticalPadding}},ct.prototype.tileCompoundMembers=function(it,gt){var Q=this;this.tiledMemberPack=[],Object.keys(it).forEach(function(dt){var K=gt[dt];Q.tiledMemberPack[dt]=Q.tileNodes(it[dt],K.paddingLeft+K.paddingRight),K.rect.width=Q.tiledMemberPack[dt].width,K.rect.height=Q.tiledMemberPack[dt].height})},ct.prototype.tileNodes=function(it,gt){var Q=F.TILING_PADDING_VERTICAL,dt=F.TILING_PADDING_HORIZONTAL,K={rows:[],rowWidth:[],rowHeight:[],width:0,height:gt,verticalPadding:Q,horizontalPadding:dt};it.sort(function(Ot,It){return Ot.rect.width*Ot.rect.height>It.rect.width*It.rect.height?-1:Ot.rect.width*Ot.rect.height0&&(V+=it.horizontalPadding),it.rowWidth[Q]=V,it.width0&&(Ot+=it.verticalPadding);var It=0;Ot>it.rowHeight[Q]&&(It=it.rowHeight[Q],it.rowHeight[Q]=Ot,It=it.rowHeight[Q]-It),it.height+=It,it.rows[Q].push(gt)},ct.prototype.getShortestRowIndex=function(it){for(var gt=-1,Q=Number.MAX_VALUE,dt=0;dtQ&&(gt=dt,Q=it.rowWidth[dt]);return gt},ct.prototype.canAddHorizontal=function(it,gt,Q){var dt=this.getShortestRowIndex(it);if(dt<0)return!0;var K=it.rowWidth[dt];if(K+it.horizontalPadding+gt<=it.width)return!0;var yt=0;it.rowHeight[dt]0&&(yt=Q+it.verticalPadding-it.rowHeight[dt]);var V;it.width-K>=gt+it.horizontalPadding?V=(it.height+yt)/(K+gt+it.horizontalPadding):V=(it.height+yt)/it.width,yt=Q+it.verticalPadding;var Ot;return it.widthyt&>!=Q){dt.splice(-1,1),it.rows[Q].push(K),it.rowWidth[gt]=it.rowWidth[gt]-yt,it.rowWidth[Q]=it.rowWidth[Q]+yt,it.width=it.rowWidth[instance.getLongestRowIndex(it)];for(var V=Number.MIN_VALUE,Ot=0;OtV&&(V=dt[Ot].height);gt>0&&(V+=it.verticalPadding);var It=it.rowHeight[gt]+it.rowHeight[Q];it.rowHeight[gt]=V,it.rowHeight[Q]0)for(var kt=K;kt<=yt;kt++)Ct[0]+=this.grid[kt][V-1].length+this.grid[kt][V].length-1;if(yt0)for(var kt=V;kt<=Ot;kt++)Ct[3]+=this.grid[K-1][kt].length+this.grid[K][kt].length-1;for(var Gt=ot.MAX_VALUE,Fe,Mt,pn=0;pn0){var Ot;Ot=mt.getGraphManager().add(mt.newGraph(),Q),this.processChildrenList(Ot,gt,mt)}}},Y.prototype.stop=function(){return this.stopped=!0,this};var ot=function(wt){wt("layout","cose-bilkent",Y)};typeof cytoscape<"u"&&ot(cytoscape),g.exports=ot}])})})(WHt);var ien=WHt.exports;const sen=e9(ien),aen=12,oen=function(i,a,f,g){a.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("d",`M0 ${f.height-5} v${-f.height+2*5} q0,-5 5,-5 h${f.width-2*5} q5,0 5,5 v${f.height-5} H0 Z`),a.append("line").attr("class","node-line-"+g).attr("x1",0).attr("y1",f.height).attr("x2",f.width).attr("y2",f.height)},cen=function(i,a,f){a.append("rect").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("height",f.height).attr("width",f.width)},uen=function(i,a,f){const g=f.width,w=f.height,v=.15*g,b=.25*g,E=.35*g,S=.2*g;a.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("d",`M0 0 a${v},${v} 0 0,1 ${g*.25},${-1*g*.1} + a${E},${E} 1 0,1 ${g*.4},${-1*g*.1} + a${b},${b} 1 0,1 ${g*.35},${1*g*.2} + + a${v},${v} 1 0,1 ${g*.15},${1*w*.35} + a${S},${S} 1 0,1 ${-1*g*.15},${1*w*.65} + + a${b},${v} 1 0,1 ${-1*g*.25},${g*.15} + a${E},${E} 1 0,1 ${-1*g*.5},0 + a${v},${v} 1 0,1 ${-1*g*.25},${-1*g*.15} + + a${v},${v} 1 0,1 ${-1*g*.1},${-1*w*.35} + a${S},${S} 1 0,1 ${g*.1},${-1*w*.65} + + H0 V0 Z`)},len=function(i,a,f){const g=f.width,w=f.height,v=.15*g;a.append("path").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("d",`M0 0 a${v},${v} 1 0,0 ${g*.25},${-1*w*.1} + a${v},${v} 1 0,0 ${g*.25},0 + a${v},${v} 1 0,0 ${g*.25},0 + a${v},${v} 1 0,0 ${g*.25},${1*w*.1} + + a${v},${v} 1 0,0 ${g*.15},${1*w*.33} + a${v*.8},${v*.8} 1 0,0 0,${1*w*.34} + a${v},${v} 1 0,0 ${-1*g*.15},${1*w*.33} + + a${v},${v} 1 0,0 ${-1*g*.25},${w*.15} + a${v},${v} 1 0,0 ${-1*g*.25},0 + a${v},${v} 1 0,0 ${-1*g*.25},0 + a${v},${v} 1 0,0 ${-1*g*.25},${-1*w*.15} + + a${v},${v} 1 0,0 ${-1*g*.1},${-1*w*.33} + a${v*.8},${v*.8} 1 0,0 0,${-1*w*.34} + a${v},${v} 1 0,0 ${g*.1},${-1*w*.33} + + H0 V0 Z`)},hen=function(i,a,f){a.append("circle").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("r",f.width/2)};function fen(i,a,f,g,w){return i.insert("polygon",":first-child").attr("points",g.map(function(v){return v.x+","+v.y}).join(" ")).attr("transform","translate("+(w.width-a)/2+", "+f+")")}const den=function(i,a,f){const g=f.height,v=g/4,b=f.width-f.padding+2*v,E=[{x:v,y:0},{x:b-v,y:0},{x:b,y:-g/2},{x:b-v,y:-g},{x:v,y:-g},{x:0,y:-g/2}];fen(a,b,g,E,f)},gen=function(i,a,f){a.append("rect").attr("id","node-"+f.id).attr("class","node-bkg node-"+i.type2Str(f.type)).attr("height",f.height).attr("rx",f.padding).attr("ry",f.padding).attr("width",f.width)},pen=function(i,a,f,g,w){const v=w.htmlLabels,b=g%(aen-1),E=a.append("g");f.section=b;let S="section-"+b;b<0&&(S+=" section-root"),E.attr("class",(f.class?f.class+" ":"")+"mindmap-node "+S);const _=E.append("g"),M=E.append("g"),F=f.descr.replace(/()/g,` +`);ZY(M,F,{useHtmlLabels:v,width:f.width,classes:"mindmap-node-label"}),v||M.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const R=M.node().getBBox(),[B]=k9(w.fontSize);if(f.height=R.height+B*1.1*.5+f.padding,f.width=R.width+2*f.padding,f.icon)if(f.type===i.nodeType.CIRCLE)f.height+=50,f.width+=50,E.append("foreignObject").attr("height","50px").attr("width",f.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+b+" "+f.icon),M.attr("transform","translate("+f.width/2+", "+(f.height/2-1.5*f.padding)+")");else{f.width+=50;const z=f.height;f.height=Math.max(z,60);const Y=Math.abs(f.height-z);E.append("foreignObject").attr("width","60px").attr("height",f.height).attr("style","text-align: center;margin-top:"+Y/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+b+" "+f.icon),M.attr("transform","translate("+(25+f.width/2)+", "+(Y/2+f.padding/2)+")")}else if(v){const z=(f.width-R.width)/2,Y=(f.height-R.height)/2;M.attr("transform","translate("+z+", "+Y+")")}else{const z=f.width/2,Y=f.padding/2;M.attr("transform","translate("+z+", "+Y+")")}switch(f.type){case i.nodeType.DEFAULT:oen(i,_,f,b);break;case i.nodeType.ROUNDED_RECT:gen(i,_,f);break;case i.nodeType.RECT:cen(i,_,f);break;case i.nodeType.CIRCLE:_.attr("transform","translate("+f.width/2+", "+ +f.height/2+")"),hen(i,_,f);break;case i.nodeType.CLOUD:uen(i,_,f);break;case i.nodeType.BANG:len(i,_,f);break;case i.nodeType.HEXAGON:den(i,_,f);break}return i.setElementForId(f.id,E),f.height},ben=function(i,a){const f=i.getElementById(a.id),g=a.x||0,w=a.y||0;f.attr("transform","translate("+g+","+w+")")};KHt.use(sen);function QHt(i,a,f,g,w){pen(i,a,f,g,w),f.children&&f.children.forEach((v,b)=>{QHt(i,a,v,g<0?b:g,w)})}function wen(i,a){a.edges().map((f,g)=>{const w=f.data();if(f[0]._private.bodyBounds){const v=f[0]._private.rscratch;Kt.trace("Edge: ",g,w),i.insert("path").attr("d",`M ${v.startX},${v.startY} L ${v.midX},${v.midY} L${v.endX},${v.endY} `).attr("class","edge section-edge-"+w.section+" edge-depth-"+w.depth)}})}function JHt(i,a,f,g){a.add({group:"nodes",data:{id:i.id.toString(),labelText:i.descr,height:i.height,width:i.width,level:g,nodeId:i.id,padding:i.padding,type:i.type},position:{x:i.x,y:i.y}}),i.children&&i.children.forEach(w=>{JHt(w,a,f,g+1),a.add({group:"edges",data:{id:`${i.id}_${w.id}`,source:i.id,target:w.id,depth:g,section:w.section}})})}function men(i,a){return new Promise(f=>{const g=Tr("body").append("div").attr("id","cy").attr("style","display:none"),w=KHt({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});g.remove(),JHt(i,w,a,0),w.nodes().forEach(function(v){v.layoutDimensions=()=>{const b=v.data();return{w:b.width,h:b.height}}}),w.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),w.ready(v=>{Kt.info("Ready",v),f(w)})})}function ven(i,a){a.nodes().map((f,g)=>{const w=f.data();w.x=f.position().x,w.y=f.position().y,ben(i,w);const v=i.getElementById(w.nodeId);Kt.info("Id:",g,"Position: (",f.position().x,", ",f.position().y,")",w),v.attr("transform",`translate(${f.position().x-w.width/2}, ${f.position().y-w.height/2})`),v.attr("attr",`apa-${g})`)})}const yen={draw:async(i,a,f,g)=>{var F,R;Kt.debug(`Rendering mindmap diagram +`+i);const w=g.db,v=w.getMindmap();if(!v)return;const b=Re();b.htmlLabels=!1;const E=FF(a),S=E.append("g");S.attr("class","mindmap-edges");const _=E.append("g");_.attr("class","mindmap-nodes"),QHt(w,_,v,-1,b);const M=await men(v,b);wen(S,M),ven(w,M),w8(void 0,E,((F=b.mindmap)==null?void 0:F.padding)??Bl.mindmap.padding,((R=b.mindmap)==null?void 0:R.useMaxWidth)??Bl.mindmap.useMaxWidth)}},xen=i=>{let a="";for(let f=0;f` + .edge { + stroke-width: 3; + } + ${xen(i)} + .section-root rect, .section-root path, .section-root circle, .section-root polygon { + fill: ${i.git0}; + } + .section-root text { + fill: ${i.gitBranchLabel0}; + } + .icon-container { + height:100%; + display: flex; + justify-content: center; + align-items: center; + } + .edge { + fill: none; + } + .mindmap-node-label { + dy: 1em; + alignment-baseline: middle; + text-anchor: middle; + dominant-baseline: middle; + text-align: center; + } +`}},Symbol.toStringTag,{value:"Module"}));var w2t=function(){var i=function(E,S,_,M){for(_=_||{},M=E.length;M--;_[E[M]]=S);return _},a=[1,9],f=[1,10],g=[1,5,10,12],w={trace:function(){},yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:function(S,_,M,F,R,B,z){var Y=B.length-1;switch(R){case 7:const nt=F.findOrCreateNode(B[Y-4].trim().replaceAll('""','"')),ot=F.findOrCreateNode(B[Y-2].trim().replaceAll('""','"')),ft=parseFloat(B[Y].trim());F.addLink(nt,ot,ft);break;case 8:case 9:case 11:this.$=B[Y];break;case 10:this.$=B[Y-1];break}},table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:a,20:f},{1:[2,6],7:11,10:[1,12]},i(f,[2,4],{9:13,5:[1,14]}),{12:[1,15]},i(g,[2,8]),i(g,[2,9]),{19:[1,16]},i(g,[2,11]),{1:[2,1]},{1:[2,5]},i(f,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:a,20:f},{15:18,16:7,17:8,18:a,20:f},{18:[1,19]},i(f,[2,3]),{12:[1,20]},i(g,[2,10]),{15:21,16:7,17:8,18:a,20:f},i([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:function(S,_){if(_.recoverable)this.trace(S);else{var M=new Error(S);throw M.hash=_,M}},parse:function(S){var _=this,M=[0],F=[],R=[null],B=[],z=this.table,Y="",nt=0,ot=0,ft=2,wt=1,mt=B.slice.call(arguments,1),ct=Object.create(this.lexer),rt={yy:{}};for(var it in this.yy)Object.prototype.hasOwnProperty.call(this.yy,it)&&(rt.yy[it]=this.yy[it]);ct.setInput(S,rt.yy),rt.yy.lexer=ct,rt.yy.parser=this,typeof ct.yylloc>"u"&&(ct.yylloc={});var gt=ct.yylloc;B.push(gt);var Q=ct.options&&ct.options.ranges;typeof rt.yy.parseError=="function"?this.parseError=rt.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function dt(){var Gt;return Gt=F.pop()||ct.lex()||wt,typeof Gt!="number"&&(Gt instanceof Array&&(F=Gt,Gt=F.pop()),Gt=_.symbols_[Gt]||Gt),Gt}for(var K,yt,V,Ot,It={},jt,xt,Ft,Ct;;){if(yt=M[M.length-1],this.defaultActions[yt]?V=this.defaultActions[yt]:((K===null||typeof K>"u")&&(K=dt()),V=z[yt]&&z[yt][K]),typeof V>"u"||!V.length||!V[0]){var kt="";Ct=[];for(jt in z[yt])this.terminals_[jt]&&jt>ft&&Ct.push("'"+this.terminals_[jt]+"'");ct.showPosition?kt="Parse error on line "+(nt+1)+`: +`+ct.showPosition()+` +Expecting `+Ct.join(", ")+", got '"+(this.terminals_[K]||K)+"'":kt="Parse error on line "+(nt+1)+": Unexpected "+(K==wt?"end of input":"'"+(this.terminals_[K]||K)+"'"),this.parseError(kt,{text:ct.match,token:this.terminals_[K]||K,line:ct.yylineno,loc:gt,expected:Ct})}if(V[0]instanceof Array&&V.length>1)throw new Error("Parse Error: multiple actions possible at state: "+yt+", token: "+K);switch(V[0]){case 1:M.push(K),R.push(ct.yytext),B.push(ct.yylloc),M.push(V[1]),K=null,ot=ct.yyleng,Y=ct.yytext,nt=ct.yylineno,gt=ct.yylloc;break;case 2:if(xt=this.productions_[V[1]][1],It.$=R[R.length-xt],It._$={first_line:B[B.length-(xt||1)].first_line,last_line:B[B.length-1].last_line,first_column:B[B.length-(xt||1)].first_column,last_column:B[B.length-1].last_column},Q&&(It._$.range=[B[B.length-(xt||1)].range[0],B[B.length-1].range[1]]),Ot=this.performAction.apply(It,[Y,ot,nt,rt.yy,V[1],R,B].concat(mt)),typeof Ot<"u")return Ot;xt&&(M=M.slice(0,-1*xt*2),R=R.slice(0,-1*xt),B=B.slice(0,-1*xt)),M.push(this.productions_[V[1]][0]),R.push(It.$),B.push(It._$),Ft=z[M[M.length-2]][M[M.length-1]],M.push(Ft);break;case 3:return!0}}return!0}},v=function(){var E={EOF:1,parseError:function(_,M){if(this.yy.parser)this.yy.parser.parseError(_,M);else throw new Error(_)},setInput:function(S,_){return this.yy=_||this.yy||{},this._input=S,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var S=this._input[0];this.yytext+=S,this.yyleng++,this.offset++,this.match+=S,this.matched+=S;var _=S.match(/(?:\r\n?|\n).*/g);return _?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),S},unput:function(S){var _=S.length,M=S.split(/(?:\r\n?|\n)/g);this._input=S+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-_),this.offset-=_;var F=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),M.length-1&&(this.yylineno-=M.length-1);var R=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:M?(M.length===F.length?this.yylloc.first_column:0)+F[F.length-M.length].length-M[0].length:this.yylloc.first_column-_},this.options.ranges&&(this.yylloc.range=[R[0],R[0]+this.yyleng-_]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(S){this.unput(this.match.slice(S))},pastInput:function(){var S=this.matched.substr(0,this.matched.length-this.match.length);return(S.length>20?"...":"")+S.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var S=this.match;return S.length<20&&(S+=this._input.substr(0,20-S.length)),(S.substr(0,20)+(S.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var S=this.pastInput(),_=new Array(S.length+1).join("-");return S+this.upcomingInput()+` +`+_+"^"},test_match:function(S,_){var M,F,R;if(this.options.backtrack_lexer&&(R={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(R.yylloc.range=this.yylloc.range.slice(0))),F=S[0].match(/(?:\r\n?|\n).*/g),F&&(this.yylineno+=F.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:F?F[F.length-1].length-F[F.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+S[0].length},this.yytext+=S[0],this.match+=S[0],this.matches=S,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(S[0].length),this.matched+=S[0],M=this.performAction.call(this,this.yy,this,_,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),M)return M;if(this._backtrack){for(var B in R)this[B]=R[B];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var S,_,M,F;this._more||(this.yytext="",this.match="");for(var R=this._currentRules(),B=0;B_[0].length)){if(_=M,F=B,this.options.backtrack_lexer){if(S=this.test_match(M,R[B]),S!==!1)return S;if(this._backtrack){_=!1;continue}else return!1}else if(!this.options.flex)break}return _?(S=this.test_match(_,R[F]),S!==!1?S:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var _=this.next();return _||this.lex()},begin:function(_){this.conditionStack.push(_)},popState:function(){var _=this.conditionStack.length-1;return _>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(_){return _=this.conditionStack.length-1-Math.abs(_||0),_>=0?this.conditionStack[_]:"INITIAL"},pushState:function(_){this.begin(_)},stateStackSize:function(){return this.conditionStack.length},options:{easy_keword_rules:!0},performAction:function(_,M,F,R){switch(F){case 0:return this.pushState("csv"),4;case 1:return 10;case 2:return 5;case 3:return 12;case 4:return this.pushState("escaped_text"),18;case 5:return 20;case 6:return this.popState("escaped_text"),18;case 7:return 19}},rules:[/^(?:sankey-beta\b)/,/^(?:$)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:(\u002C))/,/^(?:(\u0022))/,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/,/^(?:(\u0022)(?!(\u0022)))/,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/],conditions:{csv:{rules:[1,2,3,4,5,6,7],inclusive:!1},escaped_text:{rules:[6,7],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7],inclusive:!0}}};return E}();w.lexer=v;function b(){this.yy={}}return b.prototype=w,w.Parser=b,new b}();w2t.parser=w2t;const NX=w2t;let PX=[],FX=[],FD={};const Een=()=>{PX=[],FX=[],FD={},ag()};class Ten{constructor(a,f,g=0){this.source=a,this.target=f,this.value=g}}const Cen=(i,a,f)=>{PX.push(new Ten(i,a,f))};class Sen{constructor(a){this.ID=a}}const _en={nodesMap:FD,getConfig:()=>Re().sankey,getNodes:()=>FX,getLinks:()=>PX,getGraph:()=>({nodes:FX.map(i=>({id:i.ID})),links:PX.map(i=>({source:i.source.ID,target:i.target.ID,value:i.value}))}),addLink:Cen,findOrCreateNode:i=>(i=ei.sanitizeText(i,Re()),FD[i]||(FD[i]=new Sen(i),FX.push(FD[i])),FD[i]),getAccTitle:Xg,setAccTitle:og,getAccDescription:Jg,setAccDescription:Qg,getDiagramTitle:Zg,setDiagramTitle:S2,clear:Een};function ZHt(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f=w)&&(f=w)}return f}function tVt(i,a){let f;if(a===void 0)for(const g of i)g!=null&&(f>g||f===void 0&&g>=g)&&(f=g);else{let g=-1;for(let w of i)(w=a(w,++g,i))!=null&&(f>w||f===void 0&&w>=w)&&(f=w)}return f}function m2t(i,a){let f=0;if(a===void 0)for(let g of i)(g=+g)&&(f+=g);else{let g=-1;for(let w of i)(w=+a(w,++g,i))&&(f+=w)}return f}function Aen(i){return i.target.depth}function Len(i){return i.depth}function Den(i,a){return a-1-i.height}function eVt(i,a){return i.sourceLinks.length?i.depth:a-1}function Men(i){return i.targetLinks.length?i.depth:i.sourceLinks.length?tVt(i.sourceLinks,Aen)-1:0}function BX(i){return function(){return i}}function nVt(i,a){return RX(i.source,a.source)||i.index-a.index}function rVt(i,a){return RX(i.target,a.target)||i.index-a.index}function RX(i,a){return i.y0-a.y0}function v2t(i){return i.value}function Ien(i){return i.index}function Oen(i){return i.nodes}function Nen(i){return i.links}function iVt(i,a){const f=i.get(a);if(!f)throw new Error("missing: "+a);return f}function sVt({nodes:i}){for(const a of i){let f=a.y0,g=f;for(const w of a.sourceLinks)w.y0=f+w.width/2,f+=w.width;for(const w of a.targetLinks)w.y1=g+w.width/2,g+=w.width}}function Pen(){let i=0,a=0,f=1,g=1,w=24,v=8,b,E=Ien,S=eVt,_,M,F=Oen,R=Nen,B=6;function z(){const It={nodes:F.apply(null,arguments),links:R.apply(null,arguments)};return Y(It),nt(It),ot(It),ft(It),ct(It),sVt(It),It}z.update=function(It){return sVt(It),It},z.nodeId=function(It){return arguments.length?(E=typeof It=="function"?It:BX(It),z):E},z.nodeAlign=function(It){return arguments.length?(S=typeof It=="function"?It:BX(It),z):S},z.nodeSort=function(It){return arguments.length?(_=It,z):_},z.nodeWidth=function(It){return arguments.length?(w=+It,z):w},z.nodePadding=function(It){return arguments.length?(v=b=+It,z):v},z.nodes=function(It){return arguments.length?(F=typeof It=="function"?It:BX(It),z):F},z.links=function(It){return arguments.length?(R=typeof It=="function"?It:BX(It),z):R},z.linkSort=function(It){return arguments.length?(M=It,z):M},z.size=function(It){return arguments.length?(i=a=0,f=+It[0],g=+It[1],z):[f-i,g-a]},z.extent=function(It){return arguments.length?(i=+It[0][0],f=+It[1][0],a=+It[0][1],g=+It[1][1],z):[[i,a],[f,g]]},z.iterations=function(It){return arguments.length?(B=+It,z):B};function Y({nodes:It,links:jt}){for(const[Ft,Ct]of It.entries())Ct.index=Ft,Ct.sourceLinks=[],Ct.targetLinks=[];const xt=new Map(It.map((Ft,Ct)=>[E(Ft,Ct,It),Ft]));for(const[Ft,Ct]of jt.entries()){Ct.index=Ft;let{source:kt,target:Gt}=Ct;typeof kt!="object"&&(kt=Ct.source=iVt(xt,kt)),typeof Gt!="object"&&(Gt=Ct.target=iVt(xt,Gt)),kt.sourceLinks.push(Ct),Gt.targetLinks.push(Ct)}if(M!=null)for(const{sourceLinks:Ft,targetLinks:Ct}of It)Ft.sort(M),Ct.sort(M)}function nt({nodes:It}){for(const jt of It)jt.value=jt.fixedValue===void 0?Math.max(m2t(jt.sourceLinks,v2t),m2t(jt.targetLinks,v2t)):jt.fixedValue}function ot({nodes:It}){const jt=It.length;let xt=new Set(It),Ft=new Set,Ct=0;for(;xt.size;){for(const kt of xt){kt.depth=Ct;for(const{target:Gt}of kt.sourceLinks)Ft.add(Gt)}if(++Ct>jt)throw new Error("circular link");xt=Ft,Ft=new Set}}function ft({nodes:It}){const jt=It.length;let xt=new Set(It),Ft=new Set,Ct=0;for(;xt.size;){for(const kt of xt){kt.height=Ct;for(const{source:Gt}of kt.targetLinks)Ft.add(Gt)}if(++Ct>jt)throw new Error("circular link");xt=Ft,Ft=new Set}}function wt({nodes:It}){const jt=ZHt(It,Ct=>Ct.depth)+1,xt=(f-i-w)/(jt-1),Ft=new Array(jt);for(const Ct of It){const kt=Math.max(0,Math.min(jt-1,Math.floor(S.call(null,Ct,jt))));Ct.layer=kt,Ct.x0=i+kt*xt,Ct.x1=Ct.x0+w,Ft[kt]?Ft[kt].push(Ct):Ft[kt]=[Ct]}if(_)for(const Ct of Ft)Ct.sort(_);return Ft}function mt(It){const jt=tVt(It,xt=>(g-a-(xt.length-1)*b)/m2t(xt,v2t));for(const xt of It){let Ft=a;for(const Ct of xt){Ct.y0=Ft,Ct.y1=Ft+Ct.value*jt,Ft=Ct.y1+b;for(const kt of Ct.sourceLinks)kt.width=kt.value*jt}Ft=(g-Ft+b)/(xt.length+1);for(let Ct=0;Ctxt.length)-1)),mt(jt);for(let xt=0;xt0))continue;let pn=(Fe/Mt-Gt.y0)*jt;Gt.y0+=pn,Gt.y1+=pn,K(Gt)}_===void 0&&kt.sort(RX),gt(kt,xt)}}function it(It,jt,xt){for(let Ft=It.length,Ct=Ft-2;Ct>=0;--Ct){const kt=It[Ct];for(const Gt of kt){let Fe=0,Mt=0;for(const{target:Ae,value:ye}of Gt.sourceLinks){let tn=ye*(Ae.layer-Gt.layer);Fe+=Ot(Gt,Ae)*tn,Mt+=tn}if(!(Mt>0))continue;let pn=(Fe/Mt-Gt.y0)*jt;Gt.y0+=pn,Gt.y1+=pn,K(Gt)}_===void 0&&kt.sort(RX),gt(kt,xt)}}function gt(It,jt){const xt=It.length>>1,Ft=It[xt];dt(It,Ft.y0-b,xt-1,jt),Q(It,Ft.y1+b,xt+1,jt),dt(It,g,It.length-1,jt),Q(It,a,0,jt)}function Q(It,jt,xt,Ft){for(;xt1e-6&&(Ct.y0+=kt,Ct.y1+=kt),jt=Ct.y1+b}}function dt(It,jt,xt,Ft){for(;xt>=0;--xt){const Ct=It[xt],kt=(Ct.y1-jt)*Ft;kt>1e-6&&(Ct.y0-=kt,Ct.y1-=kt),jt=Ct.y0-b}}function K({sourceLinks:It,targetLinks:jt}){if(M===void 0){for(const{source:{sourceLinks:xt}}of jt)xt.sort(rVt);for(const{target:{targetLinks:xt}}of It)xt.sort(nVt)}}function yt(It){if(M===void 0)for(const{sourceLinks:jt,targetLinks:xt}of It)jt.sort(rVt),xt.sort(nVt)}function V(It,jt){let xt=It.y0-(It.sourceLinks.length-1)*b/2;for(const{target:Ft,width:Ct}of It.sourceLinks){if(Ft===jt)break;xt+=Ct+b}for(const{source:Ft,width:Ct}of jt.targetLinks){if(Ft===It)break;xt-=Ct}return xt}function Ot(It,jt){let xt=jt.y0-(jt.targetLinks.length-1)*b/2;for(const{source:Ft,width:Ct}of jt.targetLinks){if(Ft===It)break;xt+=Ct+b}for(const{target:Ft,width:Ct}of It.sourceLinks){if(Ft===jt)break;xt-=Ct}return xt}return z}var y2t=Math.PI,x2t=2*y2t,V9=1e-6,Fen=x2t-V9;function k2t(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function aVt(){return new k2t}k2t.prototype=aVt.prototype={constructor:k2t,moveTo:function(i,a){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(i,a){this._+="L"+(this._x1=+i)+","+(this._y1=+a)},quadraticCurveTo:function(i,a,f,g){this._+="Q"+ +i+","+ +a+","+(this._x1=+f)+","+(this._y1=+g)},bezierCurveTo:function(i,a,f,g,w,v){this._+="C"+ +i+","+ +a+","+ +f+","+ +g+","+(this._x1=+w)+","+(this._y1=+v)},arcTo:function(i,a,f,g,w){i=+i,a=+a,f=+f,g=+g,w=+w;var v=this._x1,b=this._y1,E=f-i,S=g-a,_=v-i,M=b-a,F=_*_+M*M;if(w<0)throw new Error("negative radius: "+w);if(this._x1===null)this._+="M"+(this._x1=i)+","+(this._y1=a);else if(F>V9)if(!(Math.abs(M*E-S*_)>V9)||!w)this._+="L"+(this._x1=i)+","+(this._y1=a);else{var R=f-v,B=g-b,z=E*E+S*S,Y=R*R+B*B,nt=Math.sqrt(z),ot=Math.sqrt(F),ft=w*Math.tan((y2t-Math.acos((z+F-Y)/(2*nt*ot)))/2),wt=ft/ot,mt=ft/nt;Math.abs(wt-1)>V9&&(this._+="L"+(i+wt*_)+","+(a+wt*M)),this._+="A"+w+","+w+",0,0,"+ +(M*R>_*B)+","+(this._x1=i+mt*E)+","+(this._y1=a+mt*S)}},arc:function(i,a,f,g,w,v){i=+i,a=+a,f=+f,v=!!v;var b=f*Math.cos(g),E=f*Math.sin(g),S=i+b,_=a+E,M=1^v,F=v?g-w:w-g;if(f<0)throw new Error("negative radius: "+f);this._x1===null?this._+="M"+S+","+_:(Math.abs(this._x1-S)>V9||Math.abs(this._y1-_)>V9)&&(this._+="L"+S+","+_),f&&(F<0&&(F=F%x2t+x2t),F>Fen?this._+="A"+f+","+f+",0,1,"+M+","+(i-b)+","+(a-E)+"A"+f+","+f+",0,1,"+M+","+(this._x1=S)+","+(this._y1=_):F>V9&&(this._+="A"+f+","+f+",0,"+ +(F>=y2t)+","+M+","+(this._x1=i+f*Math.cos(w))+","+(this._y1=a+f*Math.sin(w))))},rect:function(i,a,f,g){this._+="M"+(this._x0=this._x1=+i)+","+(this._y0=this._y1=+a)+"h"+ +f+"v"+ +g+"h"+-f+"Z"},toString:function(){return this._}};function oVt(i){return function(){return i}}function Ben(i){return i[0]}function Ren(i){return i[1]}var jen=Array.prototype.slice;function $en(i){return i.source}function zen(i){return i.target}function qen(i){var a=$en,f=zen,g=Ben,w=Ren,v=null;function b(){var E,S=jen.call(arguments),_=a.apply(this,S),M=f.apply(this,S);if(v||(v=E=aVt()),i(v,+g.apply(this,(S[0]=_,S)),+w.apply(this,S),+g.apply(this,(S[0]=M,S)),+w.apply(this,S)),E)return v=null,E+""||null}return b.source=function(E){return arguments.length?(a=E,b):a},b.target=function(E){return arguments.length?(f=E,b):f},b.x=function(E){return arguments.length?(g=typeof E=="function"?E:oVt(+E),b):g},b.y=function(E){return arguments.length?(w=typeof E=="function"?E:oVt(+E),b):w},b.context=function(E){return arguments.length?(v=E??null,b):v},b}function Hen(i,a,f,g,w){i.moveTo(a,f),i.bezierCurveTo(a=(a+g)/2,f,a,w,g,w)}function Ven(){return qen(Hen)}function Uen(i){return[i.source.x1,i.y0]}function Gen(i){return[i.target.x0,i.y1]}function Ken(){return Ven().source(Uen).target(Gen)}const cVt=class vOt{static next(a){return new vOt(a+ ++vOt.count)}constructor(a){this.id=a,this.href=`#${a}`}toString(){return"url("+this.href+")"}};cVt.count=0;let uVt=cVt;const Wen={left:Len,right:Den,center:Men,justify:eVt},Yen={draw:function(i,a,f,g){const{securityLevel:w,sankey:v}=Re(),b=lBt.sankey;let E;w==="sandbox"&&(E=Tr("#i"+a));const S=Tr(w==="sandbox"?E.nodes()[0].contentDocument.body:"body"),_=w==="sandbox"?S.select(`[id="${a}"]`):Tr(`[id="${a}"]`),M=(v==null?void 0:v.width)??b.width,F=(v==null?void 0:v.height)??b.width,R=(v==null?void 0:v.useMaxWidth)??b.useMaxWidth,B=(v==null?void 0:v.nodeAlignment)??b.nodeAlignment,z=(v==null?void 0:v.prefix)??b.prefix,Y=(v==null?void 0:v.suffix)??b.suffix,nt=(v==null?void 0:v.showValues)??b.showValues,ot=g.db.getGraph(),ft=Wen[B],wt=10;Pen().nodeId(dt=>dt.id).nodeWidth(wt).nodePadding(10+(nt?15:0)).nodeAlign(ft).extent([[0,0],[M,F]])(ot);const ct=oF(tPt);_.append("g").attr("class","nodes").selectAll(".node").data(ot.nodes).join("g").attr("class","node").attr("id",dt=>(dt.uid=uVt.next("node-")).id).attr("transform",function(dt){return"translate("+dt.x0+","+dt.y0+")"}).attr("x",dt=>dt.x0).attr("y",dt=>dt.y0).append("rect").attr("height",dt=>dt.y1-dt.y0).attr("width",dt=>dt.x1-dt.x0).attr("fill",dt=>ct(dt.id));const rt=({id:dt,value:K})=>nt?`${dt} +${z}${Math.round(K*100)/100}${Y}`:dt;_.append("g").attr("class","node-labels").attr("font-family","sans-serif").attr("font-size",14).selectAll("text").data(ot.nodes).join("text").attr("x",dt=>dt.x0(dt.y1+dt.y0)/2).attr("dy",`${nt?"0":"0.35"}em`).attr("text-anchor",dt=>dt.x0(K.uid=uVt.next("linearGradient-")).id).attr("gradientUnits","userSpaceOnUse").attr("x1",K=>K.source.x1).attr("x2",K=>K.target.x0);dt.append("stop").attr("offset","0%").attr("stop-color",K=>ct(K.source.id)),dt.append("stop").attr("offset","100%").attr("stop-color",K=>ct(K.target.id))}let Q;switch(gt){case"gradient":Q=dt=>dt.uid;break;case"source":Q=dt=>ct(dt.source.id);break;case"target":Q=dt=>ct(dt.target.id);break;default:Q=gt}it.append("path").attr("d",Ken()).attr("stroke",Q).attr("stroke-width",dt=>Math.max(1,dt.width)),w8(void 0,_,0,R)}},Xen=i=>i.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,` +`).trim(),Qen=NX.parse.bind(NX);NX.parse=i=>Qen(Xen(i));const Jen=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:NX,db:_en,renderer:Yen}},Symbol.toStringTag,{value:"Module"}));var E2t=function(){var i=function(wt,mt,ct,rt){for(ct=ct||{},rt=wt.length;rt--;ct[wt[rt]]=mt);return ct},a=[1,7],f=[1,13],g=[1,14],w=[1,15],v=[1,19],b=[1,16],E=[1,17],S=[1,18],_=[8,30],M=[8,21,28,29,30,31,32,40,44,47],F=[1,23],R=[1,24],B=[8,15,16,21,28,29,30,31,32,40,44,47],z=[8,15,16,21,27,28,29,30,31,32,40,44,47],Y=[1,49],nt={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,seperator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(mt,ct,rt,it,gt,Q,dt){var K=Q.length-1;switch(gt){case 4:it.getLogger().debug("Rule: seperator (NL) ");break;case 5:it.getLogger().debug("Rule: seperator (Space) ");break;case 6:it.getLogger().debug("Rule: seperator (EOF) ");break;case 7:it.getLogger().debug("Rule: hierarchy: ",Q[K-1]),it.setHierarchy(Q[K-1]);break;case 8:it.getLogger().debug("Stop NL ");break;case 9:it.getLogger().debug("Stop EOF ");break;case 10:it.getLogger().debug("Stop NL2 ");break;case 11:it.getLogger().debug("Stop EOF2 ");break;case 12:it.getLogger().debug("Rule: statement: ",Q[K]),typeof Q[K].length=="number"?this.$=Q[K]:this.$=[Q[K]];break;case 13:it.getLogger().debug("Rule: statement #2: ",Q[K-1]),this.$=[Q[K-1]].concat(Q[K]);break;case 14:it.getLogger().debug("Rule: link: ",Q[K],mt),this.$={edgeTypeStr:Q[K],label:""};break;case 15:it.getLogger().debug("Rule: LABEL link: ",Q[K-3],Q[K-1],Q[K]),this.$={edgeTypeStr:Q[K],label:Q[K-1]};break;case 18:const yt=parseInt(Q[K]),V=it.generateId();this.$={id:V,type:"space",label:"",width:yt,children:[]};break;case 23:it.getLogger().debug("Rule: (nodeStatement link node) ",Q[K-2],Q[K-1],Q[K]," typestr: ",Q[K-1].edgeTypeStr);const Ot=it.edgeStrToEdgeData(Q[K-1].edgeTypeStr);this.$=[{id:Q[K-2].id,label:Q[K-2].label,type:Q[K-2].type,directions:Q[K-2].directions},{id:Q[K-2].id+"-"+Q[K].id,start:Q[K-2].id,end:Q[K].id,label:Q[K-1].label,type:"edge",directions:Q[K].directions,arrowTypeEnd:Ot,arrowTypeStart:"arrow_open"},{id:Q[K].id,label:Q[K].label,type:it.typeStr2Type(Q[K].typeStr),directions:Q[K].directions}];break;case 24:it.getLogger().debug("Rule: nodeStatement (abc88 node size) ",Q[K-1],Q[K]),this.$={id:Q[K-1].id,label:Q[K-1].label,type:it.typeStr2Type(Q[K-1].typeStr),directions:Q[K-1].directions,widthInColumns:parseInt(Q[K],10)};break;case 25:it.getLogger().debug("Rule: nodeStatement (node) ",Q[K]),this.$={id:Q[K].id,label:Q[K].label,type:it.typeStr2Type(Q[K].typeStr),directions:Q[K].directions,widthInColumns:1};break;case 26:it.getLogger().debug("APA123",this?this:"na"),it.getLogger().debug("COLUMNS: ",Q[K]),this.$={type:"column-setting",columns:Q[K]==="auto"?-1:parseInt(Q[K])};break;case 27:it.getLogger().debug("Rule: id-block statement : ",Q[K-2],Q[K-1]),it.generateId(),this.$={...Q[K-2],type:"composite",children:Q[K-1]};break;case 28:it.getLogger().debug("Rule: blockStatement : ",Q[K-2],Q[K-1],Q[K]);const It=it.generateId();this.$={id:It,type:"composite",label:"",children:Q[K-1]};break;case 29:it.getLogger().debug("Rule: node (NODE_ID seperator): ",Q[K]),this.$={id:Q[K]};break;case 30:it.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel seperator): ",Q[K-1],Q[K]),this.$={id:Q[K-1],label:Q[K].label,typeStr:Q[K].typeStr,directions:Q[K].directions};break;case 31:it.getLogger().debug("Rule: dirList: ",Q[K]),this.$=[Q[K]];break;case 32:it.getLogger().debug("Rule: dirList: ",Q[K-1],Q[K]),this.$=[Q[K-1]].concat(Q[K]);break;case 33:it.getLogger().debug("Rule: nodeShapeNLabel: ",Q[K-2],Q[K-1],Q[K]),this.$={typeStr:Q[K-2]+Q[K],label:Q[K-1]};break;case 34:it.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",Q[K-3],Q[K-2]," #3:",Q[K-1],Q[K]),this.$={typeStr:Q[K-3]+Q[K],label:Q[K-2],directions:Q[K-1]};break;case 35:case 36:this.$={type:"classDef",id:Q[K-1].trim(),css:Q[K].trim()};break;case 37:this.$={type:"applyClass",id:Q[K-1].trim(),styleClass:Q[K].trim()};break;case 38:this.$={type:"applyStyles",id:Q[K-1].trim(),stylesStr:Q[K].trim()};break}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:f,29:g,31:w,32:v,40:b,44:E,47:S},{8:[1,20]},i(_,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:a,28:f,29:g,31:w,32:v,40:b,44:E,47:S}),i(M,[2,16],{14:22,15:F,16:R}),i(M,[2,17]),i(M,[2,18]),i(M,[2,19]),i(M,[2,20]),i(M,[2,21]),i(M,[2,22]),i(B,[2,25],{27:[1,25]}),i(M,[2,26]),{19:26,26:12,32:v},{11:27,13:4,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:f,29:g,31:w,32:v,40:b,44:E,47:S},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},i(z,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},i(_,[2,13]),{26:35,32:v},{32:[2,14]},{17:[1,36]},i(B,[2,24]),{11:37,13:4,14:22,15:F,16:R,19:5,20:6,21:a,22:8,23:9,24:10,25:11,26:12,28:f,29:g,31:w,32:v,40:b,44:E,47:S},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},i(z,[2,30]),{18:[1,43]},{18:[1,44]},i(B,[2,23]),{18:[1,45]},{30:[1,46]},i(M,[2,28]),i(M,[2,35]),i(M,[2,36]),i(M,[2,37]),i(M,[2,38]),{37:[1,47]},{34:48,35:Y},{15:[1,50]},i(M,[2,27]),i(z,[2,33]),{39:[1,51]},{34:52,35:Y,39:[2,31]},{32:[2,15]},i(z,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(mt,ct){if(ct.recoverable)this.trace(mt);else{var rt=new Error(mt);throw rt.hash=ct,rt}},parse:function(mt){var ct=this,rt=[0],it=[],gt=[null],Q=[],dt=this.table,K="",yt=0,V=0,Ot=2,It=1,jt=Q.slice.call(arguments,1),xt=Object.create(this.lexer),Ft={yy:{}};for(var Ct in this.yy)Object.prototype.hasOwnProperty.call(this.yy,Ct)&&(Ft.yy[Ct]=this.yy[Ct]);xt.setInput(mt,Ft.yy),Ft.yy.lexer=xt,Ft.yy.parser=this,typeof xt.yylloc>"u"&&(xt.yylloc={});var kt=xt.yylloc;Q.push(kt);var Gt=xt.options&&xt.options.ranges;typeof Ft.yy.parseError=="function"?this.parseError=Ft.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function Fe(){var xe;return xe=it.pop()||xt.lex()||It,typeof xe!="number"&&(xe instanceof Array&&(it=xe,xe=it.pop()),xe=ct.symbols_[xe]||xe),xe}for(var Mt,pn,Ae,ye,tn={},sn,be,Ne,Xt;;){if(pn=rt[rt.length-1],this.defaultActions[pn]?Ae=this.defaultActions[pn]:((Mt===null||typeof Mt>"u")&&(Mt=Fe()),Ae=dt[pn]&&dt[pn][Mt]),typeof Ae>"u"||!Ae.length||!Ae[0]){var _e="";Xt=[];for(sn in dt[pn])this.terminals_[sn]&&sn>Ot&&Xt.push("'"+this.terminals_[sn]+"'");xt.showPosition?_e="Parse error on line "+(yt+1)+`: +`+xt.showPosition()+` +Expecting `+Xt.join(", ")+", got '"+(this.terminals_[Mt]||Mt)+"'":_e="Parse error on line "+(yt+1)+": Unexpected "+(Mt==It?"end of input":"'"+(this.terminals_[Mt]||Mt)+"'"),this.parseError(_e,{text:xt.match,token:this.terminals_[Mt]||Mt,line:xt.yylineno,loc:kt,expected:Xt})}if(Ae[0]instanceof Array&&Ae.length>1)throw new Error("Parse Error: multiple actions possible at state: "+pn+", token: "+Mt);switch(Ae[0]){case 1:rt.push(Mt),gt.push(xt.yytext),Q.push(xt.yylloc),rt.push(Ae[1]),Mt=null,V=xt.yyleng,K=xt.yytext,yt=xt.yylineno,kt=xt.yylloc;break;case 2:if(be=this.productions_[Ae[1]][1],tn.$=gt[gt.length-be],tn._$={first_line:Q[Q.length-(be||1)].first_line,last_line:Q[Q.length-1].last_line,first_column:Q[Q.length-(be||1)].first_column,last_column:Q[Q.length-1].last_column},Gt&&(tn._$.range=[Q[Q.length-(be||1)].range[0],Q[Q.length-1].range[1]]),ye=this.performAction.apply(tn,[K,V,yt,Ft.yy,Ae[1],gt,Q].concat(jt)),typeof ye<"u")return ye;be&&(rt=rt.slice(0,-1*be*2),gt=gt.slice(0,-1*be),Q=Q.slice(0,-1*be)),rt.push(this.productions_[Ae[1]][0]),gt.push(tn.$),Q.push(tn._$),Ne=dt[rt[rt.length-2]][rt[rt.length-1]],rt.push(Ne);break;case 3:return!0}}return!0}},ot=function(){var wt={EOF:1,parseError:function(ct,rt){if(this.yy.parser)this.yy.parser.parseError(ct,rt);else throw new Error(ct)},setInput:function(mt,ct){return this.yy=ct||this.yy||{},this._input=mt,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var mt=this._input[0];this.yytext+=mt,this.yyleng++,this.offset++,this.match+=mt,this.matched+=mt;var ct=mt.match(/(?:\r\n?|\n).*/g);return ct?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),mt},unput:function(mt){var ct=mt.length,rt=mt.split(/(?:\r\n?|\n)/g);this._input=mt+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-ct),this.offset-=ct;var it=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),rt.length-1&&(this.yylineno-=rt.length-1);var gt=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:rt?(rt.length===it.length?this.yylloc.first_column:0)+it[it.length-rt.length].length-rt[0].length:this.yylloc.first_column-ct},this.options.ranges&&(this.yylloc.range=[gt[0],gt[0]+this.yyleng-ct]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true). +`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},less:function(mt){this.unput(this.match.slice(mt))},pastInput:function(){var mt=this.matched.substr(0,this.matched.length-this.match.length);return(mt.length>20?"...":"")+mt.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var mt=this.match;return mt.length<20&&(mt+=this._input.substr(0,20-mt.length)),(mt.substr(0,20)+(mt.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var mt=this.pastInput(),ct=new Array(mt.length+1).join("-");return mt+this.upcomingInput()+` +`+ct+"^"},test_match:function(mt,ct){var rt,it,gt;if(this.options.backtrack_lexer&&(gt={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(gt.yylloc.range=this.yylloc.range.slice(0))),it=mt[0].match(/(?:\r\n?|\n).*/g),it&&(this.yylineno+=it.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:it?it[it.length-1].length-it[it.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+mt[0].length},this.yytext+=mt[0],this.match+=mt[0],this.matches=mt,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(mt[0].length),this.matched+=mt[0],rt=this.performAction.call(this,this.yy,this,ct,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),rt)return rt;if(this._backtrack){for(var Q in gt)this[Q]=gt[Q];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var mt,ct,rt,it;this._more||(this.yytext="",this.match="");for(var gt=this._currentRules(),Q=0;Qct[0].length)){if(ct=rt,it=Q,this.options.backtrack_lexer){if(mt=this.test_match(rt,gt[Q]),mt!==!1)return mt;if(this._backtrack){ct=!1;continue}else return!1}else if(!this.options.flex)break}return ct?(mt=this.test_match(ct,gt[it]),mt!==!1?mt:!1):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var ct=this.next();return ct||this.lex()},begin:function(ct){this.conditionStack.push(ct)},popState:function(){var ct=this.conditionStack.length-1;return ct>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(ct){return ct=this.conditionStack.length-1-Math.abs(ct||0),ct>=0?this.conditionStack[ct]:"INITIAL"},pushState:function(ct){this.begin(ct)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(ct,rt,it,gt){switch(it){case 0:return 10;case 1:return ct.getLogger().debug("Found space-block"),31;case 2:return ct.getLogger().debug("Found nl-block"),31;case 3:return ct.getLogger().debug("Found space-block"),29;case 4:ct.getLogger().debug(".",rt.yytext);break;case 5:ct.getLogger().debug("_",rt.yytext);break;case 6:return 5;case 7:return rt.yytext=-1,28;case 8:return rt.yytext=rt.yytext.replace(/columns\s+/,""),ct.getLogger().debug("COLUMNS (LEX)",rt.yytext),28;case 9:this.pushState("md_string");break;case 10:return"MD_STR";case 11:this.popState();break;case 12:this.pushState("string");break;case 13:ct.getLogger().debug("LEX: POPPING STR:",rt.yytext),this.popState();break;case 14:return ct.getLogger().debug("LEX: STR end:",rt.yytext),"STR";case 15:return rt.yytext=rt.yytext.replace(/space\:/,""),ct.getLogger().debug("SPACE NUM (LEX)",rt.yytext),21;case 16:return rt.yytext="1",ct.getLogger().debug("COLUMNS (LEX)",rt.yytext),21;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 22:return this.popState(),this.pushState("CLASSDEFID"),41;case 23:return this.popState(),42;case 24:return this.pushState("CLASS"),44;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;case 26:return this.popState(),46;case 27:return this.pushState("STYLE_STMNT"),47;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;case 29:return this.popState(),49;case 30:return this.pushState("acc_title"),"acc_title";case 31:return this.popState(),"acc_title_value";case 32:return this.pushState("acc_descr"),"acc_descr";case 33:return this.popState(),"acc_descr_value";case 34:this.pushState("acc_descr_multiline");break;case 35:this.popState();break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 40:return this.popState(),ct.getLogger().debug("Lex: ))"),"NODE_DEND";case 41:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 42:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 43:return this.popState(),ct.getLogger().debug("Lex: (-"),"NODE_DEND";case 44:return this.popState(),ct.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),ct.getLogger().debug("Lex: (("),"NODE_DEND";case 46:return this.popState(),ct.getLogger().debug("Lex: ]]"),"NODE_DEND";case 47:return this.popState(),ct.getLogger().debug("Lex: ("),"NODE_DEND";case 48:return this.popState(),ct.getLogger().debug("Lex: ])"),"NODE_DEND";case 49:return this.popState(),ct.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),ct.getLogger().debug("Lex: /]"),"NODE_DEND";case 51:return this.popState(),ct.getLogger().debug("Lex: )]"),"NODE_DEND";case 52:return this.popState(),ct.getLogger().debug("Lex: )"),"NODE_DEND";case 53:return this.popState(),ct.getLogger().debug("Lex: ]>"),"NODE_DEND";case 54:return this.popState(),ct.getLogger().debug("Lex: ]"),"NODE_DEND";case 55:return ct.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;case 56:return ct.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;case 57:return ct.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;case 58:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 59:return ct.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;case 60:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 61:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 62:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 63:return ct.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;case 64:return ct.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;case 65:return ct.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 66:return this.pushState("NODE"),36;case 67:return this.pushState("NODE"),36;case 68:return this.pushState("NODE"),36;case 69:return this.pushState("NODE"),36;case 70:return this.pushState("NODE"),36;case 71:return this.pushState("NODE"),36;case 72:return this.pushState("NODE"),36;case 73:return ct.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;case 74:return this.pushState("BLOCK_ARROW"),ct.getLogger().debug("LEX ARR START"),38;case 75:return ct.getLogger().debug("Lex: NODE_ID",rt.yytext),32;case 76:return ct.getLogger().debug("Lex: EOF",rt.yytext),8;case 77:this.pushState("md_string");break;case 78:this.pushState("md_string");break;case 79:return"NODE_DESCR";case 80:this.popState();break;case 81:ct.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:ct.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return ct.getLogger().debug("LEX: NODE_DESCR:",rt.yytext),"NODE_DESCR";case 84:ct.getLogger().debug("LEX POPPING"),this.popState();break;case 85:ct.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (right): dir:",rt.yytext),"DIR";case 87:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (left):",rt.yytext),"DIR";case 88:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (x):",rt.yytext),"DIR";case 89:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (y):",rt.yytext),"DIR";case 90:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (up):",rt.yytext),"DIR";case 91:return rt.yytext=rt.yytext.replace(/^,\s*/,""),ct.getLogger().debug("Lex (down):",rt.yytext),"DIR";case 92:return rt.yytext="]>",ct.getLogger().debug("Lex (ARROW_DIR end):",rt.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 93:return ct.getLogger().debug("Lex: LINK","#"+rt.yytext+"#"),15;case 94:return ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 95:return ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 96:return ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 97:return ct.getLogger().debug("Lex: START_LINK",rt.yytext),this.pushState("LLABEL"),16;case 98:return ct.getLogger().debug("Lex: START_LINK",rt.yytext),this.pushState("LLABEL"),16;case 99:return ct.getLogger().debug("Lex: START_LINK",rt.yytext),this.pushState("LLABEL"),16;case 100:this.pushState("md_string");break;case 101:return ct.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 102:return this.popState(),ct.getLogger().debug("Lex: LINK","#"+rt.yytext+"#"),15;case 103:return this.popState(),ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 104:return this.popState(),ct.getLogger().debug("Lex: LINK",rt.yytext),15;case 105:return ct.getLogger().debug("Lex: COLON",rt.yytext),rt.yytext=rt.yytext.slice(1),27}},rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};return wt}();nt.lexer=ot;function ft(){this.yy={}}return ft.prototype=nt,nt.Parser=ft,new ft}();E2t.parser=E2t;const Zen=E2t;let lb={},T2t=[],AB={};const lVt="color",hVt="fill",tnn="bgFill",fVt=",";let LB={};const enn=function(i,a=""){LB[i]===void 0&&(LB[i]={id:i,styles:[],textStyles:[]});const f=LB[i];a!=null&&a.split(fVt).forEach(g=>{const w=g.replace(/([^;]*);/,"$1").trim();if(g.match(lVt)){const b=w.replace(hVt,tnn).replace(lVt,hVt);f.textStyles.push(b)}f.styles.push(w)})},nnn=function(i,a=""){const f=lb[i];a!=null&&(f.styles=a.split(fVt))},rnn=function(i,a){i.split(",").forEach(function(f){let g=lb[f];if(g===void 0){const w=f.trim();lb[w]={id:w,type:"na",children:[]},g=lb[w]}g.classes||(g.classes=[]),g.classes.push(a)})},dVt=(i,a)=>{const f=i.flat(),g=[];for(const w of f){if(w.type==="classDef"){enn(w.id,w.css);continue}if(w.type==="applyClass"){rnn(w.id,(w==null?void 0:w.styleClass)||"");continue}if(w.type==="applyStyles"){w!=null&&w.stylesStr&&nnn(w.id,w==null?void 0:w.stylesStr);continue}if(w.type==="column-setting")a.columns=w.columns||-1;else if(w.type==="edge")AB[w.id]?AB[w.id]++:AB[w.id]=1,w.id=AB[w.id]+"-"+w.id,T2t.push(w);else{w.label||(w.type==="composite"?w.label="":w.label=w.id);const v=!lb[w.id];if(v?lb[w.id]=w:(w.type!=="na"&&(lb[w.id].type=w.type),w.label!==w.id&&(lb[w.id].label=w.label)),w.children&&dVt(w.children,w),w.type==="space"){const b=w.width||1;for(let E=0;E{Kt.debug("Clear called"),ag(),DB={id:"root",type:"composite",children:[],columns:-1},lb={root:DB},C2t=[],LB={},T2t=[],AB={}};function snn(i){switch(Kt.debug("typeStr2Type",i),i){case"[]":return"square";case"()":return Kt.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function ann(i){switch(Kt.debug("typeStr2Type",i),i){case"==":return"thick";default:return"normal"}}function onn(i){switch(i.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}}let gVt=0;const cnn={getConfig:()=>o1().block,typeStr2Type:snn,edgeTypeStr2Type:ann,edgeStrToEdgeData:onn,getLogger:()=>console,getBlocksFlat:()=>[...Object.values(lb)],getBlocks:()=>C2t||[],getEdges:()=>T2t,setHierarchy:i=>{DB.children=i,dVt(i,DB),C2t=DB.children},getBlock:i=>lb[i],setBlock:i=>{lb[i.id]=i},getColumns:i=>{const a=lb[i];return a?a.columns?a.columns:a.children?a.children.length:-1:-1},getClasses:function(){return LB},clear:inn,generateId:()=>(gVt++,"id-"+Math.random().toString(36).substr(2,12)+"-"+gVt)},jX=(i,a)=>{const f=jPt,g=f(i,"r"),w=f(i,"g"),v=f(i,"b");return g9(g,w,v,a)},unn=i=>`.label { + font-family: ${i.fontFamily}; + color: ${i.nodeTextColor||i.textColor}; + } + .cluster-label text { + fill: ${i.titleColor}; + } + .cluster-label span,p { + color: ${i.titleColor}; + } + + + + .label text,span,p { + fill: ${i.nodeTextColor||i.textColor}; + color: ${i.nodeTextColor||i.textColor}; + } + + .node rect, + .node circle, + .node ellipse, + .node polygon, + .node path { + fill: ${i.mainBkg}; + stroke: ${i.nodeBorder}; + stroke-width: 1px; + } + .flowchart-label text { + text-anchor: middle; + } + // .flowchart-label .text-outer-tspan { + // text-anchor: middle; + // } + // .flowchart-label .text-inner-tspan { + // text-anchor: start; + // } + + .node .label { + text-align: center; + } + .node.clickable { + cursor: pointer; + } + + .arrowheadPath { + fill: ${i.arrowheadColor}; + } + + .edgePath .path { + stroke: ${i.lineColor}; + stroke-width: 2.0px; + } + + .flowchart-link { + stroke: ${i.lineColor}; + fill: none; + } + + .edgeLabel { + background-color: ${i.edgeLabelBackground}; + rect { + opacity: 0.5; + background-color: ${i.edgeLabelBackground}; + fill: ${i.edgeLabelBackground}; + } + text-align: center; + } + + /* For html labels only */ + .labelBkg { + background-color: ${jX(i.edgeLabelBackground,.5)}; + // background-color: + } + + .node .cluster { + // fill: ${jX(i.mainBkg,.5)}; + fill: ${jX(i.clusterBkg,.5)}; + stroke: ${jX(i.clusterBorder,.2)}; + box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px; + stroke-width: 1px; + } + + .cluster text { + fill: ${i.titleColor}; + } + + .cluster span,p { + color: ${i.titleColor}; + } + /* .cluster div { + color: ${i.titleColor}; + } */ + + div.mermaidTooltip { + position: absolute; + text-align: center; + max-width: 200px; + padding: 2px; + font-family: ${i.fontFamily}; + font-size: 12px; + background: ${i.tertiaryColor}; + border: 1px solid ${i.border2}; + border-radius: 2px; + pointer-events: none; + z-index: 100; + } + + .flowchartTitleText { + text-anchor: middle; + font-size: 18px; + fill: ${i.textColor}; + } +`;function pVt(i,a,f=!1){var R,B,z;const g=i;let w="default";(((R=g==null?void 0:g.classes)==null?void 0:R.length)||0)>0&&(w=((g==null?void 0:g.classes)||[]).join(" ")),w=w+" flowchart-label";let v=0,b="",E;switch(g.type){case"round":v=5,b="rect";break;case"composite":v=0,b="composite",E=0;break;case"square":b="rect";break;case"diamond":b="question";break;case"hexagon":b="hexagon";break;case"block_arrow":b="block_arrow";break;case"odd":b="rect_left_inv_arrow";break;case"lean_right":b="lean_right";break;case"lean_left":b="lean_left";break;case"trapezoid":b="trapezoid";break;case"inv_trapezoid":b="inv_trapezoid";break;case"rect_left_inv_arrow":b="rect_left_inv_arrow";break;case"circle":b="circle";break;case"ellipse":b="ellipse";break;case"stadium":b="stadium";break;case"subroutine":b="subroutine";break;case"cylinder":b="cylinder";break;case"group":b="rect";break;case"doublecircle":b="doublecircle";break;default:b="rect"}const S=C2((g==null?void 0:g.styles)||[]),_=g.label,M=g.size||{width:0,height:0,x:0,y:0};return{labelStyle:S.labelStyle,shape:b,labelText:_,rx:v,ry:v,class:w,style:S.style,id:g.id,directions:g.directions,width:M.width,height:M.height,x:M.x,y:M.y,positioned:f,intersect:void 0,type:g.type,padding:E??(((z=(B=o1())==null?void 0:B.block)==null?void 0:z.padding)||0)}}async function lnn(i,a,f){const g=pVt(a,f,!1);if(g.type==="group")return;const w=await nX(i,g),v=w.node().getBBox(),b=f.getBlock(g.id);b.size={width:v.width,height:v.height,x:0,y:0,node:w},f.setBlock(b),w.remove()}async function hnn(i,a,f){const g=pVt(a,f,!0);f.getBlock(g.id).type!=="space"&&(await nX(i,g),a.intersect=g==null?void 0:g.intersect,Zpt(g))}async function S2t(i,a,f,g){for(const w of a)await g(i,w,f),w.children&&await S2t(i,w.children,f,g)}async function fnn(i,a,f){await S2t(i,a,f,lnn)}async function dnn(i,a,f){await S2t(i,a,f,hnn)}async function gnn(i,a,f,g,w){const v=new l1({multigraph:!0,compound:!0});v.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const b of f)b.size&&v.setNode(b.id,{width:b.size.width,height:b.size.height,intersect:b.intersect});for(const b of a)if(b.start&&b.end){const E=g.getBlock(b.start),S=g.getBlock(b.end);if(E!=null&&E.size&&(S!=null&&S.size)){const _=E.size,M=S.size,F=[{x:_.x,y:_.y},{x:_.x+(M.x-_.x)/2,y:_.y+(M.y-_.y)/2},{x:M.x,y:M.y}];await dzt(i,{v:b.start,w:b.end,name:b.id},{...b,arrowTypeEnd:b.arrowTypeEnd,arrowTypeStart:b.arrowTypeStart,points:F,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",v,w),b.label&&(await tbt(i,{...b,label:b.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:b.arrowTypeEnd,arrowTypeStart:b.arrowTypeStart,points:F,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),await hzt({...b,x:F[1].x,y:F[1].y},{originalPath:F}))}}}const Af=((vVt=(mVt=Re())==null?void 0:mVt.block)==null?void 0:vVt.padding)||8;function pnn(i,a){if(i===0||!Number.isInteger(i))throw new Error("Columns must be an integer !== 0.");if(a<0||!Number.isInteger(a))throw new Error("Position must be a non-negative integer."+a);if(i<0)return{px:a,py:0};if(i===1)return{px:0,py:a};const f=a%i,g=Math.floor(a/i);return{px:f,py:g}}const bnn=i=>{let a=0,f=0;for(const g of i.children){const{width:w,height:v,x:b,y:E}=g.size||{width:0,height:0,x:0,y:0};Kt.debug("getMaxChildSize abc95 child:",g.id,"width:",w,"height:",v,"x:",b,"y:",E,g.type),g.type!=="space"&&(w>a&&(a=w/(i.widthInColumns||1)),v>f&&(f=v))}return{width:a,height:f}};function _2t(i,a,f=0,g=0){var b,E,S,_,M,F,R,B,z,Y,nt;Kt.debug("setBlockSizes abc95 (start)",i.id,(b=i==null?void 0:i.size)==null?void 0:b.x,"block width =",i==null?void 0:i.size,"sieblingWidth",f),(E=i==null?void 0:i.size)!=null&&E.width||(i.size={width:f,height:g,x:0,y:0});let w=0,v=0;if(((S=i.children)==null?void 0:S.length)>0){for(const gt of i.children)_2t(gt,a);const ot=bnn(i);w=ot.width,v=ot.height,Kt.debug("setBlockSizes abc95 maxWidth of",i.id,":s children is ",w,v);for(const gt of i.children)gt.size&&(Kt.debug(`abc95 Setting size of children of ${i.id} id=${gt.id} ${w} ${v} ${gt.size}`),gt.size.width=w*(gt.widthInColumns||1)+Af*((gt.widthInColumns||1)-1),gt.size.height=v,gt.size.x=0,gt.size.y=0,Kt.debug(`abc95 updating size of ${i.id} children child:${gt.id} maxWidth:${w} maxHeight:${v}`));for(const gt of i.children)_2t(gt,a,w,v);const ft=i.columns||-1;let wt=0;for(const gt of i.children)wt+=gt.widthInColumns||1;let mt=i.children.length;ft>0&&ft0?Math.min(i.children.length,ft):i.children.length;if(gt>0){const Q=(rt-gt*Af-Af)/gt;Kt.debug("abc95 (growing to fit) width",i.id,rt,(R=i.size)==null?void 0:R.width,Q);for(const dt of i.children)dt.size&&(dt.size.width=Q)}}i.size={width:rt,height:it,x:0,y:0}}Kt.debug("setBlockSizes abc94 (done)",i.id,(B=i==null?void 0:i.size)==null?void 0:B.x,(z=i==null?void 0:i.size)==null?void 0:z.width,(Y=i==null?void 0:i.size)==null?void 0:Y.y,(nt=i==null?void 0:i.size)==null?void 0:nt.height)}function bVt(i,a){var g,w,v,b,E,S,_,M,F,R,B,z,Y,nt,ot,ft,wt;Kt.debug(`abc85 layout blocks (=>layoutBlocks) ${i.id} x: ${(g=i==null?void 0:i.size)==null?void 0:g.x} y: ${(w=i==null?void 0:i.size)==null?void 0:w.y} width: ${(v=i==null?void 0:i.size)==null?void 0:v.width}`);const f=i.columns||-1;if(Kt.debug("layoutBlocks columns abc95",i.id,"=>",f,i),i.children&&i.children.length>0){const mt=((E=(b=i==null?void 0:i.children[0])==null?void 0:b.size)==null?void 0:E.width)||0,ct=i.children.length*mt+(i.children.length-1)*Af;Kt.debug("widthOfChildren 88",ct,"posX");let rt=0;Kt.debug("abc91 block?.size?.x",i.id,(S=i==null?void 0:i.size)==null?void 0:S.x);let it=(_=i==null?void 0:i.size)!=null&&_.x?((M=i==null?void 0:i.size)==null?void 0:M.x)+(-((F=i==null?void 0:i.size)==null?void 0:F.width)/2||0):-Af,gt=0;for(const Q of i.children){const dt=i;if(!Q.size)continue;const{width:K,height:yt}=Q.size,{px:V,py:Ot}=pnn(f,rt);if(Ot!=gt&&(gt=Ot,it=(R=i==null?void 0:i.size)!=null&&R.x?((B=i==null?void 0:i.size)==null?void 0:B.x)+(-((z=i==null?void 0:i.size)==null?void 0:z.width)/2||0):-Af,Kt.debug("New row in layout for block",i.id," and child ",Q.id,gt)),Kt.debug(`abc89 layout blocks (child) id: ${Q.id} Pos: ${rt} (px, py) ${V},${Ot} (${(Y=dt==null?void 0:dt.size)==null?void 0:Y.x},${(nt=dt==null?void 0:dt.size)==null?void 0:nt.y}) parent: ${dt.id} width: ${K}${Af}`),dt.size){const It=K/2;Q.size.x=it+Af+It,Kt.debug(`abc91 layout blocks (calc) px, pyid:${Q.id} startingPos=X${it} new startingPosX${Q.size.x} ${It} padding=${Af} width=${K} halfWidth=${It} => x:${Q.size.x} y:${Q.size.y} ${Q.widthInColumns} (width * (child?.w || 1)) / 2 ${K*((Q==null?void 0:Q.widthInColumns)||1)/2}`),it=Q.size.x+It,Q.size.y=dt.size.y-dt.size.height/2+Ot*(yt+Af)+yt/2+Af,Kt.debug(`abc88 layout blocks (calc) px, pyid:${Q.id}startingPosX${it}${Af}${It}=>x:${Q.size.x}y:${Q.size.y}${Q.widthInColumns}(width * (child?.w || 1)) / 2${K*((Q==null?void 0:Q.widthInColumns)||1)/2}`)}Q.children&&bVt(Q),rt+=(Q==null?void 0:Q.widthInColumns)||1,Kt.debug("abc88 columnsPos",Q,rt)}}Kt.debug(`layout blocks (<==layoutBlocks) ${i.id} x: ${(ot=i==null?void 0:i.size)==null?void 0:ot.x} y: ${(ft=i==null?void 0:i.size)==null?void 0:ft.y} width: ${(wt=i==null?void 0:i.size)==null?void 0:wt.width}`)}function wVt(i,{minX:a,minY:f,maxX:g,maxY:w}={minX:0,minY:0,maxX:0,maxY:0}){if(i.size&&i.id!=="root"){const{x:v,y:b,width:E,height:S}=i.size;v-E/2g&&(g=v+E/2),b+S/2>w&&(w=b+S/2)}if(i.children)for(const v of i.children)({minX:a,minY:f,maxX:g,maxY:w}=wVt(v,{minX:a,minY:f,maxX:g,maxY:w}));return{minX:a,minY:f,maxX:g,maxY:w}}function wnn(i){const a=i.getBlock("root");if(!a)return;_2t(a,i,0,0),bVt(a),Kt.debug("getBlocks",JSON.stringify(a,null,2));const{minX:f,minY:g,maxX:w,maxY:v}=wVt(a),b=v-g,E=w-f;return{x:f,y:g,width:E,height:b}}const mnn=Object.freeze(Object.defineProperty({__proto__:null,diagram:{parser:Zen,db:cnn,renderer:{draw:async function(i,a,f,g){const{securityLevel:w,block:v}=o1(),b=g.db;let E;w==="sandbox"&&(E=Tr("#i"+a));const S=Tr(w==="sandbox"?E.nodes()[0].contentDocument.body:"body"),_=w==="sandbox"?S.select(`[id="${a}"]`):Tr(`[id="${a}"]`);jpt(_,["point","circle","cross"],g.type,a);const F=b.getBlocks(),R=b.getBlocksFlat(),B=b.getEdges(),z=_.insert("g").attr("class","block");await fnn(z,F,b);const Y=wnn(b);if(await dnn(z,F,b),await gnn(z,B,R,b,a),Y){const nt=Y,ot=Math.max(1,Math.round(.125*(nt.width/nt.height))),ft=nt.height+ot+10,wt=nt.width+10,{useMaxWidth:mt}=v;sg(_,ft,wt,!!mt),Kt.debug("Here Bounds",Y,nt),_.attr("viewBox",`${nt.x-5} ${nt.y-5} ${nt.width+10} ${nt.height+10}`)}oF(tPt)},getClasses:function(i,a){return a.db.getClasses()}},styles:unn}},Symbol.toStringTag,{value:"Module"}));return _2}); \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..3c4b9071 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1 @@ +https://toruniina.github.io/toml11/en/sitemap.xmlhttps://toruniina.github.io/toml11/ja/sitemap.xml \ No newline at end of file diff --git a/svg/calendar.svg b/svg/calendar.svg new file mode 100644 index 00000000..f8481120 --- /dev/null +++ b/svg/calendar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/edit.svg b/svg/edit.svg new file mode 100644 index 00000000..5b54e693 --- /dev/null +++ b/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/menu.svg b/svg/menu.svg new file mode 100644 index 00000000..770b1923 --- /dev/null +++ b/svg/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/toc.svg b/svg/toc.svg new file mode 100644 index 00000000..1889904e --- /dev/null +++ b/svg/toc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/translate.svg b/svg/translate.svg new file mode 100644 index 00000000..a1bbe166 --- /dev/null +++ b/svg/translate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/tags/index.html b/tags/index.html new file mode 100644 index 00000000..960342de --- /dev/null +++ b/tags/index.html @@ -0,0 +1,9 @@ +Tags | toml11 + +
    Tags +
    \ No newline at end of file diff --git a/tags/index.xml b/tags/index.xml new file mode 100644 index 00000000..1725b38a --- /dev/null +++ b/tags/index.xml @@ -0,0 +1 @@ +Tags on toml11https://toruniina.github.io/toml11/tags/Recent content in Tags on toml11Hugoen \ No newline at end of file diff --git a/tags/page/1/index.html b/tags/page/1/index.html new file mode 100644 index 00000000..09099097 --- /dev/null +++ b/tags/page/1/index.html @@ -0,0 +1,2 @@ +https://toruniina.github.io/toml11/tags/ + \ No newline at end of file