diff options
author | alextarazanov <alextarazanov@yandex-team.ru> | 2022-04-18 15:59:44 +0300 |
---|---|---|
committer | alextarazanov <alextarazanov@yandex-team.ru> | 2022-04-18 15:59:44 +0300 |
commit | 44028ec4cb19d0e0ea63d6b89fafe6a6970767af (patch) | |
tree | 2b7205d54af602dfbb006c7f4d13cf66fa6d51fc | |
parent | bfb6e9f6d52f7c0f56484bc222a06369389ae673 (diff) | |
download | ydb-44028ec4cb19d0e0ea63d6b89fafe6a6970767af.tar.gz |
Проверяем перевод YDB Core 20220408
ref:3e2ceaf30c0b2bae844392f0ae4f4664d72631a5
41 files changed, 636 insertions, 90 deletions
diff --git a/ydb/docs/en/core/best_practices/_includes/secondary_indexes.md b/ydb/docs/en/core/best_practices/_includes/secondary_indexes.md index fb4c9dbd52..57a14727bc 100644 --- a/ydb/docs/en/core/best_practices/_includes/secondary_indexes.md +++ b/ydb/docs/en/core/best_practices/_includes/secondary_indexes.md @@ -1,6 +1,6 @@ # Secondary indexes -[An index](https://en.wikipedia.org/wiki/Database_index) is an auxiliary data structure that lets you find data that meets certain criteria in a database, without having to search every row in a DB table, as well as obtain sorted samples without performing actual sorting that requires processing a complete set of all sorted data. +[An index]{% if lang == "ru" %}(https://ru.wikipedia.org/wiki/Индекс_(базы_данных)){% endif %}{% if lang == "en" %}(https://en.wikipedia.org/wiki/Database_index){% endif %} is an auxiliary data structure that lets you find data that meets certain criteria in a database, without having to search every row in a DB table, as well as obtain sorted samples without performing actual sorting that requires processing a complete set of all sorted data. Data in YDB tables is always indexed by primary key. This means that fetching any record from a table with the specified values of primary key fields will always take the minimum fixed time, regardless of the total number of records in the table. A primary key index also lets you get any consecutive range of records in ascending or descending order of primary key values. The execution time of this operation will only depend on the number of records received, regardless of the total number of records in the table. @@ -20,16 +20,16 @@ Since an index contains its own data that is derived from table data, an initial Indexes can only be used in the order of their fields. If there are two index fields, `a` and `b`, this index can be effectively used for queries like: -- `where a = $var1 and b = $var2` -- `where a = $var1` -- `where a > $var1`, and other comparison operators -- `where a = $var1 and b > $var2`, and any other comparison operators, but the first field must be checked for equality +* `where a = $var1 and b = $var2`. +* `where a = $var1`. +* `where a > $var1`, and other comparison operators. +* `where a = $var1 and b > $var2`, and any other comparison operators, but the first field must be checked for equality. At the same time, you can't use this index for the following queries: -- `where b = $var1` -- `where a > $var1 and b > $var2`, to be more precise, this entry will be equivalent to `where a > $var1` in terms of using the index -- `where b > $var1` +* `where b = $var1`. +* `where a > $var1 and b > $var2`, to be more precise, this entry will be equivalent to `where a > $var1` in terms of using the index. +* `where b > $var1`. Considering the above specifics, it's useless to try to index all possible combinations of table columns in advance to speed up the execution of any query. An index is always a trade-off between the speed of searching and writing data and the storage space this data takes. Indexes are created for specific selects and criteria for a search that an application will make in the database. diff --git a/ydb/docs/en/core/best_practices/_includes/timeouts.md b/ydb/docs/en/core/best_practices/_includes/timeouts.md index 3ab0d31c55..730f3cbce9 100644 --- a/ydb/docs/en/core/best_practices/_includes/timeouts.md +++ b/ydb/docs/en/core/best_practices/_includes/timeouts.md @@ -81,18 +81,19 @@ Timeout usage example: ```go import ( - "context" - "a.yandex-team.ru/kikimr/public/sdk/go/ydb" - "a.yandex-team.ru/kikimr/public/sdk/go/ydb/table" + "context" + + ydb "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" ) - func executeInTx(ctx context.Context, s *table.Session, query string) { - newCtx, close := context.WithTimeout(ctx, time.Millisecond*300) // client and by default operation timeout - newCtx2 := ydb.WithOperationTimeout(newCtx, time.Millisecond*400) // operation timeout override - newCtx3 := ydb.WithOperationCancelAfter(newCtx2, time.Millisecond*300) // cancel after timeout - defer close() - tx := table.TxControl(table.BeginTx(table.WithSerializableReadWrite()), table.CommitTx()) - _, res, err := session.Execute(newCtx3, tx, query) + func executeInTx(ctx context.Context, s table.Session, query string) { + ctx, cancel := context.WithTimeout(ctx, time.Millisecond*300) // client and by default operation timeout + defer cancel() + ctx = ydb.WithOperationTimeout(ctx, time.Millisecond*400) // operation timeout override + ctx = ydb.WithOperationCancelAfter(ctx, time.Millisecond*300) // cancel after timeout + tx := table.TxControl(table.BeginTx(table.WithSerializableReadWrite()), table.CommitTx()) + _, res, err := s.Execute(ctx, tx, query, table.NewQueryParameters()) } ``` diff --git a/ydb/docs/en/core/concepts/cluster/_assets/BS_overview.svg b/ydb/docs/en/core/concepts/cluster/_assets/BS_overview.svg index eb08e1cb2e..c685bf242e 100644 --- a/ydb/docs/en/core/concepts/cluster/_assets/BS_overview.svg +++ b/ydb/docs/en/core/concepts/cluster/_assets/BS_overview.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="771px" height="814px" viewBox="-0.5 -0.5 771 814" content="<mxfile host="drawio.yandex-team.ru" modified="2021-07-15T14:50:26.556Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="ZU8BhaNDal54XeL1MvRJ" version="12.7.0" type="device"><diagram id="0HZmCEQLlPINtnbGPtoa" name="Page-1">7Zxdl6I4EIZ/jZc9BxK+vBx1puecOd3HGXd3Zq72RIjCNoobsdX99RuUIKTo9psgTt80KTTIW4+VqiTSwt3J6pGRmf8UeTRsIc1btXCvhZCOnDb/l1jWW4utWVvDmAVe+qKdYRD8R1OjlloXgUfnhRfGURTGwaxodKPplLpxwUYYi5bFl42isHjVGRlTYBi4JITWH4EX+1urg+yd/QsNxr64sm6lNzwh4sXpncx94kXLnAl/auEui6J4ezRZdWmYiCd02b7v8xtnsw/G6DQ+5A3+n/Tx6fnpBaOnUdd9oN/+cXsPzraXVxIu0hsef+93k35ZtFrzzr5+66cfP14LTVi0mHo06VZr4c7SD2I6mBE3ObvkFHCbH09C3tL54SgIw24URmzzXjxyXOq63D6PWfRCc2eGjmmYSYdjRryA31T+XZs/fg7edKrDK2UxXeVMqQiPNJrQmPFb0dKzRuqPtUA0bS937s1sfs61VmojKVHjrOed6Pwg1f0IH7SBD3okJgOfMO8d6fXjpR+NULn0njW0TKty6ZGmWnoRZe5Qe0e59jrQ/kvwSi8qu2dSxzPKZHfQEFvVy44t5bKj+wv5WaCpTczX8d0EHln8GkR9A4q/npJJ4LaQFfKrd4aMH42To2ee0fKX6sAp/O7jovJFhafRlEruSE0kDMZT3nS5ppTbO4mWAU85P6YnJoHnJZcpdXXxm3gB/zhF95SMC0aJc9DVnGMe7RzUXOfI44dy71j3N3pkY3Z9Rg9YtjV19JDFr8HoAeu1BuatQHfl9YK42BEDA27uwIDbuFYDA4LVXOMHBhPVbWBAsLjrDLoNC02y7OqHBASruUFM4vusJ2T3HDpwXC80wXKv8aHJcmoXmmBd130aNCw0ybLXIDTBgm1PaGpwNS27R31osoF3Ei90EnVZ078b6isKWEYDzec+mSWH7oKF6w4j7guN94tf9BSLkm9clPDevhDJul0U88GGYpaS7FxNTFgW/0GnhN9ho7MdHZsFR2Doh3aVEUVc/waZNnTtQ1FMW7T3UK2L5OLycsKyNqO6wQMltmtGNUzhb4Vqy7Alqh9sdCDXyLka1zAbF2lhU5m2dNkRJVQ7lVINc/NOGA0HccSSXWmyJ3iPwWye6JWhHkYL7/hUkFBnVFqdWq5Dh1eapSnb+VAaRHT9anqXZ9s/CPPoFMh92xMAsvyG8mwbw2y7serLtY569Q2YyJyn+RUYNZVvjjIQUKnfC+Yv6qXCklQl9V7FUsEMQrlK8teuBkDBIb4eQFnt2gEFR2flKskRyjKUqwRH0b9qAZQcoSxTuVRwRkq5SnKEUg+UcFPtgJIjlHqgzBvIoWzlC30mzKF6g1a22KpaLylM2SWTABXrBTcPKFdJDlM1oKpkz3Z9qJJjVQ2oOiA9p1PvY/ITyVY2ZeeRuZ9NhuYk4sqw9c9Ezg9t0fy1aZqi2Vulam9b63yrT1nAbyuZBHx/Ni8mbEzjd25LLNlRr/CzTeiYnPBmie7CxmhI4mT3Zv5TlDkjvUI/CjZz/4IKeUHZkPw5jxbMpem7di4FHUn8OPIc2FYY0M8Gjeyuz6AFlik3QEtNIMDyHn0xi3AsBKCjiiE4oAD7DcEbvjO1C0EAOqoYggP2RPyG4A3fWeIrdC4EoKNqIbAOWG7NQeCGZD4P3Dddr9lF3xun+J6ugvin6Jsf5zDirV1PSWO9j5etH95RQD80IRFreDUhUBpB2nIecWo+Iuep1wbwuOx1H4A6dooEYq19Awxqt8mgvDfN0E6E0DS5p4pdiZ/uVsXhcXnxPg6NIoX6OQzuuPuVI7KcwTmXKYYfcmP+HIR7C+G9qApZbg3VpoTL4zL3fZgis8gpOilZKw+W7XdBTRoHJ337A2j7Nqk0JZyQfSKWllh+FHtwHOmzXJvL44qJfVxaAMyqAugZkdG+TQYNLG/GNU8NjoYjd2VcLz6un7tjtP57+X3of6SDl+6/X/v9B7huU+edR2DauYS8N2eipRGt0o1Hpdqj+9FeftKNevHh0lJjxZcfWKBe/AMmUU5Yp7pkdKh0f1SpRiUP+7noqt5ZapmSWlVukSpV64BqtGqN5JinHilYC9UIqey5trVh6oAUvWqR5FCunqmSR7TWhylsV8cUb+6eWLxNz3fPfcaf/gc=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f8cecc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#f8cecc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-fff2cc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#fff2cc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-d5e8d4-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#d5e8d4"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient></defs><g><rect x="0" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="60" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="0" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="60" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="0" y="250" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 280px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="60" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="0" y="330" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 360px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hive</div></div></div></foreignObject><text x="60" y="364" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Hive</text></switch></g><rect x="160" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="220" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="160" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="220" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="40" y="50" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 60px; margin-left: 41px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Dynamic<br />Node 1</div></div></div></foreignObject><text x="60" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dynami...</text></switch></g><rect x="200" y="50" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 60px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Dynamic<br />Node 2</div></div></div></foreignObject><text x="220" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dynami...</text></switch></g><rect x="320" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="380" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="320" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="380" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="320" y="250" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 280px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hive</div></div></div></foreignObject><text x="380" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Hive</text></switch></g><rect x="353" y="50" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 60px; margin-left: 354px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Dynamic<br />Node 3</div></div></div></foreignObject><text x="373" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dynami...</text></switch></g><rect x="480" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="540" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="480" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">BSC</div></div></div></foreignObject><text x="540" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BSC</text></switch></g><rect x="480" y="50" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 60px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Static<br />Node 1</div></div></div></foreignObject><text x="540" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Static...</text></switch></g><rect x="640" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="700" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="640" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">CMS</div></div></div></foreignObject><text x="700" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">CMS</text></switch></g><rect x="640" y="50" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 60px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Static<br />Node 2</div></div></div></foreignObject><text x="700" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Static...</text></switch></g><rect x="640" y="250" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 280px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeBroker</div></div></div></foreignObject><text x="700" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeBroker</text></switch></g><path d="M 150 -100 L 145 -100 Q 140 -100 140 -90 L 140 30 Q 140 40 135 40 L 132.5 40 Q 130 40 135 40 L 137.5 40 Q 140 40 140 50 L 140 170 Q 140 180 145 180 L 150 180" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,140,40)" pointer-events="all"/><rect x="95" y="0" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 10px; margin-left: 96px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Tenant 1</div></div></div></foreignObject><text x="140" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Tenant 1</text></switch></g><path d="M 390.5 -22.5 L 385.5 -22.5 Q 380.5 -22.5 380.5 -12.5 L 380.5 30 Q 380.5 40 375.5 40 L 373 40 Q 370.5 40 375.5 40 L 378 40 Q 380.5 40 380.5 50 L 380.5 92.5 Q 380.5 102.5 385.5 102.5 L 390.5 102.5" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,380.5,40)" pointer-events="all"/><rect x="335" y="0" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 10px; margin-left: 336px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Tenant 2</div></div></div></foreignObject><text x="380" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Tenant 2</text></switch></g><path d="M 627.5 -102.5 L 622.5 -102.5 Q 617.5 -102.5 617.5 -92.5 L 617.5 30 Q 617.5 40 612.5 40 L 610 40 Q 607.5 40 612.5 40 L 615 40 Q 617.5 40 617.5 50 L 617.5 172.5 Q 617.5 182.5 622.5 182.5 L 627.5 182.5" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,617.5,40)" pointer-events="all"/><rect x="577.5" y="0" width="80" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 10px; margin-left: 579px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Static</div></div></div></foreignObject><text x="618" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Static</text></switch></g><path d="M 552.5 357.5 C 494.5 357.5 480 385 526.4 390.5 C 480 402.6 532.2 429 569.9 418 C 596 440 683 440 712 418 C 770 418 770 396 733.75 385 C 770 363 712 341 661.25 352 C 625 335.5 567 335.5 552.5 357.5 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 288px; height: 1px; padding-top: 385px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">BlobStorage</div></div></div></foreignObject><text x="625" y="389" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BlobStorage</text></switch></g><rect x="480" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="540" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="640" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="700" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="480" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="490" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk</div></div></div></foreignObject><text x="550" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk</text></switch></g><rect x="640" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="650" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 651px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk</div></div></div></foreignObject><text x="710" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk</text></switch></g><rect x="480" y="610" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="490" y="620" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 650px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">VDisk</div></div></div></foreignObject><text x="550" y="654" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">VDisk</text></switch></g><rect x="640" y="610" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="650" y="620" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 650px; margin-left: 651px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">VDisk</div></div></div></foreignObject><text x="710" y="654" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">VDisk</text></switch></g><rect x="480" y="690" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="490" y="700" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 730px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="550" y="734" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><rect x="640" y="690" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="650" y="700" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 730px; margin-left: 651px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="710" y="734" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><path d="M 140 810 L 140 48" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 300 812 L 300 50" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 460 812 L 460 50" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 617 812 L 617 50" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 120 360 L 493.94 373.77" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 499.18 373.96 L 492.06 377.2 L 493.94 373.77 L 492.32 370.2 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 120 280 L 513.79 362.68" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 518.93 363.76 L 511.36 365.75 L 513.79 362.68 L 512.79 358.9 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 542.87 235.69 L 593.13 335.31" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 540.5 231 L 546.78 235.67 L 542.87 235.69 L 540.53 238.82 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 595.5 340 L 589.22 335.33 L 593.13 335.31 L 595.47 332.18 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 440 304 L 546.75 354.77" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 551.49 357.02 L 543.67 357.17 L 546.75 354.77 L 546.67 350.85 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 700 310 L 665.57 347.32" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 662.01 351.18 L 664.18 343.66 L 665.57 347.32 L 669.33 348.41 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="60" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="160" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="220" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="320" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="380" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="0" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="10" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="70" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><rect x="160" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="170" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 171px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="230" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><rect x="320" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="330" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="390" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="771px" height="814px" viewBox="-0.5 -0.5 771 814" content="<mxfile host="draw.io" modified="2021-07-15T14:50:26.556Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="ZU8BhaNDal54XeL1MvRJ" version="12.7.0" type="device"><diagram id="0HZmCEQLlPINtnbGPtoa" name="Page-1">7Zxdl6I4EIZ/jZc9BxK+vBx1puecOd3HGXd3Zq72RIjCNoobsdX99RuUIKTo9psgTt80KTTIW4+VqiTSwt3J6pGRmf8UeTRsIc1btXCvhZCOnDb/l1jWW4utWVvDmAVe+qKdYRD8R1OjlloXgUfnhRfGURTGwaxodKPplLpxwUYYi5bFl42isHjVGRlTYBi4JITWH4EX+1urg+yd/QsNxr64sm6lNzwh4sXpncx94kXLnAl/auEui6J4ezRZdWmYiCd02b7v8xtnsw/G6DQ+5A3+n/Tx6fnpBaOnUdd9oN/+cXsPzraXVxIu0hsef+93k35ZtFrzzr5+66cfP14LTVi0mHo06VZr4c7SD2I6mBE3ObvkFHCbH09C3tL54SgIw24URmzzXjxyXOq63D6PWfRCc2eGjmmYSYdjRryA31T+XZs/fg7edKrDK2UxXeVMqQiPNJrQmPFb0dKzRuqPtUA0bS937s1sfs61VmojKVHjrOed6Pwg1f0IH7SBD3okJgOfMO8d6fXjpR+NULn0njW0TKty6ZGmWnoRZe5Qe0e59jrQ/kvwSi8qu2dSxzPKZHfQEFvVy44t5bKj+wv5WaCpTczX8d0EHln8GkR9A4q/npJJ4LaQFfKrd4aMH42To2ee0fKX6sAp/O7jovJFhafRlEruSE0kDMZT3nS5ppTbO4mWAU85P6YnJoHnJZcpdXXxm3gB/zhF95SMC0aJc9DVnGMe7RzUXOfI44dy71j3N3pkY3Z9Rg9YtjV19JDFr8HoAeu1BuatQHfl9YK42BEDA27uwIDbuFYDA4LVXOMHBhPVbWBAsLjrDLoNC02y7OqHBASruUFM4vusJ2T3HDpwXC80wXKv8aHJcmoXmmBd130aNCw0ybLXIDTBgm1PaGpwNS27R31osoF3Ei90EnVZ078b6isKWEYDzec+mSWH7oKF6w4j7guN94tf9BSLkm9clPDevhDJul0U88GGYpaS7FxNTFgW/0GnhN9ho7MdHZsFR2Doh3aVEUVc/waZNnTtQ1FMW7T3UK2L5OLycsKyNqO6wQMltmtGNUzhb4Vqy7Alqh9sdCDXyLka1zAbF2lhU5m2dNkRJVQ7lVINc/NOGA0HccSSXWmyJ3iPwWye6JWhHkYL7/hUkFBnVFqdWq5Dh1eapSnb+VAaRHT9anqXZ9s/CPPoFMh92xMAsvyG8mwbw2y7serLtY569Q2YyJyn+RUYNZVvjjIQUKnfC+Yv6qXCklQl9V7FUsEMQrlK8teuBkDBIb4eQFnt2gEFR2flKskRyjKUqwRH0b9qAZQcoSxTuVRwRkq5SnKEUg+UcFPtgJIjlHqgzBvIoWzlC30mzKF6g1a22KpaLylM2SWTABXrBTcPKFdJDlM1oKpkz3Z9qJJjVQ2oOiA9p1PvY/ITyVY2ZeeRuZ9NhuYk4sqw9c9Ezg9t0fy1aZqi2Vulam9b63yrT1nAbyuZBHx/Ni8mbEzjd25LLNlRr/CzTeiYnPBmie7CxmhI4mT3Zv5TlDkjvUI/CjZz/4IKeUHZkPw5jxbMpem7di4FHUn8OPIc2FYY0M8Gjeyuz6AFlik3QEtNIMDyHn0xi3AsBKCjiiE4oAD7DcEbvjO1C0EAOqoYggP2RPyG4A3fWeIrdC4EoKNqIbAOWG7NQeCGZD4P3Dddr9lF3xun+J6ugvin6Jsf5zDirV1PSWO9j5etH95RQD80IRFreDUhUBpB2nIecWo+Iuep1wbwuOx1H4A6dooEYq19Awxqt8mgvDfN0E6E0DS5p4pdiZ/uVsXhcXnxPg6NIoX6OQzuuPuVI7KcwTmXKYYfcmP+HIR7C+G9qApZbg3VpoTL4zL3fZgis8gpOilZKw+W7XdBTRoHJ337A2j7Nqk0JZyQfSKWllh+FHtwHOmzXJvL44qJfVxaAMyqAugZkdG+TQYNLG/GNU8NjoYjd2VcLz6un7tjtP57+X3of6SDl+6/X/v9B7huU+edR2DauYS8N2eipRGt0o1Hpdqj+9FeftKNevHh0lJjxZcfWKBe/AMmUU5Yp7pkdKh0f1SpRiUP+7noqt5ZapmSWlVukSpV64BqtGqN5JinHilYC9UIqey5trVh6oAUvWqR5FCunqmSR7TWhylsV8cUb+6eWLxNz3fPfcaf/gc=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f8cecc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#f8cecc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-fff2cc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#fff2cc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-d5e8d4-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#d5e8d4"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient></defs><g><rect x="0" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="60" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="0" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="60" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="0" y="250" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 280px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="60" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="0" y="330" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 360px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hive</div></div></div></foreignObject><text x="60" y="364" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Hive</text></switch></g><rect x="160" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="220" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="160" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="220" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="40" y="50" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 60px; margin-left: 41px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Dynamic<br />Node 1</div></div></div></foreignObject><text x="60" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dynami...</text></switch></g><rect x="200" y="50" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 60px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Dynamic<br />Node 2</div></div></div></foreignObject><text x="220" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dynami...</text></switch></g><rect x="320" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="380" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="320" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DataShard</div></div></div></foreignObject><text x="380" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DataShard</text></switch></g><rect x="320" y="250" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 280px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Hive</div></div></div></foreignObject><text x="380" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Hive</text></switch></g><rect x="353" y="50" width="40" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 60px; margin-left: 354px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Dynamic<br />Node 3</div></div></div></foreignObject><text x="373" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Dynami...</text></switch></g><rect x="480" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="540" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="480" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">BSC</div></div></div></foreignObject><text x="540" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BSC</text></switch></g><rect x="480" y="50" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 60px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Static<br />Node 1</div></div></div></foreignObject><text x="540" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Static...</text></switch></g><rect x="640" y="90" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 120px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">gRPC proxy/KQP</div></div></div></foreignObject><text x="700" y="124" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">gRPC proxy/KQP</text></switch></g><rect x="640" y="170" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 200px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">CMS</div></div></div></foreignObject><text x="700" y="204" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">CMS</text></switch></g><rect x="640" y="50" width="120" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 60px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Static<br />Node 2</div></div></div></foreignObject><text x="700" y="64" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Static...</text></switch></g><rect x="640" y="250" width="120" height="60" rx="9" ry="9" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 280px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeBroker</div></div></div></foreignObject><text x="700" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeBroker</text></switch></g><path d="M 150 -100 L 145 -100 Q 140 -100 140 -90 L 140 30 Q 140 40 135 40 L 132.5 40 Q 130 40 135 40 L 137.5 40 Q 140 40 140 50 L 140 170 Q 140 180 145 180 L 150 180" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,140,40)" pointer-events="all"/><rect x="95" y="0" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 10px; margin-left: 96px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Tenant 1</div></div></div></foreignObject><text x="140" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Tenant 1</text></switch></g><path d="M 390.5 -22.5 L 385.5 -22.5 Q 380.5 -22.5 380.5 -12.5 L 380.5 30 Q 380.5 40 375.5 40 L 373 40 Q 370.5 40 375.5 40 L 378 40 Q 380.5 40 380.5 50 L 380.5 92.5 Q 380.5 102.5 385.5 102.5 L 390.5 102.5" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,380.5,40)" pointer-events="all"/><rect x="335" y="0" width="90" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 88px; height: 1px; padding-top: 10px; margin-left: 336px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Tenant 2</div></div></div></foreignObject><text x="380" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Tenant 2</text></switch></g><path d="M 627.5 -102.5 L 622.5 -102.5 Q 617.5 -102.5 617.5 -92.5 L 617.5 30 Q 617.5 40 612.5 40 L 610 40 Q 607.5 40 612.5 40 L 615 40 Q 617.5 40 617.5 50 L 617.5 172.5 Q 617.5 182.5 622.5 182.5 L 627.5 182.5" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(90,617.5,40)" pointer-events="all"/><rect x="577.5" y="0" width="80" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 10px; margin-left: 579px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Static</div></div></div></foreignObject><text x="618" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Static</text></switch></g><path d="M 552.5 357.5 C 494.5 357.5 480 385 526.4 390.5 C 480 402.6 532.2 429 569.9 418 C 596 440 683 440 712 418 C 770 418 770 396 733.75 385 C 770 363 712 341 661.25 352 C 625 335.5 567 335.5 552.5 357.5 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 288px; height: 1px; padding-top: 385px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">BlobStorage</div></div></div></foreignObject><text x="625" y="389" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BlobStorage</text></switch></g><rect x="480" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 481px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="540" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="640" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 641px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="700" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="480" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="490" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk</div></div></div></foreignObject><text x="550" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk</text></switch></g><rect x="640" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="650" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 651px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk</div></div></div></foreignObject><text x="710" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk</text></switch></g><rect x="480" y="610" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="490" y="620" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 650px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">VDisk</div></div></div></foreignObject><text x="550" y="654" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">VDisk</text></switch></g><rect x="640" y="610" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="650" y="620" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 650px; margin-left: 651px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">VDisk</div></div></div></foreignObject><text x="710" y="654" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">VDisk</text></switch></g><rect x="480" y="690" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="490" y="700" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 730px; margin-left: 491px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="550" y="734" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><rect x="640" y="690" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="650" y="700" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 730px; margin-left: 651px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="710" y="734" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><path d="M 140 810 L 140 48" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 300 812 L 300 50" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 460 812 L 460 50" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 617 812 L 617 50" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 120 360 L 493.94 373.77" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 499.18 373.96 L 492.06 377.2 L 493.94 373.77 L 492.32 370.2 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 120 280 L 513.79 362.68" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 518.93 363.76 L 511.36 365.75 L 513.79 362.68 L 512.79 358.9 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 542.87 235.69 L 593.13 335.31" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 540.5 231 L 546.78 235.67 L 542.87 235.69 L 540.53 238.82 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 595.5 340 L 589.22 335.33 L 593.13 335.31 L 595.47 332.18 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 440 304 L 546.75 354.77" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 551.49 357.02 L 543.67 357.17 L 546.75 354.77 L 546.67 350.85 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 700 310 L 665.57 347.32" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 662.01 351.18 L 664.18 343.66 L 665.57 347.32 L 669.33 348.41 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="60" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="160" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="220" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="320" y="450" width="120" height="60" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 480px; margin-left: 321px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">NodeWarden</div></div></div></foreignObject><text x="380" y="484" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">NodeWarden</text></switch></g><rect x="0" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="10" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 11px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="70" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><rect x="160" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="170" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 171px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="230" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><rect x="320" y="530" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="330" y="540" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 570px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="390" y="574" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file diff --git a/ydb/docs/en/core/concepts/cluster/_assets/Slide3_group_layout.svg b/ydb/docs/en/core/concepts/cluster/_assets/Slide3_group_layout.svg index 3d6bf588a8..55f20f878a 100644 --- a/ydb/docs/en/core/concepts/cluster/_assets/Slide3_group_layout.svg +++ b/ydb/docs/en/core/concepts/cluster/_assets/Slide3_group_layout.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="731px" height="468px" viewBox="-0.5 -0.5 731 468" content="<mxfile host="drawio.yandex-team.ru" modified="2021-07-15T15:31:24.461Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="c6UdJlCHfOx2ZCPmeLO2" version="12.7.0" type="device"><diagram id="5oa2Jgz5xl6jGbGaUmvA" name="Page-1">5V1dc6JIFP01Pu4W0Hz5GGOSqZrZbKqcqszuy1YLjbKDtIvtROfXL0ijQpOEZLzeJpqH2Bdo4Zzb3fcciBmQ68XmLqPL+R88ZMnAMsLNgIwHlmUZrpX/KiLbMmKaQ7uMzLI4lLFDYBL/ZDJoyOg6DtmqtqPgPBHxsh4MeJqyQNRiNMv4U323iCf1T13SGVMCk4AmavQxDsW8jPqWd4h/YvFsXn2y6Q7LLQta7SyvZDWnIX86CpGbAbnOOBflu8XmmiUFehUu5XG3z2zdn1jGUtHlgG+bz2L995rc2/b9n9Gnydf/JuQ32csPmqzlBT+M49X3PGQOyJVpGNXJi22FSMbXaciKTo0BGT3NY8EmSxoUW5/yJMhjc7FI8lbewyiKk+SaJzzbHUsip/jJ4yuR8e/saIu7exVH8FQcxctXHp9lNIxZbVu0e+XbVCiq62KZYJujkITmjvEFE9k236XaWtEkE9WXzacD6VYFxvyIcFvGqMyz2b7nAxX5G8nGG5ixFGZOykRImR8FrUwEPptG50fcVhG3zwk4AQbcYX5otwHuW1OyS31owF29ALdhAY8i5gatGR56w6lhwAO+nzA0AdyBBjyyngHcnbrOGTJ8D50mgLvAgPsBawd86ju2c44M9/UC3HutnDEvpJwhrmbljA87FJiZr69eGxND1yP0DHNPE3HsoTCEBdw16NBsBdwae+5udW2k/h5sYCJszVbdSslCMWEYPt3hrTBhGI6HyoRmy7Gpqt2TMmFOqcmsdibcm6tbRCY0W6dNYHWbZ77BonYmzPHoGo8JRzPVa6qytyqZrMt2gPb1EVrNZAIrZP08oL1FgTYcgDWyfi4QPuTQKlk7HwgfclUnnxhy3ZwgfMiBBbB+XhA+5KoEbpQ2l+oG4Zc21bp/OX4Q+nCwgNVvfxwhfCrA5W9fLCF8KoBv+/bHE8KnAlju9scUwqdClcFV6UQu2xUiFnrpBKyX9XOF2u5ennc4AOtl/VwhfMih9bJ2rhA+5MC3jPVzhdAhJ8AyWD9XCB/y5x95JpftCuGXNgRYF+vnCuEPB2D92x9XCJ8KcP3bF1cInwrg28D9cYXwqQCWu/1xhdCp8NQJqiqd7Mt2hfYTGFrp5EE/uKKdK2S33MQ873CANuK0c4XwIQd/cEU3VwgfcnAjTjdXCB9yaCNOO1cIHfLqfJ4vbS7VFcIvbXzgB1f0c4Xwh4MFC3l/XCF8KoANuv64QvhUABt0/XGF8KkAlrv9cYXwqVBl8D0P2cBqKZnyaxR13GkSz9L8fZAjwnK4RgUScUCTK7lhEYdhcfgoY6v4J53uuioIXfI4FbuLcUYDZ1z0tRZ8VX6DlHmihbmOtadC7bRAbYFBrcpfCbWa/T2H2hxiY63qXok1+WhYExMba1XwSqztj4a1Tc6H9T+Pj3eLh2QxSefOreV9vbv68rnTXziycMYmsskzMeczntLk5hAd1dfWwz5fOF9K7P5lQmzlF/oVsDbW23z1lBtN6yWkV3ydBeylCyr3K875RT4yllAR/2C13tvglYc+FMlx4NFtCAO/QZCg2YwJeVCDo/1Z/AJtCmvjSQFYxjfbX6x8Gkwow+kEg8BtlPKOOgj29v7xKHChRkEHUcXS8Kr4Asm8lfKUvTN9X03LV+aBKnbi7CXN9C2HmZK+r3bUnKeAh0EHBXbEW5DQ1SoO+k2d03w44p3MNftpCgJg5jrcRngrczlh2fZbMcv97lTNv+Skt2uMN7XWVraeZbyE4IVCpfoTFU1Tw2xy2jk3nPb5+Uy50eF+h/65UT2oomluKGtp19zwm6lx5sKnwyPS+idH5VdpmhzvLgewk6PDraEPVcedqhhALuO6fP/Xh+bt3St1kzilI2jmLk05nWwdVYZcsyNo5t6mnT4ecyfTvEpH72Yubx7+AUS5++H/aJCb/wE=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f5f5f5-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#f5f5f5"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-dae8fc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#dae8fc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-d5e8d4-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#d5e8d4"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffe6cc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#ffe6cc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-fff2cc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#fff2cc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f8cecc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#f8cecc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-e1d5e7-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#e1d5e7"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-60a917-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#60a917"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-008a00-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#008a00"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-1ba1e2-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#1ba1e2"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-0050ef-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#0050ef"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient></defs><g><rect x="90" y="67" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 87px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 1:1000</div></div></div></foreignObject><text x="190" y="91" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 1:1000</text></switch></g><rect x="90" y="27" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="27" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="27" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="27" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="27" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="67" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 87px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 1:1001</div></div></div></foreignObject><text x="430" y="91" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 1:1001</text></switch></g><rect x="330" y="27" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="27" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="27" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="27" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="27" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="90" y="187" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 207px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 2:1000</div></div></div></foreignObject><text x="190" y="211" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 2:1000</text></switch></g><rect x="90" y="147" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="147" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="147" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="147" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="147" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="187" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 207px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 2:1001</div></div></div></foreignObject><text x="430" y="211" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 2:1001</text></switch></g><rect x="330" y="147" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="147" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="147" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="147" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="147" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="90" y="307" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 327px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 3:1000</div></div></div></foreignObject><text x="190" y="331" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 3:1000</text></switch></g><rect x="90" y="267" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="267" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="267" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="267" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="267" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="307" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 327px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 3:1001</div></div></div></foreignObject><text x="430" y="331" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 3:1001</text></switch></g><rect x="330" y="267" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="267" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="267" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="267" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="267" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="90" y="427" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 447px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 4:1000</div></div></div></foreignObject><text x="190" y="451" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 4:1000</text></switch></g><rect x="90" y="387" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="387" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="387" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="387" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="387" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="427" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 447px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 4:1001</div></div></div></foreignObject><text x="430" y="451" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 4:1001</text></switch></g><rect x="330" y="387" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="387" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="387" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="387" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="387" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="0" y="57" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 1</div></div></div></foreignObject><text x="25" y="71" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 1</text></switch></g><rect x="0" y="177" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 187px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 2</div></div></div></foreignObject><text x="25" y="191" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 2</text></switch></g><rect x="0" y="297" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 307px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 3</div></div></div></foreignObject><text x="25" y="311" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 3</text></switch></g><rect x="0" y="417" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 427px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 4</div></div></div></foreignObject><text x="25" y="431" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 4</text></switch></g><path d="M 610 67 L 576.37 67" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 571.12 67 L 578.12 63.5 L 576.37 67 L 578.12 70.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="610" y="37" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 67px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="670" y="71" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><path d="M 570 367 L 570 7" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 7 L 510 20.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 25.88 L 506.5 18.88 L 510 20.63 L 513.5 18.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 127 L 510 140.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 145.88 L 506.5 138.88 L 510 140.63 L 513.5 138.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 247 L 510 260.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 265.88 L 506.5 258.88 L 510 260.63 L 513.5 258.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 367 L 510 380.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 385.88 L 506.5 378.88 L 510 380.63 L 513.5 378.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 7 L 570 7" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 127 L 570 127" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 247 L 570 247" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 367 L 570 367" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="731px" height="468px" viewBox="-0.5 -0.5 731 468" content="<mxfile host="draw.io" modified="2021-07-15T15:31:24.461Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="c6UdJlCHfOx2ZCPmeLO2" version="12.7.0" type="device"><diagram id="5oa2Jgz5xl6jGbGaUmvA" name="Page-1">5V1dc6JIFP01Pu4W0Hz5GGOSqZrZbKqcqszuy1YLjbKDtIvtROfXL0ijQpOEZLzeJpqH2Bdo4Zzb3fcciBmQ68XmLqPL+R88ZMnAMsLNgIwHlmUZrpX/KiLbMmKaQ7uMzLI4lLFDYBL/ZDJoyOg6DtmqtqPgPBHxsh4MeJqyQNRiNMv4U323iCf1T13SGVMCk4AmavQxDsW8jPqWd4h/YvFsXn2y6Q7LLQta7SyvZDWnIX86CpGbAbnOOBflu8XmmiUFehUu5XG3z2zdn1jGUtHlgG+bz2L995rc2/b9n9Gnydf/JuQ32csPmqzlBT+M49X3PGQOyJVpGNXJi22FSMbXaciKTo0BGT3NY8EmSxoUW5/yJMhjc7FI8lbewyiKk+SaJzzbHUsip/jJ4yuR8e/saIu7exVH8FQcxctXHp9lNIxZbVu0e+XbVCiq62KZYJujkITmjvEFE9k236XaWtEkE9WXzacD6VYFxvyIcFvGqMyz2b7nAxX5G8nGG5ixFGZOykRImR8FrUwEPptG50fcVhG3zwk4AQbcYX5otwHuW1OyS31owF29ALdhAY8i5gatGR56w6lhwAO+nzA0AdyBBjyyngHcnbrOGTJ8D50mgLvAgPsBawd86ju2c44M9/UC3HutnDEvpJwhrmbljA87FJiZr69eGxND1yP0DHNPE3HsoTCEBdw16NBsBdwae+5udW2k/h5sYCJszVbdSslCMWEYPt3hrTBhGI6HyoRmy7Gpqt2TMmFOqcmsdibcm6tbRCY0W6dNYHWbZ77BonYmzPHoGo8JRzPVa6qytyqZrMt2gPb1EVrNZAIrZP08oL1FgTYcgDWyfi4QPuTQKlk7HwgfclUnnxhy3ZwgfMiBBbB+XhA+5KoEbpQ2l+oG4Zc21bp/OX4Q+nCwgNVvfxwhfCrA5W9fLCF8KoBv+/bHE8KnAlju9scUwqdClcFV6UQu2xUiFnrpBKyX9XOF2u5ennc4AOtl/VwhfMih9bJ2rhA+5MC3jPVzhdAhJ8AyWD9XCB/y5x95JpftCuGXNgRYF+vnCuEPB2D92x9XCJ8KcP3bF1cInwrg28D9cYXwqQCWu/1xhdCp8NQJqiqd7Mt2hfYTGFrp5EE/uKKdK2S33MQ873CANuK0c4XwIQd/cEU3VwgfcnAjTjdXCB9yaCNOO1cIHfLqfJ4vbS7VFcIvbXzgB1f0c4Xwh4MFC3l/XCF8KoANuv64QvhUABt0/XGF8KkAlrv9cYXwqVBl8D0P2cBqKZnyaxR13GkSz9L8fZAjwnK4RgUScUCTK7lhEYdhcfgoY6v4J53uuioIXfI4FbuLcUYDZ1z0tRZ8VX6DlHmihbmOtadC7bRAbYFBrcpfCbWa/T2H2hxiY63qXok1+WhYExMba1XwSqztj4a1Tc6H9T+Pj3eLh2QxSefOreV9vbv68rnTXziycMYmsskzMeczntLk5hAd1dfWwz5fOF9K7P5lQmzlF/oVsDbW23z1lBtN6yWkV3ydBeylCyr3K875RT4yllAR/2C13tvglYc+FMlx4NFtCAO/QZCg2YwJeVCDo/1Z/AJtCmvjSQFYxjfbX6x8Gkwow+kEg8BtlPKOOgj29v7xKHChRkEHUcXS8Kr4Asm8lfKUvTN9X03LV+aBKnbi7CXN9C2HmZK+r3bUnKeAh0EHBXbEW5DQ1SoO+k2d03w44p3MNftpCgJg5jrcRngrczlh2fZbMcv97lTNv+Skt2uMN7XWVraeZbyE4IVCpfoTFU1Tw2xy2jk3nPb5+Uy50eF+h/65UT2oomluKGtp19zwm6lx5sKnwyPS+idH5VdpmhzvLgewk6PDraEPVcedqhhALuO6fP/Xh+bt3St1kzilI2jmLk05nWwdVYZcsyNo5t6mnT4ecyfTvEpH72Yubx7+AUS5++H/aJCb/wE=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f5f5f5-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#f5f5f5"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-dae8fc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#dae8fc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-d5e8d4-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#d5e8d4"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffe6cc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#ffe6cc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-fff2cc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#fff2cc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-f8cecc-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#f8cecc"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-e1d5e7-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#e1d5e7"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-60a917-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#60a917"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-008a00-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#008a00"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-1ba1e2-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#1ba1e2"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-0050ef-1-ffffff-1-s-0"><stop offset="0%" style="stop-color:#0050ef"/><stop offset="100%" style="stop-color:#ffffff"/></linearGradient></defs><g><rect x="90" y="67" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 87px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 1:1000</div></div></div></foreignObject><text x="190" y="91" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 1:1000</text></switch></g><rect x="90" y="27" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="27" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="27" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="27" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="27" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="67" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 87px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 1:1001</div></div></div></foreignObject><text x="430" y="91" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 1:1001</text></switch></g><rect x="330" y="27" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="27" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="27" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="27" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="27" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="90" y="187" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 207px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 2:1000</div></div></div></foreignObject><text x="190" y="211" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 2:1000</text></switch></g><rect x="90" y="147" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="147" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="147" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="147" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="147" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="187" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 207px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 2:1001</div></div></div></foreignObject><text x="430" y="211" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 2:1001</text></switch></g><rect x="330" y="147" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="147" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="147" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="147" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="147" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="90" y="307" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 327px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 3:1000</div></div></div></foreignObject><text x="190" y="331" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 3:1000</text></switch></g><rect x="90" y="267" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="267" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="267" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="267" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="267" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="307" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 327px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 3:1001</div></div></div></foreignObject><text x="430" y="331" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 3:1001</text></switch></g><rect x="330" y="267" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="267" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="267" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="267" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="267" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="90" y="427" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 447px; margin-left: 91px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 4:1000</div></div></div></foreignObject><text x="190" y="451" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 4:1000</text></switch></g><rect x="90" y="387" width="40" height="40" fill="url(#mx-gradient-dae8fc-1-ffffff-1-s-0)" stroke="#6c8ebf" pointer-events="all"/><rect x="130" y="387" width="40" height="40" fill="url(#mx-gradient-d5e8d4-1-ffffff-1-s-0)" stroke="#82b366" pointer-events="all"/><rect x="170" y="387" width="40" height="40" fill="url(#mx-gradient-ffe6cc-1-ffffff-1-s-0)" stroke="#d79b00" pointer-events="all"/><rect x="210" y="387" width="40" height="40" fill="url(#mx-gradient-fff2cc-1-ffffff-1-s-0)" stroke="#d6b656" pointer-events="all"/><rect x="250" y="387" width="40" height="40" fill="url(#mx-gradient-f8cecc-1-ffffff-1-s-0)" stroke="#b85450" pointer-events="all"/><rect x="330" y="427" width="200" height="40" fill="url(#mx-gradient-f5f5f5-1-ffffff-1-s-0)" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 198px; height: 1px; padding-top: 447px; margin-left: 331px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #333333; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PDisk 4:1001</div></div></div></foreignObject><text x="430" y="451" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">PDisk 4:1001</text></switch></g><rect x="330" y="387" width="40" height="40" fill="url(#mx-gradient-e1d5e7-1-ffffff-1-s-0)" stroke="#9673a6" pointer-events="all"/><rect x="370" y="387" width="40" height="40" fill="url(#mx-gradient-60a917-1-ffffff-1-s-0)" stroke="#2d7600" pointer-events="all"/><rect x="410" y="387" width="40" height="40" fill="url(#mx-gradient-008a00-1-ffffff-1-s-0)" stroke="#005700" pointer-events="all"/><rect x="450" y="387" width="40" height="40" fill="url(#mx-gradient-1ba1e2-1-ffffff-1-s-0)" stroke="#006eaf" pointer-events="all"/><rect x="490" y="387" width="40" height="40" fill="url(#mx-gradient-0050ef-1-ffffff-1-s-0)" stroke="#001dbc" pointer-events="all"/><rect x="0" y="57" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 1</div></div></div></foreignObject><text x="25" y="71" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 1</text></switch></g><rect x="0" y="177" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 187px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 2</div></div></div></foreignObject><text x="25" y="191" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 2</text></switch></g><rect x="0" y="297" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 307px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 3</div></div></div></foreignObject><text x="25" y="311" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 3</text></switch></g><rect x="0" y="417" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 427px; margin-left: 25px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Node 4</div></div></div></foreignObject><text x="25" y="431" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Node 4</text></switch></g><path d="M 610 67 L 576.37 67" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 571.12 67 L 578.12 63.5 L 576.37 67 L 578.12 70.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="610" y="37" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 67px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">DS proxy</div></div></div></foreignObject><text x="670" y="71" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">DS proxy</text></switch></g><path d="M 570 367 L 570 7" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 7 L 510 20.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 25.88 L 506.5 18.88 L 510 20.63 L 513.5 18.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 127 L 510 140.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 145.88 L 506.5 138.88 L 510 140.63 L 513.5 138.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 247 L 510 260.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 265.88 L 506.5 258.88 L 510 260.63 L 513.5 258.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 367 L 510 380.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 385.88 L 506.5 378.88 L 510 380.63 L 513.5 378.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 510 7 L 570 7" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 127 L 570 127" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 247 L 570 247" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 510 367 L 570 367" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file diff --git a/ydb/docs/en/core/concepts/cluster/_assets/Slide_blob.svg b/ydb/docs/en/core/concepts/cluster/_assets/Slide_blob.svg index 502ed357b3..0095da0cdd 100644 --- a/ydb/docs/en/core/concepts/cluster/_assets/Slide_blob.svg +++ b/ydb/docs/en/core/concepts/cluster/_assets/Slide_blob.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="691px" height="551px" viewBox="-0.5 -0.5 691 551" content="<mxfile host="drawio.yandex-team.ru" modified="2021-07-15T16:05:40.464Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="HF0g-8VF_2eGPBkH-fRg" version="12.7.0" type="device"><diagram id="LqqcKPgxwdzCRuipa-4Q" name="Page-1">3ZtRc5s4EMc/DTO9h3SQBBg/GidNc3PXyYw7vV7fFKMYWox8shzb/fQnjADDUocktpH74qBFYPhp/9LuKrbIeL65FXQR/c1DlljYDjcWubYwxraH1Z/Mss0tCA2d3DITcahtlWES/2TaaGvrKg7ZstZRcp7IeFE3Tnmasqms2agQfF3v9siT+rcu6IwBw2RKE2j9Jw5llFt9PKjsH1k8i4pvRt4wPzOnRWf9JsuIhny9ZyI3FhkLzmV+NN+MWZLRK7jk1334xdnywQRLZZcLxt6Hb1+Cu/8E+7ZBn/5EH++/Ply5bn6bJ5qs9Bvrp5XbAoHgqzRk2V1siwTrKJZssqDT7OxajbqyRXKeqBZSh488lXoUka/aNIlnqWok7FE9ZQAfWr/HExOSbfZM+iVuGZ8zKbaqiz5LNE/tUaTwlHU1PG7BPNobGmJrI9UuMStvXVFTBxrcSyAOnofIQuVWusmFjPiMpzS5qaxBHXPV5y/OFxrudyblVtOlK8kPo1eIxfZrdr/3btH8V99+17je1Fpb3frlGC35SkzZARCFQKmYMdnB6zIoB4dcsITK+Kmuxbbx05fe81g9c+kq2K77Cm66QP6k+qqGF5SP8XrHQMAvPtOHhMm78G0iO4KKkFdH40MV+S0ick6lIYcYoaHzawZ31Awankkz/us0MxKCbve6LbIOy+7fgwaN5avRH9nuof7qIH+CowoYA6ccR1QFGknv+i2VaIp+OwQSv6V+SUf94jOtecQ7j37B95DD+iUN/Tb6n0a/cFG5ZSkTii9Pe5cwwYZJGMCaSLboHZNjm4UJTnRjzn/ErH9QvlmgPAAqSPjDburuG5VrWPQLE8h7KkxIEzzDwgwfgAKIlhFdZIfTlUi2gaDTH9m6/ByrCmzekvkaQa6vhgfjgxfIs1G4uEIOhNlWuCid9eg0h60KbXE79Yqyzquo60wVECaUIQMRT2ky0ifmcRjmMR1bxj+ztFc7rQ4s1H3dwHKvs3upMG6pCxdHYo0ayYLbUiRqQY1PRbooUu2h9pyLx4z8OmYPUiZnpQwLLv7FQ8YD+znIbbPG6SDDpJjAWfjSKBPHMFeGqctvQNnBhlGGOQ++/GnZtQ2jDMPbbF6232Hvj8uHPXgW9nkjDRgiX75He6atgTBy/pxv7UwkF3TG7tJHDqi/KHlr8pdZBfQoc3DdX8sq1B5L1ArTPxVNbMb+aVU7rlWO3+Oyknz8zR+N1JjqMSYN7xg0Bv3EO6YY5knljktRB+yzbtSg05JWIrtFOyerh2CY8VS8kHG8hr3zgslLxQvOOj3zKktG/fGCaUjF65NpvNz+9Qh3B3RgoLEZHBg0IwOna2SAThYZEDN2ld+wwA87LvDEOfYC/zY/hgGubd1gyx9aI2fGUgt7dJ75XZLlEaj/lRlMnb1PBQTWFm4VlUW2MFflpj73C4lxyMxIBF4vd9I1nieeUXInMOxGh/SO+/desPbbvXsv3PAuBO86BPcfjTcFbwAyuMxcmOC7/ssz8c0SPMwbM1HXFG+awPtfnmBp1ewVvX9kbss/bCgYo91nYO8+0e4z2H26lmLh52dHuk+T6lmL180fVRxjlJpVkZY8a9gySOTlg6Sa1Q+M8hpd9TstcvM/</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="0" y="250" width="520" height="300" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 170 60 L 170 155 L 260 155 L 260 243.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 260 248.88 L 256.5 241.88 L 260 243.63 L 263.5 241.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="130" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">TabletId</div></div></div></foreignObject><text x="170" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TabletId</text></switch></g><path d="M 250 60 L 250 110 L 75 110 L 75 253.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 75 258.88 L 71.5 251.88 L 75 253.63 L 78.5 251.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="210" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 211px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel</div></div></div></foreignObject><text x="250" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel</text></switch></g><path d="M 330 60 L 330 170 L 275 170 L 275 353.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275 358.88 L 271.5 351.88 L 275 353.63 L 278.5 351.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="290" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 291px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Generation</div></div></div></foreignObject><text x="330" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Generation</text></switch></g><rect x="370" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 371px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Step</div></div></div></foreignObject><text x="410" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Step</text></switch></g><rect x="450" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 451px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Cookie</div></div></div></foreignObject><text x="490" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Cookie</text></switch></g><rect x="530" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 531px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">BlobSize</div></div></div></foreignObject><text x="570" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BlobSize</text></switch></g><rect x="610" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PartId</div></div></div></foreignObject><text x="650" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PartId</text></switch></g><path d="M 420 -200 L 415 -200 Q 410 -200 410 -190 L 410 70 Q 410 80 405 80 L 402.5 80 Q 400 80 405 80 L 407.5 80 Q 410 80 410 90 L 410 350 Q 410 360 415 360 L 420 360" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(-90,410,80)" pointer-events="all"/><rect x="385" y="90" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 410px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">BlobId</div></div></div></foreignObject><text x="410" y="104" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BlobId</text></switch></g><rect x="155" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 170px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">64</div></div></div></foreignObject><text x="170" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">64</text></switch></g><rect x="240" y="0" width="20" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 250px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">8</div></div></div></foreignObject><text x="250" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">8</text></switch></g><rect x="315" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 330px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">32</div></div></div></foreignObject><text x="330" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">32</text></switch></g><rect x="395" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 410px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">32</div></div></div></foreignObject><text x="410" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">32</text></switch></g><rect x="475" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 490px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">24</div></div></div></foreignObject><text x="490" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">24</text></switch></g><rect x="545" y="0" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 570px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">28 (26)</div></div></div></foreignObject><text x="570" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">28 (26)</text></switch></g><rect x="640" y="0" width="20" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 650px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">4</div></div></div></foreignObject><text x="650" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="15" y="260" width="120" height="280" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 267px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">TTabletStorageInfo</div></div></div></foreignObject><text x="75" y="279" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TTabletStorageInfo</text></switch></g><path d="M 125 310 L 170 310 L 170 405 L 208.63 405" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 213.88 405 L 206.88 408.5 L 208.63 405 L 206.88 401.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="25" y="290" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 310px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel 0</div></div></div></foreignObject><text x="75" y="314" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel 0</text></switch></g><rect x="25" y="330" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 350px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel 1</div></div></div></foreignObject><text x="75" y="354" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel 1</text></switch></g><rect x="25" y="370" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 390px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel 2</div></div></div></foreignObject><text x="75" y="394" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel 2</text></switch></g><rect x="25" y="490" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 510px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel N</div></div></div></foreignObject><text x="75" y="514" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel N</text></switch></g><rect x="215" y="360" width="120" height="180" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 367px; margin-left: 216px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">TTabletChannelInfo</div></div></div></foreignObject><text x="275" y="379" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TTabletChannelInfo</text></switch></g><path d="M 325 410 L 398.63 410" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 403.88 410 L 396.88 413.5 L 398.63 410 L 396.88 406.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="390" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 410px; margin-left: 226px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">0≤gen<10</div></div></div></foreignObject><text x="275" y="414" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">0≤gen<10</text></switch></g><rect x="405" y="390" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 410px; margin-left: 406px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Group 12345</div></div></div></foreignObject><text x="455" y="414" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Group 12345</text></switch></g><path d="M 325 460 L 398.63 460" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 403.88 460 L 396.88 463.5 L 398.63 460 L 396.88 456.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="440" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 460px; margin-left: 226px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">10≤gen<125</div></div></div></foreignObject><text x="275" y="464" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">10≤gen<125</text></switch></g><rect x="405" y="440" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 460px; margin-left: 406px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Group 54321</div></div></div></foreignObject><text x="455" y="464" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Group 54321</text></switch></g><path d="M 325 510 L 398.63 510" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 403.88 510 L 396.88 513.5 L 398.63 510 L 396.88 506.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="490" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 510px; margin-left: 226px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">125≤gen</div></div></div></foreignObject><text x="275" y="514" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">125≤gen</text></switch></g><rect x="405" y="490" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 510px; margin-left: 406px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Group 12345</div></div></div></foreignObject><text x="455" y="514" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Group 12345</text></switch></g><rect x="425" y="260" width="90" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 275px; margin-left: 470px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 18px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Tablet</div></div></div></foreignObject><text x="470" y="280" fill="#000000" font-family="Helvetica" font-size="18px" text-anchor="middle">Tablet</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="691px" height="551px" viewBox="-0.5 -0.5 691 551" content="<mxfile host="draw.io" modified="2021-07-15T16:05:40.464Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="HF0g-8VF_2eGPBkH-fRg" version="12.7.0" type="device"><diagram id="LqqcKPgxwdzCRuipa-4Q" name="Page-1">3ZtRc5s4EMc/DTO9h3SQBBg/GidNc3PXyYw7vV7fFKMYWox8shzb/fQnjADDUocktpH74qBFYPhp/9LuKrbIeL65FXQR/c1DlljYDjcWubYwxraH1Z/Mss0tCA2d3DITcahtlWES/2TaaGvrKg7ZstZRcp7IeFE3Tnmasqms2agQfF3v9siT+rcu6IwBw2RKE2j9Jw5llFt9PKjsH1k8i4pvRt4wPzOnRWf9JsuIhny9ZyI3FhkLzmV+NN+MWZLRK7jk1334xdnywQRLZZcLxt6Hb1+Cu/8E+7ZBn/5EH++/Ply5bn6bJ5qs9Bvrp5XbAoHgqzRk2V1siwTrKJZssqDT7OxajbqyRXKeqBZSh488lXoUka/aNIlnqWok7FE9ZQAfWr/HExOSbfZM+iVuGZ8zKbaqiz5LNE/tUaTwlHU1PG7BPNobGmJrI9UuMStvXVFTBxrcSyAOnofIQuVWusmFjPiMpzS5qaxBHXPV5y/OFxrudyblVtOlK8kPo1eIxfZrdr/3btH8V99+17je1Fpb3frlGC35SkzZARCFQKmYMdnB6zIoB4dcsITK+Kmuxbbx05fe81g9c+kq2K77Cm66QP6k+qqGF5SP8XrHQMAvPtOHhMm78G0iO4KKkFdH40MV+S0ick6lIYcYoaHzawZ31Awankkz/us0MxKCbve6LbIOy+7fgwaN5avRH9nuof7qIH+CowoYA6ccR1QFGknv+i2VaIp+OwQSv6V+SUf94jOtecQ7j37B95DD+iUN/Tb6n0a/cFG5ZSkTii9Pe5cwwYZJGMCaSLboHZNjm4UJTnRjzn/ErH9QvlmgPAAqSPjDburuG5VrWPQLE8h7KkxIEzzDwgwfgAKIlhFdZIfTlUi2gaDTH9m6/ByrCmzekvkaQa6vhgfjgxfIs1G4uEIOhNlWuCid9eg0h60KbXE79Yqyzquo60wVECaUIQMRT2ky0ifmcRjmMR1bxj+ztFc7rQ4s1H3dwHKvs3upMG6pCxdHYo0ayYLbUiRqQY1PRbooUu2h9pyLx4z8OmYPUiZnpQwLLv7FQ8YD+znIbbPG6SDDpJjAWfjSKBPHMFeGqctvQNnBhlGGOQ++/GnZtQ2jDMPbbF6232Hvj8uHPXgW9nkjDRgiX75He6atgTBy/pxv7UwkF3TG7tJHDqi/KHlr8pdZBfQoc3DdX8sq1B5L1ArTPxVNbMb+aVU7rlWO3+Oyknz8zR+N1JjqMSYN7xg0Bv3EO6YY5knljktRB+yzbtSg05JWIrtFOyerh2CY8VS8kHG8hr3zgslLxQvOOj3zKktG/fGCaUjF65NpvNz+9Qh3B3RgoLEZHBg0IwOna2SAThYZEDN2ld+wwA87LvDEOfYC/zY/hgGubd1gyx9aI2fGUgt7dJ75XZLlEaj/lRlMnb1PBQTWFm4VlUW2MFflpj73C4lxyMxIBF4vd9I1nieeUXInMOxGh/SO+/desPbbvXsv3PAuBO86BPcfjTcFbwAyuMxcmOC7/ssz8c0SPMwbM1HXFG+awPtfnmBp1ewVvX9kbss/bCgYo91nYO8+0e4z2H26lmLh52dHuk+T6lmL180fVRxjlJpVkZY8a9gySOTlg6Sa1Q+M8hpd9TstcvM/</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="0" y="250" width="520" height="300" fill="#ffffff" stroke="#000000" pointer-events="all"/><path d="M 170 60 L 170 155 L 260 155 L 260 243.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 260 248.88 L 256.5 241.88 L 260 243.63 L 263.5 241.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="130" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 131px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">TabletId</div></div></div></foreignObject><text x="170" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TabletId</text></switch></g><path d="M 250 60 L 250 110 L 75 110 L 75 253.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 75 258.88 L 71.5 251.88 L 75 253.63 L 78.5 251.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="210" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 211px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel</div></div></div></foreignObject><text x="250" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel</text></switch></g><path d="M 330 60 L 330 170 L 275 170 L 275 353.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 275 358.88 L 271.5 351.88 L 275 353.63 L 278.5 351.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="290" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 291px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Generation</div></div></div></foreignObject><text x="330" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Generation</text></switch></g><rect x="370" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 371px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Step</div></div></div></foreignObject><text x="410" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Step</text></switch></g><rect x="450" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 451px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Cookie</div></div></div></foreignObject><text x="490" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Cookie</text></switch></g><rect x="530" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 531px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">BlobSize</div></div></div></foreignObject><text x="570" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BlobSize</text></switch></g><rect x="610" y="20" width="80" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 40px; margin-left: 611px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">PartId</div></div></div></foreignObject><text x="650" y="44" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">PartId</text></switch></g><path d="M 420 -200 L 415 -200 Q 410 -200 410 -190 L 410 70 Q 410 80 405 80 L 402.5 80 Q 400 80 405 80 L 407.5 80 Q 410 80 410 90 L 410 350 Q 410 360 415 360 L 420 360" fill="none" stroke="#000000" stroke-miterlimit="10" transform="rotate(-90,410,80)" pointer-events="all"/><rect x="385" y="90" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 100px; margin-left: 410px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">BlobId</div></div></div></foreignObject><text x="410" y="104" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">BlobId</text></switch></g><rect x="155" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 170px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">64</div></div></div></foreignObject><text x="170" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">64</text></switch></g><rect x="240" y="0" width="20" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 250px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">8</div></div></div></foreignObject><text x="250" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">8</text></switch></g><rect x="315" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 330px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">32</div></div></div></foreignObject><text x="330" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">32</text></switch></g><rect x="395" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 410px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">32</div></div></div></foreignObject><text x="410" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">32</text></switch></g><rect x="475" y="0" width="30" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 490px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">24</div></div></div></foreignObject><text x="490" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">24</text></switch></g><rect x="545" y="0" width="50" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 570px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">28 (26)</div></div></div></foreignObject><text x="570" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">28 (26)</text></switch></g><rect x="640" y="0" width="20" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 10px; margin-left: 650px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">4</div></div></div></foreignObject><text x="650" y="14" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="15" y="260" width="120" height="280" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 267px; margin-left: 16px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">TTabletStorageInfo</div></div></div></foreignObject><text x="75" y="279" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TTabletStorageInfo</text></switch></g><path d="M 125 310 L 170 310 L 170 405 L 208.63 405" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 213.88 405 L 206.88 408.5 L 208.63 405 L 206.88 401.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="25" y="290" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 310px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel 0</div></div></div></foreignObject><text x="75" y="314" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel 0</text></switch></g><rect x="25" y="330" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 350px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel 1</div></div></div></foreignObject><text x="75" y="354" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel 1</text></switch></g><rect x="25" y="370" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 390px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel 2</div></div></div></foreignObject><text x="75" y="394" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel 2</text></switch></g><rect x="25" y="490" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 510px; margin-left: 26px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Channel N</div></div></div></foreignObject><text x="75" y="514" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Channel N</text></switch></g><rect x="215" y="360" width="120" height="180" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 367px; margin-left: 216px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">TTabletChannelInfo</div></div></div></foreignObject><text x="275" y="379" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">TTabletChannelInfo</text></switch></g><path d="M 325 410 L 398.63 410" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 403.88 410 L 396.88 413.5 L 398.63 410 L 396.88 406.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="390" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 410px; margin-left: 226px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">0≤gen<10</div></div></div></foreignObject><text x="275" y="414" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">0≤gen<10</text></switch></g><rect x="405" y="390" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 410px; margin-left: 406px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Group 12345</div></div></div></foreignObject><text x="455" y="414" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Group 12345</text></switch></g><path d="M 325 460 L 398.63 460" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 403.88 460 L 396.88 463.5 L 398.63 460 L 396.88 456.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="440" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 460px; margin-left: 226px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">10≤gen<125</div></div></div></foreignObject><text x="275" y="464" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">10≤gen<125</text></switch></g><rect x="405" y="440" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 460px; margin-left: 406px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Group 54321</div></div></div></foreignObject><text x="455" y="464" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Group 54321</text></switch></g><path d="M 325 510 L 398.63 510" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 403.88 510 L 396.88 513.5 L 398.63 510 L 396.88 506.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="225" y="490" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 510px; margin-left: 226px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">125≤gen</div></div></div></foreignObject><text x="275" y="514" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">125≤gen</text></switch></g><rect x="405" y="490" width="100" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 98px; height: 1px; padding-top: 510px; margin-left: 406px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">Group 12345</div></div></div></foreignObject><text x="455" y="514" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Group 12345</text></switch></g><rect x="425" y="260" width="90" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 275px; margin-left: 470px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 18px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">Tablet</div></div></div></foreignObject><text x="470" y="280" fill="#000000" font-family="Helvetica" font-size="18px" text-anchor="middle">Tablet</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file diff --git a/ydb/docs/en/core/concepts/cluster/_assets/Slide_group_content.svg b/ydb/docs/en/core/concepts/cluster/_assets/Slide_group_content.svg index 5e5796fae0..b3c6ede06e 100644 --- a/ydb/docs/en/core/concepts/cluster/_assets/Slide_group_content.svg +++ b/ydb/docs/en/core/concepts/cluster/_assets/Slide_group_content.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="616px" height="412px" viewBox="-0.5 -0.5 616 412" content="<mxfile host="drawio.yandex-team.ru" modified="2021-07-15T15:37:07.887Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="3zDAlwPQQ3q6GuUUS0rv" version="12.7.0" type="device"><diagram id="wSBYkmeAYjroDNpxkVYP" name="Page-1">3Ztbc6IwFMc/jY87I4EgPmpt7V66++DM7nMKKWYHiBPj9dNv0KDi0VaLmLBP4knA5PdPwrmMLfchXQ4FmYxfeESTFmpHy5Y7aCHkIMdVH7lltbX4Pt4aYsEi3WlvGLE11ca2ts5YRKeljpLzRLJJ2RjyLKOhLNmIEHxR7vbGk/KvTkhMgWEUkgRa/7BIjrfWAHX29mfK4nHxy47f3bakpOisZzIdk4gvDkzuY8t9EJzL7VW6fKBJDq/gsr3v6UzrbmCCZvKSG14S5q9fv/0apDEJw/iFDkbrL1jLMyfJTM9Yj1auCgSCz7KI5k9pt9z+YswkHU1ImLculOjKNpZpor456vKNZ/KJpCzJ9X6myZxKFhLVAIerZzCnQtLlgUkPf0h5SqVYqS66FWFNXa8lt1gki70yTkfbxoeq+NpI9GqId8/eA1MXmtkV/IoR3IzfDTA5HbeEyTmByQtOYKqNEgKQ2uYpBUeU0AlKJyB5dUGCO9ExDgl5lkHyACTz+81tWwYJA0iueUi+ZZB8AMkzDslDlkHqAEjYPCTbDu4AQPKNQ8K2HdxdAKljHJJv28HtQEfpjbD8NkFJkqpP6DepucoyGZKwOFPXoSJDhTLkRJQTnvR0Q8qiKL+9L+iUrcnr5lE58glnmdxMCvdbeJA/ayb5dBuU3Qh6t11m7kLmp1x4VBtz6HdtmftJzvVVqKs4v4p4SlgG7c2XxOkEJU18KAk+IQmuTRLo5V0nCXScmyYJci2TBPqU10kC3fTGSdK1TBLowV4nCQwKmiaJiy2TBPrL10kCQ5CmSeI5lkkCvfPrJIEBT+Mkse31DmOB6ySB4VXTJMGWvd4L7/rTksBgrnGSWPZ6RzAWBIxpFNOR/sqFHPOYZyR53Fv75ZB63+cH5xPN7i+VcqULbznWC8PsKZ+JkL43gaJcR0RM5TsdNfd8Mu8KJWhCJJuXk+O35+4A7r8HX0ff1dIbKpqTr+rm3pBmVKjBcLVse4psz9984oHZbVAqvj0ogZj6AdT+SRc3epMcZZV2+YiDTXIyY1Jb9O7BULFiaanWAqZ/VMA0nXDyYFhXsehUJ74dLmvwwRAMHtL24Otgy/DBcKlioequm7djGh8MbSqWsO66eY3jg2FIxeLWXTevaXwYhgwVy1733Lye6bMPQzezYkHsnpvXPD4YHQUW4zvavObxnauw2FJorFMNJzh6kZsuQeJzxZWdGoYLWndVIzCtxrm6yk4N6OP/t2p4xvdG1ZJK88vzyEclTYynJnHVmkrz6/Ougy3TpGpRxfChdhMvq22XJj70sgDkO6TwP5cV/jC/X5xKH+b3i0DbkgR/Me7LE/wKYg9dnuCvPQsflNf5Lro4/BuMf2Khu9cvdPV1/w+lTdvB/7zcx38=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="167" y="250" width="170" height="160" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="83" y="50" width="480" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="93" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 94px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">0</div></div></div></foreignObject><text x="113" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">0</text></switch></g><rect x="153" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 154px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="173" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="213" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 214px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="233" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><rect x="273" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 274px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="293" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><rect x="333" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 334px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="353" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="393" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 394px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="413" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><rect x="453" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 454px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">6</div></div></div></foreignObject><text x="473" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><rect x="513" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 514px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">7</div></div></div></foreignObject><text x="533" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">7</text></switch></g><rect x="0" y="70" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 35px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 0</div></div></div></foreignObject><text x="35" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 0</text></switch></g><rect x="88" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 113px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />0</div></div></div></foreignObject><text x="113" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="148" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 173px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />1</div></div></div></foreignObject><text x="173" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="208" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 233px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />2</div></div></div></foreignObject><text x="233" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="268" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 293px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />3</div></div></div></foreignObject><text x="293" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="328" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 353px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />4</div></div></div></foreignObject><text x="353" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="388" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 413px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />5</div></div></div></foreignObject><text x="413" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="448" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 473px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />6</div></div></div></foreignObject><text x="473" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="508" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 533px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />7</div></div></div></foreignObject><text x="533" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><path d="M 473 140 L 473 106.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 473 101.12 L 476.5 108.12 L 473 106.37 L 469.5 108.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="353" y="140" width="240" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 473px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">VDISK[GroupId:Generation:0:6:0]</div></div></div></foreignObject><text x="473" y="154" fill="#000000" font-family="Courier New" font-size="12px" text-anchor="middle">VDISK[GroupId:Generation:0:6:0]</text></switch></g><rect x="177" y="260" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 280px; margin-left: 178px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">0</div></div></div></foreignObject><text x="197" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">0</text></switch></g><rect x="230" y="260" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 280px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="250" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="285" y="260" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 280px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="305" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><rect x="177" y="310" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 330px; margin-left: 178px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="197" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><rect x="230" y="310" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 330px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="250" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="285" y="310" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 330px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="305" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><rect x="177" y="360" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 380px; margin-left: 178px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">6</div></div></div></foreignObject><text x="197" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><rect x="230" y="360" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 380px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">7</div></div></div></foreignObject><text x="250" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">7</text></switch></g><rect x="285" y="360" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 380px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">8</div></div></div></foreignObject><text x="305" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">8</text></switch></g><rect x="97" y="270" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 132px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 0</div></div></div></foreignObject><text x="132" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 0</text></switch></g><rect x="97" y="320" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 330px; margin-left: 132px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 1</div></div></div></foreignObject><text x="132" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 1</text></switch></g><rect x="97" y="370" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 380px; margin-left: 132px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 2</div></div></div></foreignObject><text x="132" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 2</text></switch></g><rect x="172" y="200" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 197px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />0</div></div></div></foreignObject><text x="197" y="229" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="225" y="200" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 250px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />1</div></div></div></foreignObject><text x="250" y="229" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="280" y="200" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 305px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />2</div></div></div></foreignObject><text x="305" y="229" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><path d="M 390 330 L 331.37 330" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 326.12 330 L 333.12 326.5 L 331.37 330 L 333.12 333.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="390" y="315" width="160" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 322px; margin-left: 392px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">VDISK[GroupId:Generation:1:2:0]</div></div></div></foreignObject><text x="392" y="334" fill="#000000" font-family="Courier New" font-size="12px">VDISK[GroupId:Generation:1...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="616px" height="412px" viewBox="-0.5 -0.5 616 412" content="<mxfile host="draw.io" modified="2021-07-15T15:37:07.887Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" etag="3zDAlwPQQ3q6GuUUS0rv" version="12.7.0" type="device"><diagram id="wSBYkmeAYjroDNpxkVYP" name="Page-1">3Ztbc6IwFMc/jY87I4EgPmpt7V66++DM7nMKKWYHiBPj9dNv0KDi0VaLmLBP4knA5PdPwrmMLfchXQ4FmYxfeESTFmpHy5Y7aCHkIMdVH7lltbX4Pt4aYsEi3WlvGLE11ca2ts5YRKeljpLzRLJJ2RjyLKOhLNmIEHxR7vbGk/KvTkhMgWEUkgRa/7BIjrfWAHX29mfK4nHxy47f3bakpOisZzIdk4gvDkzuY8t9EJzL7VW6fKBJDq/gsr3v6UzrbmCCZvKSG14S5q9fv/0apDEJw/iFDkbrL1jLMyfJTM9Yj1auCgSCz7KI5k9pt9z+YswkHU1ImLculOjKNpZpor456vKNZ/KJpCzJ9X6myZxKFhLVAIerZzCnQtLlgUkPf0h5SqVYqS66FWFNXa8lt1gki70yTkfbxoeq+NpI9GqId8/eA1MXmtkV/IoR3IzfDTA5HbeEyTmByQtOYKqNEgKQ2uYpBUeU0AlKJyB5dUGCO9ExDgl5lkHyACTz+81tWwYJA0iueUi+ZZB8AMkzDslDlkHqAEjYPCTbDu4AQPKNQ8K2HdxdAKljHJJv28HtQEfpjbD8NkFJkqpP6DepucoyGZKwOFPXoSJDhTLkRJQTnvR0Q8qiKL+9L+iUrcnr5lE58glnmdxMCvdbeJA/ayb5dBuU3Qh6t11m7kLmp1x4VBtz6HdtmftJzvVVqKs4v4p4SlgG7c2XxOkEJU18KAk+IQmuTRLo5V0nCXScmyYJci2TBPqU10kC3fTGSdK1TBLowV4nCQwKmiaJiy2TBPrL10kCQ5CmSeI5lkkCvfPrJIEBT+Mkse31DmOB6ySB4VXTJMGWvd4L7/rTksBgrnGSWPZ6RzAWBIxpFNOR/sqFHPOYZyR53Fv75ZB63+cH5xPN7i+VcqULbznWC8PsKZ+JkL43gaJcR0RM5TsdNfd8Mu8KJWhCJJuXk+O35+4A7r8HX0ff1dIbKpqTr+rm3pBmVKjBcLVse4psz9984oHZbVAqvj0ogZj6AdT+SRc3epMcZZV2+YiDTXIyY1Jb9O7BULFiaanWAqZ/VMA0nXDyYFhXsehUJ74dLmvwwRAMHtL24Otgy/DBcKlioequm7djGh8MbSqWsO66eY3jg2FIxeLWXTevaXwYhgwVy1733Lye6bMPQzezYkHsnpvXPD4YHQUW4zvavObxnauw2FJorFMNJzh6kZsuQeJzxZWdGoYLWndVIzCtxrm6yk4N6OP/t2p4xvdG1ZJK88vzyEclTYynJnHVmkrz6/Ougy3TpGpRxfChdhMvq22XJj70sgDkO6TwP5cV/jC/X5xKH+b3i0DbkgR/Me7LE/wKYg9dnuCvPQsflNf5Lro4/BuMf2Khu9cvdPV1/w+lTdvB/7zcx38=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="167" y="250" width="170" height="160" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="83" y="50" width="480" height="60" fill="#ffffff" stroke="#000000" pointer-events="all"/><rect x="93" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 94px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">0</div></div></div></foreignObject><text x="113" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">0</text></switch></g><rect x="153" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 154px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="173" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="213" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 214px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="233" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><rect x="273" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 274px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="293" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><rect x="333" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 334px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="353" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="393" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 394px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="413" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><rect x="453" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 454px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">6</div></div></div></foreignObject><text x="473" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><rect x="513" y="60" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 80px; margin-left: 514px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">7</div></div></div></foreignObject><text x="533" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">7</text></switch></g><rect x="0" y="70" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 80px; margin-left: 35px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 0</div></div></div></foreignObject><text x="35" y="84" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 0</text></switch></g><rect x="88" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 113px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />0</div></div></div></foreignObject><text x="113" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="148" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 173px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />1</div></div></div></foreignObject><text x="173" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="208" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 233px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />2</div></div></div></foreignObject><text x="233" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="268" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 293px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />3</div></div></div></foreignObject><text x="293" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="328" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 353px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />4</div></div></div></foreignObject><text x="353" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="388" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 413px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />5</div></div></div></foreignObject><text x="413" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="448" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 473px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />6</div></div></div></foreignObject><text x="473" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="508" y="0" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 25px; margin-left: 533px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />7</div></div></div></foreignObject><text x="533" y="29" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><path d="M 473 140 L 473 106.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 473 101.12 L 476.5 108.12 L 473 106.37 L 469.5 108.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="353" y="140" width="240" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 150px; margin-left: 473px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">VDISK[GroupId:Generation:0:6:0]</div></div></div></foreignObject><text x="473" y="154" fill="#000000" font-family="Courier New" font-size="12px" text-anchor="middle">VDISK[GroupId:Generation:0:6:0]</text></switch></g><rect x="177" y="260" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 280px; margin-left: 178px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">0</div></div></div></foreignObject><text x="197" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">0</text></switch></g><rect x="230" y="260" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 280px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="250" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="285" y="260" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 280px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="305" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><rect x="177" y="310" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 330px; margin-left: 178px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="197" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><rect x="230" y="310" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 330px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="250" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><rect x="285" y="310" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 330px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="305" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><rect x="177" y="360" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 380px; margin-left: 178px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">6</div></div></div></foreignObject><text x="197" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><rect x="230" y="360" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 380px; margin-left: 231px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">7</div></div></div></foreignObject><text x="250" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">7</text></switch></g><rect x="285" y="360" width="40" height="40" fill="#ffffff" stroke="#000000" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 38px; height: 1px; padding-top: 380px; margin-left: 286px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">8</div></div></div></foreignObject><text x="305" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">8</text></switch></g><rect x="97" y="270" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 280px; margin-left: 132px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 0</div></div></div></foreignObject><text x="132" y="284" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 0</text></switch></g><rect x="97" y="320" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 330px; margin-left: 132px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 1</div></div></div></foreignObject><text x="132" y="334" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 1</text></switch></g><rect x="97" y="370" width="70" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 380px; margin-left: 132px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail realm 2</div></div></div></foreignObject><text x="132" y="384" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail realm 2</text></switch></g><rect x="172" y="200" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 197px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />0</div></div></div></foreignObject><text x="197" y="229" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="225" y="200" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 250px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />1</div></div></div></foreignObject><text x="250" y="229" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><rect x="280" y="200" width="50" height="50" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 225px; margin-left: 305px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">fail<br />domain<br />2</div></div></div></foreignObject><text x="305" y="229" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">fail...</text></switch></g><path d="M 390 330 L 331.37 330" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 326.12 330 L 333.12 326.5 L 331.37 330 L 333.12 333.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="390" y="315" width="160" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 322px; margin-left: 392px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Courier New; color: #000000; line-height: 1.2; pointer-events: all; white-space: nowrap; ">VDISK[GroupId:Generation:1:2:0]</div></div></div></foreignObject><text x="392" y="334" fill="#000000" font-family="Courier New" font-size="12px">VDISK[GroupId:Generation:1...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://desk.draw.io/support/solutions/articles/16000042487" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Viewer does not support full SVG 1.1</text></a></switch></svg>
\ No newline at end of file diff --git a/ydb/docs/en/core/db/toc_i.yaml b/ydb/docs/en/core/db/toc_i.yaml index 51f76b46fe..b76479eb23 100644 --- a/ydb/docs/en/core/db/toc_i.yaml +++ b/ydb/docs/en/core/db/toc_i.yaml @@ -1,8 +1,4 @@ items: -# - name: Cloud Yandex Cloud -# include: { mode: link, path: yandexcloud/toc_i.yaml } -# - name: Internal Cloud Yandex-Team -# include: { mode: link, path: yandex-team/toc_i.yaml } - name: Backup and recovery href: ../maintenance/backup_and_recovery.md - name: Diagnostics diff --git a/ydb/docs/en/core/faq/all.md b/ydb/docs/en/core/faq/all.md index 5c44fdc0ae..89ee4a10b4 100644 --- a/ydb/docs/en/core/faq/all.md +++ b/ydb/docs/en/core/faq/all.md @@ -1,7 +1,2 @@ {% include [all.md](_includes/all.md) %} -{% if audience != "external" %} - -<!-- common_yndx is to be here, but currently breaks the build with contributors --> - -{% endif %} diff --git a/ydb/docs/en/core/getting_started/_includes/cli.md b/ydb/docs/en/core/getting_started/_includes/cli.md index 074186a1b3..f069067208 100644 --- a/ydb/docs/en/core/getting_started/_includes/cli.md +++ b/ydb/docs/en/core/getting_started/_includes/cli.md @@ -68,7 +68,7 @@ Check that the profile is OK with the `scheme ls` command: ## Executing an YQL script {#yql} -The {{ ydb-short-name }} CLI `scripting yql` command lets you execute any command (both DDL and DML) in [YQL](../../yql/reference/index.md), an SQL dialect supported by {{ ydb-short-name }}: +The {{ ydb-short-name }} CLI `yql` command lets you execute any command (both DDL and DML) in [YQL](../../yql/reference/index.md), an SQL dialect supported by {{ ydb-short-name }}: ```bash {{ ydb-cli }} -p <profile_name> yql -s <yql_request> diff --git a/ydb/docs/en/core/getting_started/_includes/sdk.md b/ydb/docs/en/core/getting_started/_includes/sdk.md index 08b92ecad1..9ae21daeba 100644 --- a/ydb/docs/en/core/getting_started/_includes/sdk.md +++ b/ydb/docs/en/core/getting_started/_includes/sdk.md @@ -9,6 +9,7 @@ Follow these steps to launch a simple app using {{ ydb-short-name }}: 1. Download and run a sample test app using the SDK for the installed programming language and study its code: * [Python](../../reference/ydb-sdk/example/python/index.md) * [Go](../../reference/ydb-sdk/example/go/index.md) + * [Java](../../reference/ydb-sdk/example/java/index.md) For more information about the {{ ydb-short-name }} SDK, see [Working with the {{ ydb-short-name }} SDK](../../reference/ydb-sdk/index.md). diff --git a/ydb/docs/en/core/getting_started/toc_i.yaml b/ydb/docs/en/core/getting_started/toc_i.yaml index 8a878e9b32..7beb9f70ed 100644 --- a/ydb/docs/en/core/getting_started/toc_i.yaml +++ b/ydb/docs/en/core/getting_started/toc_i.yaml @@ -1,4 +1,3 @@ -# common internal + external "Getting started" items items: - name: Creating a database href: create_db.md diff --git a/ydb/docs/en/core/reference/ydb-cli/profile/_includes/create.md b/ydb/docs/en/core/reference/ydb-cli/profile/_includes/create.md index 4eaf15da17..c2af9f0446 100644 --- a/ydb/docs/en/core/reference/ydb-cli/profile/_includes/create.md +++ b/ydb/docs/en/core/reference/ydb-cli/profile/_includes/create.md @@ -85,10 +85,10 @@ Creating a new `mydb1` profile: ```text Pick desired action to configure authentication method: - [1] Use IAM token (iam-token) cloud.yandex.ru/docs/iam/concepts/authorization/iam-token - [2] Use OAuth token of a Yandex Passport user (yc-token) cloud.yandex.ru/docs/iam/concepts/authorization/oauth-token - [3] Use metadata service on a virtual machine (use-metadata-credentials) cloud.yandex.ru/docs/compute/operations/vm-connect/auth-inside-vm - [4] Use security account key file (sa-key-file) cloud.yandex.ru/docs/iam/operations/iam-token/create-for-sa + [1] Use IAM token (iam-token) cloud.yandex.com/docs/iam/concepts/authorization/iam-token + [2] Use OAuth token of a Yandex Passport user (yc-token) cloud.yandex.com/docs/iam/concepts/authorization/oauth-token + [3] Use metadata service on a virtual machine (use-metadata-credentials) cloud.yandex.com/docs/compute/operations/vm-connect/auth-inside-vm + [4] Use security account key file (sa-key-file) cloud.yandex.com/docs/iam/operations/iam-token/create-for-sa [5] Don't save authentication data for profile "mydb1" Please enter your numeric choice: ``` diff --git a/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md b/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md index b05d28f54c..05ab3048d3 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md +++ b/ydb/docs/en/core/reference/ydb-sdk/_includes/auth.md @@ -1,19 +1,19 @@ -# Authentication when establishing a connection between an SDK and database +# Authentication in the SDK -As described in the article on [connecting the {{ ydb-short-name }} client to and authenticating with the server](../../../concepts/connect.md), for successful authentication, the client should add an authentication token that is verified by the server to its request. +As described in the article on [connecting to the {{ ydb-short-name }} server](../../../concepts/connect.md), with each request, the client should send an [authentication token](../../../concepts/connect.md#auth). The server verifies the authentication token and, if the authentication is successful, the request is authorized and executed, otherwise the `Unauthenticated` error is returned. The {{ ydb-short-name }} SDK uses an object that is responsible for generating these tokens. The SDK provides built-in methods for obtaining this object: -1. Ad-hoc methods for different [authentication modes](../../../concepts/connect.md#auth-modes) with explicit parameter transfer. -2. A method that determines the authentication mode and the necessary parameters from the environment where the application is run. +1. Methods with parameters passed explicitly, each of the methods implements a certain [authentication mode](../../../concepts/connect.md#auth-modes). +2. A method that determines the authentication mode and the necessary parameters from environment variables. Usually, you create a token generation object before you initialize the {{ ydb-short-name }} driver, and you pass the object to the driver constructor as a parameter. The C++ and Go SDKs additionally let you work with multiple databases and token generation objects through a single driver. -If a token generation object is not defined, the driver won't add any authentication information to requests. This may let you successfully connect to locally deployed {{ ydb-short-name }} clusters that require no authentication. For all databases available over the network, such requests will be rejected with an authentication error returned. +If a token generation object is not defined, the driver won't add any authentication information to requests. This may let you successfully connect to locally deployed {{ ydb-short-name }} clusters with no mandatory authentication configured. If it is configured, DB requests without an authentication token will be rejected with an authentication error returned. ## Methods for creating token generation objects {#auth-provider} -You can click on any of the methods described below to go to the source code of the relevant example on github.com. You can also learn about the [authentication code recipes](../recipes/auth/index.md). +You can click on any of the methods described below to go to the source code of the relevant example in the repository. You can also learn about the [authentication code recipes](../recipes/auth/index.md). {% list tabs %} diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/_includes/index.md b/ydb/docs/en/core/reference/ydb-sdk/example/_includes/index.md index 110c96faff..393f7a05f5 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/example/_includes/index.md +++ b/ydb/docs/en/core/reference/ydb-sdk/example/_includes/index.md @@ -8,7 +8,7 @@ This section describes the code of same-type test apps implemented using {{ ydb- {% endif %} - [C# (.NET)](../example-dotnet.md) - [Go](../go/index.md) -- [Java](../example-java.md) +- [Java](../java/index.md) - [Node.js](../example-nodejs.md) - [Python](../python/index.md) @@ -16,35 +16,35 @@ A test app performs the following steps: {% include [init.md](steps/01_init.md) %} -{% if oss %}[C++](../example-cpp.md#init) | {% endif %} [C# (.NET)](../example-dotnet.md#init) | [Go](../go/index.md#init) | [Java](../example-java.md#init) | Node.js | [PHP](../example-php.md#init) | [Python](../python/index.md#init) +{% if oss %}[C++](../example-cpp.md#init) | {% endif %} [C# (.NET)](../example-dotnet.md#init) | [Go](../go/index.md#init) | [Java](../java/index.md#init) | Node.js | [PHP](../example-php.md#init) | [Python](../python/index.md#init) {% include [create_table.md](steps/02_create_table.md) %} -{% if oss %}[C++](../example-cpp.md#create-table) | {% endif %} [C# (.NET)](../example-dotnet.md#create-table) | [Go](../go/index.md#create-table) | [Java](../example-java.md#create-table) | Node.js | PHP | [Python](../python/index.md#create-table) +{% if oss %}[C++](../example-cpp.md#create-table) | {% endif %} [C# (.NET)](../example-dotnet.md#create-table) | [Go](../go/index.md#create-table) | [Java](../java/index.md#create-table) | Node.js | PHP | [Python](../python/index.md#create-table) {% include [write_queries.md](steps/03_write_queries.md) %} -{% if oss %}[C++](../example-cpp.md#write-queries) | {% endif %} [C# (.NET)](../example-dotnet.md#write-queries) | Go | [Java](../example-java.md#write-queries) | Node.js | PHP | [Python](../python/index.md#write-queries) +{% if oss %}[C++](../example-cpp.md#write-queries) | {% endif %} [C# (.NET)](../example-dotnet.md#write-queries) | Go | [Java](../java/index.md#write-queries) | Node.js | PHP | [Python](../python/index.md#write-queries) {% include [query_processing.md](steps/04_query_processing.md) %} -{% if oss %}[C++](../example-cpp.md#query-processing) | {% endif %} [C# (.NET)](../example-dotnet.md#query-processing) | [Go](../go/index.md#query-processing) | [Java](../example-java.md#query-processing) | Node.js | PHP | [Python](../python/index.md#query-processing) +{% if oss %}[C++](../example-cpp.md#query-processing) | {% endif %} [C# (.NET)](../example-dotnet.md#query-processing) | [Go](../go/index.md#query-processing) | [Java](../java/index.md#query-processing) | Node.js | PHP | [Python](../python/index.md#query-processing) {% include [param_queries.md](steps/06_param_queries.md) %} -{% if oss %}[C++](../example-cpp.md#param-queries) | {% endif %} [C# (.NET)](../example-dotnet.md#param-queries) | [Go](../go/index.md#param-queries) | [Java](../example-java.md#param-queries) | Node.js | PHP | [Python](../python/index.md#param-queries) +{% if oss %}[C++](../example-cpp.md#param-queries) | {% endif %} [C# (.NET)](../example-dotnet.md#param-queries) | [Go](../go/index.md#param-queries) | [Java](../java/index.md#param-queries) | Node.js | PHP | [Python](../python/index.md#param-queries) {% include [scan_query.md](steps/08_scan_query.md) %} -{% if oss %}C++ | {% endif %} [C# (.NET)](../example-dotnet.md#scan-query) | [Go](../go/index.md#scan-query) | [Java](../example-java.md#scan-query) | [Node.js](../example-nodejs.md#scan-query) | PHP | [Python](../python/index.md#scan-query) +{% if oss %}C++ | {% endif %} [C# (.NET)](../example-dotnet.md#scan-query) | [Go](../go/index.md#scan-query) | [Java](../java/index.md#scan-query) | [Node.js](../example-nodejs.md#scan-query) | PHP | [Python](../python/index.md#scan-query) {% include [multistep_transactions.md](steps/09_multistep_transactions.md) %} -{% if oss %}[C++](../example-cpp.md#multistep-transactions) | {% endif %} C# (.NET) | Go | [Java](../example-java.md#multistep-transactions) | Node.js | PHP | Python +{% if oss %}[C++](../example-cpp.md#multistep-transactions) | {% endif %} C# (.NET) | Go | [Java](../java/index.md#multistep-transactions) | Node.js | PHP | Python {% include [transaction_control.md](steps/10_transaction_control.md) %} -{% if oss %}[C++](../example-cpp.md#tcl) | {% endif %} C# (.NET) | Go | [Java](../example-java.md#tcl) | Node.js | PHP | [Python](../python/index.md#tcl) +{% if oss %}[C++](../example-cpp.md#tcl) | {% endif %} C# (.NET) | Go | [Java](../java/index.md#tcl) | Node.js | PHP | [Python](../python/index.md#tcl) {% include [error_handling.md](steps/50_error_handling.md) %} diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_custom.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_custom.md new file mode 100644 index 0000000000..6476fb9086 --- /dev/null +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_custom.md @@ -0,0 +1,26 @@ +To run the example using any available YDB database, you need to know the [Endpoint](../../../../../concepts/connect.md#endpoint) and [Database location](../../../../../concepts/connect.md#database). + +If authentication is enabled in the database, you also need to choose the [authentication mode](../../../../../concepts/connect.md#auth-modes) and obtain secrets: a token or username/password. + +Run the command as follows: + +```bash +( cd ydb-java-sdk/examples/basic_example/target && \ +<auth_mode_var>="<auth_mode_value>" java -jar ydb-basic-example.jar <endpoint>?database=<database>) +``` + +where + +- `<endpoint>` is the [Endpoint](../../../../../concepts/connect.md#endpoint) +- `<database>` is the [DB location](../../../../../concepts/connect.md#database). +- `<auth_mode_var`> is the [Environment variable](../../../auth.md#env) that determines the authentication mode. +- `<auth_mode_value>` is the authentication parameter value for the selected mode. + +For example: + +```bash +YDB_ACCESS_TOKEN_CREDENTIALS="t1.9euelZqOnJuJlc..." java -jar examples/basic_example/target/ydb-basic-example.jar grpcs://ydb.example.com:2135?database=/somepath/somelocation +``` + +{% include [../../_includes/pars_from_profile_hint.md](../../_includes/pars_from_profile_hint.md) %} + diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_docker.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_docker.md new file mode 100644 index 0000000000..25302657a7 --- /dev/null +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_docker.md @@ -0,0 +1,7 @@ +To connect to a locally deployed YDB database according to the [Docker](../../../../../getting_started/self_hosted/ydb_docker.md) use case, run the following command in the default configuration: + +```bash +(cd ydb-java-sdk/examples/basic_example/target && \ +YDB_ANONYMOUS_CREDENTIALS=1 java -jar ydb-basic-example.jar grpc://localhost:2136?database=/local ) +``` + diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_options.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_options.md new file mode 100644 index 0000000000..dbb8af9b43 --- /dev/null +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/_includes/run_options.md @@ -0,0 +1,12 @@ +{% list tabs %} + +- Local Docker + + {% include [run_docker.md](run_docker.md) %} + +- Any database + + {% include [run_custom.md](run_custom.md) %} + +{% endlist %} + diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/java/index.md b/ydb/docs/en/core/reference/ydb-sdk/example/java/index.md new file mode 100644 index 0000000000..e935ebbd2b --- /dev/null +++ b/ydb/docs/en/core/reference/ydb-sdk/example/java/index.md @@ -0,0 +1,369 @@ +# App in Java + +This page contains a detailed description of the code of a [test app](https://github.com/yandex-cloud/ydb-java-sdk/tree/master/examples/basic_example) that is available as part of the {{ ydb-short-name }} [Java SDK](https://github.com/yandex-cloud/ydb-java-sdk). + +## Downloading SDK Examples and running an example {#download} + +The startup script below uses [Git](https://git-scm.com/downloads) and [Maven](https://maven.apache.org/download.html). + +Create a working directory and use it to run from the command line the command to clone the GitHub repository: + +```bash +git clone https://github.com/yandex-cloud/ydb-java-sdk +``` + +Next, build the SDK Examples + +```bash +( cd ydb-java-sdk/examples && mvn package ) +``` + +Next, from the same working directory, run the command to start the test app. The command will differ depending on the database to connect to. + +{% include [run_options.md](_includes/run_options.md) %} + +{% include [init.md](../_includes/steps/01_init.md) %} + +Basic driver initialization parameters: + +* A connection string with information about the [endpoint](../../../../concepts/connect.md#endpoint) and [database](../../../../concepts/connect.md#database). The only required parameter. +* An [authentication provider](../../auth.md#auth-provider). If there is no direct indication, an [anonymous connection](../../../../concepts/connect.md#auth-modes) is used. +* [Session pool](../../recipes/session_pool_limit/index.md) settings. + +App code snippet for driver initialization: + +```java +GrpcTransport transport = GrpcTransport.forConnectionString(connectionString) + .withAuthProvider(CloudAuthHelper.getAuthProviderFromEnviron()) + .build(); +GrpcTableRpc rpc = GrpcTableRpc.ownTransport(transport); +this.tableClient = TableClient.newClient(rpc).build(); +``` + +We recommend performing all YDB operations using the `SessionRetryContext` helper class that ensures a correct operation retry in the event of partial unavailability. Code snippet for initializing the retry context: + +```java +this.retryCtx = SessionRetryContext.create(tableClient).build(); +``` + +{% include [create_table.md](../_includes/steps/02_create_table.md) %} + +To create tables, use the `Session.CreateTable()` method: + +```java +private void createTables() { + TableDescription seriesTable = TableDescription.newBuilder() + .addNullableColumn("series_id", PrimitiveType.uint64()) + .addNullableColumn("title", PrimitiveType.utf8()) + .addNullableColumn("series_info", PrimitiveType.utf8()) + .addNullableColumn("release_date", PrimitiveType.date()) + .setPrimaryKey("series_id") + .build(); + + retryCtx.supplyStatus(session -> session.createTable(database + "/series", seriesTable)) + .join().expect("create table problem"); + + TableDescription seasonsTable = TableDescription.newBuilder() + .addNullableColumn("series_id", PrimitiveType.uint64()) + .addNullableColumn("season_id", PrimitiveType.uint64()) + .addNullableColumn("title", PrimitiveType.utf8()) + .addNullableColumn("first_aired", PrimitiveType.date()) + .addNullableColumn("last_aired", PrimitiveType.date()) + .setPrimaryKeys("series_id", "season_id") + .build(); + + retryCtx.supplyStatus(session -> session.createTable(database + "/seasons", seasonsTable)) + .join().expect("create table problem"); + + TableDescription episodesTable = TableDescription.newBuilder() + .addNullableColumn("series_id", PrimitiveType.uint64()) + .addNullableColumn("season_id", PrimitiveType.uint64()) + .addNullableColumn("episode_id", PrimitiveType.uint64()) + .addNullableColumn("title", PrimitiveType.utf8()) + .addNullableColumn("air_date", PrimitiveType.date()) + .setPrimaryKeys("series_id", "season_id", "episode_id") + .build(); + + retryCtx.supplyStatus(session -> session.createTable(database + "/episodes", episodesTable)) + .join().expect("create table problem"); +} +``` + +You can use the `Session.DescribeTable()` method to output information about the table structure and make sure that it was properly created: + +```java +private void describeTables() { + logger.info("--[ DescribeTables ]--"); + + Arrays.asList("series", "seasons", "episodes").forEach(tableName -> { + String tablePath = database + '/' + tableName; + TableDescription tableDesc = retryCtx.supplyResult(session -> session.describeTable(tablePath)) + .join().expect("describe table problem"); + + List<String> primaryKeys = tableDesc.getPrimaryKeys(); + logger.info(" table {}", tableName); + for (TableColumn column : tableDesc.getColumns()) { + boolean isPrimary = primaryKeys.contains(column.getName()); + logger.info(" {}: {} {}", column.getName(), column.getType(), isPrimary ? " (PK)" : ""); + } + }); +} +``` + +{% include [../steps/03_write_queries.md](../_includes/steps/03_write_queries.md) %} + +Code snippet for inserting and updating data: + +```java +private void upsertSimple() { + String query + = "UPSERT INTO episodes (series_id, season_id, episode_id, title) " + + "VALUES (2, 6, 1, \"TBD\");"; + + // Begin new transaction with SerializableRW mode + TxControl txControl = TxControl.serializableRw().setCommitTx(true); + + // Executes data query with specified transaction control settings. + retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl)) + .join().expect("execute data query problem"); +} +``` + +{% include [steps/04_query_processing.md](../_includes/steps/04_query_processing.md) %} + +To execute YQL queries, use the `Session.executeDataQuery()` method. +The SDK lets you explicitly control the execution of transactions and configure the transaction execution mode using the `TxControl` class. + +In the code snippet below, the transaction is executed using the `session.executeDataQuery()` method. The `TxControl txControl = TxControl.serializableRw().setCommitTx(true);` transaction execution mode and `setCommitTx(true)` transaction auto complete flag are set. The query body is described using YQL syntax and is passed to the `executeDataQuery` method as a parameter. + +```java +private void selectSimple() { + String query + = "SELECT series_id, title, release_date " + + "FROM series WHERE series_id = 1;"; + + // Begin new transaction with SerializableRW mode + TxControl txControl = TxControl.serializableRw().setCommitTx(true); + + // Executes data query with specified transaction control settings. + DataQueryResult result = retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl)) + .join().expect("execute data query"); + + logger.info("--[ SelectSimple ]--"); + + ResultSetReader rs = result.getResultSet(0); + while (rs.next()) { + logger.info("read series with id {}, title {} and release_date {}", + rs.getColumn("series_id").getUint64(), + rs.getColumn("title").getUtf8(), + rs.getColumn("release_date").getDate() + ); + } +} +``` + +As a result of executing the query, an object of the `DataQueryResult` class is generated. It may contain several sets obtained using the `getResultSet( <index> )` method. Since there was only one `SELECT` statement in the query, the result contains only one selection indexed as `0`. The given code snippet outputs the following text to the console at startup: + +```bash +12:06:36.548 INFO App - --[ SelectSimple ]-- +12:06:36.559 INFO App - read series with id 1, title IT Crowd and release_date 2006-02-03 +``` + +{% include [param_queries.md](../_includes/steps/06_param_queries.md) %} + +The code snippet below shows the use of parameterized queries and the `Params` class to generate parameters and pass them to the `executeDataQuery` method. + +```java +private void selectWithParams(long seriesID, long seasonID) { + String query + = "DECLARE $seriesId AS Uint64; " + + "DECLARE $seasonId AS Uint64; " + + "SELECT sa.title AS season_title, sr.title AS series_title " + + "FROM seasons AS sa INNER JOIN series AS sr ON sa.series_id = sr.series_id " + + "WHERE sa.series_id = $seriesId AND sa.season_id = $seasonId"; + + // Begin new transaction with SerializableRW mode + TxControl txControl = TxControl.serializableRw().setCommitTx(true); + + // Type of parameter values should be exactly the same as in DECLARE statements. + Params params = Params.of( + "$seriesId", PrimitiveValue.uint64(seriesID), + "$seasonId", PrimitiveValue.uint64(seasonID) + ); + + DataQueryResult result = retryCtx.supplyResult(session -> session.executeDataQuery(query, txControl, params)) + .join().expect("execute data query"); + + logger.info("--[ SelectWithParams ] -- "); + + ResultSetReader rs = result.getResultSet(0); + while (rs.next()) { + logger.info("read season with title {} for series {}", + rs.getColumn("season_title").getUtf8(), + rs.getColumn("series_title").getUtf8() + ); + } +} +``` + +{% include [scan_query.md](../_includes/steps/08_scan_query.md) %} + +```java +private void scanQueryWithParams(long seriesID, long seasonID) { + String query + = "DECLARE $seriesId AS Uint64; " + + "DECLARE $seasonId AS Uint64; " + + "SELECT ep.title AS episode_title, sa.title AS season_title, sr.title AS series_title " + + "FROM episodes AS ep " + + "JOIN seasons AS sa ON sa.season_id = ep.season_id " + + "JOIN series AS sr ON sr.series_id = sa.series_id " + + "WHERE sa.series_id = $seriesId AND sa.season_id = $seasonId;"; + + // Type of parameter values should be exactly the same as in DECLARE statements. + Params params = Params.of( + "$seriesId", PrimitiveValue.uint64(seriesID), + "$seasonId", PrimitiveValue.uint64(seasonID) + ); + + logger.info("--[ ExecuteScanQueryWithParams ]--"); + retryCtx.supplyStatus(session -> { + ExecuteScanQuerySettings settings = ExecuteScanQuerySettings.newBuilder().build(); + return session.executeScanQuery(query, params, settings, rs -> { + while (rs.next()) { + logger.info("read episode {} of {} for {}", + rs.getColumn("episode_title").getUtf8(), + rs.getColumn("season_title").getUtf8(), + rs.getColumn("series_title").getUtf8() + ); + } + }); + }).join().expect("scan query problem"); +} +``` + +{% include [multistep_transactions.md](../_includes/steps/09_multistep_transactions.md) %} + +To ensure that the retry context works properly while executing transactions, perform each transaction entirely inside the callback passed to `SessionRetryContext`. The callback should return a response after the transaction is fully completed. + +Code template for using complex transactions in `SessionRetryContext` + +```java +private void multiStepTransaction(long seriesID, long seasonID) { + retryCtx.supplyStatus(session -> { + // Multiple operations with session + ... + + // return success status to SessionRetryContext + return CompletableFuture.completedFuture(Status.SUCCESS); + }).join().expect("multistep transaction problem"); +} +``` + +The first step is to prepare and execute the first query: + +```java + String query1 + = "DECLARE $seriesId AS Uint64; " + + "DECLARE $seasonId AS Uint64; " + + "SELECT MIN(first_aired) AS from_date FROM seasons " + + "WHERE series_id = $seriesId AND season_id = $seasonId;"; + + // Execute first query to get the required values to the client. + // Transaction control settings don't set CommitTx flag to keep transaction active + // after query execution. + TxControl tx1 = TxControl.serializableRw().setCommitTx(false); + DataQueryResult res1 = session.executeDataQuery(query1, tx1, Params.of( + "$seriesId", PrimitiveValue.uint64(seriesID), + "$seasonId", PrimitiveValue.uint64(seasonID) + )).join().expect("execute data query problem"); +``` + +Next, we can perform some client processing of the data received: + +```java + // Perform some client logic on returned values + ResultSetReader resultSet = res1.getResultSet(0); + if (!resultSet.next()) { + throw new RuntimeException("not found first_aired"); + } + LocalDate fromDate = resultSet.getColumn("from_date").getDate(); + LocalDate toDate = fromDate.plusDays(15); +``` + +And get the current `transaction id` for further work within a single transaction: + +```java + // Get active transaction id + String txId = res1.getTxId(); +``` + +The next step is to create the next query that uses the results of code execution on the client side: + +```java + // Construct next query based on the results of client logic + String query2 + = "DECLARE $seriesId AS Uint64;" + + "DECLARE $fromDate AS Date;" + + "DECLARE $toDate AS Date;" + + "SELECT season_id, episode_id, title, air_date FROM episodes " + + "WHERE series_id = $seriesId AND air_date >= $fromDate AND air_date <= $toDate;"; + + // Execute second query. + // Transaction control settings continues active transaction (tx) and + // commits it at the end of second query execution. + TxControl tx2 = TxControl.id(txId).setCommitTx(true); + DataQueryResult res2 = session.executeDataQuery(query2, tx2, Params.of( + "$seriesId", PrimitiveValue.uint64(seriesID), + "$fromDate", PrimitiveValue.date(fromDate), + "$toDate", PrimitiveValue.date(toDate) + )).join().expect("execute data query problem"); + + logger.info("--[ MultiStep ]--"); + ResultSetReader rs = res2.getResultSet(0); + while (rs.next()) { + logger.info("read episode {} with air date {}", + rs.getColumn("title").getUtf8(), + rs.getColumn("air_date").getDate() + ); + } +``` + +The given code snippets output the following text to the console at startup: + +```bash +12:06:36.850 INFO App - --[ MultiStep ]-- +12:06:36.851 INFO App - read episode Grow Fast or Die Slow with air date 2018-03-25 +12:06:36.851 INFO App - read episode Reorientation with air date 2018-04-01 +12:06:36.851 INFO App - read episode Chief Operating Officer with air date 2018-04-08 +``` + +{% include [transaction_control.md](../_includes/steps/10_transaction_control.md) %} + +Code snippet for `beginTransaction()` and `transaction.Commit()` calls: + +```java +private void tclTransaction() { + retryCtx.supplyStatus(session -> { + Transaction transaction = session.beginTransaction(TransactionMode.SERIALIZABLE_READ_WRITE) + .join().expect("begin transaction problem"); + + String query + = "DECLARE $airDate AS Date; " + + "UPDATE episodes SET air_date = $airDate WHERE title = \"TBD\";"; + + Params params = Params.of("$airDate", PrimitiveValue.date(Instant.now())); + + // Execute data query. + // Transaction control settings continues active transaction (tx) + TxControl txControl = TxControl.id(transaction).setCommitTx(false); + DataQueryResult result = session.executeDataQuery(query, txControl, params) + .join().expect("execute date query problem"); + + logger.info("get transaction {}", result.getTxId()); + + // Commit active transaction (tx) + return transaction.commit(); + }).join().expect("tcl transaction problem"); +} +``` + diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/python/index.md b/ydb/docs/en/core/reference/ydb-sdk/example/python/index.md index b548389700..9344f1dbc0 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/example/python/index.md +++ b/ydb/docs/en/core/reference/ydb-sdk/example/python/index.md @@ -60,6 +60,12 @@ def create_tables(session, path): ) ``` +The absolute path from the root is passed in the path parameter: + +```python +full_path = os.path.join(database, path) +``` + You can use the `session.describe_table()` method to output information about the table structure and make sure that it was properly created: ```python diff --git a/ydb/docs/en/core/reference/ydb-sdk/example/toc_i.yaml b/ydb/docs/en/core/reference/ydb-sdk/example/toc_i.yaml index 8f3c58e838..42c50912f6 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/example/toc_i.yaml +++ b/ydb/docs/en/core/reference/ydb-sdk/example/toc_i.yaml @@ -8,7 +8,7 @@ items: - name: Go href: go/index.md - name: Java - href: example-java.md + href: java/index.md - name: Node.js href: example-nodejs.md - name: PHP diff --git a/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/index.md b/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/index.md index dbc91a4dcf..7e778d3fbe 100644 --- a/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/index.md +++ b/ydb/docs/en/core/reference/ydb-sdk/recipes/session_pool_limit/index.md @@ -16,5 +16,9 @@ Below are examples of the code for setting the session pool limit in different { {% include [go.md](_includes/go.md) %} +- Java + + {% include [java.md](_includes/java.md) %} + {% endlist %} diff --git a/ydb/docs/en/core/toc_i.yaml b/ydb/docs/en/core/toc_i.yaml index f63613b6af..b23b61ce45 100644 --- a/ydb/docs/en/core/toc_i.yaml +++ b/ydb/docs/en/core/toc_i.yaml @@ -6,7 +6,6 @@ items: include: { mode: link, path: getting_started/toc_p.yaml } # Main -# - { name: Use cases, include: { mode: link, path: solutions/toc_i.yaml }, when: audience == "external" } - { name: Concepts, include: { mode: link, path: concepts/toc_p.yaml } } - { name: Step-by-step instructions, include: { mode: link, path: operations/toc_p.yaml } } diff --git a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/basic/random.md b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/basic/random.md index 1722cc6c9c..b18fabe1a6 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/basic/random.md +++ b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/basic/random.md @@ -11,6 +11,12 @@ No arguments are used for random number generation: they are only needed to cont * If Random is called again within a **same query** and with a same set of arguments, the same set of random numbers is returned. Keep in mind that we mean the arguments themselves (i.e., the text between parentheses) rather than their values. * Calling of Random with the same set of arguments in **different queries** returns different sets of random numbers. +{% note warning %} + +If Random is used in [named expressions](../../../syntax/expressions.md#named-nodes), its one-time calculation is not guaranteed. Depending on the optimizers and runtime environment, it can be counted both once and multiple times. To make sure it's only counted once, materialize a named expression into a table. + +{% endnote %} + Use cases: * `SELECT RANDOM(1);`: Get one random value for the entire query and use it multiple times (to get multiple random values, you can pass various constants of any type). diff --git a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/dict.md b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/dict.md index b2f126ee8b..568a78ff53 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/dict.md +++ b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/dict.md @@ -176,9 +176,9 @@ FROM my_table; ## DictAggregate {#dictaggregate} -Apply [aggregation factory](../basic.md#aggregationfactory) to the passed dictionary where each value is a list. The factory is applied separately inside each key. -If the list is empty, the aggregation result is the same as for an empty table: 0 for the `COUNT` function and `NULL` for other functions. -If the list under a certain key is empty in the passed dictionary, such a key is removed from the result. +Apply [aggregation factory](../basic.md#aggregationfactory) to the passed dictionary where each value is a list. The factory is applied separately inside each key.
+If the list is empty, the aggregation result is the same as for an empty table: 0 for the `COUNT` function and `NULL` for other functions.
+If the list under a certain key is empty in the passed dictionary, such a key is removed from the result.
If the passed dictionary is optional and contains `NULL`, the result is also `NULL`. Arguments: diff --git a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/json.md b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/json.md index c7471b324d..ce5d3bccb5 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/json.md +++ b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/json.md @@ -19,6 +19,32 @@ Despite the fact that the `age` field in the first object is of the `Number` typ To work with JSON, YQL implements a subset of the [SQL support for JavaScript Object Notation (JSON)](https://www.iso.org/standard/67367.html) standard, which is part of the common ANSI SQL standard. +## Cookbook + +``` +$json = CAST(@@{ + "friends": [ + { + "name": "James Holden", + "age": 35 + }, + { + "name": "Naomi Nagata", + "age": 30 + } + ] +}@@ AS Json); + +SELECT + JSON_EXISTS($json, "$.friends[*].name"), -- True, + JSON_VALUE($json, "$.friends[0].age"), -- "35" (type Utf8?) + JSON_QUERY($json, "$.friends[0]"); -- {"name": "James Holden", "age": 35} +``` + +### Accessing a field in the database + +In tables, data can be stored in JSON format or as a string representation. JSON_* functions expect JSON as an input to run. To convert `String->JSON`, use the `CAST` function, such as `CAST (my_string AS JSON)`. + ## JsonPath Values inside JSON objects are accessed using a query language called JsonPath. All functions for JSON accept a JsonPath query as an argument. @@ -67,7 +93,7 @@ In this query: | Unary operations | `- 1` | | Binary operations | `(12 * 3) % 4 + 8` | | Accessing a variable | `$variable` | -| Logical operations | `(1 > 2) || (3 <= 4) && ("string" == "another")` | +| Logical operations | `(1 > 2) || (3 <= 4) && ("string" == "another")| | | Matching a regular expression | `$.name like_regex "^[A-Za-z]+$"` | | Checking the string prefix | `$.name starts with "Bobbie"` | | Checking if a path exists | `exists ($.profile.name)` | @@ -910,7 +936,7 @@ JSON_VALUE( ) ``` -## JSON_EXISTS +## JSON_EXISTS {#json_exists} The `JSON_EXISTS` function checks if a JSON value meets the specified JsonPath. @@ -967,7 +993,7 @@ SELECT JSON_EXISTS($json, "strict $.nonexistent" ERROR ON ERROR); ``` -## JSON_VALUE +## JSON_VALUE {#json_value} The `JSON_VALUE` function retrieves a scalar value from JSON (anything that isn't an array or object). @@ -1065,7 +1091,7 @@ SELECT ); ``` -## JSON_QUERY +## JSON_QUERY {#json_query} The `JSON_QUERY` function lets you retrieve arrays and objects from JSON. diff --git a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/list.md b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/list.md index e28ccca28e..3556872aaf 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/list.md +++ b/ydb/docs/en/core/yql/reference/yql-core/builtins/_includes/list.md @@ -384,6 +384,59 @@ FROM my_table; {% endif %} +## ListFold, ListFold1 {#listfold} + +Folding a list. + +Arguments: + +1. List +2. Initial state U for ListFold, initLambda(item:T)->U for ListFold1 +3. updateLambda(item:T, state:U)->U + +Type returned: +U for ListFold, optional U for ListFold1. + +**Examples** + +```yql +$l = [1, 4, 7, 2]; +$y = ($x, $y) -> { RETURN $x + $y; }; +$z = ($x) -> { RETURN 4 * $x; }; + +SELECT + ListFold($l, 6, $y) AS fold, -- 20 + ListFold([], 3, $y) AS fold_empty, -- 3 + ListFold1($l, $z, $y) AS fold1, -- 17 + ListFold1([], $z, $y) AS fold1_empty; -- Null +``` + +## ListFoldMap, ListFold1Map {#listfoldmap} + +Converts each list item i by calling the handler(i, state). + +Arguments: + +1. List +2. Initial state S for ListFoldMap, initLambda(item:T)->tuple (U S) for ListFold1Map +3. handler(item:T, state:S)->tuple (U S) + +Type returned: List of U items. + +**Examples** + +```yql +$l = [1, 4, 7, 2]; +$x = ($i, $s) -> { RETURN ($i * $s, $i + $s); }; +$t = ($i) -> { RETURN ($i + 1, $i + 2); }; + +SELECT + ListFoldMap([], 1, $x), -- [] + ListFoldMap($l, 1, $x), -- [1, 8, 42, 26] + ListFold1Map([], $t, $x), -- [] + ListFold1Map($l, $t, $x); -- [2, 12, 49, 28] +``` + ## ListFromRange {#listfromrange} Generate a sequence of numbers with the specified step. It's similar to `xrange` in Python 2, but additionally supports floats. diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/expressions/check-match.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/expressions/check-match.md index 864acf6890..f540daa4a9 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/expressions/check-match.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/expressions/check-match.md @@ -6,7 +6,7 @@ * Patterns can include two special characters: * `%`: Zero or more of any characters. - * `_`: Exactly one of any character. + * `_`: Exactly one of any character.
All other characters are literals that represent themselves. * As opposed to `REGEXP`, `LIKE` must be matched exactly. For example, to search a substring, add `%` at the beginning and end of the pattern. * `ILIKE` is a case-insensitive version of `LIKE`. diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/group_by/session_window.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/group_by/session_window.md index 60cdf5e6e9..47c6381a49 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/group_by/session_window.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/group_by/session_window.md @@ -16,10 +16,10 @@ GROUP BY user, SessionWindow(<time_expr>, <timeout_expr>) AS session_start The following happens in this case: 1) The input table is partitioned by the grouping keys specified in `GROUP BY`, ignoring SessionWindow (in this case, it's based on `user`). -If `GROUP BY` includes nothing more than SessionWindow, then the input table gets into one partition. + If `GROUP BY` includes nothing more than SessionWindow, then the input table gets into one partition. 2) Each partition is split into disjoint subsets of rows (sessions). -For this, the partition is sorted in the ascending order of the `time_expr` expression. -The session limits are drawn between neighboring items of the partition, that differ in their `time_expr` values by more than `timeout_expr`. + For this, the partition is sorted in the ascending order of the `time_expr` expression. + The session limits are drawn between neighboring items of the partition, that differ in their `time_expr` values by more than `timeout_expr`. 3) The sessions obtained in this way are the final partitions on which aggregate functions are calculated. The SessionWindow() key column (in the example, it's `session_start`) has the value "the minimum `time_expr` in the session". diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/insert_hints.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/insert_hints.md new file mode 100644 index 0000000000..01392b8321 --- /dev/null +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/insert_hints.md @@ -0,0 +1,17 @@ +{% if feature_insert_with_truncate %} + +Inserts can be made with one or more modifiers. A modifier is specified after the `WITH` keyword following the table name: `INSERT INTO ... WITH SOME_HINT`. +If a modifier has a value, it's indicated after the `=` sign: `INSERT INTO ... WITH SOME_HINT=value`. +If necessary, specify multiple modifiers, they should be enclosed in parentheses: `INSERT INTO ... WITH (SOME_HINT1=value, SOME_HINT2, SOME_HINT3=value)`. + +To clear the table of existing data before writing new data to it, add the modifier: `INSERT INTO ... WITH TRUNCATE`. + +**Examples:** + +```yql +INSERT INTO my_table WITH TRUNCATE +SELECT key FROM my_table_source; +``` + +{% endif %} + diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/insert_into.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/insert_into.md index 77e20b4789..43bdaabdf1 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/insert_into.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/insert_into.md @@ -27,17 +27,6 @@ FROM my_table1; ``` -{% if feature_insert_with_truncate %} To clear the table of the prior data before writing to it, add the modifier: `INSERT INTO ... WITH TRUNCATE`. - -**Examples:** - -```yql -INSERT INTO my_table WITH TRUNCATE -SELECT key FROM my_table_source; -``` - -{% endif %} - {% else %} Send the result of the [SELECT STREAM](../select_stream.md) calculation to the specified stream on the cluster specified by the [USE](../use.md) operator. The stream must exist and have a scheme matching the query result. diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/pragma/global.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/pragma/global.md index 007c5d1336..758e475508 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/pragma/global.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/pragma/global.md @@ -21,6 +21,14 @@ SELECT * FROM test;` The prefix is not added if the table name is an absolute path (starts with /). +### UseTablePrefixForEach {#use-table-prefix-for-each} + +| Value type | Default | +| --- | --- | +| Flag | false | + +EACH uses [TablePathPrefix](#table-path-prefix) for each list item. + ### Warning {#warning} | Value type | Default | @@ -120,6 +128,18 @@ Aligns the RANK/DENSE_RANK behavior with the standard if there are optional type * NULLs in keys are treated as equal to each other (the current implementation returns NULL). You can explicitly select the old behavior by using the `DisableAnsiRankForNullableKeys` pragma. If no pragma is set, then a warning is issued and the old version works. +### AnsiCurrentRow + +| Value type | Default | +| --- | --- | +| Flag | false | + +Aligns the implicit setting of a window frame with the standard if there is ORDER BY. +If AnsiCurrentRow is not set, then the `(ORDER BY key)` window is equivalent to `(ORDER BY key ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. +The standard also requires that this window behave as `(ORDER BY key RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)`. +The difference is in how `CURRENT ROW` is interpreted. In `ROWS` mode `CURRENT ROW` is interpreted literally: the current row in a partition. +In `RANGE` mode, the end of the `CURRENT ROW` frame means "the last row in a partition with a sort key equal to the current row". + ### AnsiOrderByLimitInUnionAll | Value type | Default | diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/select/with.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/select/with.md index b99e65fd32..109b992815 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/select/with.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/select/with.md @@ -4,7 +4,8 @@ It's set after the data source in `FROM` and is used for additional hints for ta The following values are supported: -* `INFER_SCHEMA`: Sets the flag for output of the table schema. The behavior is similar to the [yt.inferSchema pragma](../../pragma.md#inferschema), but for a specific data source and without the option to specify the number of rows to output. +* `INFER_SCHEMA`: Sets the flag for output of the table schema. The behavior is similar to the [yt.inferSchema pragma](../../pragma.md#inferschema), but for a specific data source. You can specify the number of rows to output (from 1 to 1000). +* `FORCE_INFER_SCHEMA`: Sets the flag for table schema output. The behavior is similar to the [yt.ForceInferSchema pragma](../../pragma.md#inferschema), but for a specific data source. You can specify the number of rows to output (from 1 to 1000). * `DIRECT_READ`: Suppresses certain optimizers and enforces accessing table contents as is. The behavior is similar to the debug [pragma DirectRead](../../pragma.md#debug), but for a specific data source. * `INLINE`: Hints that the table contents is small and you need to use its in-memory view to process the query. The actual size of the table is not controlled in this case, and if it's large, the query might fail with an out-of-memory error. * `UNORDERED`: Suppresses original table sorting. @@ -20,6 +21,7 @@ If you use the `SCHEMA` hint, then with the table functions [EACH](#each), [RANG ```yql SELECT key FROM my_table WITH INFER_SCHEMA; +SELECT key FROM my_table WITH FORCE_INFER_SCHEMA="42"; ``` ```yql diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/window.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/window.md index f406bebf29..2176228d10 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/window.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/_includes/window.md @@ -83,7 +83,7 @@ The set of rows in the window frame may change depending on which row is the cur Setting `UNBOUNDED PRECEDING` as the frame start means "from the first partition row" and `UNBOUNDED FOLLOWING` as the frame end — "up to the last partition row". Setting `CURRENT ROW` means "from/to the current row". -If no `frame_definition` is specified, a set of rows to be included in the window frame depends on whether there is `ORDER BY` in the `window_definition`. +If no `frame_definition` is specified, a set of rows to be included in the window frame depends on whether there is `ORDER BY` in the `window_definition`.
Namely, if there is `ORDER BY`, then `ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW` is implicitly assumed. If none, then `ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING`. Further, depending on the specific window function, it's calculated either based on the set of rows in the partition or the set of rows in the window frame. diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/insert_into.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/insert_into.md index 54126433c9..e78e03e820 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/insert_into.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/insert_into.md @@ -1,3 +1,4 @@ {% include [x](_includes/insert_into.md) %} +{% include [x](_includes/insert_hints.md) %} diff --git a/ydb/docs/en/core/yql/reference/yql-core/syntax/select.md b/ydb/docs/en/core/yql/reference/yql-core/syntax/select.md index ed23eefd90..a8bf51293f 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/syntax/select.md +++ b/ydb/docs/en/core/yql/reference/yql-core/syntax/select.md @@ -6,7 +6,11 @@ {% include [x](_includes/select/from.md) %} -{% include [x](_includes/select/secondary_index.md) %} +{% if feature_secondary_index %} + + {% include [x](_includes/select/secondary_index.md) %} + +{% endif %} {% include [x](_includes/select/with.md) %} diff --git a/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/string.md b/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/string.md index 8298c9d2f9..90c4720e81 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/string.md +++ b/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/string.md @@ -78,15 +78,15 @@ Functions for ASCII strings: * ```String::ReplaceAll(String{Flags:AutoMap}, String, String) -> String```: Arguments: input, find, replacement -* ```String::ReplaceFirst(String{Flags:AutoMap}, String, String) -> String```: Arguments: input, find, replacement, the second argument is 1 character +* ```String::ReplaceFirst(String{Flags:AutoMap}, String, String) -> String```: Arguments: input, find, replacement -* ```String::ReplaceLast(String{Flags:AutoMap}, String, String) -> String```: Arguments: input, find, replacement, the second argument is 1 character +* ```String::ReplaceLast(String{Flags:AutoMap}, String, String) -> String```: Arguments: input, find, replacement * ```String::RemoveAll(String{Flags:AutoMap}, String) -> String```: The second argument is interpreted as an unordered set of characters to delete -* ```String::RemoveFirst(String{Flags:AutoMap}, String) -> String```: The character to delete in the second argument +* ```String::RemoveFirst(String{Flags:AutoMap}, String) -> String```: An unordered set of characters in the second argument, only the first encountered character from set is deleted -* ```String::RemoveLast(String{Flags:AutoMap}, String) -> String ```: The character to delete in the second argument +* ```String::RemoveLast(String{Flags:AutoMap}, String) -> String```: An unordered set of characters in the second argument, only the last encountered character from the set is deleted * ```String::IsAscii(String{Flags:AutoMap}) -> Bool``` diff --git a/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/unicode.md b/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/unicode.md index f9a2f27f4f..46a00c3578 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/unicode.md +++ b/ydb/docs/en/core/yql/reference/yql-core/udf/list/_includes/unicode.md @@ -73,6 +73,15 @@ Functions for Unicode strings. * ```Unicode::JoinFromList(List<Utf8>{Flags:AutoMap}, Utf8) -> Utf8``` +* ```Unicode::ToUint64(Utf8{Flags:AutoMap}, [Uint16?]) -> Uint64``` + The second optional argument specifies the number system, by default 0 — automatic detection by prefix. + Supported prefixes : 0x(0X) - base-16, 0 - base-8. The default system is base-10. + The '-' sign before the number is interpreted as in unsigned C arithmetic, for example -0x1 -> UI64_MAX. + If there are incorrect characters in the string or the number goes beyond the boundaries of ui64, the function terminates with an error. + +* ```Unicode::TryToUint64(Utf8{Flags:AutoMap}, [Uint16?]) -> Uint64?``` + Similar to the Unicode::ToUint64() function, but returns Nothing instead of an error. + **Examples** ```sql diff --git a/ydb/docs/en/core/yql/reference/yql-core/udf/list/hyperscan.md b/ydb/docs/en/core/yql/reference/yql-core/udf/list/hyperscan.md index d12f1046a8..355ce1634c 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/udf/list/hyperscan.md +++ b/ydb/docs/en/core/yql/reference/yql-core/udf/list/hyperscan.md @@ -26,7 +26,7 @@ $re = Hyperscan::Grep("\\d+"); -- create a callable value to match a specif SELECT * FROM table WHERE $re(key); -- use it to filter the table ``` -**Please note** escaping of special characters in regular expressions. Be sure to use the second slash, since all the standard string literals in SQL can accept C-escaped strings, and the `\d` sequence is not valid sequence (even if it were, it wouldn't search for numbers as intended). +**Please note** escaping of special characters in regular expressions. Be sure to use the second slash, since all the standard string literals in SQL can accept C-escaped strings, and the `\d` sequence is not valid sequence (even if it were, it wouldn't search for numbers as intended).
You can enable the case-insensitive mode by specifying, at the beginning of the regular expression, the flag `(?i)`. @@ -43,7 +43,7 @@ For example, the following two queries are equivalent (also in terms of computin ## Match {#match} -Matches **the whole string** against the regular expression. +Matches **the whole string** against the regular expression.
To get a result similar to `Grep` (where substring matching is included), enclose the regular expression in `.*` (`.*foo.*` instead of `foo`). However, in terms of code readability, it's usually better to change the function. @@ -55,7 +55,7 @@ Those functions are currently called in the binary operators [REGEXP](../../synt ## MultiGrep/MultiMatch {#multigrep} -Hyperscan lets you match against multiple regular expressions in a single pass through the text, and get a separate response for each match. +Hyperscan lets you match against multiple regular expressions in a single pass through the text, and get a separate response for each match.
However, if you want to match a string against any of the listed expressions (the results would be joined with "or"), it would be more efficient to combine the query parts in a single regular expression with `|` and match it with regular `Grep` or `Match`. diff --git a/ydb/docs/en/core/yql/reference/yql-core/udf/list/math.md b/ydb/docs/en/core/yql/reference/yql-core/udf/list/math.md index 6549188265..72bc0d6538 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/udf/list/math.md +++ b/ydb/docs/en/core/yql/reference/yql-core/udf/list/math.md @@ -8,12 +8,14 @@ A set of wrappers around the functions from the libm library and the Yandex util * ```Math::Pi() -> Double``` * ```Math::E() -> Double``` +* ```Math::Eps() -> Double``` **Examples** ```sql SELECT Math::Pi(); -- 3.141592654 SELECT Math::E(); -- 2.718281828 +SELECT Math::Eps(); -- 2.220446049250313e-16 ``` ## (Double) -> Bool {#double-bool} @@ -45,6 +47,8 @@ SELECT Math::IsFinite(1.0/0.0); -- false * ```Math::Cos(Double{Flags:AutoMap}) -> Double``` * ```Math::Cosh(Double{Flags:AutoMap}) -> Double``` * ```Math::Erf(Double{Flags:AutoMap}) -> Double``` +* ```Math::ErfInv(Double{Flags:AutoMap}) -> Double``` +* ```Math::ErfcInv(Double{Flags:AutoMap}) -> Double``` * ```Math::Exp(Double{Flags:AutoMap}) -> Double``` * ```Math::Exp2(Double{Flags:AutoMap}) -> Double``` * ```Math::Fabs(Double{Flags:AutoMap}) -> Double``` diff --git a/ydb/docs/en/core/yql/reference/yql-core/udf/list/pire.md b/ydb/docs/en/core/yql/reference/yql-core/udf/list/pire.md index e608f6b6c6..dc7147c46f 100644 --- a/ydb/docs/en/core/yql/reference/yql-core/udf/list/pire.md +++ b/ydb/docs/en/core/yql/reference/yql-core/udf/list/pire.md @@ -80,16 +80,16 @@ Matches the regular expression with a **part of the string** (arbitrary substrin ## Match {#match} -Matches **the whole string** against the regular expression. +Matches **the whole string** against the regular expression.
To get a result similar to `Grep` (where substring matching is included), enclose the regular expression in `.*`. For example, use `.*foo.*` instead of `foo`. ## MultiGrep/MultiMatch {#multigrep} -Pire lets you match against multiple regular expressions in a single pass through the text and get a separate response for each match. +Pire lets you match against multiple regular expressions in a single pass through the text and get a separate response for each match.
Use the MultiGrep/MultiMatch functions to optimize the query execution speed. Be sure to do it carefully, since the size of the state machine used for matching grows exponentially with the number of regular expressions: * If you want to match a string against any of the listed expressions (the results are joined with "or"), it would be much more efficient to combine the query parts in a single regular expression with `|` and match it using regular Grep or Match. -* Pire has a limit on the size of the state machine (YQL uses the default value set in the library). If you exceed the limit, the error is raised at the start of the query: `Failed to glue up regexes, probably the finite state machine appeared to be too large`. +* Pire has a limit on the size of the state machine (YQL uses the default value set in the library). If you exceed the limit, the error is raised at the start of the query: `Failed to glue up regexes, probably the finite state machine appeared to be too large`.
When you call MultiGrep/MultiMatch, regular expressions are passed one per line using [multiline string literals](../../syntax/expressions.md#multiline-string-literals): **Examples** diff --git a/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md b/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md index fc172644e1..0db85087fc 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/example/java/index.md @@ -27,7 +27,7 @@ git clone https://github.com/yandex-cloud/ydb-java-sdk Основные параметры инициализации драйвера * Cтрока подключения с информацией об [эндпоинте](../../../../concepts/connect.md#endpoint) и [базе данных](../../../../concepts/connect.md#database). Единственный обязательные параметр. -* Провайдер [аутенфикации](../../auth.md##auth-provider). В случае отсутсвия прямого указания - будет использоваться [анонимное подключение](../../../../concepts/connect.md#auth-modes). +* Провайдер [аутенфикации](../../auth.md#auth-provider). В случае отсутсвия прямого указания - будет использоваться [анонимное подключение](../../../../concepts/connect.md#auth-modes). * Настройки [пула сессий](../../recipes/session_pool_limit/index.md) Фрагмент кода приложения для инициализации драйвера: |