Showing preview only (7,001K chars total). Download the full file or copy to clipboard to get everything.
Repository: laowantong/mocodo
Branch: master
Commit: 720053a53c60
Files: 1279
Total size: 6.4 MB
Directory structure:
gitextract_p929mom5/
├── .gitignore
├── LICENSE
├── README.md
├── doc/
│ ├── build_doc.sh
│ ├── examples/
│ │ ├── four_random_layouts.mcd
│ │ ├── landing.mcd
│ │ ├── option_syntax_1.abnf
│ │ └── option_syntax_2.abnf
│ ├── fr_cheat_sheet.md
│ ├── fr_refman.html
│ ├── fr_refman.ipynb
│ ├── readme/
│ │ └── ccp.mcd
│ ├── tutorial.ipynb
│ └── tutorial_lib/
│ ├── tuto-0000.mcd
│ ├── tuto-0001.mcd
│ ├── tuto-0002.mcd
│ ├── tuto-0003.mcd
│ ├── tuto-0004.mcd
│ ├── tuto-0005.mcd
│ ├── tuto-0006.mcd
│ ├── tuto-0007.mcd
│ ├── tuto-0008.mcd
│ ├── tuto-0009.mcd
│ ├── tuto-0010.mcd
│ ├── tuto-0011.mcd
│ ├── tuto-0012.mcd
│ ├── tuto-0013.mcd
│ ├── tuto-0014.mcd
│ ├── tuto-0015.mcd
│ ├── tuto-0016.mcd
│ ├── tuto-0017.mcd
│ ├── tuto-0018.mcd
│ ├── tuto-0019.mcd
│ ├── tuto-0020.mcd
│ ├── tuto-0021.mcd
│ ├── tuto-0022.mcd
│ ├── tuto-0023.mcd
│ ├── tuto-0024.mcd
│ ├── tuto-0025.mcd
│ ├── tuto-0026.mcd
│ ├── tuto-0027.mcd
│ ├── tuto-0028.mcd
│ ├── tuto-0029.mcd
│ ├── tuto-0030.mcd
│ ├── tuto-0031.mcd
│ ├── tuto-0032.mcd
│ ├── tuto-0033.mcd
│ ├── tuto-0034.mcd
│ ├── tuto-0035.mcd
│ ├── tuto-0036.mcd
│ ├── tuto-0037.mcd
│ └── tuto-0038.mcd
├── index.php
├── laowantong.vscode-mocodo/
│ ├── .vscode/
│ │ └── launch.json
│ ├── .vscodeignore
│ ├── LICENSE
│ ├── README.md
│ ├── highlighting_zoo.mcd
│ ├── language-configuration.json
│ ├── package.json
│ ├── syntaxes/
│ │ ├── mocodo.tmLanguage.json
│ │ └── mocodo.tmLanguage.yaml
│ └── vsc-extension-quickstart.md
├── mocodo/
│ ├── __init__.py
│ ├── __main__.py
│ ├── api.py
│ ├── argument_parser.py
│ ├── association.py
│ ├── attribute.py
│ ├── common.py
│ ├── constraint.py
│ ├── convert/
│ │ ├── __init__.py
│ │ ├── _ast.py
│ │ ├── _chen.py
│ │ ├── _crow.py
│ │ ├── _data_dict.py
│ │ ├── _prompt.py
│ │ ├── _share.py
│ │ ├── _uml.py
│ │ ├── crow_gv.py
│ │ ├── crow_mmd.py
│ │ ├── read_template.py
│ │ └── relations.py
│ ├── dev/
│ │ ├── json_to_yaml_templates.py
│ │ ├── update_sql_reserved_words.py
│ │ └── update_transfo_metadata.py
│ ├── diagram_link.py
│ ├── entity.py
│ ├── font_metrics.py
│ ├── grid.py
│ ├── guess_title.py
│ ├── inheritance.py
│ ├── leg.py
│ ├── magic.py
│ ├── mcd.py
│ ├── mcd_to_svg.py
│ ├── mocodo_error.py
│ ├── parse_mcd.py
│ ├── phantom.py
│ ├── resources/
│ │ ├── colors/
│ │ │ ├── blank.json
│ │ │ ├── brewer+1.json
│ │ │ ├── brewer+2.json
│ │ │ ├── brewer+3.json
│ │ │ ├── brewer+4.json
│ │ │ ├── brewer+5.json
│ │ │ ├── brewer+6.json
│ │ │ ├── brewer+7.json
│ │ │ ├── brewer+8.json
│ │ │ ├── brewer+9.json
│ │ │ ├── brewer-1.json
│ │ │ ├── brewer-2.json
│ │ │ ├── brewer-3.json
│ │ │ ├── brewer-4.json
│ │ │ ├── brewer-5.json
│ │ │ ├── brewer-6.json
│ │ │ ├── brewer-7.json
│ │ │ ├── brewer-8.json
│ │ │ ├── brewer-9.json
│ │ │ ├── bw-alpha.json
│ │ │ ├── bw.json
│ │ │ ├── dark-desert.json
│ │ │ ├── dark-ocean.json
│ │ │ ├── dark-pond.json
│ │ │ ├── dark.json
│ │ │ ├── desert.json
│ │ │ ├── gray.json
│ │ │ ├── keepsake.json
│ │ │ ├── mondrian.json
│ │ │ ├── ocean.json
│ │ │ ├── pond.json
│ │ │ ├── wb.json
│ │ │ └── xinnian.json
│ │ ├── default_datatypes_en.tsv
│ │ ├── default_datatypes_fr.tsv
│ │ ├── font_metrics.json
│ │ ├── grammar.lark
│ │ ├── i18n/
│ │ │ ├── messages_de.mo
│ │ │ ├── messages_fr.mo
│ │ │ ├── messages_fr.po
│ │ │ └── messages_zh.mo
│ │ ├── lorem/
│ │ │ ├── disparition.txt
│ │ │ ├── en4.txt
│ │ │ ├── fr.txt
│ │ │ ├── fr5.txt
│ │ │ └── lorem.txt
│ │ ├── pristine_sandbox.mcd
│ │ ├── prompts/
│ │ │ └── chat/
│ │ │ ├── cards_examples/
│ │ │ │ ├── 1_input.mcd
│ │ │ │ ├── 1_output.mcd
│ │ │ │ ├── 2_input.mcd
│ │ │ │ ├── 2_output.mcd
│ │ │ │ ├── 3_input.mcd
│ │ │ │ └── 3_output.mcd
│ │ │ ├── cards_fr.md
│ │ │ ├── types_examples/
│ │ │ │ ├── 1_input.mcd
│ │ │ │ ├── 1_output.mcd
│ │ │ │ ├── 2_input.mcd
│ │ │ │ └── 2_output.mcd
│ │ │ └── types_fr.md
│ │ ├── relation_templates/
│ │ │ ├── _index.json
│ │ │ ├── d2.yaml
│ │ │ ├── dbml-b.yaml
│ │ │ ├── dbml.yaml
│ │ │ ├── ddl.yaml
│ │ │ ├── debug.yaml
│ │ │ ├── dependencies.yaml
│ │ │ ├── diagram-c.yaml
│ │ │ ├── diagram.yaml
│ │ │ ├── html-b.yaml
│ │ │ ├── html-bc.yaml
│ │ │ ├── html-bce.yaml
│ │ │ ├── html-be.yaml
│ │ │ ├── html-c.yaml
│ │ │ ├── html-ce.yaml
│ │ │ ├── html-e.yaml
│ │ │ ├── html.yaml
│ │ │ ├── latex-b.yaml
│ │ │ ├── latex-bc.yaml
│ │ │ ├── latex-bce.yaml
│ │ │ ├── latex-be.yaml
│ │ │ ├── latex-c.yaml
│ │ │ ├── latex-ce.yaml
│ │ │ ├── latex-e.yaml
│ │ │ ├── latex.yaml
│ │ │ ├── markdown-b.yaml
│ │ │ ├── markdown-bc.yaml
│ │ │ ├── markdown-bce.yaml
│ │ │ ├── markdown-be.yaml
│ │ │ ├── markdown-c.yaml
│ │ │ ├── markdown-ce.yaml
│ │ │ ├── markdown-e.yaml
│ │ │ ├── markdown.yaml
│ │ │ ├── md-b.yaml
│ │ │ ├── md-bc.yaml
│ │ │ ├── md-bce.yaml
│ │ │ ├── md-be.yaml
│ │ │ ├── md-c.yaml
│ │ │ ├── md-ce.yaml
│ │ │ ├── md-e.yaml
│ │ │ ├── md.yaml
│ │ │ ├── mld-b.yaml
│ │ │ ├── mld-bc.yaml
│ │ │ ├── mld-bce.yaml
│ │ │ ├── mld-be.yaml
│ │ │ ├── mld-c.yaml
│ │ │ ├── mld-ce.yaml
│ │ │ ├── mld-e.yaml
│ │ │ ├── mld.yaml
│ │ │ ├── ms_sql-b.yaml
│ │ │ ├── ms_sql.yaml
│ │ │ ├── mssql-b.yaml
│ │ │ ├── mssql.yaml
│ │ │ ├── mysql-b.yaml
│ │ │ ├── mysql.yaml
│ │ │ ├── oracle-b.yaml
│ │ │ ├── oracle.yaml
│ │ │ ├── oracle_db-b.yaml
│ │ │ ├── oracle_db.yaml
│ │ │ ├── postgres-b.yaml
│ │ │ ├── postgres.yaml
│ │ │ ├── postgresql-b.yaml
│ │ │ ├── postgresql.yaml
│ │ │ ├── sql.yaml
│ │ │ ├── sql_server-b.yaml
│ │ │ ├── sql_server.yaml
│ │ │ ├── sqlite-b.yaml
│ │ │ ├── sqlite.yaml
│ │ │ ├── sqlserver-b.yaml
│ │ │ ├── sqlserver.yaml
│ │ │ ├── tex-b.yaml
│ │ │ ├── tex-bc.yaml
│ │ │ ├── tex-bce.yaml
│ │ │ ├── tex-be.yaml
│ │ │ ├── tex-c.yaml
│ │ │ ├── tex-ce.yaml
│ │ │ ├── tex-e.yaml
│ │ │ ├── tex.yaml
│ │ │ ├── text-b.yaml
│ │ │ ├── text-bc.yaml
│ │ │ ├── text-bce.yaml
│ │ │ ├── text-be.yaml
│ │ │ ├── text-c.yaml
│ │ │ ├── text-ce.yaml
│ │ │ ├── text-e.yaml
│ │ │ ├── text.yaml
│ │ │ ├── txt-b.yaml
│ │ │ ├── txt-bc.yaml
│ │ │ ├── txt-bce.yaml
│ │ │ ├── txt-be.yaml
│ │ │ ├── txt-c.yaml
│ │ │ ├── txt-ce.yaml
│ │ │ ├── txt-e.yaml
│ │ │ └── txt.yaml
│ │ ├── rendering_services.json
│ │ ├── shapes/
│ │ │ ├── arial.json
│ │ │ ├── copperplate.json
│ │ │ ├── georgia.json
│ │ │ ├── mondrian.json
│ │ │ ├── sans.json
│ │ │ ├── serif.json
│ │ │ ├── times.json
│ │ │ ├── trebuchet.json
│ │ │ ├── verdana.json
│ │ │ └── xinnian.json
│ │ └── transformations.json
│ ├── rewrite/
│ │ ├── __init__.py
│ │ ├── _arrange.py
│ │ ├── _drain.py
│ │ ├── _drown.py
│ │ ├── _explode.py
│ │ ├── _grow.py
│ │ ├── _split.py
│ │ ├── arrange_bb.py
│ │ ├── arrange_ga.py
│ │ ├── arrows.py
│ │ ├── cards.py
│ │ ├── constraints.py
│ │ ├── cross.py
│ │ ├── damerau_levenshtein.py
│ │ ├── fitness.py
│ │ ├── guess_entities.py
│ │ ├── obfuscate.py
│ │ ├── op_tk.py
│ │ └── types.py
│ └── tools/
│ ├── __init__.py
│ ├── graphviz_tools.py
│ ├── load_mini_yaml.py
│ ├── parser_tools.py
│ ├── pluralize_fr.py
│ ├── string_tools.py
│ └── various.py
├── pyproject.toml
├── setup.py
├── test/
│ ├── __init__.py
│ ├── launch_tests.sh
│ ├── test_api.py
│ ├── test_argument_parser.py
│ ├── test_arrange_bb.py
│ ├── test_arrange_ga.py
│ ├── test_association.py
│ ├── test_convert_chen.py
│ ├── test_cross.py
│ ├── test_data/
│ │ ├── small_pool.txt
│ │ └── templates/
│ │ ├── bad_array_element.yaml
│ │ ├── bad_circular_1.yaml
│ │ ├── bad_circular_2.yaml
│ │ ├── bad_no_order.yaml
│ │ ├── bad_non_increasing_order.yaml
│ │ ├── bad_non_numeric_order.yaml
│ │ ├── bad_not_an_object.yaml
│ │ ├── bad_object_value.yaml
│ │ ├── child.yaml
│ │ ├── expected_child.yaml
│ │ ├── expected_grandchild.yaml
│ │ ├── grandchild.yaml
│ │ └── root.yaml
│ ├── test_data_dict.py
│ ├── test_entity.py
│ ├── test_fitness.py
│ ├── test_grid.py
│ ├── test_guess_title.py
│ ├── test_inheritance.py
│ ├── test_mcd.py
│ ├── test_mcd_dimensions.py
│ ├── test_parser_tools.py
│ ├── test_parser_tools_snapshot.txt
│ ├── test_read_template.py
│ ├── test_relations.py
│ ├── test_rewrite_cards.py
│ ├── test_rewrite_decompose.py
│ ├── test_rewrite_grow.py
│ ├── test_rewrite_labels.py
│ ├── test_rewrite_types.py
│ ├── test_string_tools.py
│ ├── test_zoo.py
│ └── zoo/
│ ├── alt/
│ │ ├── _alt_0.mcd
│ │ ├── ddl/
│ │ │ ├── alt_0_ddl.d2
│ │ │ ├── alt_0_ddl.dbml
│ │ │ └── alt_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── alt_0_erd_chen.gv
│ │ │ ├── alt_0_erd_chen.txt
│ │ │ ├── alt_0_erd_crow.gv
│ │ │ ├── alt_0_erd_crow.mmd
│ │ │ └── alt_0_uml.puml
│ │ ├── mld/
│ │ │ ├── alt_0_debug.tsv
│ │ │ ├── alt_0_dependencies.gv
│ │ │ ├── alt_0_mld.html
│ │ │ ├── alt_0_mld.mcd
│ │ │ ├── alt_0_mld.md
│ │ │ ├── alt_0_mld.tex
│ │ │ └── alt_0_mld.txt
│ │ └── rewritten/
│ │ ├── alt_0_rw_create_df_arrows=across.mcd
│ │ ├── alt_0_rw_drain.mcd
│ │ ├── alt_0_rw_drown.mcd
│ │ ├── alt_0_rw_explode_arity=2,weak.mcd
│ │ ├── alt_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── alt_0_rw_explode_arity=2.5.mcd
│ │ ├── alt_0_rw_explode_arity=2.mcd
│ │ ├── alt_0_rw_explode_arity=3,weak.mcd
│ │ ├── alt_0_rw_explode_arity=3.mcd
│ │ └── alt_0_rw_split.mcd
│ ├── basic/
│ │ ├── _basic_0.mcd
│ │ ├── _basic_1.mcd
│ │ ├── _basic_2.mcd
│ │ ├── ddl/
│ │ │ ├── basic_0_ddl.d2
│ │ │ ├── basic_0_ddl.dbml
│ │ │ ├── basic_0_ddl.sql
│ │ │ ├── basic_1_ddl.d2
│ │ │ ├── basic_1_ddl.dbml
│ │ │ ├── basic_1_ddl.sql
│ │ │ ├── basic_2_ddl.d2
│ │ │ ├── basic_2_ddl.dbml
│ │ │ └── basic_2_ddl.sql
│ │ ├── exported/
│ │ │ ├── basic_0_erd_chen.gv
│ │ │ ├── basic_0_erd_chen.txt
│ │ │ ├── basic_0_erd_crow.gv
│ │ │ ├── basic_0_erd_crow.mmd
│ │ │ ├── basic_0_uml.puml
│ │ │ ├── basic_1_erd_chen.gv
│ │ │ ├── basic_1_erd_chen.txt
│ │ │ ├── basic_1_erd_crow.gv
│ │ │ ├── basic_1_erd_crow.mmd
│ │ │ ├── basic_1_uml.puml
│ │ │ ├── basic_2_erd_chen.gv
│ │ │ ├── basic_2_erd_chen.txt
│ │ │ ├── basic_2_erd_crow.gv
│ │ │ ├── basic_2_erd_crow.mmd
│ │ │ └── basic_2_uml.puml
│ │ ├── mld/
│ │ │ ├── basic_0_debug.tsv
│ │ │ ├── basic_0_dependencies.gv
│ │ │ ├── basic_0_mld.html
│ │ │ ├── basic_0_mld.mcd
│ │ │ ├── basic_0_mld.md
│ │ │ ├── basic_0_mld.tex
│ │ │ ├── basic_0_mld.txt
│ │ │ ├── basic_1_debug.tsv
│ │ │ ├── basic_1_dependencies.gv
│ │ │ ├── basic_1_mld.html
│ │ │ ├── basic_1_mld.mcd
│ │ │ ├── basic_1_mld.md
│ │ │ ├── basic_1_mld.tex
│ │ │ ├── basic_1_mld.txt
│ │ │ ├── basic_2_debug.tsv
│ │ │ ├── basic_2_dependencies.gv
│ │ │ ├── basic_2_mld.html
│ │ │ ├── basic_2_mld.mcd
│ │ │ ├── basic_2_mld.md
│ │ │ ├── basic_2_mld.tex
│ │ │ └── basic_2_mld.txt
│ │ └── rewritten/
│ │ ├── basic_0_rw_create_df_arrows=across.mcd
│ │ ├── basic_0_rw_drain.mcd
│ │ ├── basic_0_rw_drown.mcd
│ │ ├── basic_0_rw_explode_arity=2,weak.mcd
│ │ ├── basic_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── basic_0_rw_explode_arity=2.5.mcd
│ │ ├── basic_0_rw_explode_arity=2.mcd
│ │ ├── basic_0_rw_explode_arity=3,weak.mcd
│ │ ├── basic_0_rw_explode_arity=3.mcd
│ │ ├── basic_0_rw_split.mcd
│ │ ├── basic_1_rw_create_df_arrows=across.mcd
│ │ ├── basic_1_rw_drain.mcd
│ │ ├── basic_1_rw_drown.mcd
│ │ ├── basic_1_rw_explode_arity=2,weak.mcd
│ │ ├── basic_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── basic_1_rw_explode_arity=2.5.mcd
│ │ ├── basic_1_rw_explode_arity=2.mcd
│ │ ├── basic_1_rw_explode_arity=3,weak.mcd
│ │ ├── basic_1_rw_explode_arity=3.mcd
│ │ ├── basic_1_rw_split.mcd
│ │ ├── basic_2_rw_create_df_arrows=across.mcd
│ │ ├── basic_2_rw_drain.mcd
│ │ ├── basic_2_rw_drown.mcd
│ │ ├── basic_2_rw_explode_arity=2,weak.mcd
│ │ ├── basic_2_rw_explode_arity=2.5,weak.mcd
│ │ ├── basic_2_rw_explode_arity=2.5.mcd
│ │ ├── basic_2_rw_explode_arity=2.mcd
│ │ ├── basic_2_rw_explode_arity=3,weak.mcd
│ │ ├── basic_2_rw_explode_arity=3.mcd
│ │ └── basic_2_rw_split.mcd
│ ├── cluster_NN1/
│ │ ├── _cluster_NN1_0.mcd
│ │ ├── ddl/
│ │ │ ├── cluster_NN1_0_ddl.d2
│ │ │ ├── cluster_NN1_0_ddl.dbml
│ │ │ └── cluster_NN1_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── cluster_NN1_0_erd_chen.gv
│ │ │ ├── cluster_NN1_0_erd_chen.txt
│ │ │ ├── cluster_NN1_0_erd_crow.mmd
│ │ │ └── cluster_NN1_0_uml.puml
│ │ ├── mld/
│ │ │ ├── cluster_NN1_0_debug.tsv
│ │ │ ├── cluster_NN1_0_dependencies.gv
│ │ │ ├── cluster_NN1_0_mld.html
│ │ │ ├── cluster_NN1_0_mld.mcd
│ │ │ ├── cluster_NN1_0_mld.md
│ │ │ ├── cluster_NN1_0_mld.tex
│ │ │ └── cluster_NN1_0_mld.txt
│ │ └── rewritten/
│ │ ├── cluster_NN1_0_rw_create_df_arrows=across.mcd
│ │ ├── cluster_NN1_0_rw_drain.mcd
│ │ ├── cluster_NN1_0_rw_drown.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2,weak.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2.5.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=3,weak.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=3.mcd
│ │ └── cluster_NN1_0_rw_split.mcd
│ ├── complex/
│ │ ├── _complex.mcd
│ │ ├── ddl/
│ │ │ ├── complex_ddl.d2
│ │ │ ├── complex_ddl.dbml
│ │ │ └── complex_ddl.sql
│ │ ├── exported/
│ │ │ ├── complex_erd_chen.gv
│ │ │ ├── complex_erd_chen.txt
│ │ │ ├── complex_erd_crow.mmd
│ │ │ └── complex_uml.puml
│ │ ├── mld/
│ │ │ ├── complex_debug.tsv
│ │ │ ├── complex_dependencies.gv
│ │ │ ├── complex_mld.html
│ │ │ ├── complex_mld.mcd
│ │ │ ├── complex_mld.md
│ │ │ ├── complex_mld.tex
│ │ │ └── complex_mld.txt
│ │ └── rewritten/
│ │ ├── complex_rw_create_df_arrows=across.mcd
│ │ ├── complex_rw_drain.mcd
│ │ ├── complex_rw_drown.mcd
│ │ ├── complex_rw_explode_arity=2,weak.mcd
│ │ ├── complex_rw_explode_arity=2.5,weak.mcd
│ │ ├── complex_rw_explode_arity=2.5.mcd
│ │ ├── complex_rw_explode_arity=2.mcd
│ │ ├── complex_rw_explode_arity=3,weak.mcd
│ │ ├── complex_rw_explode_arity=3.mcd
│ │ └── complex_rw_split.mcd
│ ├── drain/
│ │ ├── _drain.mcd
│ │ ├── ddl/
│ │ │ ├── drain_ddl.d2
│ │ │ ├── drain_ddl.dbml
│ │ │ └── drain_ddl.sql
│ │ ├── exported/
│ │ │ ├── drain_erd_chen.gv
│ │ │ ├── drain_erd_chen.txt
│ │ │ ├── drain_erd_crow.gv
│ │ │ ├── drain_erd_crow.mmd
│ │ │ └── drain_uml.puml
│ │ ├── mld/
│ │ │ ├── drain_debug.tsv
│ │ │ ├── drain_dependencies.gv
│ │ │ ├── drain_mld.html
│ │ │ ├── drain_mld.mcd
│ │ │ ├── drain_mld.md
│ │ │ ├── drain_mld.tex
│ │ │ └── drain_mld.txt
│ │ └── rewritten/
│ │ ├── drain_rw_create_df_arrows=across.mcd
│ │ ├── drain_rw_drain.mcd
│ │ ├── drain_rw_drown.mcd
│ │ ├── drain_rw_explode_arity=2,weak.mcd
│ │ ├── drain_rw_explode_arity=2.5,weak.mcd
│ │ ├── drain_rw_explode_arity=2.5.mcd
│ │ ├── drain_rw_explode_arity=2.mcd
│ │ ├── drain_rw_explode_arity=3,weak.mcd
│ │ ├── drain_rw_explode_arity=3.mcd
│ │ └── drain_rw_split.mcd
│ ├── empty_attrs/
│ │ ├── _empty_attrs_0.mcd
│ │ ├── ddl/
│ │ │ ├── empty_attrs_0_ddl.d2
│ │ │ ├── empty_attrs_0_ddl.dbml
│ │ │ └── empty_attrs_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── empty_attrs_0_erd_chen.gv
│ │ │ ├── empty_attrs_0_erd_chen.txt
│ │ │ ├── empty_attrs_0_erd_crow.gv
│ │ │ ├── empty_attrs_0_erd_crow.mmd
│ │ │ └── empty_attrs_0_uml.puml
│ │ ├── mld/
│ │ │ ├── empty_attrs_0_debug.tsv
│ │ │ ├── empty_attrs_0_dependencies.gv
│ │ │ ├── empty_attrs_0_mld.html
│ │ │ ├── empty_attrs_0_mld.mcd
│ │ │ ├── empty_attrs_0_mld.md
│ │ │ ├── empty_attrs_0_mld.tex
│ │ │ └── empty_attrs_0_mld.txt
│ │ └── rewritten/
│ │ ├── empty_attrs_0_rw_create_df_arrows=across.mcd
│ │ ├── empty_attrs_0_rw_drain.mcd
│ │ ├── empty_attrs_0_rw_drown.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2,weak.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2.5.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=3,weak.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=3.mcd
│ │ └── empty_attrs_0_rw_split.mcd
│ ├── gerund/
│ │ ├── _gerund_0.mcd
│ │ ├── _gerund_1.mcd
│ │ ├── ddl/
│ │ │ ├── gerund_0_ddl.d2
│ │ │ ├── gerund_0_ddl.dbml
│ │ │ ├── gerund_0_ddl.sql
│ │ │ ├── gerund_1_ddl.d2
│ │ │ ├── gerund_1_ddl.dbml
│ │ │ └── gerund_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── gerund_0_erd_chen.gv
│ │ │ ├── gerund_0_erd_chen.txt
│ │ │ ├── gerund_0_erd_crow.gv
│ │ │ ├── gerund_0_erd_crow.mmd
│ │ │ ├── gerund_0_uml.puml
│ │ │ ├── gerund_1_erd_chen.gv
│ │ │ ├── gerund_1_erd_chen.txt
│ │ │ ├── gerund_1_erd_crow.gv
│ │ │ ├── gerund_1_erd_crow.mmd
│ │ │ └── gerund_1_uml.puml
│ │ ├── mld/
│ │ │ ├── gerund_0_debug.tsv
│ │ │ ├── gerund_0_dependencies.gv
│ │ │ ├── gerund_0_mld.html
│ │ │ ├── gerund_0_mld.mcd
│ │ │ ├── gerund_0_mld.md
│ │ │ ├── gerund_0_mld.tex
│ │ │ ├── gerund_0_mld.txt
│ │ │ ├── gerund_1_debug.tsv
│ │ │ ├── gerund_1_dependencies.gv
│ │ │ ├── gerund_1_mld.html
│ │ │ ├── gerund_1_mld.mcd
│ │ │ ├── gerund_1_mld.md
│ │ │ ├── gerund_1_mld.tex
│ │ │ └── gerund_1_mld.txt
│ │ └── rewritten/
│ │ ├── gerund_0_rw_create_df_arrows=across.mcd
│ │ ├── gerund_0_rw_drain.mcd
│ │ ├── gerund_0_rw_drown.mcd
│ │ ├── gerund_0_rw_explode_arity=2,weak.mcd
│ │ ├── gerund_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── gerund_0_rw_explode_arity=2.5.mcd
│ │ ├── gerund_0_rw_explode_arity=2.mcd
│ │ ├── gerund_0_rw_explode_arity=3,weak.mcd
│ │ ├── gerund_0_rw_explode_arity=3.mcd
│ │ ├── gerund_0_rw_split.mcd
│ │ ├── gerund_1_rw_create_df_arrows=across.mcd
│ │ ├── gerund_1_rw_drain.mcd
│ │ ├── gerund_1_rw_drown.mcd
│ │ ├── gerund_1_rw_explode_arity=2,weak.mcd
│ │ ├── gerund_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── gerund_1_rw_explode_arity=2.5.mcd
│ │ ├── gerund_1_rw_explode_arity=2.mcd
│ │ ├── gerund_1_rw_explode_arity=3,weak.mcd
│ │ ├── gerund_1_rw_explode_arity=3.mcd
│ │ └── gerund_1_rw_split.mcd
│ ├── inheritance/
│ │ ├── _inheritance_0.mcd
│ │ ├── _inheritance_1.mcd
│ │ ├── _inheritance_2.mcd
│ │ ├── _inheritance_3.mcd
│ │ ├── _inheritance_4.mcd
│ │ ├── _inheritance_5.mcd
│ │ ├── ddl/
│ │ │ ├── inheritance_0_ddl.d2
│ │ │ ├── inheritance_0_ddl.dbml
│ │ │ ├── inheritance_0_ddl.sql
│ │ │ ├── inheritance_1_ddl.d2
│ │ │ ├── inheritance_1_ddl.dbml
│ │ │ ├── inheritance_1_ddl.sql
│ │ │ ├── inheritance_2_ddl.d2
│ │ │ ├── inheritance_2_ddl.dbml
│ │ │ ├── inheritance_2_ddl.sql
│ │ │ ├── inheritance_3_ddl.d2
│ │ │ ├── inheritance_3_ddl.dbml
│ │ │ ├── inheritance_3_ddl.sql
│ │ │ ├── inheritance_4_ddl.d2
│ │ │ ├── inheritance_4_ddl.dbml
│ │ │ ├── inheritance_4_ddl.sql
│ │ │ ├── inheritance_5_ddl.d2
│ │ │ ├── inheritance_5_ddl.dbml
│ │ │ └── inheritance_5_ddl.sql
│ │ ├── exported/
│ │ │ ├── inheritance_0_erd_chen.gv
│ │ │ ├── inheritance_0_erd_chen.txt
│ │ │ ├── inheritance_0_erd_crow.gv
│ │ │ ├── inheritance_0_erd_crow.mmd
│ │ │ ├── inheritance_0_uml.puml
│ │ │ ├── inheritance_1_erd_chen.gv
│ │ │ ├── inheritance_1_erd_chen.txt
│ │ │ ├── inheritance_1_erd_crow.gv
│ │ │ ├── inheritance_1_erd_crow.mmd
│ │ │ ├── inheritance_1_uml.puml
│ │ │ ├── inheritance_2_erd_chen.gv
│ │ │ ├── inheritance_2_erd_chen.txt
│ │ │ ├── inheritance_2_erd_crow.gv
│ │ │ ├── inheritance_2_erd_crow.mmd
│ │ │ ├── inheritance_2_uml.puml
│ │ │ ├── inheritance_3_erd_chen.gv
│ │ │ ├── inheritance_3_erd_chen.txt
│ │ │ ├── inheritance_3_erd_crow.gv
│ │ │ ├── inheritance_3_erd_crow.mmd
│ │ │ ├── inheritance_3_uml.puml
│ │ │ ├── inheritance_4_erd_chen.gv
│ │ │ ├── inheritance_4_erd_chen.txt
│ │ │ ├── inheritance_4_erd_crow.gv
│ │ │ ├── inheritance_4_erd_crow.mmd
│ │ │ ├── inheritance_4_uml.puml
│ │ │ ├── inheritance_5_erd_chen.gv
│ │ │ ├── inheritance_5_erd_chen.txt
│ │ │ ├── inheritance_5_erd_crow.gv
│ │ │ ├── inheritance_5_erd_crow.mmd
│ │ │ └── inheritance_5_uml.puml
│ │ ├── mld/
│ │ │ ├── inheritance_0_debug.tsv
│ │ │ ├── inheritance_0_dependencies.gv
│ │ │ ├── inheritance_0_mld.html
│ │ │ ├── inheritance_0_mld.mcd
│ │ │ ├── inheritance_0_mld.md
│ │ │ ├── inheritance_0_mld.tex
│ │ │ ├── inheritance_0_mld.txt
│ │ │ ├── inheritance_1_debug.tsv
│ │ │ ├── inheritance_1_dependencies.gv
│ │ │ ├── inheritance_1_mld.html
│ │ │ ├── inheritance_1_mld.mcd
│ │ │ ├── inheritance_1_mld.md
│ │ │ ├── inheritance_1_mld.tex
│ │ │ ├── inheritance_1_mld.txt
│ │ │ ├── inheritance_2_debug.tsv
│ │ │ ├── inheritance_2_dependencies.gv
│ │ │ ├── inheritance_2_mld.html
│ │ │ ├── inheritance_2_mld.mcd
│ │ │ ├── inheritance_2_mld.md
│ │ │ ├── inheritance_2_mld.tex
│ │ │ ├── inheritance_2_mld.txt
│ │ │ ├── inheritance_3_debug.tsv
│ │ │ ├── inheritance_3_dependencies.gv
│ │ │ ├── inheritance_3_mld.html
│ │ │ ├── inheritance_3_mld.mcd
│ │ │ ├── inheritance_3_mld.md
│ │ │ ├── inheritance_3_mld.tex
│ │ │ ├── inheritance_3_mld.txt
│ │ │ ├── inheritance_4_debug.tsv
│ │ │ ├── inheritance_4_dependencies.gv
│ │ │ ├── inheritance_4_mld.html
│ │ │ ├── inheritance_4_mld.mcd
│ │ │ ├── inheritance_4_mld.md
│ │ │ ├── inheritance_4_mld.tex
│ │ │ ├── inheritance_4_mld.txt
│ │ │ ├── inheritance_5_debug.tsv
│ │ │ ├── inheritance_5_dependencies.gv
│ │ │ ├── inheritance_5_mld.html
│ │ │ ├── inheritance_5_mld.mcd
│ │ │ ├── inheritance_5_mld.md
│ │ │ ├── inheritance_5_mld.tex
│ │ │ └── inheritance_5_mld.txt
│ │ └── rewritten/
│ │ ├── inheritance_0_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_0_rw_drain.mcd
│ │ ├── inheritance_0_rw_drown.mcd
│ │ ├── inheritance_0_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_0_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_0_rw_explode_arity=2.mcd
│ │ ├── inheritance_0_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_0_rw_explode_arity=3.mcd
│ │ ├── inheritance_0_rw_split.mcd
│ │ ├── inheritance_1_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_1_rw_drain.mcd
│ │ ├── inheritance_1_rw_drown.mcd
│ │ ├── inheritance_1_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_1_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_1_rw_explode_arity=2.mcd
│ │ ├── inheritance_1_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_1_rw_explode_arity=3.mcd
│ │ ├── inheritance_1_rw_split.mcd
│ │ ├── inheritance_2_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_2_rw_drain.mcd
│ │ ├── inheritance_2_rw_drown.mcd
│ │ ├── inheritance_2_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_2_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_2_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_2_rw_explode_arity=2.mcd
│ │ ├── inheritance_2_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_2_rw_explode_arity=3.mcd
│ │ ├── inheritance_2_rw_split.mcd
│ │ ├── inheritance_3_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_3_rw_drain.mcd
│ │ ├── inheritance_3_rw_drown.mcd
│ │ ├── inheritance_3_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_3_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_3_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_3_rw_explode_arity=2.mcd
│ │ ├── inheritance_3_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_3_rw_explode_arity=3.mcd
│ │ ├── inheritance_3_rw_split.mcd
│ │ ├── inheritance_4_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_4_rw_drain.mcd
│ │ ├── inheritance_4_rw_drown.mcd
│ │ ├── inheritance_4_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_4_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_4_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_4_rw_explode_arity=2.mcd
│ │ ├── inheritance_4_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_4_rw_explode_arity=3.mcd
│ │ ├── inheritance_4_rw_split.mcd
│ │ ├── inheritance_5_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_5_rw_drain.mcd
│ │ ├── inheritance_5_rw_drown.mcd
│ │ ├── inheritance_5_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_5_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_5_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_5_rw_explode_arity=2.mcd
│ │ ├── inheritance_5_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_5_rw_explode_arity=3.mcd
│ │ └── inheritance_5_rw_split.mcd
│ ├── inheritance_weak/
│ │ ├── _strong_child_0.mcd
│ │ ├── _strong_child_1.mcd
│ │ ├── _strong_child_2.mcd
│ │ ├── ddl/
│ │ │ ├── strong_child_0_ddl.d2
│ │ │ ├── strong_child_0_ddl.dbml
│ │ │ ├── strong_child_0_ddl.sql
│ │ │ ├── strong_child_1_ddl.d2
│ │ │ ├── strong_child_1_ddl.dbml
│ │ │ ├── strong_child_1_ddl.sql
│ │ │ ├── strong_child_2_ddl.d2
│ │ │ ├── strong_child_2_ddl.dbml
│ │ │ └── strong_child_2_ddl.sql
│ │ ├── exported/
│ │ │ ├── strong_child_0_erd_chen.gv
│ │ │ ├── strong_child_0_erd_chen.txt
│ │ │ ├── strong_child_0_erd_crow.gv
│ │ │ ├── strong_child_0_erd_crow.mmd
│ │ │ ├── strong_child_0_uml.puml
│ │ │ ├── strong_child_1_erd_chen.gv
│ │ │ ├── strong_child_1_erd_chen.txt
│ │ │ ├── strong_child_1_erd_crow.gv
│ │ │ ├── strong_child_1_erd_crow.mmd
│ │ │ ├── strong_child_1_uml.puml
│ │ │ ├── strong_child_2_erd_chen.gv
│ │ │ ├── strong_child_2_erd_chen.txt
│ │ │ ├── strong_child_2_erd_crow.gv
│ │ │ ├── strong_child_2_erd_crow.mmd
│ │ │ └── strong_child_2_uml.puml
│ │ ├── mld/
│ │ │ ├── strong_child_0_debug.tsv
│ │ │ ├── strong_child_0_dependencies.gv
│ │ │ ├── strong_child_0_mld.html
│ │ │ ├── strong_child_0_mld.mcd
│ │ │ ├── strong_child_0_mld.md
│ │ │ ├── strong_child_0_mld.tex
│ │ │ ├── strong_child_0_mld.txt
│ │ │ ├── strong_child_1_debug.tsv
│ │ │ ├── strong_child_1_dependencies.gv
│ │ │ ├── strong_child_1_mld.html
│ │ │ ├── strong_child_1_mld.mcd
│ │ │ ├── strong_child_1_mld.md
│ │ │ ├── strong_child_1_mld.tex
│ │ │ ├── strong_child_1_mld.txt
│ │ │ ├── strong_child_2_debug.tsv
│ │ │ ├── strong_child_2_dependencies.gv
│ │ │ ├── strong_child_2_mld.html
│ │ │ ├── strong_child_2_mld.mcd
│ │ │ ├── strong_child_2_mld.md
│ │ │ ├── strong_child_2_mld.tex
│ │ │ └── strong_child_2_mld.txt
│ │ └── rewritten/
│ │ ├── strong_child_0_rw_create_df_arrows=across.mcd
│ │ ├── strong_child_0_rw_drain.mcd
│ │ ├── strong_child_0_rw_drown.mcd
│ │ ├── strong_child_0_rw_explode_arity=2,weak.mcd
│ │ ├── strong_child_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── strong_child_0_rw_explode_arity=2.5.mcd
│ │ ├── strong_child_0_rw_explode_arity=2.mcd
│ │ ├── strong_child_0_rw_explode_arity=3,weak.mcd
│ │ ├── strong_child_0_rw_explode_arity=3.mcd
│ │ ├── strong_child_0_rw_split.mcd
│ │ ├── strong_child_1_rw_create_df_arrows=across.mcd
│ │ ├── strong_child_1_rw_drain.mcd
│ │ ├── strong_child_1_rw_drown.mcd
│ │ ├── strong_child_1_rw_explode_arity=2,weak.mcd
│ │ ├── strong_child_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── strong_child_1_rw_explode_arity=2.5.mcd
│ │ ├── strong_child_1_rw_explode_arity=2.mcd
│ │ ├── strong_child_1_rw_explode_arity=3,weak.mcd
│ │ ├── strong_child_1_rw_explode_arity=3.mcd
│ │ ├── strong_child_1_rw_split.mcd
│ │ ├── strong_child_2_rw_create_df_arrows=across.mcd
│ │ ├── strong_child_2_rw_drain.mcd
│ │ ├── strong_child_2_rw_drown.mcd
│ │ ├── strong_child_2_rw_explode_arity=2,weak.mcd
│ │ ├── strong_child_2_rw_explode_arity=2.5,weak.mcd
│ │ ├── strong_child_2_rw_explode_arity=2.5.mcd
│ │ ├── strong_child_2_rw_explode_arity=2.mcd
│ │ ├── strong_child_2_rw_explode_arity=3,weak.mcd
│ │ ├── strong_child_2_rw_explode_arity=3.mcd
│ │ └── strong_child_2_rw_split.mcd
│ ├── landing/
│ │ ├── _landing.mcd
│ │ ├── ddl/
│ │ │ ├── landing_ddl.d2
│ │ │ ├── landing_ddl.dbml
│ │ │ └── landing_ddl.sql
│ │ ├── exported/
│ │ │ ├── landing_erd_chen.gv
│ │ │ ├── landing_erd_chen.txt
│ │ │ ├── landing_erd_crow.gv
│ │ │ ├── landing_erd_crow.mmd
│ │ │ └── landing_uml.puml
│ │ ├── mld/
│ │ │ ├── landing_debug.tsv
│ │ │ ├── landing_dependencies.gv
│ │ │ ├── landing_mld.html
│ │ │ ├── landing_mld.mcd
│ │ │ ├── landing_mld.md
│ │ │ ├── landing_mld.tex
│ │ │ └── landing_mld.txt
│ │ └── rewritten/
│ │ ├── landing_rw_create_df_arrows=across.mcd
│ │ ├── landing_rw_drain.mcd
│ │ ├── landing_rw_drown.mcd
│ │ ├── landing_rw_explode_arity=2,weak.mcd
│ │ ├── landing_rw_explode_arity=2.5,weak.mcd
│ │ ├── landing_rw_explode_arity=2.5.mcd
│ │ ├── landing_rw_explode_arity=2.mcd
│ │ ├── landing_rw_explode_arity=3,weak.mcd
│ │ ├── landing_rw_explode_arity=3.mcd
│ │ └── landing_rw_split.mcd
│ ├── minimal/
│ │ ├── _minimal.mcd
│ │ ├── ddl/
│ │ │ ├── minimal_ddl.d2
│ │ │ ├── minimal_ddl.dbml
│ │ │ └── minimal_ddl.sql
│ │ ├── exported/
│ │ │ ├── minimal_erd_chen.gv
│ │ │ ├── minimal_erd_chen.txt
│ │ │ ├── minimal_erd_crow.gv
│ │ │ ├── minimal_erd_crow.mmd
│ │ │ └── minimal_uml.puml
│ │ ├── mld/
│ │ │ ├── minimal_debug.tsv
│ │ │ ├── minimal_dependencies.gv
│ │ │ ├── minimal_mld.html
│ │ │ ├── minimal_mld.mcd
│ │ │ ├── minimal_mld.md
│ │ │ ├── minimal_mld.tex
│ │ │ └── minimal_mld.txt
│ │ └── rewritten/
│ │ ├── minimal_rw_create_df_arrows=across.mcd
│ │ ├── minimal_rw_drain.mcd
│ │ ├── minimal_rw_drown.mcd
│ │ ├── minimal_rw_explode_arity=2,weak.mcd
│ │ ├── minimal_rw_explode_arity=2.5,weak.mcd
│ │ ├── minimal_rw_explode_arity=2.5.mcd
│ │ ├── minimal_rw_explode_arity=2.mcd
│ │ ├── minimal_rw_explode_arity=3,weak.mcd
│ │ ├── minimal_rw_explode_arity=3.mcd
│ │ └── minimal_rw_split.mcd
│ ├── protected/
│ │ ├── _protected_0.mcd
│ │ ├── ddl/
│ │ │ ├── protected_0_ddl.d2
│ │ │ ├── protected_0_ddl.dbml
│ │ │ └── protected_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── protected_0_erd_chen.gv
│ │ │ ├── protected_0_erd_chen.txt
│ │ │ ├── protected_0_erd_crow.gv
│ │ │ ├── protected_0_erd_crow.mmd
│ │ │ └── protected_0_uml.puml
│ │ ├── mld/
│ │ │ ├── protected_0_debug.tsv
│ │ │ ├── protected_0_dependencies.gv
│ │ │ ├── protected_0_mld.html
│ │ │ ├── protected_0_mld.mcd
│ │ │ ├── protected_0_mld.md
│ │ │ ├── protected_0_mld.tex
│ │ │ └── protected_0_mld.txt
│ │ └── rewritten/
│ │ ├── protected_0_rw_create_df_arrows=across.mcd
│ │ ├── protected_0_rw_drain.mcd
│ │ ├── protected_0_rw_drown.mcd
│ │ ├── protected_0_rw_explode_arity=2,weak.mcd
│ │ ├── protected_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── protected_0_rw_explode_arity=2.5.mcd
│ │ ├── protected_0_rw_explode_arity=2.mcd
│ │ ├── protected_0_rw_explode_arity=3,weak.mcd
│ │ ├── protected_0_rw_explode_arity=3.mcd
│ │ └── protected_0_rw_split.mcd
│ ├── reflexive/
│ │ ├── _reflexive_0.mcd
│ │ ├── ddl/
│ │ │ ├── reflexive_0_ddl.d2
│ │ │ ├── reflexive_0_ddl.dbml
│ │ │ └── reflexive_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── reflexive_0_erd_chen.gv
│ │ │ ├── reflexive_0_erd_chen.txt
│ │ │ ├── reflexive_0_erd_crow.gv
│ │ │ ├── reflexive_0_erd_crow.mmd
│ │ │ └── reflexive_0_uml.puml
│ │ ├── mld/
│ │ │ ├── reflexive_0_debug.tsv
│ │ │ ├── reflexive_0_dependencies.gv
│ │ │ ├── reflexive_0_mld.html
│ │ │ ├── reflexive_0_mld.mcd
│ │ │ ├── reflexive_0_mld.md
│ │ │ ├── reflexive_0_mld.tex
│ │ │ └── reflexive_0_mld.txt
│ │ └── rewritten/
│ │ ├── reflexive_0_rw_create_df_arrows=across.mcd
│ │ ├── reflexive_0_rw_drain.mcd
│ │ ├── reflexive_0_rw_drown.mcd
│ │ ├── reflexive_0_rw_explode_arity=2,weak.mcd
│ │ ├── reflexive_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── reflexive_0_rw_explode_arity=2.5.mcd
│ │ ├── reflexive_0_rw_explode_arity=2.mcd
│ │ ├── reflexive_0_rw_explode_arity=3,weak.mcd
│ │ ├── reflexive_0_rw_explode_arity=3.mcd
│ │ └── reflexive_0_rw_split.mcd
│ ├── split/
│ │ ├── _split.mcd
│ │ ├── ddl/
│ │ │ ├── split_ddl.d2
│ │ │ ├── split_ddl.dbml
│ │ │ └── split_ddl.sql
│ │ ├── exported/
│ │ │ ├── split_erd_chen.gv
│ │ │ ├── split_erd_chen.txt
│ │ │ ├── split_erd_crow.gv
│ │ │ ├── split_erd_crow.mmd
│ │ │ └── split_uml.puml
│ │ ├── mld/
│ │ │ ├── split_debug.tsv
│ │ │ ├── split_dependencies.gv
│ │ │ ├── split_mld.html
│ │ │ ├── split_mld.mcd
│ │ │ ├── split_mld.md
│ │ │ ├── split_mld.tex
│ │ │ └── split_mld.txt
│ │ └── rewritten/
│ │ ├── split_rw_create_df_arrows=across.mcd
│ │ ├── split_rw_drain.mcd
│ │ ├── split_rw_drown.mcd
│ │ ├── split_rw_explode_arity=2,weak.mcd
│ │ ├── split_rw_explode_arity=2.5,weak.mcd
│ │ ├── split_rw_explode_arity=2.5.mcd
│ │ ├── split_rw_explode_arity=2.mcd
│ │ ├── split_rw_explode_arity=3,weak.mcd
│ │ ├── split_rw_explode_arity=3.mcd
│ │ └── split_rw_split.mcd
│ ├── ternary_unicity/
│ │ ├── _ternary_unicity_0.mcd
│ │ ├── ddl/
│ │ │ ├── ternary_unicity_0_ddl.d2
│ │ │ ├── ternary_unicity_0_ddl.dbml
│ │ │ └── ternary_unicity_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── ternary_unicity_0_erd_chen.gv
│ │ │ ├── ternary_unicity_0_erd_chen.txt
│ │ │ ├── ternary_unicity_0_erd_crow.gv
│ │ │ ├── ternary_unicity_0_erd_crow.mmd
│ │ │ └── ternary_unicity_0_uml.puml
│ │ ├── mld/
│ │ │ ├── ternary_unicity_0_debug.tsv
│ │ │ ├── ternary_unicity_0_dependencies.gv
│ │ │ ├── ternary_unicity_0_mld.html
│ │ │ ├── ternary_unicity_0_mld.mcd
│ │ │ ├── ternary_unicity_0_mld.md
│ │ │ ├── ternary_unicity_0_mld.tex
│ │ │ └── ternary_unicity_0_mld.txt
│ │ └── rewritten/
│ │ ├── ternary_unicity_0_rw_create_df_arrows=across.mcd
│ │ ├── ternary_unicity_0_rw_drain.mcd
│ │ ├── ternary_unicity_0_rw_drown.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2,weak.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2.5.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=3,weak.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=3.mcd
│ │ └── ternary_unicity_0_rw_split.mcd
│ ├── triple_111/
│ │ ├── _triple_111_0.mcd
│ │ ├── _triple_111_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_111_0_ddl.d2
│ │ │ ├── triple_111_0_ddl.dbml
│ │ │ ├── triple_111_0_ddl.sql
│ │ │ ├── triple_111_1_ddl.d2
│ │ │ ├── triple_111_1_ddl.dbml
│ │ │ └── triple_111_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_111_0_erd_chen.gv
│ │ │ ├── triple_111_0_erd_chen.txt
│ │ │ ├── triple_111_0_erd_crow.mmd
│ │ │ ├── triple_111_0_uml.puml
│ │ │ ├── triple_111_1_erd_chen.gv
│ │ │ ├── triple_111_1_erd_chen.txt
│ │ │ ├── triple_111_1_erd_crow.mmd
│ │ │ └── triple_111_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_111_0_debug.tsv
│ │ │ ├── triple_111_0_dependencies.gv
│ │ │ ├── triple_111_0_mld.html
│ │ │ ├── triple_111_0_mld.mcd
│ │ │ ├── triple_111_0_mld.md
│ │ │ ├── triple_111_0_mld.tex
│ │ │ ├── triple_111_0_mld.txt
│ │ │ ├── triple_111_1_debug.tsv
│ │ │ ├── triple_111_1_dependencies.gv
│ │ │ ├── triple_111_1_mld.html
│ │ │ ├── triple_111_1_mld.mcd
│ │ │ ├── triple_111_1_mld.md
│ │ │ ├── triple_111_1_mld.tex
│ │ │ └── triple_111_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_111_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_111_0_rw_drain.mcd
│ │ ├── triple_111_0_rw_drown.mcd
│ │ ├── triple_111_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_111_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_111_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_111_0_rw_explode_arity=2.mcd
│ │ ├── triple_111_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_111_0_rw_explode_arity=3.mcd
│ │ ├── triple_111_0_rw_split.mcd
│ │ ├── triple_111_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_111_1_rw_drain.mcd
│ │ ├── triple_111_1_rw_drown.mcd
│ │ ├── triple_111_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_111_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_111_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_111_1_rw_explode_arity=2.mcd
│ │ ├── triple_111_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_111_1_rw_explode_arity=3.mcd
│ │ └── triple_111_1_rw_split.mcd
│ ├── triple_N11/
│ │ ├── _triple_N11_0.mcd
│ │ ├── _triple_N11_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_N11_0_ddl.d2
│ │ │ ├── triple_N11_0_ddl.dbml
│ │ │ ├── triple_N11_0_ddl.sql
│ │ │ ├── triple_N11_1_ddl.d2
│ │ │ ├── triple_N11_1_ddl.dbml
│ │ │ └── triple_N11_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_N11_0_erd_chen.gv
│ │ │ ├── triple_N11_0_erd_chen.txt
│ │ │ ├── triple_N11_0_erd_crow.mmd
│ │ │ ├── triple_N11_0_uml.puml
│ │ │ ├── triple_N11_1_erd_chen.gv
│ │ │ ├── triple_N11_1_erd_chen.txt
│ │ │ ├── triple_N11_1_erd_crow.mmd
│ │ │ └── triple_N11_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_N11_0_debug.tsv
│ │ │ ├── triple_N11_0_dependencies.gv
│ │ │ ├── triple_N11_0_mld.html
│ │ │ ├── triple_N11_0_mld.mcd
│ │ │ ├── triple_N11_0_mld.md
│ │ │ ├── triple_N11_0_mld.tex
│ │ │ ├── triple_N11_0_mld.txt
│ │ │ ├── triple_N11_1_debug.tsv
│ │ │ ├── triple_N11_1_dependencies.gv
│ │ │ ├── triple_N11_1_mld.html
│ │ │ ├── triple_N11_1_mld.mcd
│ │ │ ├── triple_N11_1_mld.md
│ │ │ ├── triple_N11_1_mld.tex
│ │ │ └── triple_N11_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_N11_0_rw_create_cifs.mcd
│ │ ├── triple_N11_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_N11_0_rw_drain.mcd
│ │ ├── triple_N11_0_rw_drown.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2.mcd
│ │ ├── triple_N11_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_N11_0_rw_explode_arity=3.mcd
│ │ ├── triple_N11_0_rw_split.mcd
│ │ ├── triple_N11_1_rw_create_cifs.mcd
│ │ ├── triple_N11_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_N11_1_rw_drain.mcd
│ │ ├── triple_N11_1_rw_drown.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2.mcd
│ │ ├── triple_N11_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_N11_1_rw_explode_arity=3.mcd
│ │ └── triple_N11_1_rw_split.mcd
│ ├── triple_NN1/
│ │ ├── _triple_NN1_0.mcd
│ │ ├── _triple_NN1_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_NN1_0_ddl.d2
│ │ │ ├── triple_NN1_0_ddl.dbml
│ │ │ ├── triple_NN1_0_ddl.sql
│ │ │ ├── triple_NN1_1_ddl.d2
│ │ │ ├── triple_NN1_1_ddl.dbml
│ │ │ └── triple_NN1_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_NN1_0_erd_chen.gv
│ │ │ ├── triple_NN1_0_erd_chen.txt
│ │ │ ├── triple_NN1_0_erd_crow.mmd
│ │ │ ├── triple_NN1_0_uml.puml
│ │ │ ├── triple_NN1_1_erd_chen.gv
│ │ │ ├── triple_NN1_1_erd_chen.txt
│ │ │ ├── triple_NN1_1_erd_crow.mmd
│ │ │ └── triple_NN1_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_NN1_0_debug.tsv
│ │ │ ├── triple_NN1_0_dependencies.gv
│ │ │ ├── triple_NN1_0_mld.html
│ │ │ ├── triple_NN1_0_mld.mcd
│ │ │ ├── triple_NN1_0_mld.md
│ │ │ ├── triple_NN1_0_mld.tex
│ │ │ ├── triple_NN1_0_mld.txt
│ │ │ ├── triple_NN1_1_debug.tsv
│ │ │ ├── triple_NN1_1_dependencies.gv
│ │ │ ├── triple_NN1_1_mld.html
│ │ │ ├── triple_NN1_1_mld.mcd
│ │ │ ├── triple_NN1_1_mld.md
│ │ │ ├── triple_NN1_1_mld.tex
│ │ │ └── triple_NN1_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_NN1_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_NN1_0_rw_drain.mcd
│ │ ├── triple_NN1_0_rw_drown.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=3.mcd
│ │ ├── triple_NN1_0_rw_split.mcd
│ │ ├── triple_NN1_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_NN1_1_rw_drain.mcd
│ │ ├── triple_NN1_1_rw_drown.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=3.mcd
│ │ └── triple_NN1_1_rw_split.mcd
│ ├── triple_NNN/
│ │ ├── _triple_NNN_0.mcd
│ │ ├── _triple_NNN_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_NNN_0_ddl.d2
│ │ │ ├── triple_NNN_0_ddl.dbml
│ │ │ ├── triple_NNN_0_ddl.sql
│ │ │ ├── triple_NNN_1_ddl.d2
│ │ │ ├── triple_NNN_1_ddl.dbml
│ │ │ └── triple_NNN_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_NNN_0_erd_chen.gv
│ │ │ ├── triple_NNN_0_erd_chen.txt
│ │ │ ├── triple_NNN_0_erd_crow.mmd
│ │ │ ├── triple_NNN_0_uml.puml
│ │ │ ├── triple_NNN_1_erd_chen.gv
│ │ │ ├── triple_NNN_1_erd_chen.txt
│ │ │ ├── triple_NNN_1_erd_crow.mmd
│ │ │ └── triple_NNN_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_NNN_0_debug.tsv
│ │ │ ├── triple_NNN_0_dependencies.gv
│ │ │ ├── triple_NNN_0_mld.html
│ │ │ ├── triple_NNN_0_mld.mcd
│ │ │ ├── triple_NNN_0_mld.md
│ │ │ ├── triple_NNN_0_mld.tex
│ │ │ ├── triple_NNN_0_mld.txt
│ │ │ ├── triple_NNN_1_debug.tsv
│ │ │ ├── triple_NNN_1_dependencies.gv
│ │ │ ├── triple_NNN_1_mld.html
│ │ │ ├── triple_NNN_1_mld.mcd
│ │ │ ├── triple_NNN_1_mld.md
│ │ │ ├── triple_NNN_1_mld.tex
│ │ │ └── triple_NNN_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_NNN_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_NNN_0_rw_drain.mcd
│ │ ├── triple_NNN_0_rw_drown.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=3.mcd
│ │ ├── triple_NNN_0_rw_split.mcd
│ │ ├── triple_NNN_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_NNN_1_rw_drain.mcd
│ │ ├── triple_NNN_1_rw_drown.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=3.mcd
│ │ └── triple_NNN_1_rw_split.mcd
│ └── weak/
│ ├── _weak_0.mcd
│ ├── _weak_1.mcd
│ ├── _weak_2.mcd
│ ├── ddl/
│ │ ├── weak_0_ddl.d2
│ │ ├── weak_0_ddl.dbml
│ │ ├── weak_0_ddl.sql
│ │ ├── weak_1_ddl.d2
│ │ ├── weak_1_ddl.dbml
│ │ ├── weak_1_ddl.sql
│ │ ├── weak_2_ddl.d2
│ │ ├── weak_2_ddl.dbml
│ │ └── weak_2_ddl.sql
│ ├── exported/
│ │ ├── weak_0_erd_chen.gv
│ │ ├── weak_0_erd_chen.txt
│ │ ├── weak_0_erd_crow.gv
│ │ ├── weak_0_erd_crow.mmd
│ │ ├── weak_0_uml.puml
│ │ ├── weak_1_erd_chen.gv
│ │ ├── weak_1_erd_chen.txt
│ │ ├── weak_1_erd_crow.gv
│ │ ├── weak_1_erd_crow.mmd
│ │ ├── weak_1_uml.puml
│ │ ├── weak_2_erd_chen.gv
│ │ ├── weak_2_erd_chen.txt
│ │ ├── weak_2_erd_crow.gv
│ │ ├── weak_2_erd_crow.mmd
│ │ └── weak_2_uml.puml
│ ├── mld/
│ │ ├── weak_0_debug.tsv
│ │ ├── weak_0_dependencies.gv
│ │ ├── weak_0_mld.html
│ │ ├── weak_0_mld.mcd
│ │ ├── weak_0_mld.md
│ │ ├── weak_0_mld.tex
│ │ ├── weak_0_mld.txt
│ │ ├── weak_1_debug.tsv
│ │ ├── weak_1_dependencies.gv
│ │ ├── weak_1_mld.html
│ │ ├── weak_1_mld.mcd
│ │ ├── weak_1_mld.md
│ │ ├── weak_1_mld.tex
│ │ ├── weak_1_mld.txt
│ │ ├── weak_2_debug.tsv
│ │ ├── weak_2_dependencies.gv
│ │ ├── weak_2_mld.html
│ │ ├── weak_2_mld.mcd
│ │ ├── weak_2_mld.md
│ │ ├── weak_2_mld.tex
│ │ └── weak_2_mld.txt
│ └── rewritten/
│ ├── weak_0_rw_create_df_arrows=across.mcd
│ ├── weak_0_rw_drain.mcd
│ ├── weak_0_rw_drown.mcd
│ ├── weak_0_rw_explode_arity=2,weak.mcd
│ ├── weak_0_rw_explode_arity=2.5,weak.mcd
│ ├── weak_0_rw_explode_arity=2.5.mcd
│ ├── weak_0_rw_explode_arity=2.mcd
│ ├── weak_0_rw_explode_arity=3,weak.mcd
│ ├── weak_0_rw_explode_arity=3.mcd
│ ├── weak_0_rw_split.mcd
│ ├── weak_1_rw_create_df_arrows=across.mcd
│ ├── weak_1_rw_drain.mcd
│ ├── weak_1_rw_drown.mcd
│ ├── weak_1_rw_explode_arity=2,weak.mcd
│ ├── weak_1_rw_explode_arity=2.5,weak.mcd
│ ├── weak_1_rw_explode_arity=2.5.mcd
│ ├── weak_1_rw_explode_arity=2.mcd
│ ├── weak_1_rw_explode_arity=3,weak.mcd
│ ├── weak_1_rw_explode_arity=3.mcd
│ ├── weak_1_rw_split.mcd
│ ├── weak_2_rw_create_df_arrows=across.mcd
│ ├── weak_2_rw_drain.mcd
│ ├── weak_2_rw_drown.mcd
│ ├── weak_2_rw_explode_arity=2,weak.mcd
│ ├── weak_2_rw_explode_arity=2.5,weak.mcd
│ ├── weak_2_rw_explode_arity=2.5.mcd
│ ├── weak_2_rw_explode_arity=2.mcd
│ ├── weak_2_rw_explode_arity=3,weak.mcd
│ ├── weak_2_rw_explode_arity=3.mcd
│ └── weak_2_rw_split.mcd
└── web/
├── ace-builds/
│ ├── ace.js
│ ├── ext-language_tools.js
│ ├── mode-mocodo.js
│ ├── mode-text.js
│ ├── text_highlight_rules.js
│ └── theme-chrome.js
├── favicons/
│ ├── browserconfig.xml
│ └── manifest.json
├── flashlight.js
├── generate.php
├── get_from_lib.php
├── js.cookie.js
├── mocodo.js
├── purge.php
├── reset.css
├── rewrite.php
└── style.css
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
*.pyc
build/*
dist/*
MANIFEST.in
mocodo.egg-info/*
params.json
README.rst
sandbox/*
meta/*
doc/mocodo_notebook
doc/.ipynb*
sandbox*.*
paper/*
*.lp
*.log
.DS_Store
magic/build/*
magic/dist/*
magic/mocodo_magic.egg-info/*
magic/README.rst
web/sessions/*
web/lib/*
.pytest_cache/*
.ipynb_checkpoints/*
*/.ipynb_checkpoints/*
poetry.lock
mocodo_web.py
Untitled.ipynb
*.vsix
mocodo/resources/relation_templates/_graph.gv
mocodo/resources/relation_templates/_graph.svg
EGC2024
looping/
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2017- Aristide Grange
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
**Octobre 2025.** Basthon prend maintenant en charge Mocodo 4.3.2.
**Mars 2025.** Mocodo [4.3](https://github.com/laowantong/mocodo/releases/tag/4.3.2) commence à surfer sur la vague des IA hallucinogénératives : il peut maintenant composer des _prompts_ à copier-coller sous ChatGPT (ou autre) pour réécrire le MCD en cours avec le type des attributs ou l'explication des cardinalités.
**Septembre 2024.** Basthon prend maintenant en charge Mocodo 4.2.8, qui simplifie l'appel à la fonction `mocodo()` de `mocodo.magic`. Voir l'[exemple mis à jour](https://notebook.basthon.fr/?from=examples/python3-mocodo.ipynb) dans la galerie de Basthon.
**Janvier 2024.** Mocodo [4.2](https://github.com/laowantong/mocodo/releases/tag/4.2.0) est maintenant disponible sous [Basthon](https://basthon.fr). Après [Mocodo _online_](https://www.mocodo.net), Basthon constitue donc une deuxième manière d'utiliser Mocodo sans rien installer. Elle a l'avantage de donner accès à l'intégralité des fonctionnalités du logiciel. Merci à son auteur, Romain Casati !
**Novembre 2023.** Mocodo [4.1](https://github.com/laowantong/mocodo/releases/tag/4.1.0) gère les bibliothèques de MCD. Un enseignant peut par exemple placer sur son propre serveur la correction d'un MCD sous un nom « secret », que le moment venu il communiquera oralement à ses étudiants pour leur permettre de le récupérer (soit sous Mocodo online, soit en ligne de commande).
**Octobre 2023.** Mocodo [4](https://github.com/laowantong/mocodo/releases/tag/4.0.4) introduit la gestion manuelle et automatique des contraintes d'optionalité et d'unicité, améliore les interfaces graphique et en ligne de commande, et ajoute un grand nombre de fonctionnalités : coloration syntaxique, liens de partage, exportation en UML, en notation de Chen et _crow's foot_, génération de MCD aléatoires, décomposition des associations et autres opérations de réécriture.
**Septembre 2022.** Mocodo 3 introduit l'[héritage](https://laowantong.github.io/mocodo/doc/fr_refman.html#Héritage-(ou-spécialisation)), l'[agrégation](https://laowantong.github.io/mocodo/doc/fr_refman.html#Agrégation-(ou-pseudo-entité)), les [calques](https://laowantong.github.io/mocodo/doc/fr_refman.html#Héritage-(ou-spécialisation)), les [sorties PDF et PNG](https://laowantong.github.io/mocodo/doc/fr_refman.html#Héritage-(ou-spécialisation)), etc. : [3.0](https://github.com/laowantong/mocodo/releases/tag/3.0), [3.1](https://github.com/laowantong/mocodo/releases/tag/3.1.0), [3.2](https://github.com/laowantong/mocodo/releases/tag/3.2.0).
------
[Documentation](https://laowantong.github.io/mocodo/doc/fr_refman.html) sur une seule page, incluant la sortie de [`mocodo --help`](https://laowantong.github.io/mocodo/doc/fr_refman.html#mocodo---help) et l'[aide-mémoire des transformations](https://laowantong.github.io/mocodo/doc/fr_refman.html#Aide-mémoire-des-arguments-de---transform).
----

Mocodo est un logiciel d'aide à l'enseignement et à l'apprentissage des [bases de données relationnelles](https://fr.wikipedia.org/wiki/Base_de_données_relationnelle).
- En entrée, il prend un [MCD](https://fr.wikipedia.org/wiki/Modèle_entité-association) (modèle conceptuel de données) décrit dans un langage dédié minimaliste.
- En sortie, il produit un diagramme entité-association et, à la demande, un [MLD](https://fr.wikipedia.org/wiki/Merise_(informatique)#MLD_:_modèle_logique_des_données) (schéma relationnel, sous forme graphique ou textuelle), un [DDL](https://fr.wikipedia.org/wiki/Langage_de_définition_de_données) (script SQL de création de la base), un [diagramme de classes UML](https://fr.wikipedia.org/wiki/Diagramme_de_classes), etc.
- En bonus, il est capable de réarranger automatiquement votre MCD de façon esthétique, et de lui appliquer des opérations de réécriture qui vont du mondain (typographie) à l'académique (décomposition d'associations), en passant par le merveilleux (inférence de types, génération d'exercices et d'exemples).
Vous pouvez utiliser Mocodo :
- sur son site web [Mocodo _online_](https://www.mocodo.net) ;
- dans un document [Jupyter Notebook](https://jupyter.org), avec ou [sans](https://basthon.fr) installation ;
- en ligne de commande ;
- comme une bibliothèque Python.
## Tracé du modèle conceptuel
Ci-dessous, un exemple d'utilisation sous Jupyter Notebook. L'appel du programme est en première ligne ; le texte-source proprement dit, lignes suivantes. En sortie, le diagramme conceptuel, égayé au passage par l'option `--colors` :


## Opérations de conversion
On peut récupérer ce texte-source avec `--input` pour lui appliquer diverses opérations. Ainsi, l'appel suivant génère et affiche son MLD, son diagramme relationnel et son DDL :
```
%mocodo --input ccp --transform mld diagram ddl --colors desert
```
---
- **CLIENT** (<u>Réf. client</u>, Nom, Prénom, Adresse)
- **COMMANDE** (<u>Num. commande</u>, Date, Montant, _#Réf. client_)
- **INCLURE** (<u>_#Num. commande_</u>, <u>_#Réf. produit_</u>, Quantité)
- **PRODUIT** (<u>Réf. produit</u>, Libellé, Prix unitaire)
---

---
```sql
CREATE TABLE CLIENT (
PRIMARY KEY (ref_client),
ref_client VARCHAR(8) NOT NULL,
nom VARCHAR(255),
prenom VARCHAR(255),
adresse VARCHAR(255)
);
CREATE TABLE COMMANDE (
PRIMARY KEY (num_commande),
num_commande VARCHAR(8) NOT NULL,
date DATE,
montant DECIMAL(10,2),
ref_client VARCHAR(8) NOT NULL
);
CREATE TABLE INCLURE (
PRIMARY KEY (num_commande, ref_produit),
num_commande VARCHAR(8) NOT NULL,
ref_produit VARCHAR(8) NOT NULL,
quantite INTEGER
);
CREATE TABLE PRODUIT (
PRIMARY KEY (ref_produit),
ref_produit VARCHAR(8) NOT NULL,
libelle VARCHAR(50),
prix_unitaire DECIMAL(10,2)
);
ALTER TABLE COMMANDE ADD FOREIGN KEY (ref_client) REFERENCES CLIENT (ref_client);
ALTER TABLE INCLURE ADD FOREIGN KEY (ref_produit) REFERENCES PRODUIT (ref_produit);
ALTER TABLE INCLURE ADD FOREIGN KEY (num_commande) REFERENCES COMMANDE (num_commande);
```
Dans la suite, pour épargner la frappe, les options `--input` et `--transform` seront respectivement abrégées en `-i` et `-t`.
Les opérations de conversion ne se limitent pas forcément au schéma relationnel. En voici une qui extrait un dictionnaire des données, par défaut sous la forme d'un tableau Markdown à trois colonnes :
```
%mocodo -i ccp -t data_dict
```
---
| Entité ou association | Libellé de l'attribut | Type |
|:----------------------|:----------------------|:--------------|
| CLIENT | Adresse | VARCHAR(255) |
| " | Nom | VARCHAR(255) |
| " | Prénom | VARCHAR(255) |
| " | Réf. client | VARCHAR(8) |
| COMMANDE | Date | DATE |
| " | Montant | DECIMAL(10,2) |
| " | Num. commande | VARCHAR(8) |
| INCLURE | Quantité | INTEGER |
| PRODUIT | Libellé | VARCHAR(50) |
| " | Prix unitaire | DECIMAL(10,2) |
| " | Réf. produit | VARCHAR(8) |
Une autre qui transcrit le MCD dans la notation _crow's foot_ (`crow`) pour [Mermaid](http://mermaid.js.org) (`mmd`) :
```
%mocodo -i ccp -t crow:mmd
```
---
```mmd
erDiagram
CLIENT {
VARCHAR(8) ref_client PK
VARCHAR(255) nom
VARCHAR(255) prenom
VARCHAR(255) adresse
}
COMMANDE {
VARCHAR(8) num_commande PK
DATE date
DECIMAL(10-2) montant
}
INCLURE {
INTEGER quantite PK
}
PRODUIT {
VARCHAR(8) ref_produit PK
VARCHAR(50) libelle
DECIMAL(10-2) prix_unitaire
}
CLIENT ||--o{ COMMANDE: PASSER
INCLURE }|..|| COMMANDE: DF
INCLURE }o..|| PRODUIT: DF
```
Le rendu des diagrammes décrits dans des langages-tiers (comme Mermaid) n'est pas directement pris en charge, mais peut être délégué (`--defer`) de façon transparente au service web approprié. Dans ce cas, c'est la sortie graphique qui est affichée :
```
%mocodo -i ccp -t crow:mmd --defer
```
---

## Opérations de réécriture
Une **réécriture** transforme un MCD Mocodo en un autre MCD Mocodo (au contraire d'une **conversion**, qui produit un animal d'une espèce différente).
Heureusement, l'utilisateur n'a pas à réfléchir si la transformation qu'il souhaite appliquer est une réécriture ou une conversion : dans les deux cas, il invoque `-t` (c'est-à-dire `--transform`), et Mocodo se débrouille.
En guise de premier exemple de réécriture, mettons les noms des entités et associations (`boxes`) en majuscules, et les libellés (`labels`) en ASCII et _snake case_ :
```
%mocodo -i ccp -t upper:boxes ascii:labels snake:labels --colors brewer+3
```

---
%%mocodo --colors brewer+3
CLIENT: ref_client [VARCHAR(8)], nom [VARCHAR(255)], prenom [VARCHAR(255)], adresse [VARCHAR(255)]
PASSER, 0N CLIENT, 11 COMMANDE
COMMANDE: num_commande [VARCHAR(8)], date [DATE], montant [DECIMAL(10,2)]
INCLURE, 1N COMMANDE, 0N PRODUIT: quantite [INTEGER]
PRODUIT: ref_produit [VARCHAR(8)], libelle [VARCHAR(50)], prix_unitaire [DECIMAL(10,2)]
Remarquez que l'exécution d'une réécriture affiche, au-dessous du diagramme, le code-source résultant. Celui-ci est précédé de la commande magique originale, _privée de l'option `-i` et de toute opération de réécriture_. Ces dispositions permettent de continuer à travailler directement dessus si on le copie-colle dans une autre cellule.
Plusieurs opérations de réécriture de nature sémantique sont également offertes. Par exemple, on peut décomposer un MCD quelconque en un MCD équivalent, mais n'employant que des dépendances fonctionnelles et des entités faibles :
```
%mocodo -i ccp --select mcd -t explode:weak,arity=2 arrange:wide --seed=3 --colors brewer+3
```

Notez la sous-option `arrange:wide`. Elle a procédé à une réorganisation aléatoire des boîtes, ce que l'insertion de deux nouvelles associations de dépendance fonctionnelles avait rendu nécessaire. Quant à l'option `--seed=3`, elle garantit que le résultat sera le même à chaque exécution.
Pour vous familiariser avec Mocodo, le plus simple est d'utiliser [sa version en ligne](https://www.mocodo.net). Vous pourrez ensuite vous plonger dans la [documentation](https://laowantong.github.io/mocodo/doc/fr_refman.html).
================================================
FILE: doc/build_doc.sh
================================================
# Export directly from the notebook File > Save and export notebook as > HTML
================================================
FILE: doc/examples/four_random_layouts.mcd
================================================
::
Tincidunt1, 11 Ante1, 0N Massa1
::::::
Euismod1, 0N Massa1, 0N Massa1
Massa1: metus, posuere
Convallis1, 0N Aliquet1, 0N Ante1: vestibulum
Ante1: vitae, tempor
:::
Risus2, 1N Aliquet2, 0N Massa2
Massa2: metus, posuere
Euismod2, 0N Massa2, 0N Massa2
:
Risus1, 1N Aliquet1, 0N Massa1
Aliquet1: hendrerit, metus, lacus, quis
Rutrum1, 0N Gravida1, 0N Ante1, 0N Aliquet1: faucibus, curae
Gravida1: ornare
:
Ultrices2, 01 Aliquet2, 0N Aliquet2
Aliquet2: hendrerit, metus, lacus, quis
Convallis2, 0N Aliquet2, 0N Ante2: vestibulum
Tincidunt2, 11 Ante2, 0N Massa2
::
Ultrices1, 01 Aliquet1, 0N Aliquet1
:::
Gravida2: ornare
Rutrum2, 0N Gravida2, 0N Ante2, 0N Aliquet2: faucibus, curae
Ante2: vitae, tempor
:
Ultrices3, 01 Aliquet3, 0N Aliquet3
Aliquet3: hendrerit, metus, lacus, quis
Risus3, 1N Aliquet3, 0N Massa3
:::
Risus4, 1N Aliquet4, 0N Massa4
Aliquet4: hendrerit, metus, lacus, quis
Ultrices4, 01 Aliquet4, 0N Aliquet4
:
Rutrum3, 0N Gravida3, 0N Ante3, 0N Aliquet3: faucibus, curae
Convallis3, 0N Aliquet3, 0N Ante3: vestibulum
Massa3: metus, posuere
Euismod3, 0N Massa3, 0N Massa3
:
Euismod4, 0N Massa4, 0N Massa4
Massa4: metus, posuere
Convallis4, 0N Aliquet4, 0N Ante4: vestibulum
Rutrum4, 0N Gravida4, 0N Ante4, 0N Aliquet4: faucibus, curae
Gravida4: ornare
Gravida3: ornare
Ante3: vitae, tempor
Tincidunt3, 11 Ante3, 0N Massa3
:::
Tincidunt4, 11 Ante4, 0N Massa4
Ante4: vitae, tempor
::
================================================
FILE: doc/examples/landing.mcd
================================================
AYANT-DROIT: nom ayant-droit, lien
DIRIGER, 0N [responsable] EMPLOYÉ, 01 PROJET
REQUÉRIR, 1N PROJET, 0N PIÈCE: qté requise
PIÈCE: réf. pièce, libellé pièce
COMPOSER, 0N [composée] PIÈCE, 0N [composante] PIÈCE: quantité
DF, _11 AYANT-DROIT, 0N EMPLOYÉ
EMPLOYÉ: matricule, nom employé
PROJET: num. projet, nom projet
FOURNIR, 1N PROJET, 1N PIÈCE, 1N SOCIÉTÉ: qté fournie
DÉPARTEMENT: num. département, nom département
EMPLOYER, 11 EMPLOYÉ, 1N DÉPARTEMENT
TRAVAILLER, 0N EMPLOYÉ, 1N PROJET
SOCIÉTÉ: num. société, raison sociale
CONTRÔLER, 0N< [mère] SOCIÉTÉ, 01 [filiale] SOCIÉTÉ
================================================
FILE: doc/examples/option_syntax_1.abnf
================================================
start = opt " " (arg *("," arg))
arg = subopt [":" subarg *("," subarg)]
subarg = subsubarg ["=" subsubopt]
================================================
FILE: doc/examples/option_syntax_2.abnf
================================================
start = opt " " ((subopt [":" (subsubarg ["=" subsubopt]) *("," (subsubarg ["=" subsubopt]))]) *("," (subopt [":" (subsubarg ["=" subsubopt]) *("," (subsubarg ["=" subsubopt]))])))
================================================
FILE: doc/fr_cheat_sheet.md
================================================
### Opérations de conversion
| Sous-option | Description | Exemples | Explications |
| :-- | :-- | :-- | :-- |
| <span style="font-family:monospace; font-weight:600">ast</span> | crée l'arbre de syntaxe abstraite du texte source (pour le débogage) | | |
| <span style="font-family:monospace; font-weight:600">chen</span> | convertit le modèle conceptuel dans la notation de Chen | `` chen `` | sans attributs |
| | | `` chen:attrs `` | avec attributs |
| | | `` chen:attrs --defer `` | calcule le rendu graphique via un service web |
| | | `` chen:layout=circo,mindist=2,scale=0.6 `` | ajoute des options arbitraires pour Graphviz |
| <span title="Alias : crowfoot, crowsfoot." style="font-family:monospace; font-weight:600">crow</span> | convertit le modèle conceptuel dans la notation crow's foot | `` crow `` | format Graphviz |
| | | `` crow --defer `` | calcule le rendu graphique via un service web |
| | | `` crow:mmd `` | format Mermaid |
| | | `` crow:mermaid `` | idem |
| <span style="font-family:monospace; font-weight:600">d2</span> | convertit le modèle conceptuel en un schéma relationnel au format D2 | | |
| <span title="Alias : data_dictionary." style="font-family:monospace; font-weight:600">data_dict</span> | extrait tous les attributs du MCD dans une table | `` data_dict `` | tableau Markdown, trois colonnes |
| | | `` data_dict:label `` | liste Markdown, une colonne |
| | | `` data_dict:label,type='Description' `` | deux colonnes, un libellé personnalisé |
| | | `` data_dict:label='Attribut',type='Description' `` | deux colonnes, deux libellés personnalisés |
| | | `` data_dict:**box**='Entité ou<br>association',label,`type`=`'Type de données'` `` | mise en forme de certains libellés |
| | | `` data_dict:tsv `` | tableau TSV, trois colonnes |
| | | `` data_dict:tsv,label `` | liste des attributs séparés par des retours à la ligne |
| <span style="font-family:monospace; font-weight:600">dbml</span> | convertit le modèle conceptuel en un schéma relationnel au format DBML | `` dbml `` | version de base |
| | | `` dbml:b `` | avec _boilerplate_ |
| <span style="font-family:monospace; font-weight:600">debug</span> | liste des informations internes relatives à la conversion en schéma relationnel | | |
| <span style="font-family:monospace; font-weight:600">dependencies</span> | convertit le modèle conceptuel en un graphe de dépendances | | |
| <span style="font-family:monospace; font-weight:600">diagram</span> | convertit le modèle conceptuel en un diagramme relationnel au format Mocodo | `` diagram `` | version de base |
| | | `` diagram:c `` | avec contraintes d'unicité et d'optionalité |
| <span style="font-family:monospace; font-weight:600">html</span> | convertit le modèle conceptuel en un schéma relationnel au format HTML | `` html `` | version de base |
| | | `` html:b `` | avec _boilerplate_ |
| | | `` html:c `` | avec contraintes d'unicité et d'optionalité |
| | | `` html:e `` | avec explications |
| | | `` html:bce `` | avec _boilerplate_, contraintes et explications |
| <span title="Alias : tex." style="font-family:monospace; font-weight:600">latex</span> | convertit le modèle conceptuel en un schéma relationnel au format LaTeX | `` latex `` | version de base |
| | | `` latex:b `` | avec _boilerplate_ |
| | | `` latex:c `` | avec contraintes d'unicité et d'optionalité |
| | | `` latex:e `` | avec explications |
| | | `` latex:bce `` | avec _boilerplate_, contraintes et explications |
| <span title="Alias : md, mld." style="font-family:monospace; font-weight:600">markdown</span> | convertit le modèle conceptuel en un schéma relationnel au format Markdown | `` markdown `` | version de base |
| | | `` markdown:c `` | avec contraintes d'unicité et d'optionalité |
| | | `` markdown:e `` | avec explications |
| | | `` markdown:ce `` | avec contraintes et explications |
| <span title="Alias : ms_sql, sql_server, sqlserver." style="font-family:monospace; font-weight:600">mssql</span> | convertit le modèle conceptuel en un modèle physique pour Microsoft SQL Server | `` mssql `` | version de base |
| | | `` mssql:b `` | avec _boilerplate_ |
| <span style="font-family:monospace; font-weight:600">mysql</span> | convertit le modèle conceptuel en un modèle physique pour MySQL | `` mysql `` | version de base |
| | | `` mysql:b `` | avec _boilerplate_ |
| <span title="Alias : oracle_db." style="font-family:monospace; font-weight:600">oracle</span> | convertit le modèle conceptuel en un modèle physique pour Oracle DB | `` oracle `` | version de base |
| | | `` oracle:b `` | avec _boilerplate_ |
| <span title="Alias : postgres." style="font-family:monospace; font-weight:600">postgresql</span> | convertit le modèle conceptuel en un modèle physique pour PostgreSQL | `` postgresql `` | version de base |
| | | `` postgresql:b `` | avec _boilerplate_ |
| <span title="Alias : chat, chatbot, ia, ai." style="font-family:monospace; font-weight:600">prompt</span> | génère un prompt pour demander à une IA de compléter le MCD | `` prompt:cards `` | avec les explications des cardinalités |
| | | `` prompt:types `` | avec les types des attributs |
| <span title="Alias : template, relation_template." style="font-family:monospace; font-weight:600">relation</span> | convertit le modèle conceptuel en schéma relationnel avec le gabarit donné | `` relation:path/to/my_template.yaml `` | chemin relatif, extension obligatoire |
| <span title="Alias : url, link, qr, qr_code." style="font-family:monospace; font-weight:600">share</span> | encode le MCD dans une URL pour Mocodo online | `` qr --defer `` | génère un QR code via un service web |
| <span title="Alias : ddl." style="font-family:monospace; font-weight:600">sql</span> | convertit le modèle conceptuel en un modèle physique pour SQL | | |
| <span style="font-family:monospace; font-weight:600">sqlite</span> | convertit le modèle conceptuel en un modèle physique pour SQLite | `` sqlite `` | version de base |
| | | `` sqlite:b `` | avec _boilerplate_ |
| <span title="Alias : txt." style="font-family:monospace; font-weight:600">text</span> | convertit le modèle conceptuel en un schéma relationnel au format texte | `` text `` | version de base |
| | | `` text:c `` | avec contraintes d'unicité et d'optionalité |
| | | `` html:e `` | avec explications |
| | | `` html:ce `` | avec contraintes et explications |
| <span title="Alias : uml, class_diagram." style="font-family:monospace; font-weight:600">uml</span> | convertit le modèle conceptuel en diagramme de classes UML | `` uml `` | format PlantUML |
| | | `` uml:plantuml `` | idem |
| | | `` uml --defer `` | calcule le rendu graphique via un service web |
| | | `` uml:plantuml=- `` | supprime les styles par défaut |
| | | `` uml:plantuml='skinparam backgroundColor yellow\nskinparam classAttributeFontName Arial\n' `` | ajoute des styles personnalisés |
### Opérations de réécriture
| Sous-option | Description | Exemples | Explications |
| :-- | :-- | :-- | :-- |
| <span style="font-family:monospace; font-weight:600">arrange</span> | réarrange la disposition, soit par Branch & Bound, soit avec un algorithme génétique | `` arrange `` | B&B sans contraintes |
| | | `` arrange:timeout=60 `` | B&B limité à une minute |
| | | `` arrange:wide `` | B&B privilégiant la largeur |
| | | `` arrange:current `` | B&B sur la grille courante |
| | | `` arrange:balanced=0 `` | B&B sur la plus petite grille équilibrée |
| | | `` arrange:balanced=1 `` | B&B sur la seconde plus petite grille équilibrée |
| | | `` arrange:algo=ga `` | algorithme génétique |
| <span style="font-family:monospace; font-weight:600">ascii</span> | réécrit les éléments donnés en ASCII | `` ascii:roles,labels `` | rôles, libellés des boîtes et des attributs en ASCII |
| <span title="Alias : camelcase, camel_case." style="font-family:monospace; font-weight:600">camel</span> | réécrit les éléments donnés en camelCase | | |
| <span style="font-family:monospace; font-weight:600">capitalize</span> | réécrit les éléments donnés en capitalisant la première lettre de chaque mot | | |
| <span title="Alias : case_fold." style="font-family:monospace; font-weight:600">casefold</span> | réécrit les éléments donnés en minuscules, mais plus agressivement que « lower » | | |
| <span title="Alias : add, insert, make, guess, infer, complete, new." style="font-family:monospace; font-weight:600">create</span> | essaie d'inférer les types, entités, CIFs ou flèches de DF à partir des éléments existants | `` guess:types `` | deviner les types manquants |
| | | `` create:types= `` | remplacer les types manquants par `[]` |
| | | `` create:types=TODO `` | remplacer les types manquants par `[TODO]` |
| | | `` make:entities `` | réparer l'oubli d'entités référencées dans des associations |
| | | `` create:dfs `` | mettre des DF partout où c'est possible |
| | | `` add:df_arrows `` | ajouter des flèches aux DF 11 |
| | | `` add:cifs `` | ajouter les CIF correspondant aux agrégats |
| | | `` add:cifs=light `` | même chose en visualisation allégée |
| | | `` add:roles `` | mettre comme rôles le nom des associations partout où c'est utile |
| <span title="Alias : del, suppress, erase, remove, hide, empty." style="font-family:monospace; font-weight:600">delete</span> | supprime les éléments donnés quand c'est possible | `` empty `` | ne garde que la structure et le nom des boîtes |
| | | `` delete:types,notes,attrs,cards `` | idem |
| | | `` delete:cards `` | remplace les cardinalités par `XX` |
| | | `` delete:card_prefixes `` | supprime les marqueurs d'entités faibles et d'agrégats |
| | | `` delete:dfs `` | supprime les entités indépendantes dont tous les attributs sont identifiants (et les DF qui les relient) |
| <span style="font-family:monospace; font-weight:600">drain</span> | déplace tout attribut d'association (1,1) vers l'entité appropriée | | |
| <span title="Alias : drown_by_numbers, anonymize, anonymise." style="font-family:monospace; font-weight:600">drown</span> | remplace tous les noms d'éléments par un libellé générique numéroté | | |
| <span style="font-family:monospace; font-weight:600">echo</span> | réécrit le texte source tel quel | | |
| <span style="font-family:monospace; font-weight:600">explode</span> | décompose toute association n-aire (*,N) en n associations binaires | `` explode arrange `` | décomposer les non-DF ternaires et plus, puis réarranger |
| | | `` explode:arity=3 arrange `` | idem |
| | | `` explode:weak arrange `` | idem, avec création d'entités faibles |
| | | `` explode:arity=2.5 arrange `` | étendre aux non-DF binaires porteuses d'attributs |
| | | `` explode:arity=2 arrange `` | étendre à toutes les non-DF binaires |
| <span style="font-family:monospace; font-weight:600">fix</span> | essaie de corriger les erreurs courantes dans les éléments donnés | `` fix:cards `` | normaliser les cardinalités en 01, 11, 0N et 1N |
| <span title="Alias : mirror, reflect." style="font-family:monospace; font-weight:600">flip</span> | applique au diagramme une symétrie verticale, horizontale ou diagonale | `` flip:v `` | symétrie verticale |
| | | `` flip:h `` | symétrie horizontale |
| | | `` flip:d `` | symétrie selon la seconde diagonale |
| | | `` flip:vhd `` | symétrie selon la première diagonale |
| | | `` flip:dhv `` | idem (ordre indifférent) |
| <span style="font-family:monospace; font-weight:600">grow</span> | ajoute des entités et associations aléatoires (par défaut : 10 nouvelles associations) | `` grow arrange `` | ajouter des éléments avec les paramètres par défaut, puis réarranger |
| | | `` grow:n=10 `` | nombre total d'associations à ajouter (défaut) |
| | | `` grow:arity_1=2 `` | nombre d'associations réflexives (défaut) |
| | | `` grow:arity_3=2 `` | nombre d'associations ternaires (défaut) |
| | | `` grow:arity_4=0 `` | nombre d'associations quaternaires (défaut) |
| | | `` grow:doubles=1 `` | nombre d'associations liant deux mêmes entités (défaut) |
| | | `` grow:composite_ids=1 `` | nombre d'identifiants composites (défaut) |
| | | `` grow:ent_attrs=4 `` | nombre maximal d'attributs par entité (défaut) |
| | | `` grow:assoc_attrs=2 `` | nombre maximal d'attributs par association (défaut) |
| | | `` grow:'*1-*N'=3 `` | nombre d'associations `*1-*N` (défaut) |
| | | `` grow:'01-11'=1 `` | nombre d'associations `01-11` (défaut) |
| | | `` grow:'_11-*N'=1 `` | une entité faible (zéro par défaut) |
| | | `` grow:'/1N-*N'=1 `` | un agrégat (zéro par défaut) |
| | | `` grow:from_scratch arrange `` | à partir d'un MCD vide |
| | | `` grow:grow:n=9,from_scratch,ent_attrs=3 obfuscate:labels=en4 create:roles lower:roles arrange `` | créer un MCD d'entraînement à la conversion en relationnel |
| <span title="Alias : lowercase, lower_case." style="font-family:monospace; font-weight:600">lower</span> | réécrit les éléments donnés en minuscules | `` lower:attrs,roles `` | attributs et rôles en minuscules |
| <span title="Alias : pascalcase, pascal_case." style="font-family:monospace; font-weight:600">pascal</span> | réécrit les élements donnés en PascalCase | | |
| <span title="Alias : prepend." style="font-family:monospace; font-weight:600">prefix</span> | préfixe les éléments donnés avec la chaîne donnée | `` prefix:roles='-' `` | force les rôles à remplacer le nom des clés étrangères lors du passage au relationnel |
| <span title="Alias : rand, random, randomise, obfuscate, obscure." style="font-family:monospace; font-weight:600">randomize</span> | garde la structure, mais randomise les éléments donnés quand c'est possible | `` obfuscate `` | libellés remplacés par du Lorem Ipsum |
| | | `` obfuscate:labels=lorem `` | idem |
| | | `` obfuscate:labels=disparition `` | idem, lexique du roman de Perec |
| | | `` obfuscate:labels=en4 `` | idem, mots anglais de 4 lettres (SFW) |
| | | `` obfuscate:attrs=fr,boxes=fr5 `` | idem, mots français de longueur quelconque pour les attributs, de 5 lettres pour les boîtes |
| | | `` randomize:types `` | types randomisés avec les fréquences de `default_datatypes_fr.tsv`. |
| <span title="Alias : substitute, sub, repl." style="font-family:monospace; font-weight:600">replace</span> | réécrit les éléments donnés en appliquant le motif « recherche/remplacement » donné | `` replace:boxes='DIRIGER/RÉPONDRE DE' `` | renomme une boîte |
| | | `` replace:texts='personel/personnel' `` | corrige une faute d'orthographe |
| | | `` replace:replace:texts='_/ ' `` | remplace les tirets bas par des espaces |
| | | `` replace:types='VARCHAR/VARCHAR2' `` | modifie un nom de type |
| | | `` replace:cards=0N/1N `` | remplace toutes les cardinalités 0N par 1N |
| | | `` replace:cards=1N//1N `` | crée des agrégats un peu partout |
| | | `` replace:cards='0/X' replace:cards='11/X1' replace:cards='1N/XN' `` | masque les cardinalités minimales |
| | | `` delete:card_prefixes replace:cards=11/_11 `` | ajoute des marqueurs d'entités faibles |
| <span title="Alias : cut, interval." style="font-family:monospace; font-weight:600">slice</span> | réécrit les éléments donnés en n'en gardant qu'une tranche donnée | `` slice:boxes=5:10 `` | de l'indice 5 (inclus) à l'indice 10 (exclu) |
| | | `` slice:boxes=5: `` | supprime les 5 premiers caractères |
| | | `` slice:boxes=:5 `` | ne garde que les 5 premiers caractères |
| | | `` slice:boxes=:-5 `` | supprime les 5 derniers caractères |
| | | `` slice:boxes=: `` | équivalent de `echo` |
| | | `` slice:boxes= `` | idem |
| | | `` slice:boxes `` | idem |
| <span title="Alias : snakecase, snake_case." style="font-family:monospace; font-weight:600">snake</span> | réécrit les éléments donnés en snake_case | | |
| <span style="font-family:monospace; font-weight:600">split</span> | décompose toute association n-aire (*,1) en n-1 associations binaires | `` split arrange `` | décomposer, puis réarranger |
| <span title="Alias : append." style="font-family:monospace; font-weight:600">suffix</span> | suffixe les éléments donnés avec la chaîne donnée | `` suffix:boxes=1 `` | Ajoute un suffixe numérique au nom des boîtes en vue de mettre un MCD et sa copie sur le même diagramme. |
| <span title="Alias : swap_case." style="font-family:monospace; font-weight:600">swapcase</span> | réécrit les éléments donnés en inversant la casse de chaque lettre | | |
| <span title="Alias : titlecase, title_case." style="font-family:monospace; font-weight:600">title</span> | réécrit les éléments donnés en mettant la première lettre de chaque mot en majuscule | | |
| <span title="Alias : trunc, shorten." style="font-family:monospace; font-weight:600">truncate</span> | tronque les éléments donnés à la longueur donnée (par défaut : 64) | `` truncate:boxes=10 `` | tronque les noms des boîtes à 10 caractères |
| <span title="Alias : uppercase, upper_case." style="font-family:monospace; font-weight:600">upper</span> | réécrit les éléments donnés en majuscules | `` upper:boxes `` | noms des boîtes en majuscules |
================================================
FILE: doc/fr_refman.html
================================================
<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>fr_refman</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<style type="text/css">
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
</style>
<style type="text/css">
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*
* Mozilla scrollbar styling
*/
/* use standard opaque scrollbars for most nodes */
[data-jp-theme-scrollbars='true'] {
scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
var(--jp-scrollbar-background-color);
}
/* for code nodes, use a transparent style of scrollbar. These selectors
* will match lower in the tree, and so will override the above */
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
}
/* tiny scrollbar */
.jp-scrollbar-tiny {
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
scrollbar-width: thin;
}
/* tiny scrollbar */
.jp-scrollbar-tiny::-webkit-scrollbar,
.jp-scrollbar-tiny::-webkit-scrollbar-corner {
background-color: transparent;
height: 4px;
width: 4px;
}
.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
}
.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
border-left: 0 solid transparent;
border-right: 0 solid transparent;
}
.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
border-top: 0 solid transparent;
border-bottom: 0 solid transparent;
}
/*
* Lumino
*/
.lm-ScrollBar[data-orientation='horizontal'] {
min-height: 16px;
max-height: 16px;
min-width: 45px;
border-top: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='vertical'] {
min-width: 16px;
max-width: 16px;
min-height: 45px;
border-left: 1px solid #a0a0a0;
}
.lm-ScrollBar-button {
background-color: #f0f0f0;
background-position: center center;
min-height: 15px;
max-height: 15px;
min-width: 15px;
max-width: 15px;
}
.lm-ScrollBar-button:hover {
background-color: #dadada;
}
.lm-ScrollBar-button.lm-mod-active {
background-color: #cdcdcd;
}
.lm-ScrollBar-track {
background: #f0f0f0;
}
.lm-ScrollBar-thumb {
background: #cdcdcd;
}
.lm-ScrollBar-thumb:hover {
background: #bababa;
}
.lm-ScrollBar-thumb.lm-mod-active {
background: #a0a0a0;
}
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
height: 100%;
min-width: 15px;
border-left: 1px solid #a0a0a0;
border-right: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
width: 100%;
min-height: 15px;
border-top: 1px solid #a0a0a0;
border-bottom: 1px solid #a0a0a0;
}
.lm-ScrollBar[data-orientation='horizontal']
.lm-ScrollBar-button[data-action='decrement'] {
background-image: var(--jp-icon-caret-left);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='horizontal']
.lm-ScrollBar-button[data-action='increment'] {
background-image: var(--jp-icon-caret-right);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='vertical']
.lm-ScrollBar-button[data-action='decrement'] {
background-image: var(--jp-icon-caret-up);
background-size: 17px;
}
.lm-ScrollBar[data-orientation='vertical']
.lm-ScrollBar-button[data-action='increment'] {
background-image: var(--jp-icon-caret-down);
background-size: 17px;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-Widget {
box-sizing: border-box;
position: relative;
overflow: hidden;
}
.lm-Widget.lm-mod-hidden {
display: none !important;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
/* Title is rotated for horizontal accordion panel using CSS */
display: block;
transform-origin: top left;
transform: rotate(-90deg) translate(-100%);
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-CommandPalette {
display: flex;
flex-direction: column;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.lm-CommandPalette-search {
flex: 0 0 auto;
}
.lm-CommandPalette-content {
flex: 1 1 auto;
margin: 0;
padding: 0;
min-height: 0;
overflow: auto;
list-style-type: none;
}
.lm-CommandPalette-header {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.lm-CommandPalette-item {
display: flex;
flex-direction: row;
}
.lm-CommandPalette-itemIcon {
flex: 0 0 auto;
}
.lm-CommandPalette-itemContent {
flex: 1 1 auto;
overflow: hidden;
}
.lm-CommandPalette-itemShortcut {
flex: 0 0 auto;
}
.lm-CommandPalette-itemLabel {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.lm-close-icon {
border: 1px solid transparent;
background-color: transparent;
position: absolute;
z-index: 1;
right: 3%;
top: 0;
bottom: 0;
margin: auto;
padding: 7px 0;
display: none;
vertical-align: middle;
outline: 0;
cursor: pointer;
}
.lm-close-icon:after {
content: 'X';
display: block;
width: 15px;
height: 15px;
text-align: center;
color: #000;
font-weight: normal;
font-size: 12px;
cursor: pointer;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-DockPanel {
z-index: 0;
}
.lm-DockPanel-widget {
z-index: 0;
}
.lm-DockPanel-tabBar {
z-index: 1;
}
.lm-DockPanel-handle {
z-index: 2;
}
.lm-DockPanel-handle.lm-mod-hidden {
display: none !important;
}
.lm-DockPanel-handle:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
content: '';
}
.lm-DockPanel-handle[data-orientation='horizontal'] {
cursor: ew-resize;
}
.lm-DockPanel-handle[data-orientation='vertical'] {
cursor: ns-resize;
}
.lm-DockPanel-handle[data-orientation='horizontal']:after {
left: 50%;
min-width: 8px;
transform: translateX(-50%);
}
.lm-DockPanel-handle[data-orientation='vertical']:after {
top: 50%;
min-height: 8px;
transform: translateY(-50%);
}
.lm-DockPanel-overlay {
z-index: 3;
box-sizing: border-box;
pointer-events: none;
}
.lm-DockPanel-overlay.lm-mod-hidden {
display: none !important;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-Menu {
z-index: 10000;
position: absolute;
white-space: nowrap;
overflow-x: hidden;
overflow-y: auto;
outline: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.lm-Menu-content {
margin: 0;
padding: 0;
display: table;
list-style-type: none;
}
.lm-Menu-item {
display: table-row;
}
.lm-Menu-item.lm-mod-hidden,
.lm-Menu-item.lm-mod-collapsed {
display: none !important;
}
.lm-Menu-itemIcon,
.lm-Menu-itemSubmenuIcon {
display: table-cell;
text-align: center;
}
.lm-Menu-itemLabel {
display: table-cell;
text-align: left;
}
.lm-Menu-itemShortcut {
display: table-cell;
text-align: right;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-MenuBar {
outline: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.lm-MenuBar-content {
margin: 0;
padding: 0;
display: flex;
flex-direction: row;
list-style-type: none;
}
.lm-MenuBar-item {
box-sizing: border-box;
}
.lm-MenuBar-itemIcon,
.lm-MenuBar-itemLabel {
display: inline-block;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-ScrollBar {
display: flex;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.lm-ScrollBar[data-orientation='horizontal'] {
flex-direction: row;
}
.lm-ScrollBar[data-orientation='vertical'] {
flex-direction: column;
}
.lm-ScrollBar-button {
box-sizing: border-box;
flex: 0 0 auto;
}
.lm-ScrollBar-track {
box-sizing: border-box;
position: relative;
overflow: hidden;
flex: 1 1 auto;
}
.lm-ScrollBar-thumb {
box-sizing: border-box;
position: absolute;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-SplitPanel-child {
z-index: 0;
}
.lm-SplitPanel-handle {
z-index: 1;
}
.lm-SplitPanel-handle.lm-mod-hidden {
display: none !important;
}
.lm-SplitPanel-handle:after {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
content: '';
}
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
cursor: ew-resize;
}
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
cursor: ns-resize;
}
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
left: 50%;
min-width: 8px;
transform: translateX(-50%);
}
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
top: 50%;
min-height: 8px;
transform: translateY(-50%);
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-TabBar {
display: flex;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.lm-TabBar[data-orientation='horizontal'] {
flex-direction: row;
align-items: flex-end;
}
.lm-TabBar[data-orientation='vertical'] {
flex-direction: column;
align-items: flex-end;
}
.lm-TabBar-content {
margin: 0;
padding: 0;
display: flex;
flex: 1 1 auto;
list-style-type: none;
}
.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
flex-direction: row;
}
.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
flex-direction: column;
}
.lm-TabBar-tab {
display: flex;
flex-direction: row;
box-sizing: border-box;
overflow: hidden;
touch-action: none; /* Disable native Drag/Drop */
}
.lm-TabBar-tabIcon,
.lm-TabBar-tabCloseIcon {
flex: 0 0 auto;
}
.lm-TabBar-tabLabel {
flex: 1 1 auto;
overflow: hidden;
white-space: nowrap;
}
.lm-TabBar-tabInput {
user-select: all;
width: 100%;
box-sizing: border-box;
}
.lm-TabBar-tab.lm-mod-hidden {
display: none !important;
}
.lm-TabBar-addButton.lm-mod-hidden {
display: none !important;
}
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
position: relative;
}
.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
left: 0;
transition: left 150ms ease;
}
.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
top: 0;
transition: top 150ms ease;
}
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
transition: none;
}
.lm-TabBar-tabLabel .lm-TabBar-tabInput {
user-select: all;
width: 100%;
box-sizing: border-box;
background: inherit;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
.lm-TabPanel-tabBar {
z-index: 1;
}
.lm-TabPanel-stackedPanel {
z-index: 0;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
| Distributed under the terms of the BSD 3-Clause License.
|
| The full license is in the file LICENSE, distributed with this software.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-Collapse {
display: flex;
flex-direction: column;
align-items: stretch;
}
.jp-Collapse-header {
padding: 1px 12px;
background-color: var(--jp-layout-color1);
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
color: var(--jp-ui-font-color1);
cursor: pointer;
display: flex;
align-items: center;
font-size: var(--jp-ui-font-size0);
font-weight: 600;
text-transform: uppercase;
user-select: none;
}
.jp-Collapser-icon {
height: 16px;
}
.jp-Collapse-header-collapsed .jp-Collapser-icon {
transform: rotate(-90deg);
margin: auto 0;
}
.jp-Collapser-title {
line-height: 25px;
}
.jp-Collapse-contents {
padding: 0 12px;
background-color: var(--jp-layout-color1);
color: var(--jp-ui-font-color1);
overflow: auto;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
/**
* (DEPRECATED) Support for consuming icons as CSS background images
*/
/* Icons urls */
:root {
--jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
--jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
--jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
--jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
--jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
--jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
--jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
--jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
--jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
--jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
--jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
--jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
--jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
--jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
--jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
--jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
--jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
--jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
--jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
--jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
--jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
--jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
--jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
--jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
--jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
--jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
--jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
--jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
--jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
--jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
--jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
--jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
--jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
--jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
--jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
--jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
--jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
--jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
--jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
--jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
--jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
--jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
--jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
--jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
--jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
--jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
--jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
--jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
--jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
--jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
--jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
}
/* Icon CSS class declarations */
.jp-AddAboveIcon {
background-image: var(--jp-icon-add-above);
}
.jp-AddBelowIcon {
background-image: var(--jp-icon-add-below);
}
.jp-AddIcon {
background-image: var(--jp-icon-add);
}
.jp-BellIcon {
background-image: var(--jp-icon-bell);
}
.jp-BugDotIcon {
background-image: var(--jp-icon-bug-dot);
}
.jp-BugIcon {
background-image: var(--jp-icon-bug);
}
.jp-BuildIcon {
background-image: var(--jp-icon-build);
}
.jp-CaretDownEmptyIcon {
background-image: var(--jp-icon-caret-down-empty);
}
.jp-CaretDownEmptyThinIcon {
background-image: var(--jp-icon-caret-down-empty-thin);
}
.jp-CaretDownIcon {
background-image: var(--jp-icon-caret-down);
}
.jp-CaretLeftIcon {
background-image: var(--jp-icon-caret-left);
}
.jp-CaretRightIcon {
background-image: var(--jp-icon-caret-right);
}
.jp-CaretUpEmptyThinIcon {
background-image: var(--jp-icon-caret-up-empty-thin);
}
.jp-CaretUpIcon {
background-image: var(--jp-icon-caret-up);
}
.jp-CaseSensitiveIcon {
background-image: var(--jp-icon-case-sensitive);
}
.jp-CheckIcon {
background-image: var(--jp-icon-check);
}
.jp-CircleEmptyIcon {
background-image: var(--jp-icon-circle-empty);
}
.jp-CircleIcon {
background-image: var(--jp-icon-circle);
}
.jp-ClearIcon {
background-image: var(--jp-icon-clear);
}
.jp-CloseIcon {
background-image: var(--jp-icon-close);
}
.jp-CodeCheckIcon {
background-image: var(--jp-icon-code-check);
}
.jp-CodeIcon {
background-image: var(--jp-icon-code);
}
.jp-CollapseAllIcon {
background-image: var(--jp-icon-collapse-all);
}
.jp-ConsoleIcon {
background-image: var(--jp-icon-console);
}
.jp-CopyIcon {
background-image: var(--jp-icon-copy);
}
.jp-CopyrightIcon {
background-image: var(--jp-icon-copyright);
}
.jp-CutIcon {
background-image: var(--jp-icon-cut);
}
.jp-DeleteIcon {
background-image: var(--jp-icon-delete);
}
.jp-DownloadIcon {
background-image: var(--jp-icon-download);
}
.jp-DuplicateIcon {
background-image: var(--jp-icon-duplicate);
}
.jp-EditIcon {
background-image: var(--jp-icon-edit);
}
.jp-EllipsesIcon {
background-image: var(--jp-icon-ellipses);
}
.jp-ErrorIcon {
background-image: var(--jp-icon-error);
}
.jp-ExpandAllIcon {
background-image: var(--jp-icon-expand-all);
}
.jp-ExtensionIcon {
background-image: var(--jp-icon-extension);
}
.jp-FastForwardIcon {
background-image: var(--jp-icon-fast-forward);
}
.jp-FileIcon {
background-image: var(--jp-icon-file);
}
.jp-FileUploadIcon {
background-image: var(--jp-icon-file-upload);
}
.jp-FilterDotIcon {
background-image: var(--jp-icon-filter-dot);
}
.jp-FilterIcon {
background-image: var(--jp-icon-filter);
}
.jp-FilterListIcon {
background-image: var(--jp-icon-filter-list);
}
.jp-FolderFavoriteIcon {
background-image: var(--jp-icon-folder-favorite);
}
.jp-FolderIcon {
background-image: var(--jp-icon-folder);
}
.jp-HomeIcon {
background-image: var(--jp-icon-home);
}
.jp-Html5Icon {
background-image: var(--jp-icon-html5);
}
.jp-ImageIcon {
background-image: var(--jp-icon-image);
}
.jp-InfoIcon {
background-image: var(--jp-icon-info);
}
.jp-InspectorIcon {
background-image: var(--jp-icon-inspector);
}
.jp-JsonIcon {
background-image: var(--jp-icon-json);
}
.jp-JuliaIcon {
background-image: var(--jp-icon-julia);
}
.jp-JupyterFaviconIcon {
background-image: var(--jp-icon-jupyter-favicon);
}
.jp-JupyterIcon {
background-image: var(--jp-icon-jupyter);
}
.jp-JupyterlabWordmarkIcon {
background-image: var(--jp-icon-jupyterlab-wordmark);
}
.jp-KernelIcon {
background-image: var(--jp-icon-kernel);
}
.jp-KeyboardIcon {
background-image: var(--jp-icon-keyboard);
}
.jp-LaunchIcon {
background-image: var(--jp-icon-launch);
}
.jp-LauncherIcon {
background-image: var(--jp-icon-launcher);
}
.jp-LineFormIcon {
background-image: var(--jp-icon-line-form);
}
.jp-LinkIcon {
background-image: var(--jp-icon-link);
}
.jp-ListIcon {
background-image: var(--jp-icon-list);
}
.jp-MarkdownIcon {
background-image: var(--jp-icon-markdown);
}
.jp-MoveDownIcon {
background-image: var(--jp-icon-move-down);
}
.jp-MoveUpIcon {
background-image: var(--jp-icon-move-up);
}
.jp-NewFolderIcon {
background-image: var(--jp-icon-new-folder);
}
.jp-NotTrustedIcon {
background-image: var(--jp-icon-not-trusted);
}
.jp-NotebookIcon {
background-image: var(--jp-icon-notebook);
}
.jp-NumberingIcon {
background-image: var(--jp-icon-numbering);
}
.jp-OfflineBoltIcon {
background-image: var(--jp-icon-offline-bolt);
}
.jp-PaletteIcon {
background-image: var(--jp-icon-palette);
}
.jp-PasteIcon {
background-image: var(--jp-icon-paste);
}
.jp-PdfIcon {
background-image: var(--jp-icon-pdf);
}
.jp-PythonIcon {
background-image: var(--jp-icon-python);
}
.jp-RKernelIcon {
background-image: var(--jp-icon-r-kernel);
}
.jp-ReactIcon {
background-image: var(--jp-icon-react);
}
.jp-RedoIcon {
background-image: var(--jp-icon-redo);
}
.jp-RefreshIcon {
background-image: var(--jp-icon-refresh);
}
.jp-RegexIcon {
background-image: var(--jp-icon-regex);
}
.jp-RunIcon {
background-image: var(--jp-icon-run);
}
.jp-RunningIcon {
background-image: var(--jp-icon-running);
}
.jp-SaveIcon {
background-image: var(--jp-icon-save);
}
.jp-SearchIcon {
background-image: var(--jp-icon-search);
}
.jp-SettingsIcon {
background-image: var(--jp-icon-settings);
}
.jp-ShareIcon {
background-image: var(--jp-icon-share);
}
.jp-SpreadsheetIcon {
background-image: var(--jp-icon-spreadsheet);
}
.jp-StopIcon {
background-image: var(--jp-icon-stop);
}
.jp-TabIcon {
background-image: var(--jp-icon-tab);
}
.jp-TableRowsIcon {
background-image: var(--jp-icon-table-rows);
}
.jp-TagIcon {
background-image: var(--jp-icon-tag);
}
.jp-TerminalIcon {
background-image: var(--jp-icon-terminal);
}
.jp-TextEditorIcon {
background-image: var(--jp-icon-text-editor);
}
.jp-TocIcon {
background-image: var(--jp-icon-toc);
}
.jp-TreeViewIcon {
background-image: var(--jp-icon-tree-view);
}
.jp-TrustedIcon {
background-image: var(--jp-icon-trusted);
}
.jp-UndoIcon {
background-image: var(--jp-icon-undo);
}
.jp-UserIcon {
background-image: var(--jp-icon-user);
}
.jp-UsersIcon {
background-image: var(--jp-icon-users);
}
.jp-VegaIcon {
background-image: var(--jp-icon-vega);
}
.jp-WordIcon {
background-image: var(--jp-icon-word);
}
.jp-YamlIcon {
background-image: var(--jp-icon-yaml);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/**
* (DEPRECATED) Support for consuming icons as CSS background images
*/
.jp-Icon,
.jp-MaterialIcon {
background-position: center;
background-repeat: no-repeat;
background-size: 16px;
min-width: 16px;
min-height: 16px;
}
.jp-Icon-cover {
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
/**
* (DEPRECATED) Support for specific CSS icon sizes
*/
.jp-Icon-16 {
background-size: 16px;
min-width: 16px;
min-height: 16px;
}
.jp-Icon-18 {
background-size: 18px;
min-width: 18px;
min-height: 18px;
}
.jp-Icon-20 {
background-size: 20px;
min-width: 20px;
min-height: 20px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.lm-TabBar .lm-TabBar-addButton {
align-items: center;
display: flex;
padding: 4px;
padding-bottom: 5px;
margin-right: 1px;
background-color: var(--jp-layout-color2);
}
.lm-TabBar .lm-TabBar-addButton:hover {
background-color: var(--jp-layout-color1);
}
.lm-DockPanel-tabBar .lm-TabBar-tab {
width: var(--jp-private-horizontal-tab-width);
}
.lm-DockPanel-tabBar .lm-TabBar-content {
flex: unset;
}
.lm-DockPanel-tabBar[data-orientation='horizontal'] {
flex: 1 1 auto;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/**
* Support for icons as inline SVG HTMLElements
*/
/* recolor the primary elements of an icon */
.jp-icon0[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon1[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon2[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon3[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon4[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon0[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon1[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon2[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon3[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon4[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/* recolor the accent elements of an icon */
.jp-icon-accent0[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-accent1[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-accent2[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-accent3[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-accent4[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-accent0[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-accent1[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-accent2[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-accent3[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-accent4[stroke] {
stroke: var(--jp-layout-color4);
}
/* set the color of an icon to transparent */
.jp-icon-none[fill] {
fill: none;
}
.jp-icon-none[stroke] {
stroke: none;
}
/* brand icon colors. Same for light and dark */
.jp-icon-brand0[fill] {
fill: var(--jp-brand-color0);
}
.jp-icon-brand1[fill] {
fill: var(--jp-brand-color1);
}
.jp-icon-brand2[fill] {
fill: var(--jp-brand-color2);
}
.jp-icon-brand3[fill] {
fill: var(--jp-brand-color3);
}
.jp-icon-brand4[fill] {
fill: var(--jp-brand-color4);
}
.jp-icon-brand0[stroke] {
stroke: var(--jp-brand-color0);
}
.jp-icon-brand1[stroke] {
stroke: var(--jp-brand-color1);
}
.jp-icon-brand2[stroke] {
stroke: var(--jp-brand-color2);
}
.jp-icon-brand3[stroke] {
stroke: var(--jp-brand-color3);
}
.jp-icon-brand4[stroke] {
stroke: var(--jp-brand-color4);
}
/* warn icon colors. Same for light and dark */
.jp-icon-warn0[fill] {
fill: var(--jp-warn-color0);
}
.jp-icon-warn1[fill] {
fill: var(--jp-warn-color1);
}
.jp-icon-warn2[fill] {
fill: var(--jp-warn-color2);
}
.jp-icon-warn3[fill] {
fill: var(--jp-warn-color3);
}
.jp-icon-warn0[stroke] {
stroke: var(--jp-warn-color0);
}
.jp-icon-warn1[stroke] {
stroke: var(--jp-warn-color1);
}
.jp-icon-warn2[stroke] {
stroke: var(--jp-warn-color2);
}
.jp-icon-warn3[stroke] {
stroke: var(--jp-warn-color3);
}
/* icon colors that contrast well with each other and most backgrounds */
.jp-icon-contrast0[fill] {
fill: var(--jp-icon-contrast-color0);
}
.jp-icon-contrast1[fill] {
fill: var(--jp-icon-contrast-color1);
}
.jp-icon-contrast2[fill] {
fill: var(--jp-icon-contrast-color2);
}
.jp-icon-contrast3[fill] {
fill: var(--jp-icon-contrast-color3);
}
.jp-icon-contrast0[stroke] {
stroke: var(--jp-icon-contrast-color0);
}
.jp-icon-contrast1[stroke] {
stroke: var(--jp-icon-contrast-color1);
}
.jp-icon-contrast2[stroke] {
stroke: var(--jp-icon-contrast-color2);
}
.jp-icon-contrast3[stroke] {
stroke: var(--jp-icon-contrast-color3);
}
.jp-icon-dot[fill] {
fill: var(--jp-warn-color0);
}
.jp-jupyter-icon-color[fill] {
fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
}
.jp-notebook-icon-color[fill] {
fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
}
.jp-json-icon-color[fill] {
fill: var(--jp-json-icon-color, var(--jp-warn-color1));
}
.jp-console-icon-color[fill] {
fill: var(--jp-console-icon-color, white);
}
.jp-console-icon-background-color[fill] {
fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
}
.jp-terminal-icon-color[fill] {
fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
}
.jp-terminal-icon-background-color[fill] {
fill: var(
--jp-terminal-icon-background-color,
var(--jp-inverse-layout-color2)
);
}
.jp-text-editor-icon-color[fill] {
fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
}
.jp-inspector-icon-color[fill] {
fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
}
/* CSS for icons in selected filebrowser listing items */
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
fill: #fff;
}
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
fill: var(--jp-brand-color1);
}
/* stylelint-disable selector-max-class, selector-max-compound-selectors */
/**
* TODO: come up with non css-hack solution for showing the busy icon on top
* of the close icon
* CSS for complex behavior of close icon of tabs in the main area tabbar
*/
.lm-DockPanel-tabBar
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
> .lm-TabBar-tabCloseIcon
> :not(:hover)
> .jp-icon3[fill] {
fill: none;
}
.lm-DockPanel-tabBar
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
> .lm-TabBar-tabCloseIcon
> :not(:hover)
> .jp-icon-busy[fill] {
fill: var(--jp-inverse-layout-color3);
}
/* stylelint-enable selector-max-class, selector-max-compound-selectors */
/* CSS for icons in status bar */
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
fill: #fff;
}
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
fill: var(--jp-brand-color1);
}
/* special handling for splash icon CSS. While the theme CSS reloads during
splash, the splash icon can loose theming. To prevent that, we set a
default for its color variable */
:root {
--jp-warn-color0: var(--md-orange-700);
}
/* not sure what to do with this one, used in filebrowser listing */
.jp-DragIcon {
margin-right: 4px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/**
* Support for alt colors for icons as inline SVG HTMLElements
*/
/* alt recolor the primary elements of an icon */
.jp-icon-alt .jp-icon0[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-alt .jp-icon1[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-alt .jp-icon2[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-alt .jp-icon3[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-alt .jp-icon4[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-alt .jp-icon0[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-alt .jp-icon1[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-alt .jp-icon2[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-alt .jp-icon3[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-alt .jp-icon4[stroke] {
stroke: var(--jp-layout-color4);
}
/* alt recolor the accent elements of an icon */
.jp-icon-alt .jp-icon-accent0[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon-alt .jp-icon-accent1[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon-alt .jp-icon-accent2[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon-alt .jp-icon-accent3[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon-alt .jp-icon-accent4[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon-alt .jp-icon-accent0[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon-alt .jp-icon-accent1[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon-alt .jp-icon-accent2[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon-alt .jp-icon-accent3[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon-alt .jp-icon-accent4[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
display: none !important;
}
/**
* Support for hover colors for icons as inline SVG HTMLElements
*/
/**
* regular colors
*/
/* recolor the primary elements of an icon */
.jp-icon-hover :hover .jp-icon0-hover[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon-hover :hover .jp-icon1-hover[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon-hover :hover .jp-icon2-hover[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon-hover :hover .jp-icon3-hover[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon-hover :hover .jp-icon4-hover[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon-hover :hover .jp-icon0-hover[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon-hover :hover .jp-icon1-hover[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon-hover :hover .jp-icon2-hover[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon-hover :hover .jp-icon3-hover[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon-hover :hover .jp-icon4-hover[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/* recolor the accent elements of an icon */
.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
stroke: var(--jp-layout-color4);
}
/* set the color of an icon to transparent */
.jp-icon-hover :hover .jp-icon-none-hover[fill] {
fill: none;
}
.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
stroke: none;
}
/**
* inverse colors
*/
/* inverse recolor the primary elements of an icon */
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
fill: var(--jp-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
fill: var(--jp-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
fill: var(--jp-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
fill: var(--jp-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
fill: var(--jp-layout-color4);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
stroke: var(--jp-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
stroke: var(--jp-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
stroke: var(--jp-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
stroke: var(--jp-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
stroke: var(--jp-layout-color4);
}
/* inverse recolor the accent elements of an icon */
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
fill: var(--jp-inverse-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
fill: var(--jp-inverse-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
fill: var(--jp-inverse-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
fill: var(--jp-inverse-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
fill: var(--jp-inverse-layout-color4);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
stroke: var(--jp-inverse-layout-color0);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
stroke: var(--jp-inverse-layout-color1);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
stroke: var(--jp-inverse-layout-color2);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
stroke: var(--jp-inverse-layout-color3);
}
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
stroke: var(--jp-inverse-layout-color4);
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-IFrame {
width: 100%;
height: 100%;
}
.jp-IFrame > iframe {
border: none;
}
/*
When drag events occur, `lm-mod-override-cursor` is added to the body.
Because iframes steal all cursor events, the following two rules are necessary
to suppress pointer events while resize drags are occurring. There may be a
better solution to this problem.
*/
body.lm-mod-override-cursor .jp-IFrame {
position: relative;
}
body.lm-mod-override-cursor .jp-IFrame::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: transparent;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2016, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-HoverBox {
position: fixed;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-FormGroup-content fieldset {
border: none;
padding: 0;
min-width: 0;
width: 100%;
}
/* stylelint-disable selector-max-type */
.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
font-size: var(--jp-content-font-size2);
border-color: var(--jp-input-border-color);
border-style: solid;
border-radius: var(--jp-border-radius);
border-width: 1px;
padding: 6px 8px;
background: none;
color: var(--jp-ui-font-color0);
height: inherit;
}
.jp-FormGroup-content fieldset input[type='checkbox'] {
position: relative;
top: 2px;
margin-left: 0;
}
.jp-FormGroup-content button.jp-mod-styled {
cursor: pointer;
}
.jp-FormGroup-content .checkbox label {
cursor: pointer;
font-size: var(--jp-content-font-size1);
}
.jp-FormGroup-content .jp-root > fieldset > legend {
display: none;
}
.jp-FormGroup-content .jp-root > fieldset > p {
display: none;
}
/** copy of `input.jp-mod-styled:focus` style */
.jp-FormGroup-content fieldset input:focus,
.jp-FormGroup-content fieldset select:focus {
-moz-outline-radius: unset;
outline: var(--jp-border-width) solid var(--md-blue-500);
outline-offset: -1px;
box-shadow: inset 0 0 4px var(--md-blue-300);
}
.jp-FormGroup-content fieldset input:hover:not(:focus),
.jp-FormGroup-content fieldset select:hover:not(:focus) {
background-color: var(--jp-border-color2);
}
/* stylelint-enable selector-max-type */
.jp-FormGroup-content .checkbox .field-description {
/* Disable default description field for checkbox:
because other widgets do not have description fields,
we add descriptions to each widget on the field level.
*/
display: none;
}
.jp-FormGroup-content #root__description {
display: none;
}
.jp-FormGroup-content .jp-modifiedIndicator {
width: 5px;
background-color: var(--jp-brand-color2);
margin-top: 0;
margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
flex-shrink: 0;
}
.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
background-color: var(--jp-error-color0);
margin-right: 0.5em;
}
/* RJSF ARRAY style */
.jp-arrayFieldWrapper legend {
font-size: var(--jp-content-font-size2);
color: var(--jp-ui-font-color0);
flex-basis: 100%;
padding: 4px 0;
font-weight: var(--jp-content-heading-font-weight);
border-bottom: 1px solid var(--jp-border-color2);
}
.jp-arrayFieldWrapper .field-description {
padding: 4px 0;
white-space: pre-wrap;
}
.jp-arrayFieldWrapper .array-item {
width: 100%;
border: 1px solid var(--jp-border-color2);
border-radius: 4px;
margin: 4px;
}
.jp-ArrayOperations {
display: flex;
margin-left: 8px;
}
.jp-ArrayOperationsButton {
margin: 2px;
}
.jp-ArrayOperationsButton .jp-icon3[fill] {
fill: var(--jp-ui-font-color0);
}
button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
cursor: not-allowed;
opacity: 0.5;
}
/* RJSF form validation error */
.jp-FormGroup-content .validationErrors {
color: var(--jp-error-color0);
}
/* Hide panel level error as duplicated the field level error */
.jp-FormGroup-content .panel.errors {
display: none;
}
/* RJSF normal content (settings-editor) */
.jp-FormGroup-contentNormal {
display: flex;
align-items: center;
flex-wrap: wrap;
}
.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
margin-left: 7px;
color: var(--jp-ui-font-color0);
}
.jp-FormGroup-contentNormal .jp-FormGroup-description {
flex-basis: 100%;
padding: 4px 7px;
}
.jp-FormGroup-contentNormal .jp-FormGroup-default {
flex-basis: 100%;
padding: 4px 7px;
}
.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
font-size: var(--jp-content-font-size1);
font-weight: normal;
min-width: 120px;
}
.jp-FormGroup-contentNormal fieldset:not(:first-child) {
margin-left: 7px;
}
.jp-FormGroup-contentNormal .field-array-of-string .array-item {
/* Display `jp-ArrayOperations` buttons side-by-side with content except
for small screens where flex-wrap will place them one below the other.
*/
display: flex;
align-items: center;
flex-wrap: wrap;
}
.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
margin-top: 2px;
}
/* RJSF compact content (metadata-form) */
.jp-FormGroup-content.jp-FormGroup-contentCompact {
width: 100%;
}
.jp-FormGroup-contentCompact .form-group {
display: flex;
padding: 0.5em 0.2em 0.5em 0;
}
.jp-FormGroup-contentCompact
.jp-FormGroup-compactTitle
.jp-FormGroup-description {
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color2);
}
.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
padding-bottom: 0.3em;
}
.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
width: 100%;
box-sizing: border-box;
}
.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
padding-bottom: 7px;
}
.jp-FormGroup-contentCompact
.jp-objectFieldWrapper
.jp-objectFieldWrapper
.form-group {
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
margin-top: 2px;
}
.jp-FormGroup-contentCompact ul.error-detail {
margin-block-start: 0.5em;
margin-block-end: 0.5em;
padding-inline-start: 1em;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
.jp-SidePanel {
display: flex;
flex-direction: column;
min-width: var(--jp-sidebar-min-width);
overflow-y: auto;
color: var(--jp-ui-font-color1);
background: var(--jp-layout-color1);
font-size: var(--jp-ui-font-size1);
}
.jp-SidePanel-header {
flex: 0 0 auto;
display: flex;
border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
font-size: var(--jp-ui-font-size0);
font-weight: 600;
letter-spacing: 1px;
margin: 0;
padding: 2px;
text-transform: uppercase;
}
.jp-SidePanel-toolbar {
flex: 0 0 auto;
}
.jp-SidePanel-content {
flex: 1 1 auto;
}
.jp-SidePanel-toolbar,
.jp-AccordionPanel-toolbar {
height: var(--jp-private-toolbar-height);
}
.jp-SidePanel-toolbar.jp-Toolbar-micro {
display: none;
}
.lm-AccordionPanel .jp-AccordionPanel-title {
box-sizing: border-box;
line-height: 25px;
margin: 0;
display: flex;
align-items: center;
background: var(--jp-layout-color1);
color: var(--jp-ui-font-color1);
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
box-shadow: var(--jp-toolbar-box-shadow);
font-size: var(--jp-ui-font-size0);
}
.jp-AccordionPanel-title {
cursor: pointer;
user-select: none;
-moz-user-select: none;
-webkit-user-select: none;
text-transform: uppercase;
}
.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
/* Title is rotated for horizontal accordion panel using CSS */
display: block;
transform-origin: top left;
transform: rotate(-90deg) translate(-100%);
}
.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
user-select: none;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
transform: rotate(-90deg);
margin: auto 0;
height: 16px;
}
.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
transform: rotate(0deg);
}
.lm-AccordionPanel .jp-AccordionPanel-toolbar {
background: none;
box-shadow: none;
border: none;
margin-left: auto;
}
.lm-AccordionPanel .lm-SplitPanel-handle:hover {
background: var(--jp-layout-color3);
}
.jp-text-truncated {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2017, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-Spinner {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
z-index: 10;
left: 0;
top: 0;
width: 100%;
height: 100%;
background: var(--jp-layout-color0);
outline: none;
}
.jp-SpinnerContent {
font-size: 10px;
margin: 50px auto;
text-indent: -9999em;
width: 3em;
height: 3em;
border-radius: 50%;
background: var(--jp-brand-color3);
background: linear-gradient(
to right,
#f37626 10%,
rgba(255, 255, 255, 0) 42%
);
position: relative;
animation: load3 1s infinite linear, fadeIn 1s;
}
.jp-SpinnerContent::before {
width: 50%;
height: 50%;
background: #f37626;
border-radius: 100% 0 0;
position: absolute;
top: 0;
left: 0;
content: '';
}
.jp-SpinnerContent::after {
background: var(--jp-layout-color0);
width: 75%;
height: 75%;
border-radius: 50%;
content: '';
margin: auto;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes load3 {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
button.jp-mod-styled {
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color0);
border: none;
box-sizing: border-box;
text-align: center;
line-height: 32px;
height: 32px;
padding: 0 12px;
letter-spacing: 0.8px;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
input.jp-mod-styled {
background: var(--jp-input-background);
height: 28px;
box-sizing: border-box;
border: var(--jp-border-width) solid var(--jp-border-color1);
padding-left: 7px;
padding-right: 7px;
font-size: var(--jp-ui-font-size2);
color: var(--jp-ui-font-color0);
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
input[type='checkbox'].jp-mod-styled {
appearance: checkbox;
-webkit-appearance: checkbox;
-moz-appearance: checkbox;
height: auto;
}
input.jp-mod-styled:focus {
border: var(--jp-border-width) solid var(--md-blue-500);
box-shadow: inset 0 0 4px var(--md-blue-300);
}
.jp-select-wrapper {
display: flex;
position: relative;
flex-direction: column;
padding: 1px;
background-color: var(--jp-layout-color1);
box-sizing: border-box;
margin-bottom: 12px;
}
.jp-select-wrapper:not(.multiple) {
height: 28px;
}
.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
box-shadow: var(--jp-input-box-shadow);
background-color: var(--jp-input-active-background);
}
select.jp-mod-styled:hover {
cursor: pointer;
color: var(--jp-ui-font-color0);
background-color: var(--jp-input-hover-background);
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
}
select.jp-mod-styled {
flex: 1 1 auto;
width: 100%;
font-size: var(--jp-ui-font-size2);
background: var(--jp-input-background);
color: var(--jp-ui-font-color0);
padding: 0 25px 0 8px;
border: var(--jp-border-width) solid var(--jp-input-border-color);
border-radius: 0;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
}
select.jp-mod-styled:not([multiple]) {
height: 32px;
}
select.jp-mod-styled[multiple] {
max-height: 200px;
overflow-y: auto;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-switch {
display: flex;
align-items: center;
padding-left: 4px;
padding-right: 4px;
font-size: var(--jp-ui-font-size1);
background-color: transparent;
color: var(--jp-ui-font-color1);
border: none;
height: 20px;
}
.jp-switch:hover {
background-color: var(--jp-layout-color2);
}
.jp-switch-label {
margin-right: 5px;
font-family: var(--jp-ui-font-family);
}
.jp-switch-track {
cursor: pointer;
background-color: var(--jp-switch-color, var(--jp-border-color1));
-webkit-transition: 0.4s;
transition: 0.4s;
border-radius: 34px;
height: 16px;
width: 35px;
position: relative;
}
.jp-switch-track::before {
content: '';
position: absolute;
height: 10px;
width: 10px;
margin: 3px;
left: 0;
background-color: var(--jp-ui-inverse-font-color1);
-webkit-transition: 0.4s;
transition: 0.4s;
border-radius: 50%;
}
.jp-switch[aria-checked='true'] .jp-switch-track {
background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
}
.jp-switch[aria-checked='true'] .jp-switch-track::before {
/* track width (35) - margins (3 + 3) - thumb width (10) */
left: 19px;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2016, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
:root {
--jp-private-toolbar-height: calc(
28px + var(--jp-border-width)
); /* leave 28px for content */
}
.jp-Toolbar {
color: var(--jp-ui-font-color1);
flex: 0 0 auto;
display: flex;
flex-direction: row;
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
box-shadow: var(--jp-toolbar-box-shadow);
background: var(--jp-toolbar-background);
min-height: var(--jp-toolbar-micro-height);
padding: 2px;
z-index: 8;
overflow-x: hidden;
}
/* Toolbar items */
.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
flex-grow: 1;
flex-shrink: 1;
}
.jp-Toolbar-item.jp-Toolbar-kernelStatus {
display: inline-block;
width: 32px;
background-repeat: no-repeat;
background-position: center;
background-size: 16px;
}
.jp-Toolbar > .jp-Toolbar-item {
flex: 0 0 auto;
display: flex;
padding-left: 1px;
padding-right: 1px;
font-size: var(--jp-ui-font-size1);
line-height: var(--jp-private-toolbar-height);
height: 100%;
}
/* Toolbar buttons */
/* This is the div we use to wrap the react component into a Widget */
div.jp-ToolbarButton {
color: transparent;
border: none;
box-sizing: border-box;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
padding: 0;
margin: 0;
}
button.jp-ToolbarButtonComponent {
background: var(--jp-layout-color1);
border: none;
box-sizing: border-box;
outline: none;
appearance: none;
-webkit-appearance: none;
-moz-appearance: none;
padding: 0 6px;
margin: 0;
height: 24px;
border-radius: var(--jp-border-radius);
display: flex;
align-items: center;
text-align: center;
font-size: 14px;
min-width: unset;
min-height: unset;
}
button.jp-ToolbarButtonComponent:disabled {
opacity: 0.4;
}
button.jp-ToolbarButtonComponent > span {
padding: 0;
flex: 0 0 auto;
}
button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
font-size: var(--jp-ui-font-size1);
line-height: 100%;
padding-left: 2px;
color: var(--jp-ui-font-color1);
font-family: var(--jp-ui-font-family);
}
#jp-main-dock-panel[data-mode='single-document']
.jp-MainAreaWidget
> .jp-Toolbar.jp-Toolbar-micro {
padding: 0;
min-height: 0;
}
#jp-main-dock-panel[data-mode='single-document']
.jp-MainAreaWidget
> .jp-Toolbar {
border: none;
box-shadow: none;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
.jp-WindowedPanel-outer {
position: relative;
overflow-y: auto;
}
.jp-WindowedPanel-inner {
position: relative;
}
.jp-WindowedPanel-window {
position: absolute;
left: 0;
right: 0;
overflow: visible;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/* Sibling imports */
body {
color: var(--jp-ui-font-color1);
font-size: var(--jp-ui-font-size1);
}
/* Disable native link decoration styles everywhere outside of dialog boxes */
a {
text-decoration: unset;
color: unset;
}
a:hover {
text-decoration: unset;
color: unset;
}
/* Accessibility for links inside dialog box text */
.jp-Dialog-content a {
text-decoration: revert;
color: var(--jp-content-link-color);
}
.jp-Dialog-content a:hover {
text-decoration: revert;
}
/* Styles for ui-components */
.jp-Button {
color: var(--jp-ui-font-color2);
border-radius: var(--jp-border-radius);
padding: 0 12px;
font-size: var(--jp-ui-font-size1);
/* Copy from blueprint 3 */
display: inline-flex;
flex-direction: row;
border: none;
cursor: pointer;
align-items: center;
justify-content: center;
text-align: left;
vertical-align: middle;
min-height: 30px;
min-width: 30px;
}
.jp-Button:disabled {
cursor: not-allowed;
}
.jp-Button:empty {
padding: 0 !important;
}
.jp-Button.jp-mod-small {
min-height: 24px;
min-width: 24px;
font-size: 12px;
padding: 0 7px;
}
/* Use our own theme for hover styles */
.jp-Button.jp-mod-minimal:hover {
background-color: var(--jp-layout-color2);
}
.jp-Button.jp-mod-minimal {
background: none;
}
.jp-InputGroup {
display: block;
position: relative;
}
.jp-InputGroup input {
box-sizing: border-box;
border: none;
border-radius: 0;
background-color: transparent;
color: var(--jp-ui-font-color0);
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
padding-bottom: 0;
padding-top: 0;
padding-left: 10px;
padding-right: 28px;
position: relative;
width: 100%;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
font-size: 14px;
font-weight: 400;
height: 30px;
line-height: 30px;
outline: none;
vertical-align: middle;
}
.jp-InputGroup input:focus {
box-shadow: inset 0 0 0 var(--jp-border-width)
var(--jp-input-active-box-shadow-color),
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
}
.jp-InputGroup input:disabled {
cursor: not-allowed;
resize: block;
background-color: var(--jp-layout-color2);
color: var(--jp-ui-font-color2);
}
.jp-InputGroup input:disabled ~ span {
cursor: not-allowed;
color: var(--jp-ui-font-color2);
}
.jp-InputGroup input::placeholder,
input::placeholder {
color: var(--jp-ui-font-color2);
}
.jp-InputGroupAction {
position: absolute;
bottom: 1px;
right: 0;
padding: 6px;
}
.jp-HTMLSelect.jp-DefaultStyle select {
background-color: initial;
border: none;
border-radius: 0;
box-shadow: none;
color: var(--jp-ui-font-color0);
display: block;
font-size: var(--jp-ui-font-size1);
font-family: var(--jp-ui-font-family);
height: 24px;
line-height: 14px;
padding: 0 25px 0 10px;
text-align: left;
-moz-appearance: none;
-webkit-appearance: none;
}
.jp-HTMLSelect.jp-DefaultStyle select:disabled {
background-color: var(--jp-layout-color2);
color: var(--jp-ui-font-color2);
cursor: not-allowed;
resize: block;
}
.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
cursor: not-allowed;
}
/* Use our own theme for hover and option styles */
/* stylelint-disable-next-line selector-max-type */
.jp-HTMLSelect.jp-DefaultStyle select:hover,
.jp-HTMLSelect.jp-DefaultStyle select > option {
background-color: var(--jp-layout-color2);
color: var(--jp-ui-font-color0);
}
select {
box-sizing: border-box;
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Styles
|----------------------------------------------------------------------------*/
.jp-StatusBar-Widget {
display: flex;
align-items: center;
background: var(--jp-layout-color2);
min-height: var(--jp-statusbar-height);
justify-content: space-between;
padding: 0 10px;
}
.jp-StatusBar-Left {
display: flex;
align-items: center;
flex-direction: row;
}
.jp-StatusBar-Middle {
display: flex;
align-items: center;
}
.jp-StatusBar-Right {
display: flex;
align-items: center;
flex-direction: row-reverse;
}
.jp-StatusBar-Item {
max-height: var(--jp-statusbar-height);
margin: 0 2px;
height: var(--jp-statusbar-height);
white-space: nowrap;
text-overflow: ellipsis;
color: var(--jp-ui-font-color1);
padding: 0 6px;
}
.jp-mod-highlighted:hover {
background-color: var(--jp-layout-color3);
}
.jp-mod-clicked {
background-color: var(--jp-brand-color1);
}
.jp-mod-clicked:hover {
background-color: var(--jp-brand-color0);
}
.jp-mod-clicked .jp-StatusBar-TextItem {
color: var(--jp-ui-inverse-font-color1);
}
.jp-StatusBar-HoverItem {
box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
}
.jp-StatusBar-TextItem {
font-size: var(--jp-ui-font-size1);
font-family: var(--jp-ui-font-family);
line-height: 24px;
color: var(--jp-ui-font-color1);
}
.jp-StatusBar-GroupItem {
display: flex;
align-items: center;
flex-direction: row;
}
.jp-Statusbar-ProgressCircle svg {
display: block;
margin: 0 auto;
width: 16px;
height: 24px;
align-self: normal;
}
.jp-Statusbar-ProgressCircle path {
fill: var(--jp-inverse-layout-color3);
}
.jp-Statusbar-ProgressBar-progress-bar {
height: 10px;
width: 100px;
border: solid 0.25px var(--jp-brand-color2);
border-radius: 3px;
overflow: hidden;
align-self: center;
}
.jp-Statusbar-ProgressBar-progress-bar > div {
background-color: var(--jp-brand-color2);
background-image: linear-gradient(
-45deg,
rgba(255, 255, 255, 0.2) 25%,
transparent 25%,
transparent 50%,
rgba(255, 255, 255, 0.2) 50%,
rgba(255, 255, 255, 0.2) 75%,
transparent 75%,
transparent
);
background-size: 40px 40px;
float: left;
width: 0%;
height: 100%;
font-size: 12px;
line-height: 14px;
color: #fff;
text-align: center;
animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
}
.jp-Statusbar-ProgressBar-progress-bar p {
color: var(--jp-ui-font-color1);
font-family: var(--jp-ui-font-family);
font-size: var(--jp-ui-font-size1);
line-height: 10px;
width: 100px;
}
@keyframes jp-Statusbar-ExecutionTime-progress-bar {
0% {
background-position: 0 0;
}
100% {
background-position: 40px 40px;
}
}
/*-----------------------------------------------------------------------------
| Copyright (c) Jupyter Development Team.
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
| Variables
|----------------------------------------------------------------------------*/
:root {
--jp-private-commandpalette-search-height: 28px;
}
/*-----------------------------------------------------------------------------
| Overall styles
|----------------------------------------------------------------------------*/
.lm-CommandPalette {
padding-bottom: 0;
color: var(--jp-ui-font-color1);
background: var(--jp-layout-color1);
/* This is needed so that all font sizing of children done in ems is
* relative to this base size */
font-size: var(--jp-ui-font-size1);
}
/*-----------------------------------------------------------------------------
| Modal variant
|----------------------------------------------------------------------------*/
.jp-ModalCommandPalette {
position: absolute;
z-index: 10000;
top: 38px;
left: 30%;
margin: 0;
padding: 4px;
width: 40%;
box-shadow: var(--jp-elevation-z4);
border-radius: 4px;
background: var(--jp-layout-color0);
}
.jp-ModalCommandPalette .lm-CommandPalette {
max-height: 40vh;
}
.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
display: none;
}
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
display: none;
}
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
margin-left: 4px;
margin-right: 4px;
}
.jp-ModalCommandPalette
.lm-CommandPalette
.lm-CommandPalette-item.lm-mod-disabled {
display: none;
}
/*-----------------------------------------------------------------------------
| Search
|----------------------------------------------------------------------------*/
.lm-CommandPalette-search {
padding: 4px;
background-color: var(--jp-layout-color1);
z-index: 2;
}
.lm-CommandPalette-wrapper {
overflow: overlay;
padding: 0 9px;
background-color: var(--jp-input-active-background);
height: 30px;
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
}
.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
}
.jp-SearchIconGroup {
color: white;
background-color: var(--jp-brand-color1);
position: absolute;
top: 4px;
right: 4px;
padding: 5px 5px 1px;
}
.jp-SearchIconGroup svg {
height: 20px;
width: 20px;
}
.jp-SearchIconGroup .jp-icon3[fill] {
fill: var(--jp-layout-color0);
}
.lm-CommandPalette-input {
background: transparent;
width: calc(100% - 18px);
float: left;
border: none;
outline: none;
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color0);
line-height: var(--jp-private-commandpalette-search-height);
}
.lm-CommandPalette-input::-webkit-input-placeholder,
.lm-CommandPalette-input::-moz-placeholder,
.lm-CommandPalette-input:-ms-input-placeholder {
color: var(--jp-ui-font-color2);
font-size: var(--jp-ui-font-size1);
}
/*-----------------------------------------------------------------------------
| Results
|----------------------------------------------------------------------------*/
.lm-CommandPalette-header:first-child {
margin-top: 0;
}
.lm-CommandPalette-header {
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
color: var(--jp-ui-font-color1);
cursor: pointer;
display: flex;
font-size: var(--jp-ui-font-size0);
font-weight: 600;
letter-spacing: 1px;
margin-top: 8px;
padding: 8px 0 8px 12px;
text-transform: uppercase;
}
.lm-CommandPalette-header.lm-mod-active {
background: var(--jp-layout-color2);
}
.lm-CommandPalette-header > mark {
background-color: transparent;
font-weight: bold;
color: var(--jp-ui-font-color1);
}
.lm-CommandPalette-item {
padding: 4px 12px 4px 4px;
color: var(--jp-ui-font-color1);
font-size: var(--jp-ui-font-size1);
font-weight: 400;
display: flex;
}
.lm-CommandPalette-item.lm-mod-disabled {
color: var(--jp-ui-font-color2);
}
.lm-CommandPalette-item.lm-mod-active {
color: var(--jp-ui-inverse-font-color1);
background: var(--jp-brand-color1);
}
.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
color: var(--jp-ui-inverse-font-color0);
}
.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
fill: var(--jp-layout-color0);
}
.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
color: var(--jp-ui-inverse-font-color1);
background: var(--jp-brand-color1);
}
.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
background: var(--jp-layout-color2);
}
.lm-CommandPalette-itemContent {
overflow: hidden;
}
.lm-CommandPalette-itemLabel > mark {
color: var(--jp-ui-font-color0);
background-color: transparent;
font-weight: bold;
}
.lm-CommandPalette-item.lm-mod-disabled mark {
color: var(--jp-ui-font-color2);
}
.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
margin: 0 4px 0 0;
position: relative;
width: 16px;
top: 2px;
flex: 0 0 auto;
}
.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
opacity: 0.6;
}
.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
flex: 0 0 auto;
}
.lm-CommandPalette-itemCaption {
display: none;
}
.lm-CommandPalette-content {
background-color: var(--jp-layout-color1);
}
.lm-CommandPalette-content:empty::after {
content: 'No results';
margin: auto;
margin-top: 20px;
width: 100px;
display: block;
font-size: var(--jp-ui-font-size2);
font-family: var(--jp-ui-font-family);
font-weight: lighter;
}
.lm-CommandPalette-emptyMessage {
text-align: center;
margin-top: 24px;
line-height: 1.32;
padding: 0 8px;
color: var(--jp-content-font-color3);
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2017, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-Dialog {
position: absolute;
z-index: 10000;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
top: 0;
left: 0;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
background: var(--jp-dialog-background);
}
.jp-Dialog-content {
display: flex;
flex-direction: column;
margin-left: auto;
margin-right: auto;
background: var(--jp-layout-color1);
padding: 24px 24px 12px;
min-width: 300px;
min-height: 150px;
max-width: 1000px;
max-height: 500px;
box-sizing: border-box;
box-shadow: var(--jp-elevation-z20);
word-wrap: break-word;
border-radius: var(--jp-border-radius);
/* This is needed so that all font sizing of children done in ems is
* relative to this base size */
font-size: var(--jp-ui-font-size1);
color: var(--jp-ui-font-color1);
resize: both;
}
.jp-Dialog-content.jp-Dialog-content-small {
max-width: 500px;
}
.jp-Dialog-button {
overflow: visible;
}
button.jp-Dialog-button:focus {
outline: 1px solid var(--jp-brand-color1);
outline-offset: 4px;
-moz-outline-radius: 0;
}
button.jp-Dialog-button:focus::-moz-focus-inner {
border: 0;
}
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
outline-offset: 4px;
-moz-outline-radius: 0;
}
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
}
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
}
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
}
button.jp-Dialog-close-button {
padding: 0;
height: 100%;
min-width: unset;
min-height: unset;
}
.jp-Dialog-header {
display: flex;
justify-content: space-between;
flex: 0 0 auto;
padding-bottom: 12px;
font-size: var(--jp-ui-font-size3);
font-weight: 400;
color: var(--jp-ui-font-color1);
}
.jp-Dialog-body {
display: flex;
flex-direction: column;
flex: 1 1 auto;
font-size: var(--jp-ui-font-size1);
background: var(--jp-layout-color1);
color: var(--jp-ui-font-color1);
overflow: auto;
}
.jp-Dialog-footer {
display: flex;
flex-direction: row;
justify-content: flex-end;
align-items: center;
flex: 0 0 auto;
margin-left: -12px;
margin-right: -12px;
padding: 12px;
}
.jp-Dialog-checkbox {
padding-right: 5px;
}
.jp-Dialog-checkbox > input:focus-visible {
outline: 1px solid var(--jp-input-active-border-color);
outline-offset: 1px;
}
.jp-Dialog-spacer {
flex: 1 1 auto;
}
.jp-Dialog-title {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.jp-Dialog-body > .jp-select-wrapper {
width: 100%;
}
.jp-Dialog-body > button {
padding: 0 16px;
}
.jp-Dialog-body > label {
line-height: 1.4;
color: var(--jp-ui-font-color0);
}
.jp-Dialog-button.jp-mod-styled:not(:last-child) {
margin-right: 12px;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
.jp-Input-Boolean-Dialog {
flex-direction: row-reverse;
align-items: end;
width: 100%;
}
.jp-Input-Boolean-Dialog > label {
flex: 1 1 auto;
}
/*-----------------------------------------------------------------------------
| Copyright (c) 2014-2016, Jupyter Development Team.
|
| Distributed under the terms of the Modified BSD License.
|----------------------------------------------------------------------------*/
.jp-MainAreaWidget > :focus {
outline: none;
}
.jp-MainAreaWidget .jp-MainAreaWidget-error {
padding: 6px;
}
.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
width: auto;
padding: 10px;
background: var(--jp-error-color3);
border: var(--jp-border-width) solid var(--jp-error-color1);
border-radius: var(--jp-border-radius);
color: var(--jp-ui-font-color1);
font-size: var(--jp-ui-font-size1);
white-space: pre-wrap;
word-wrap: break-word;
}
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
/**
* google-material-color v1.2.6
* https://github.com/danlevan/google-material-color
*/
:root {
--md-red-50: #ffebee;
--md-red-100: #ffcdd2;
--md-red-200: #ef9a9a;
--md-red-300: #e57373;
--md-red-400: #ef5350;
--md-red-500: #f44336;
--md-red-600: #e53935;
--md-red-700: #d32f2f;
--md-red-800: #c62828;
--md-red-900: #b71c1c;
--md-red-A100: #ff8a80;
--md-red-A200: #ff5252;
--md-red-A400: #ff1744;
--md-red-A700: #d50000;
--md-pink-50: #fce4ec;
--md-pink-100: #f8bbd0;
--md-pink-200: #f48fb1;
--md-pink-300: #f06292;
--md-pink-400: #ec407a;
--md-pink-500: #e91e63;
--md-pink-600: #d81b60;
--md-pink-700: #c2185b;
--md-pink-800: #ad1457;
--md-pink-900: #880e4f;
--md-pink-A100: #ff80ab;
--md-pink-A200: #ff4081;
--md-pink-A400: #f50057;
--md-pink-A700: #c51162;
--md-purple-50: #f3e5f5;
--md-purple-100: #e1bee7;
--md-purple-200: #ce93d8;
--md-purple-300: #ba68c8;
--md-purple-400: #ab47bc;
--md-purple-500: #9c27b0;
--md-purple-600: #8e24aa;
--md-purple-700: #7b1fa2;
--md-purple-800: #6a1b9a;
--md-purple-900: #4a148c;
--md-purple-A100: #ea80fc;
--md-purple-A200: #e040fb;
--md-purple-A400: #d500f9;
--md-purple-A700: #a0f;
--md-deep-purple-50: #ede7f6;
--md-deep-purple-100: #d1c4e9;
--md-deep-purple-200: #b39ddb;
--md-deep-purple-300: #9575cd;
--md-deep-purple-400: #7e57c2;
--md-deep-purple-500: #673ab7;
--md-deep-purple-600: #5e35b1;
--md-deep-purple-700: #512da8;
--md-deep-purple-800: #4527a0;
--md-deep-purple-900: #311b92;
--md-deep-purple-A100: #b388ff;
--md-deep-purple-A200: #7c4dff;
--md-deep-purple-A400: #651fff;
--md-deep-purple-A700: #6200ea;
--md-indigo-50: #e8eaf6;
--md-indigo-100: #c5cae9;
--md-indigo-200: #9fa8da;
--md-indigo-300: #7986cb;
--md-indigo-400: #5c6bc0;
--md-indigo-500: #3f51b5;
--md-indigo-600: #3949ab;
--md-indigo-700: #303f9f;
--md-indigo-800: #283593;
--md-indigo-900: #1a237e;
--md-indigo-A100: #8c9eff;
--md-indigo-A200: #536dfe;
--md-indigo-A400: #3d5afe;
--md-indigo-A700: #304ffe;
--md-blue-50: #e3f2fd;
--md-blue-100: #bbdefb;
--md-blue-200: #90caf9;
--md-blue-300: #64b5f6;
--md-blue-400: #42a5f5;
--md-blue-500: #2196f3;
--md-blue-600: #1e88e5;
--md-blue-700: #1976d2;
--md-blue-800: #1565c0;
--md-blue-900: #0d47a1;
--md-blue-A100: #82b1ff;
--md-blue-A200: #448aff;
--md-blue-A400: #2979ff;
--md-blue-A700: #2962ff;
--md-light-blue-50: #e1f5fe;
--md-light-blue-100: #b3e5fc;
--md-light-blue-200: #81d4fa;
--md-light-blue-300: #4fc3f7;
--md-light-blue-400: #29b6f6;
--md-light-blue-500: #03a9f4;
--md-light-blue-600: #039be5;
--md-light-blue-700: #0288d1;
--md-light-blue-800: #0277bd;
--md-light-blue-900: #01579b;
--md-light-blue-A100: #80d8ff;
--md-light-blue-A200: #40c4ff;
--md-light-blue-A400: #00b0ff;
--md-light-blue-A700: #0091ea;
--md-cyan-50: #e0f7fa;
--md-cyan-100: #b2ebf2;
--md-cyan-200: #80deea;
--md-cyan-300: #4dd0e1;
--md-cyan-400: #26c6da;
--md-cyan-500: #00bcd4;
--md-cyan-600: #00acc1;
--md-cyan-700: #0097a7;
--md-cyan-800: #00838f;
--md-cyan-900: #006064;
--md-cyan-A100: #84ffff;
--md-cyan-A200: #18ffff;
--md-cyan-A400: #00e5ff;
--md-cyan-A700: #00b8d4;
--md-teal-50: #e0f2f1;
--md-teal-100: #b2dfdb;
--md-teal-200: #80cbc4;
--md-teal-300: #4db6ac;
--md-teal-400: #26a69a;
--md-teal-500: #009688;
--md-teal-600: #00897b;
--md-teal-700: #00796b;
--md-teal-800: #00695c;
--md-teal-900: #004d40;
--md-teal-A100: #a7ffeb;
--md-teal-A200: #64ffda;
--md-teal-A400: #1de9b6;
--md-teal-A700: #00bfa5;
--md-green-50: #e8f5e9;
--md-green-100: #
gitextract_p929mom5/
├── .gitignore
├── LICENSE
├── README.md
├── doc/
│ ├── build_doc.sh
│ ├── examples/
│ │ ├── four_random_layouts.mcd
│ │ ├── landing.mcd
│ │ ├── option_syntax_1.abnf
│ │ └── option_syntax_2.abnf
│ ├── fr_cheat_sheet.md
│ ├── fr_refman.html
│ ├── fr_refman.ipynb
│ ├── readme/
│ │ └── ccp.mcd
│ ├── tutorial.ipynb
│ └── tutorial_lib/
│ ├── tuto-0000.mcd
│ ├── tuto-0001.mcd
│ ├── tuto-0002.mcd
│ ├── tuto-0003.mcd
│ ├── tuto-0004.mcd
│ ├── tuto-0005.mcd
│ ├── tuto-0006.mcd
│ ├── tuto-0007.mcd
│ ├── tuto-0008.mcd
│ ├── tuto-0009.mcd
│ ├── tuto-0010.mcd
│ ├── tuto-0011.mcd
│ ├── tuto-0012.mcd
│ ├── tuto-0013.mcd
│ ├── tuto-0014.mcd
│ ├── tuto-0015.mcd
│ ├── tuto-0016.mcd
│ ├── tuto-0017.mcd
│ ├── tuto-0018.mcd
│ ├── tuto-0019.mcd
│ ├── tuto-0020.mcd
│ ├── tuto-0021.mcd
│ ├── tuto-0022.mcd
│ ├── tuto-0023.mcd
│ ├── tuto-0024.mcd
│ ├── tuto-0025.mcd
│ ├── tuto-0026.mcd
│ ├── tuto-0027.mcd
│ ├── tuto-0028.mcd
│ ├── tuto-0029.mcd
│ ├── tuto-0030.mcd
│ ├── tuto-0031.mcd
│ ├── tuto-0032.mcd
│ ├── tuto-0033.mcd
│ ├── tuto-0034.mcd
│ ├── tuto-0035.mcd
│ ├── tuto-0036.mcd
│ ├── tuto-0037.mcd
│ └── tuto-0038.mcd
├── index.php
├── laowantong.vscode-mocodo/
│ ├── .vscode/
│ │ └── launch.json
│ ├── .vscodeignore
│ ├── LICENSE
│ ├── README.md
│ ├── highlighting_zoo.mcd
│ ├── language-configuration.json
│ ├── package.json
│ ├── syntaxes/
│ │ ├── mocodo.tmLanguage.json
│ │ └── mocodo.tmLanguage.yaml
│ └── vsc-extension-quickstart.md
├── mocodo/
│ ├── __init__.py
│ ├── __main__.py
│ ├── api.py
│ ├── argument_parser.py
│ ├── association.py
│ ├── attribute.py
│ ├── common.py
│ ├── constraint.py
│ ├── convert/
│ │ ├── __init__.py
│ │ ├── _ast.py
│ │ ├── _chen.py
│ │ ├── _crow.py
│ │ ├── _data_dict.py
│ │ ├── _prompt.py
│ │ ├── _share.py
│ │ ├── _uml.py
│ │ ├── crow_gv.py
│ │ ├── crow_mmd.py
│ │ ├── read_template.py
│ │ └── relations.py
│ ├── dev/
│ │ ├── json_to_yaml_templates.py
│ │ ├── update_sql_reserved_words.py
│ │ └── update_transfo_metadata.py
│ ├── diagram_link.py
│ ├── entity.py
│ ├── font_metrics.py
│ ├── grid.py
│ ├── guess_title.py
│ ├── inheritance.py
│ ├── leg.py
│ ├── magic.py
│ ├── mcd.py
│ ├── mcd_to_svg.py
│ ├── mocodo_error.py
│ ├── parse_mcd.py
│ ├── phantom.py
│ ├── resources/
│ │ ├── colors/
│ │ │ ├── blank.json
│ │ │ ├── brewer+1.json
│ │ │ ├── brewer+2.json
│ │ │ ├── brewer+3.json
│ │ │ ├── brewer+4.json
│ │ │ ├── brewer+5.json
│ │ │ ├── brewer+6.json
│ │ │ ├── brewer+7.json
│ │ │ ├── brewer+8.json
│ │ │ ├── brewer+9.json
│ │ │ ├── brewer-1.json
│ │ │ ├── brewer-2.json
│ │ │ ├── brewer-3.json
│ │ │ ├── brewer-4.json
│ │ │ ├── brewer-5.json
│ │ │ ├── brewer-6.json
│ │ │ ├── brewer-7.json
│ │ │ ├── brewer-8.json
│ │ │ ├── brewer-9.json
│ │ │ ├── bw-alpha.json
│ │ │ ├── bw.json
│ │ │ ├── dark-desert.json
│ │ │ ├── dark-ocean.json
│ │ │ ├── dark-pond.json
│ │ │ ├── dark.json
│ │ │ ├── desert.json
│ │ │ ├── gray.json
│ │ │ ├── keepsake.json
│ │ │ ├── mondrian.json
│ │ │ ├── ocean.json
│ │ │ ├── pond.json
│ │ │ ├── wb.json
│ │ │ └── xinnian.json
│ │ ├── default_datatypes_en.tsv
│ │ ├── default_datatypes_fr.tsv
│ │ ├── font_metrics.json
│ │ ├── grammar.lark
│ │ ├── i18n/
│ │ │ ├── messages_de.mo
│ │ │ ├── messages_fr.mo
│ │ │ ├── messages_fr.po
│ │ │ └── messages_zh.mo
│ │ ├── lorem/
│ │ │ ├── disparition.txt
│ │ │ ├── en4.txt
│ │ │ ├── fr.txt
│ │ │ ├── fr5.txt
│ │ │ └── lorem.txt
│ │ ├── pristine_sandbox.mcd
│ │ ├── prompts/
│ │ │ └── chat/
│ │ │ ├── cards_examples/
│ │ │ │ ├── 1_input.mcd
│ │ │ │ ├── 1_output.mcd
│ │ │ │ ├── 2_input.mcd
│ │ │ │ ├── 2_output.mcd
│ │ │ │ ├── 3_input.mcd
│ │ │ │ └── 3_output.mcd
│ │ │ ├── cards_fr.md
│ │ │ ├── types_examples/
│ │ │ │ ├── 1_input.mcd
│ │ │ │ ├── 1_output.mcd
│ │ │ │ ├── 2_input.mcd
│ │ │ │ └── 2_output.mcd
│ │ │ └── types_fr.md
│ │ ├── relation_templates/
│ │ │ ├── _index.json
│ │ │ ├── d2.yaml
│ │ │ ├── dbml-b.yaml
│ │ │ ├── dbml.yaml
│ │ │ ├── ddl.yaml
│ │ │ ├── debug.yaml
│ │ │ ├── dependencies.yaml
│ │ │ ├── diagram-c.yaml
│ │ │ ├── diagram.yaml
│ │ │ ├── html-b.yaml
│ │ │ ├── html-bc.yaml
│ │ │ ├── html-bce.yaml
│ │ │ ├── html-be.yaml
│ │ │ ├── html-c.yaml
│ │ │ ├── html-ce.yaml
│ │ │ ├── html-e.yaml
│ │ │ ├── html.yaml
│ │ │ ├── latex-b.yaml
│ │ │ ├── latex-bc.yaml
│ │ │ ├── latex-bce.yaml
│ │ │ ├── latex-be.yaml
│ │ │ ├── latex-c.yaml
│ │ │ ├── latex-ce.yaml
│ │ │ ├── latex-e.yaml
│ │ │ ├── latex.yaml
│ │ │ ├── markdown-b.yaml
│ │ │ ├── markdown-bc.yaml
│ │ │ ├── markdown-bce.yaml
│ │ │ ├── markdown-be.yaml
│ │ │ ├── markdown-c.yaml
│ │ │ ├── markdown-ce.yaml
│ │ │ ├── markdown-e.yaml
│ │ │ ├── markdown.yaml
│ │ │ ├── md-b.yaml
│ │ │ ├── md-bc.yaml
│ │ │ ├── md-bce.yaml
│ │ │ ├── md-be.yaml
│ │ │ ├── md-c.yaml
│ │ │ ├── md-ce.yaml
│ │ │ ├── md-e.yaml
│ │ │ ├── md.yaml
│ │ │ ├── mld-b.yaml
│ │ │ ├── mld-bc.yaml
│ │ │ ├── mld-bce.yaml
│ │ │ ├── mld-be.yaml
│ │ │ ├── mld-c.yaml
│ │ │ ├── mld-ce.yaml
│ │ │ ├── mld-e.yaml
│ │ │ ├── mld.yaml
│ │ │ ├── ms_sql-b.yaml
│ │ │ ├── ms_sql.yaml
│ │ │ ├── mssql-b.yaml
│ │ │ ├── mssql.yaml
│ │ │ ├── mysql-b.yaml
│ │ │ ├── mysql.yaml
│ │ │ ├── oracle-b.yaml
│ │ │ ├── oracle.yaml
│ │ │ ├── oracle_db-b.yaml
│ │ │ ├── oracle_db.yaml
│ │ │ ├── postgres-b.yaml
│ │ │ ├── postgres.yaml
│ │ │ ├── postgresql-b.yaml
│ │ │ ├── postgresql.yaml
│ │ │ ├── sql.yaml
│ │ │ ├── sql_server-b.yaml
│ │ │ ├── sql_server.yaml
│ │ │ ├── sqlite-b.yaml
│ │ │ ├── sqlite.yaml
│ │ │ ├── sqlserver-b.yaml
│ │ │ ├── sqlserver.yaml
│ │ │ ├── tex-b.yaml
│ │ │ ├── tex-bc.yaml
│ │ │ ├── tex-bce.yaml
│ │ │ ├── tex-be.yaml
│ │ │ ├── tex-c.yaml
│ │ │ ├── tex-ce.yaml
│ │ │ ├── tex-e.yaml
│ │ │ ├── tex.yaml
│ │ │ ├── text-b.yaml
│ │ │ ├── text-bc.yaml
│ │ │ ├── text-bce.yaml
│ │ │ ├── text-be.yaml
│ │ │ ├── text-c.yaml
│ │ │ ├── text-ce.yaml
│ │ │ ├── text-e.yaml
│ │ │ ├── text.yaml
│ │ │ ├── txt-b.yaml
│ │ │ ├── txt-bc.yaml
│ │ │ ├── txt-bce.yaml
│ │ │ ├── txt-be.yaml
│ │ │ ├── txt-c.yaml
│ │ │ ├── txt-ce.yaml
│ │ │ ├── txt-e.yaml
│ │ │ └── txt.yaml
│ │ ├── rendering_services.json
│ │ ├── shapes/
│ │ │ ├── arial.json
│ │ │ ├── copperplate.json
│ │ │ ├── georgia.json
│ │ │ ├── mondrian.json
│ │ │ ├── sans.json
│ │ │ ├── serif.json
│ │ │ ├── times.json
│ │ │ ├── trebuchet.json
│ │ │ ├── verdana.json
│ │ │ └── xinnian.json
│ │ └── transformations.json
│ ├── rewrite/
│ │ ├── __init__.py
│ │ ├── _arrange.py
│ │ ├── _drain.py
│ │ ├── _drown.py
│ │ ├── _explode.py
│ │ ├── _grow.py
│ │ ├── _split.py
│ │ ├── arrange_bb.py
│ │ ├── arrange_ga.py
│ │ ├── arrows.py
│ │ ├── cards.py
│ │ ├── constraints.py
│ │ ├── cross.py
│ │ ├── damerau_levenshtein.py
│ │ ├── fitness.py
│ │ ├── guess_entities.py
│ │ ├── obfuscate.py
│ │ ├── op_tk.py
│ │ └── types.py
│ └── tools/
│ ├── __init__.py
│ ├── graphviz_tools.py
│ ├── load_mini_yaml.py
│ ├── parser_tools.py
│ ├── pluralize_fr.py
│ ├── string_tools.py
│ └── various.py
├── pyproject.toml
├── setup.py
├── test/
│ ├── __init__.py
│ ├── launch_tests.sh
│ ├── test_api.py
│ ├── test_argument_parser.py
│ ├── test_arrange_bb.py
│ ├── test_arrange_ga.py
│ ├── test_association.py
│ ├── test_convert_chen.py
│ ├── test_cross.py
│ ├── test_data/
│ │ ├── small_pool.txt
│ │ └── templates/
│ │ ├── bad_array_element.yaml
│ │ ├── bad_circular_1.yaml
│ │ ├── bad_circular_2.yaml
│ │ ├── bad_no_order.yaml
│ │ ├── bad_non_increasing_order.yaml
│ │ ├── bad_non_numeric_order.yaml
│ │ ├── bad_not_an_object.yaml
│ │ ├── bad_object_value.yaml
│ │ ├── child.yaml
│ │ ├── expected_child.yaml
│ │ ├── expected_grandchild.yaml
│ │ ├── grandchild.yaml
│ │ └── root.yaml
│ ├── test_data_dict.py
│ ├── test_entity.py
│ ├── test_fitness.py
│ ├── test_grid.py
│ ├── test_guess_title.py
│ ├── test_inheritance.py
│ ├── test_mcd.py
│ ├── test_mcd_dimensions.py
│ ├── test_parser_tools.py
│ ├── test_parser_tools_snapshot.txt
│ ├── test_read_template.py
│ ├── test_relations.py
│ ├── test_rewrite_cards.py
│ ├── test_rewrite_decompose.py
│ ├── test_rewrite_grow.py
│ ├── test_rewrite_labels.py
│ ├── test_rewrite_types.py
│ ├── test_string_tools.py
│ ├── test_zoo.py
│ └── zoo/
│ ├── alt/
│ │ ├── _alt_0.mcd
│ │ ├── ddl/
│ │ │ ├── alt_0_ddl.d2
│ │ │ ├── alt_0_ddl.dbml
│ │ │ └── alt_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── alt_0_erd_chen.gv
│ │ │ ├── alt_0_erd_chen.txt
│ │ │ ├── alt_0_erd_crow.gv
│ │ │ ├── alt_0_erd_crow.mmd
│ │ │ └── alt_0_uml.puml
│ │ ├── mld/
│ │ │ ├── alt_0_debug.tsv
│ │ │ ├── alt_0_dependencies.gv
│ │ │ ├── alt_0_mld.html
│ │ │ ├── alt_0_mld.mcd
│ │ │ ├── alt_0_mld.md
│ │ │ ├── alt_0_mld.tex
│ │ │ └── alt_0_mld.txt
│ │ └── rewritten/
│ │ ├── alt_0_rw_create_df_arrows=across.mcd
│ │ ├── alt_0_rw_drain.mcd
│ │ ├── alt_0_rw_drown.mcd
│ │ ├── alt_0_rw_explode_arity=2,weak.mcd
│ │ ├── alt_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── alt_0_rw_explode_arity=2.5.mcd
│ │ ├── alt_0_rw_explode_arity=2.mcd
│ │ ├── alt_0_rw_explode_arity=3,weak.mcd
│ │ ├── alt_0_rw_explode_arity=3.mcd
│ │ └── alt_0_rw_split.mcd
│ ├── basic/
│ │ ├── _basic_0.mcd
│ │ ├── _basic_1.mcd
│ │ ├── _basic_2.mcd
│ │ ├── ddl/
│ │ │ ├── basic_0_ddl.d2
│ │ │ ├── basic_0_ddl.dbml
│ │ │ ├── basic_0_ddl.sql
│ │ │ ├── basic_1_ddl.d2
│ │ │ ├── basic_1_ddl.dbml
│ │ │ ├── basic_1_ddl.sql
│ │ │ ├── basic_2_ddl.d2
│ │ │ ├── basic_2_ddl.dbml
│ │ │ └── basic_2_ddl.sql
│ │ ├── exported/
│ │ │ ├── basic_0_erd_chen.gv
│ │ │ ├── basic_0_erd_chen.txt
│ │ │ ├── basic_0_erd_crow.gv
│ │ │ ├── basic_0_erd_crow.mmd
│ │ │ ├── basic_0_uml.puml
│ │ │ ├── basic_1_erd_chen.gv
│ │ │ ├── basic_1_erd_chen.txt
│ │ │ ├── basic_1_erd_crow.gv
│ │ │ ├── basic_1_erd_crow.mmd
│ │ │ ├── basic_1_uml.puml
│ │ │ ├── basic_2_erd_chen.gv
│ │ │ ├── basic_2_erd_chen.txt
│ │ │ ├── basic_2_erd_crow.gv
│ │ │ ├── basic_2_erd_crow.mmd
│ │ │ └── basic_2_uml.puml
│ │ ├── mld/
│ │ │ ├── basic_0_debug.tsv
│ │ │ ├── basic_0_dependencies.gv
│ │ │ ├── basic_0_mld.html
│ │ │ ├── basic_0_mld.mcd
│ │ │ ├── basic_0_mld.md
│ │ │ ├── basic_0_mld.tex
│ │ │ ├── basic_0_mld.txt
│ │ │ ├── basic_1_debug.tsv
│ │ │ ├── basic_1_dependencies.gv
│ │ │ ├── basic_1_mld.html
│ │ │ ├── basic_1_mld.mcd
│ │ │ ├── basic_1_mld.md
│ │ │ ├── basic_1_mld.tex
│ │ │ ├── basic_1_mld.txt
│ │ │ ├── basic_2_debug.tsv
│ │ │ ├── basic_2_dependencies.gv
│ │ │ ├── basic_2_mld.html
│ │ │ ├── basic_2_mld.mcd
│ │ │ ├── basic_2_mld.md
│ │ │ ├── basic_2_mld.tex
│ │ │ └── basic_2_mld.txt
│ │ └── rewritten/
│ │ ├── basic_0_rw_create_df_arrows=across.mcd
│ │ ├── basic_0_rw_drain.mcd
│ │ ├── basic_0_rw_drown.mcd
│ │ ├── basic_0_rw_explode_arity=2,weak.mcd
│ │ ├── basic_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── basic_0_rw_explode_arity=2.5.mcd
│ │ ├── basic_0_rw_explode_arity=2.mcd
│ │ ├── basic_0_rw_explode_arity=3,weak.mcd
│ │ ├── basic_0_rw_explode_arity=3.mcd
│ │ ├── basic_0_rw_split.mcd
│ │ ├── basic_1_rw_create_df_arrows=across.mcd
│ │ ├── basic_1_rw_drain.mcd
│ │ ├── basic_1_rw_drown.mcd
│ │ ├── basic_1_rw_explode_arity=2,weak.mcd
│ │ ├── basic_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── basic_1_rw_explode_arity=2.5.mcd
│ │ ├── basic_1_rw_explode_arity=2.mcd
│ │ ├── basic_1_rw_explode_arity=3,weak.mcd
│ │ ├── basic_1_rw_explode_arity=3.mcd
│ │ ├── basic_1_rw_split.mcd
│ │ ├── basic_2_rw_create_df_arrows=across.mcd
│ │ ├── basic_2_rw_drain.mcd
│ │ ├── basic_2_rw_drown.mcd
│ │ ├── basic_2_rw_explode_arity=2,weak.mcd
│ │ ├── basic_2_rw_explode_arity=2.5,weak.mcd
│ │ ├── basic_2_rw_explode_arity=2.5.mcd
│ │ ├── basic_2_rw_explode_arity=2.mcd
│ │ ├── basic_2_rw_explode_arity=3,weak.mcd
│ │ ├── basic_2_rw_explode_arity=3.mcd
│ │ └── basic_2_rw_split.mcd
│ ├── cluster_NN1/
│ │ ├── _cluster_NN1_0.mcd
│ │ ├── ddl/
│ │ │ ├── cluster_NN1_0_ddl.d2
│ │ │ ├── cluster_NN1_0_ddl.dbml
│ │ │ └── cluster_NN1_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── cluster_NN1_0_erd_chen.gv
│ │ │ ├── cluster_NN1_0_erd_chen.txt
│ │ │ ├── cluster_NN1_0_erd_crow.mmd
│ │ │ └── cluster_NN1_0_uml.puml
│ │ ├── mld/
│ │ │ ├── cluster_NN1_0_debug.tsv
│ │ │ ├── cluster_NN1_0_dependencies.gv
│ │ │ ├── cluster_NN1_0_mld.html
│ │ │ ├── cluster_NN1_0_mld.mcd
│ │ │ ├── cluster_NN1_0_mld.md
│ │ │ ├── cluster_NN1_0_mld.tex
│ │ │ └── cluster_NN1_0_mld.txt
│ │ └── rewritten/
│ │ ├── cluster_NN1_0_rw_create_df_arrows=across.mcd
│ │ ├── cluster_NN1_0_rw_drain.mcd
│ │ ├── cluster_NN1_0_rw_drown.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2,weak.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2.5.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=2.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=3,weak.mcd
│ │ ├── cluster_NN1_0_rw_explode_arity=3.mcd
│ │ └── cluster_NN1_0_rw_split.mcd
│ ├── complex/
│ │ ├── _complex.mcd
│ │ ├── ddl/
│ │ │ ├── complex_ddl.d2
│ │ │ ├── complex_ddl.dbml
│ │ │ └── complex_ddl.sql
│ │ ├── exported/
│ │ │ ├── complex_erd_chen.gv
│ │ │ ├── complex_erd_chen.txt
│ │ │ ├── complex_erd_crow.mmd
│ │ │ └── complex_uml.puml
│ │ ├── mld/
│ │ │ ├── complex_debug.tsv
│ │ │ ├── complex_dependencies.gv
│ │ │ ├── complex_mld.html
│ │ │ ├── complex_mld.mcd
│ │ │ ├── complex_mld.md
│ │ │ ├── complex_mld.tex
│ │ │ └── complex_mld.txt
│ │ └── rewritten/
│ │ ├── complex_rw_create_df_arrows=across.mcd
│ │ ├── complex_rw_drain.mcd
│ │ ├── complex_rw_drown.mcd
│ │ ├── complex_rw_explode_arity=2,weak.mcd
│ │ ├── complex_rw_explode_arity=2.5,weak.mcd
│ │ ├── complex_rw_explode_arity=2.5.mcd
│ │ ├── complex_rw_explode_arity=2.mcd
│ │ ├── complex_rw_explode_arity=3,weak.mcd
│ │ ├── complex_rw_explode_arity=3.mcd
│ │ └── complex_rw_split.mcd
│ ├── drain/
│ │ ├── _drain.mcd
│ │ ├── ddl/
│ │ │ ├── drain_ddl.d2
│ │ │ ├── drain_ddl.dbml
│ │ │ └── drain_ddl.sql
│ │ ├── exported/
│ │ │ ├── drain_erd_chen.gv
│ │ │ ├── drain_erd_chen.txt
│ │ │ ├── drain_erd_crow.gv
│ │ │ ├── drain_erd_crow.mmd
│ │ │ └── drain_uml.puml
│ │ ├── mld/
│ │ │ ├── drain_debug.tsv
│ │ │ ├── drain_dependencies.gv
│ │ │ ├── drain_mld.html
│ │ │ ├── drain_mld.mcd
│ │ │ ├── drain_mld.md
│ │ │ ├── drain_mld.tex
│ │ │ └── drain_mld.txt
│ │ └── rewritten/
│ │ ├── drain_rw_create_df_arrows=across.mcd
│ │ ├── drain_rw_drain.mcd
│ │ ├── drain_rw_drown.mcd
│ │ ├── drain_rw_explode_arity=2,weak.mcd
│ │ ├── drain_rw_explode_arity=2.5,weak.mcd
│ │ ├── drain_rw_explode_arity=2.5.mcd
│ │ ├── drain_rw_explode_arity=2.mcd
│ │ ├── drain_rw_explode_arity=3,weak.mcd
│ │ ├── drain_rw_explode_arity=3.mcd
│ │ └── drain_rw_split.mcd
│ ├── empty_attrs/
│ │ ├── _empty_attrs_0.mcd
│ │ ├── ddl/
│ │ │ ├── empty_attrs_0_ddl.d2
│ │ │ ├── empty_attrs_0_ddl.dbml
│ │ │ └── empty_attrs_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── empty_attrs_0_erd_chen.gv
│ │ │ ├── empty_attrs_0_erd_chen.txt
│ │ │ ├── empty_attrs_0_erd_crow.gv
│ │ │ ├── empty_attrs_0_erd_crow.mmd
│ │ │ └── empty_attrs_0_uml.puml
│ │ ├── mld/
│ │ │ ├── empty_attrs_0_debug.tsv
│ │ │ ├── empty_attrs_0_dependencies.gv
│ │ │ ├── empty_attrs_0_mld.html
│ │ │ ├── empty_attrs_0_mld.mcd
│ │ │ ├── empty_attrs_0_mld.md
│ │ │ ├── empty_attrs_0_mld.tex
│ │ │ └── empty_attrs_0_mld.txt
│ │ └── rewritten/
│ │ ├── empty_attrs_0_rw_create_df_arrows=across.mcd
│ │ ├── empty_attrs_0_rw_drain.mcd
│ │ ├── empty_attrs_0_rw_drown.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2,weak.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2.5.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=2.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=3,weak.mcd
│ │ ├── empty_attrs_0_rw_explode_arity=3.mcd
│ │ └── empty_attrs_0_rw_split.mcd
│ ├── gerund/
│ │ ├── _gerund_0.mcd
│ │ ├── _gerund_1.mcd
│ │ ├── ddl/
│ │ │ ├── gerund_0_ddl.d2
│ │ │ ├── gerund_0_ddl.dbml
│ │ │ ├── gerund_0_ddl.sql
│ │ │ ├── gerund_1_ddl.d2
│ │ │ ├── gerund_1_ddl.dbml
│ │ │ └── gerund_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── gerund_0_erd_chen.gv
│ │ │ ├── gerund_0_erd_chen.txt
│ │ │ ├── gerund_0_erd_crow.gv
│ │ │ ├── gerund_0_erd_crow.mmd
│ │ │ ├── gerund_0_uml.puml
│ │ │ ├── gerund_1_erd_chen.gv
│ │ │ ├── gerund_1_erd_chen.txt
│ │ │ ├── gerund_1_erd_crow.gv
│ │ │ ├── gerund_1_erd_crow.mmd
│ │ │ └── gerund_1_uml.puml
│ │ ├── mld/
│ │ │ ├── gerund_0_debug.tsv
│ │ │ ├── gerund_0_dependencies.gv
│ │ │ ├── gerund_0_mld.html
│ │ │ ├── gerund_0_mld.mcd
│ │ │ ├── gerund_0_mld.md
│ │ │ ├── gerund_0_mld.tex
│ │ │ ├── gerund_0_mld.txt
│ │ │ ├── gerund_1_debug.tsv
│ │ │ ├── gerund_1_dependencies.gv
│ │ │ ├── gerund_1_mld.html
│ │ │ ├── gerund_1_mld.mcd
│ │ │ ├── gerund_1_mld.md
│ │ │ ├── gerund_1_mld.tex
│ │ │ └── gerund_1_mld.txt
│ │ └── rewritten/
│ │ ├── gerund_0_rw_create_df_arrows=across.mcd
│ │ ├── gerund_0_rw_drain.mcd
│ │ ├── gerund_0_rw_drown.mcd
│ │ ├── gerund_0_rw_explode_arity=2,weak.mcd
│ │ ├── gerund_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── gerund_0_rw_explode_arity=2.5.mcd
│ │ ├── gerund_0_rw_explode_arity=2.mcd
│ │ ├── gerund_0_rw_explode_arity=3,weak.mcd
│ │ ├── gerund_0_rw_explode_arity=3.mcd
│ │ ├── gerund_0_rw_split.mcd
│ │ ├── gerund_1_rw_create_df_arrows=across.mcd
│ │ ├── gerund_1_rw_drain.mcd
│ │ ├── gerund_1_rw_drown.mcd
│ │ ├── gerund_1_rw_explode_arity=2,weak.mcd
│ │ ├── gerund_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── gerund_1_rw_explode_arity=2.5.mcd
│ │ ├── gerund_1_rw_explode_arity=2.mcd
│ │ ├── gerund_1_rw_explode_arity=3,weak.mcd
│ │ ├── gerund_1_rw_explode_arity=3.mcd
│ │ └── gerund_1_rw_split.mcd
│ ├── inheritance/
│ │ ├── _inheritance_0.mcd
│ │ ├── _inheritance_1.mcd
│ │ ├── _inheritance_2.mcd
│ │ ├── _inheritance_3.mcd
│ │ ├── _inheritance_4.mcd
│ │ ├── _inheritance_5.mcd
│ │ ├── ddl/
│ │ │ ├── inheritance_0_ddl.d2
│ │ │ ├── inheritance_0_ddl.dbml
│ │ │ ├── inheritance_0_ddl.sql
│ │ │ ├── inheritance_1_ddl.d2
│ │ │ ├── inheritance_1_ddl.dbml
│ │ │ ├── inheritance_1_ddl.sql
│ │ │ ├── inheritance_2_ddl.d2
│ │ │ ├── inheritance_2_ddl.dbml
│ │ │ ├── inheritance_2_ddl.sql
│ │ │ ├── inheritance_3_ddl.d2
│ │ │ ├── inheritance_3_ddl.dbml
│ │ │ ├── inheritance_3_ddl.sql
│ │ │ ├── inheritance_4_ddl.d2
│ │ │ ├── inheritance_4_ddl.dbml
│ │ │ ├── inheritance_4_ddl.sql
│ │ │ ├── inheritance_5_ddl.d2
│ │ │ ├── inheritance_5_ddl.dbml
│ │ │ └── inheritance_5_ddl.sql
│ │ ├── exported/
│ │ │ ├── inheritance_0_erd_chen.gv
│ │ │ ├── inheritance_0_erd_chen.txt
│ │ │ ├── inheritance_0_erd_crow.gv
│ │ │ ├── inheritance_0_erd_crow.mmd
│ │ │ ├── inheritance_0_uml.puml
│ │ │ ├── inheritance_1_erd_chen.gv
│ │ │ ├── inheritance_1_erd_chen.txt
│ │ │ ├── inheritance_1_erd_crow.gv
│ │ │ ├── inheritance_1_erd_crow.mmd
│ │ │ ├── inheritance_1_uml.puml
│ │ │ ├── inheritance_2_erd_chen.gv
│ │ │ ├── inheritance_2_erd_chen.txt
│ │ │ ├── inheritance_2_erd_crow.gv
│ │ │ ├── inheritance_2_erd_crow.mmd
│ │ │ ├── inheritance_2_uml.puml
│ │ │ ├── inheritance_3_erd_chen.gv
│ │ │ ├── inheritance_3_erd_chen.txt
│ │ │ ├── inheritance_3_erd_crow.gv
│ │ │ ├── inheritance_3_erd_crow.mmd
│ │ │ ├── inheritance_3_uml.puml
│ │ │ ├── inheritance_4_erd_chen.gv
│ │ │ ├── inheritance_4_erd_chen.txt
│ │ │ ├── inheritance_4_erd_crow.gv
│ │ │ ├── inheritance_4_erd_crow.mmd
│ │ │ ├── inheritance_4_uml.puml
│ │ │ ├── inheritance_5_erd_chen.gv
│ │ │ ├── inheritance_5_erd_chen.txt
│ │ │ ├── inheritance_5_erd_crow.gv
│ │ │ ├── inheritance_5_erd_crow.mmd
│ │ │ └── inheritance_5_uml.puml
│ │ ├── mld/
│ │ │ ├── inheritance_0_debug.tsv
│ │ │ ├── inheritance_0_dependencies.gv
│ │ │ ├── inheritance_0_mld.html
│ │ │ ├── inheritance_0_mld.mcd
│ │ │ ├── inheritance_0_mld.md
│ │ │ ├── inheritance_0_mld.tex
│ │ │ ├── inheritance_0_mld.txt
│ │ │ ├── inheritance_1_debug.tsv
│ │ │ ├── inheritance_1_dependencies.gv
│ │ │ ├── inheritance_1_mld.html
│ │ │ ├── inheritance_1_mld.mcd
│ │ │ ├── inheritance_1_mld.md
│ │ │ ├── inheritance_1_mld.tex
│ │ │ ├── inheritance_1_mld.txt
│ │ │ ├── inheritance_2_debug.tsv
│ │ │ ├── inheritance_2_dependencies.gv
│ │ │ ├── inheritance_2_mld.html
│ │ │ ├── inheritance_2_mld.mcd
│ │ │ ├── inheritance_2_mld.md
│ │ │ ├── inheritance_2_mld.tex
│ │ │ ├── inheritance_2_mld.txt
│ │ │ ├── inheritance_3_debug.tsv
│ │ │ ├── inheritance_3_dependencies.gv
│ │ │ ├── inheritance_3_mld.html
│ │ │ ├── inheritance_3_mld.mcd
│ │ │ ├── inheritance_3_mld.md
│ │ │ ├── inheritance_3_mld.tex
│ │ │ ├── inheritance_3_mld.txt
│ │ │ ├── inheritance_4_debug.tsv
│ │ │ ├── inheritance_4_dependencies.gv
│ │ │ ├── inheritance_4_mld.html
│ │ │ ├── inheritance_4_mld.mcd
│ │ │ ├── inheritance_4_mld.md
│ │ │ ├── inheritance_4_mld.tex
│ │ │ ├── inheritance_4_mld.txt
│ │ │ ├── inheritance_5_debug.tsv
│ │ │ ├── inheritance_5_dependencies.gv
│ │ │ ├── inheritance_5_mld.html
│ │ │ ├── inheritance_5_mld.mcd
│ │ │ ├── inheritance_5_mld.md
│ │ │ ├── inheritance_5_mld.tex
│ │ │ └── inheritance_5_mld.txt
│ │ └── rewritten/
│ │ ├── inheritance_0_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_0_rw_drain.mcd
│ │ ├── inheritance_0_rw_drown.mcd
│ │ ├── inheritance_0_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_0_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_0_rw_explode_arity=2.mcd
│ │ ├── inheritance_0_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_0_rw_explode_arity=3.mcd
│ │ ├── inheritance_0_rw_split.mcd
│ │ ├── inheritance_1_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_1_rw_drain.mcd
│ │ ├── inheritance_1_rw_drown.mcd
│ │ ├── inheritance_1_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_1_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_1_rw_explode_arity=2.mcd
│ │ ├── inheritance_1_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_1_rw_explode_arity=3.mcd
│ │ ├── inheritance_1_rw_split.mcd
│ │ ├── inheritance_2_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_2_rw_drain.mcd
│ │ ├── inheritance_2_rw_drown.mcd
│ │ ├── inheritance_2_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_2_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_2_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_2_rw_explode_arity=2.mcd
│ │ ├── inheritance_2_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_2_rw_explode_arity=3.mcd
│ │ ├── inheritance_2_rw_split.mcd
│ │ ├── inheritance_3_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_3_rw_drain.mcd
│ │ ├── inheritance_3_rw_drown.mcd
│ │ ├── inheritance_3_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_3_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_3_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_3_rw_explode_arity=2.mcd
│ │ ├── inheritance_3_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_3_rw_explode_arity=3.mcd
│ │ ├── inheritance_3_rw_split.mcd
│ │ ├── inheritance_4_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_4_rw_drain.mcd
│ │ ├── inheritance_4_rw_drown.mcd
│ │ ├── inheritance_4_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_4_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_4_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_4_rw_explode_arity=2.mcd
│ │ ├── inheritance_4_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_4_rw_explode_arity=3.mcd
│ │ ├── inheritance_4_rw_split.mcd
│ │ ├── inheritance_5_rw_create_df_arrows=across.mcd
│ │ ├── inheritance_5_rw_drain.mcd
│ │ ├── inheritance_5_rw_drown.mcd
│ │ ├── inheritance_5_rw_explode_arity=2,weak.mcd
│ │ ├── inheritance_5_rw_explode_arity=2.5,weak.mcd
│ │ ├── inheritance_5_rw_explode_arity=2.5.mcd
│ │ ├── inheritance_5_rw_explode_arity=2.mcd
│ │ ├── inheritance_5_rw_explode_arity=3,weak.mcd
│ │ ├── inheritance_5_rw_explode_arity=3.mcd
│ │ └── inheritance_5_rw_split.mcd
│ ├── inheritance_weak/
│ │ ├── _strong_child_0.mcd
│ │ ├── _strong_child_1.mcd
│ │ ├── _strong_child_2.mcd
│ │ ├── ddl/
│ │ │ ├── strong_child_0_ddl.d2
│ │ │ ├── strong_child_0_ddl.dbml
│ │ │ ├── strong_child_0_ddl.sql
│ │ │ ├── strong_child_1_ddl.d2
│ │ │ ├── strong_child_1_ddl.dbml
│ │ │ ├── strong_child_1_ddl.sql
│ │ │ ├── strong_child_2_ddl.d2
│ │ │ ├── strong_child_2_ddl.dbml
│ │ │ └── strong_child_2_ddl.sql
│ │ ├── exported/
│ │ │ ├── strong_child_0_erd_chen.gv
│ │ │ ├── strong_child_0_erd_chen.txt
│ │ │ ├── strong_child_0_erd_crow.gv
│ │ │ ├── strong_child_0_erd_crow.mmd
│ │ │ ├── strong_child_0_uml.puml
│ │ │ ├── strong_child_1_erd_chen.gv
│ │ │ ├── strong_child_1_erd_chen.txt
│ │ │ ├── strong_child_1_erd_crow.gv
│ │ │ ├── strong_child_1_erd_crow.mmd
│ │ │ ├── strong_child_1_uml.puml
│ │ │ ├── strong_child_2_erd_chen.gv
│ │ │ ├── strong_child_2_erd_chen.txt
│ │ │ ├── strong_child_2_erd_crow.gv
│ │ │ ├── strong_child_2_erd_crow.mmd
│ │ │ └── strong_child_2_uml.puml
│ │ ├── mld/
│ │ │ ├── strong_child_0_debug.tsv
│ │ │ ├── strong_child_0_dependencies.gv
│ │ │ ├── strong_child_0_mld.html
│ │ │ ├── strong_child_0_mld.mcd
│ │ │ ├── strong_child_0_mld.md
│ │ │ ├── strong_child_0_mld.tex
│ │ │ ├── strong_child_0_mld.txt
│ │ │ ├── strong_child_1_debug.tsv
│ │ │ ├── strong_child_1_dependencies.gv
│ │ │ ├── strong_child_1_mld.html
│ │ │ ├── strong_child_1_mld.mcd
│ │ │ ├── strong_child_1_mld.md
│ │ │ ├── strong_child_1_mld.tex
│ │ │ ├── strong_child_1_mld.txt
│ │ │ ├── strong_child_2_debug.tsv
│ │ │ ├── strong_child_2_dependencies.gv
│ │ │ ├── strong_child_2_mld.html
│ │ │ ├── strong_child_2_mld.mcd
│ │ │ ├── strong_child_2_mld.md
│ │ │ ├── strong_child_2_mld.tex
│ │ │ └── strong_child_2_mld.txt
│ │ └── rewritten/
│ │ ├── strong_child_0_rw_create_df_arrows=across.mcd
│ │ ├── strong_child_0_rw_drain.mcd
│ │ ├── strong_child_0_rw_drown.mcd
│ │ ├── strong_child_0_rw_explode_arity=2,weak.mcd
│ │ ├── strong_child_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── strong_child_0_rw_explode_arity=2.5.mcd
│ │ ├── strong_child_0_rw_explode_arity=2.mcd
│ │ ├── strong_child_0_rw_explode_arity=3,weak.mcd
│ │ ├── strong_child_0_rw_explode_arity=3.mcd
│ │ ├── strong_child_0_rw_split.mcd
│ │ ├── strong_child_1_rw_create_df_arrows=across.mcd
│ │ ├── strong_child_1_rw_drain.mcd
│ │ ├── strong_child_1_rw_drown.mcd
│ │ ├── strong_child_1_rw_explode_arity=2,weak.mcd
│ │ ├── strong_child_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── strong_child_1_rw_explode_arity=2.5.mcd
│ │ ├── strong_child_1_rw_explode_arity=2.mcd
│ │ ├── strong_child_1_rw_explode_arity=3,weak.mcd
│ │ ├── strong_child_1_rw_explode_arity=3.mcd
│ │ ├── strong_child_1_rw_split.mcd
│ │ ├── strong_child_2_rw_create_df_arrows=across.mcd
│ │ ├── strong_child_2_rw_drain.mcd
│ │ ├── strong_child_2_rw_drown.mcd
│ │ ├── strong_child_2_rw_explode_arity=2,weak.mcd
│ │ ├── strong_child_2_rw_explode_arity=2.5,weak.mcd
│ │ ├── strong_child_2_rw_explode_arity=2.5.mcd
│ │ ├── strong_child_2_rw_explode_arity=2.mcd
│ │ ├── strong_child_2_rw_explode_arity=3,weak.mcd
│ │ ├── strong_child_2_rw_explode_arity=3.mcd
│ │ └── strong_child_2_rw_split.mcd
│ ├── landing/
│ │ ├── _landing.mcd
│ │ ├── ddl/
│ │ │ ├── landing_ddl.d2
│ │ │ ├── landing_ddl.dbml
│ │ │ └── landing_ddl.sql
│ │ ├── exported/
│ │ │ ├── landing_erd_chen.gv
│ │ │ ├── landing_erd_chen.txt
│ │ │ ├── landing_erd_crow.gv
│ │ │ ├── landing_erd_crow.mmd
│ │ │ └── landing_uml.puml
│ │ ├── mld/
│ │ │ ├── landing_debug.tsv
│ │ │ ├── landing_dependencies.gv
│ │ │ ├── landing_mld.html
│ │ │ ├── landing_mld.mcd
│ │ │ ├── landing_mld.md
│ │ │ ├── landing_mld.tex
│ │ │ └── landing_mld.txt
│ │ └── rewritten/
│ │ ├── landing_rw_create_df_arrows=across.mcd
│ │ ├── landing_rw_drain.mcd
│ │ ├── landing_rw_drown.mcd
│ │ ├── landing_rw_explode_arity=2,weak.mcd
│ │ ├── landing_rw_explode_arity=2.5,weak.mcd
│ │ ├── landing_rw_explode_arity=2.5.mcd
│ │ ├── landing_rw_explode_arity=2.mcd
│ │ ├── landing_rw_explode_arity=3,weak.mcd
│ │ ├── landing_rw_explode_arity=3.mcd
│ │ └── landing_rw_split.mcd
│ ├── minimal/
│ │ ├── _minimal.mcd
│ │ ├── ddl/
│ │ │ ├── minimal_ddl.d2
│ │ │ ├── minimal_ddl.dbml
│ │ │ └── minimal_ddl.sql
│ │ ├── exported/
│ │ │ ├── minimal_erd_chen.gv
│ │ │ ├── minimal_erd_chen.txt
│ │ │ ├── minimal_erd_crow.gv
│ │ │ ├── minimal_erd_crow.mmd
│ │ │ └── minimal_uml.puml
│ │ ├── mld/
│ │ │ ├── minimal_debug.tsv
│ │ │ ├── minimal_dependencies.gv
│ │ │ ├── minimal_mld.html
│ │ │ ├── minimal_mld.mcd
│ │ │ ├── minimal_mld.md
│ │ │ ├── minimal_mld.tex
│ │ │ └── minimal_mld.txt
│ │ └── rewritten/
│ │ ├── minimal_rw_create_df_arrows=across.mcd
│ │ ├── minimal_rw_drain.mcd
│ │ ├── minimal_rw_drown.mcd
│ │ ├── minimal_rw_explode_arity=2,weak.mcd
│ │ ├── minimal_rw_explode_arity=2.5,weak.mcd
│ │ ├── minimal_rw_explode_arity=2.5.mcd
│ │ ├── minimal_rw_explode_arity=2.mcd
│ │ ├── minimal_rw_explode_arity=3,weak.mcd
│ │ ├── minimal_rw_explode_arity=3.mcd
│ │ └── minimal_rw_split.mcd
│ ├── protected/
│ │ ├── _protected_0.mcd
│ │ ├── ddl/
│ │ │ ├── protected_0_ddl.d2
│ │ │ ├── protected_0_ddl.dbml
│ │ │ └── protected_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── protected_0_erd_chen.gv
│ │ │ ├── protected_0_erd_chen.txt
│ │ │ ├── protected_0_erd_crow.gv
│ │ │ ├── protected_0_erd_crow.mmd
│ │ │ └── protected_0_uml.puml
│ │ ├── mld/
│ │ │ ├── protected_0_debug.tsv
│ │ │ ├── protected_0_dependencies.gv
│ │ │ ├── protected_0_mld.html
│ │ │ ├── protected_0_mld.mcd
│ │ │ ├── protected_0_mld.md
│ │ │ ├── protected_0_mld.tex
│ │ │ └── protected_0_mld.txt
│ │ └── rewritten/
│ │ ├── protected_0_rw_create_df_arrows=across.mcd
│ │ ├── protected_0_rw_drain.mcd
│ │ ├── protected_0_rw_drown.mcd
│ │ ├── protected_0_rw_explode_arity=2,weak.mcd
│ │ ├── protected_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── protected_0_rw_explode_arity=2.5.mcd
│ │ ├── protected_0_rw_explode_arity=2.mcd
│ │ ├── protected_0_rw_explode_arity=3,weak.mcd
│ │ ├── protected_0_rw_explode_arity=3.mcd
│ │ └── protected_0_rw_split.mcd
│ ├── reflexive/
│ │ ├── _reflexive_0.mcd
│ │ ├── ddl/
│ │ │ ├── reflexive_0_ddl.d2
│ │ │ ├── reflexive_0_ddl.dbml
│ │ │ └── reflexive_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── reflexive_0_erd_chen.gv
│ │ │ ├── reflexive_0_erd_chen.txt
│ │ │ ├── reflexive_0_erd_crow.gv
│ │ │ ├── reflexive_0_erd_crow.mmd
│ │ │ └── reflexive_0_uml.puml
│ │ ├── mld/
│ │ │ ├── reflexive_0_debug.tsv
│ │ │ ├── reflexive_0_dependencies.gv
│ │ │ ├── reflexive_0_mld.html
│ │ │ ├── reflexive_0_mld.mcd
│ │ │ ├── reflexive_0_mld.md
│ │ │ ├── reflexive_0_mld.tex
│ │ │ └── reflexive_0_mld.txt
│ │ └── rewritten/
│ │ ├── reflexive_0_rw_create_df_arrows=across.mcd
│ │ ├── reflexive_0_rw_drain.mcd
│ │ ├── reflexive_0_rw_drown.mcd
│ │ ├── reflexive_0_rw_explode_arity=2,weak.mcd
│ │ ├── reflexive_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── reflexive_0_rw_explode_arity=2.5.mcd
│ │ ├── reflexive_0_rw_explode_arity=2.mcd
│ │ ├── reflexive_0_rw_explode_arity=3,weak.mcd
│ │ ├── reflexive_0_rw_explode_arity=3.mcd
│ │ └── reflexive_0_rw_split.mcd
│ ├── split/
│ │ ├── _split.mcd
│ │ ├── ddl/
│ │ │ ├── split_ddl.d2
│ │ │ ├── split_ddl.dbml
│ │ │ └── split_ddl.sql
│ │ ├── exported/
│ │ │ ├── split_erd_chen.gv
│ │ │ ├── split_erd_chen.txt
│ │ │ ├── split_erd_crow.gv
│ │ │ ├── split_erd_crow.mmd
│ │ │ └── split_uml.puml
│ │ ├── mld/
│ │ │ ├── split_debug.tsv
│ │ │ ├── split_dependencies.gv
│ │ │ ├── split_mld.html
│ │ │ ├── split_mld.mcd
│ │ │ ├── split_mld.md
│ │ │ ├── split_mld.tex
│ │ │ └── split_mld.txt
│ │ └── rewritten/
│ │ ├── split_rw_create_df_arrows=across.mcd
│ │ ├── split_rw_drain.mcd
│ │ ├── split_rw_drown.mcd
│ │ ├── split_rw_explode_arity=2,weak.mcd
│ │ ├── split_rw_explode_arity=2.5,weak.mcd
│ │ ├── split_rw_explode_arity=2.5.mcd
│ │ ├── split_rw_explode_arity=2.mcd
│ │ ├── split_rw_explode_arity=3,weak.mcd
│ │ ├── split_rw_explode_arity=3.mcd
│ │ └── split_rw_split.mcd
│ ├── ternary_unicity/
│ │ ├── _ternary_unicity_0.mcd
│ │ ├── ddl/
│ │ │ ├── ternary_unicity_0_ddl.d2
│ │ │ ├── ternary_unicity_0_ddl.dbml
│ │ │ └── ternary_unicity_0_ddl.sql
│ │ ├── exported/
│ │ │ ├── ternary_unicity_0_erd_chen.gv
│ │ │ ├── ternary_unicity_0_erd_chen.txt
│ │ │ ├── ternary_unicity_0_erd_crow.gv
│ │ │ ├── ternary_unicity_0_erd_crow.mmd
│ │ │ └── ternary_unicity_0_uml.puml
│ │ ├── mld/
│ │ │ ├── ternary_unicity_0_debug.tsv
│ │ │ ├── ternary_unicity_0_dependencies.gv
│ │ │ ├── ternary_unicity_0_mld.html
│ │ │ ├── ternary_unicity_0_mld.mcd
│ │ │ ├── ternary_unicity_0_mld.md
│ │ │ ├── ternary_unicity_0_mld.tex
│ │ │ └── ternary_unicity_0_mld.txt
│ │ └── rewritten/
│ │ ├── ternary_unicity_0_rw_create_df_arrows=across.mcd
│ │ ├── ternary_unicity_0_rw_drain.mcd
│ │ ├── ternary_unicity_0_rw_drown.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2,weak.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2.5.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=2.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=3,weak.mcd
│ │ ├── ternary_unicity_0_rw_explode_arity=3.mcd
│ │ └── ternary_unicity_0_rw_split.mcd
│ ├── triple_111/
│ │ ├── _triple_111_0.mcd
│ │ ├── _triple_111_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_111_0_ddl.d2
│ │ │ ├── triple_111_0_ddl.dbml
│ │ │ ├── triple_111_0_ddl.sql
│ │ │ ├── triple_111_1_ddl.d2
│ │ │ ├── triple_111_1_ddl.dbml
│ │ │ └── triple_111_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_111_0_erd_chen.gv
│ │ │ ├── triple_111_0_erd_chen.txt
│ │ │ ├── triple_111_0_erd_crow.mmd
│ │ │ ├── triple_111_0_uml.puml
│ │ │ ├── triple_111_1_erd_chen.gv
│ │ │ ├── triple_111_1_erd_chen.txt
│ │ │ ├── triple_111_1_erd_crow.mmd
│ │ │ └── triple_111_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_111_0_debug.tsv
│ │ │ ├── triple_111_0_dependencies.gv
│ │ │ ├── triple_111_0_mld.html
│ │ │ ├── triple_111_0_mld.mcd
│ │ │ ├── triple_111_0_mld.md
│ │ │ ├── triple_111_0_mld.tex
│ │ │ ├── triple_111_0_mld.txt
│ │ │ ├── triple_111_1_debug.tsv
│ │ │ ├── triple_111_1_dependencies.gv
│ │ │ ├── triple_111_1_mld.html
│ │ │ ├── triple_111_1_mld.mcd
│ │ │ ├── triple_111_1_mld.md
│ │ │ ├── triple_111_1_mld.tex
│ │ │ └── triple_111_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_111_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_111_0_rw_drain.mcd
│ │ ├── triple_111_0_rw_drown.mcd
│ │ ├── triple_111_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_111_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_111_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_111_0_rw_explode_arity=2.mcd
│ │ ├── triple_111_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_111_0_rw_explode_arity=3.mcd
│ │ ├── triple_111_0_rw_split.mcd
│ │ ├── triple_111_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_111_1_rw_drain.mcd
│ │ ├── triple_111_1_rw_drown.mcd
│ │ ├── triple_111_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_111_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_111_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_111_1_rw_explode_arity=2.mcd
│ │ ├── triple_111_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_111_1_rw_explode_arity=3.mcd
│ │ └── triple_111_1_rw_split.mcd
│ ├── triple_N11/
│ │ ├── _triple_N11_0.mcd
│ │ ├── _triple_N11_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_N11_0_ddl.d2
│ │ │ ├── triple_N11_0_ddl.dbml
│ │ │ ├── triple_N11_0_ddl.sql
│ │ │ ├── triple_N11_1_ddl.d2
│ │ │ ├── triple_N11_1_ddl.dbml
│ │ │ └── triple_N11_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_N11_0_erd_chen.gv
│ │ │ ├── triple_N11_0_erd_chen.txt
│ │ │ ├── triple_N11_0_erd_crow.mmd
│ │ │ ├── triple_N11_0_uml.puml
│ │ │ ├── triple_N11_1_erd_chen.gv
│ │ │ ├── triple_N11_1_erd_chen.txt
│ │ │ ├── triple_N11_1_erd_crow.mmd
│ │ │ └── triple_N11_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_N11_0_debug.tsv
│ │ │ ├── triple_N11_0_dependencies.gv
│ │ │ ├── triple_N11_0_mld.html
│ │ │ ├── triple_N11_0_mld.mcd
│ │ │ ├── triple_N11_0_mld.md
│ │ │ ├── triple_N11_0_mld.tex
│ │ │ ├── triple_N11_0_mld.txt
│ │ │ ├── triple_N11_1_debug.tsv
│ │ │ ├── triple_N11_1_dependencies.gv
│ │ │ ├── triple_N11_1_mld.html
│ │ │ ├── triple_N11_1_mld.mcd
│ │ │ ├── triple_N11_1_mld.md
│ │ │ ├── triple_N11_1_mld.tex
│ │ │ └── triple_N11_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_N11_0_rw_create_cifs.mcd
│ │ ├── triple_N11_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_N11_0_rw_drain.mcd
│ │ ├── triple_N11_0_rw_drown.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_N11_0_rw_explode_arity=2.mcd
│ │ ├── triple_N11_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_N11_0_rw_explode_arity=3.mcd
│ │ ├── triple_N11_0_rw_split.mcd
│ │ ├── triple_N11_1_rw_create_cifs.mcd
│ │ ├── triple_N11_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_N11_1_rw_drain.mcd
│ │ ├── triple_N11_1_rw_drown.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_N11_1_rw_explode_arity=2.mcd
│ │ ├── triple_N11_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_N11_1_rw_explode_arity=3.mcd
│ │ └── triple_N11_1_rw_split.mcd
│ ├── triple_NN1/
│ │ ├── _triple_NN1_0.mcd
│ │ ├── _triple_NN1_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_NN1_0_ddl.d2
│ │ │ ├── triple_NN1_0_ddl.dbml
│ │ │ ├── triple_NN1_0_ddl.sql
│ │ │ ├── triple_NN1_1_ddl.d2
│ │ │ ├── triple_NN1_1_ddl.dbml
│ │ │ └── triple_NN1_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_NN1_0_erd_chen.gv
│ │ │ ├── triple_NN1_0_erd_chen.txt
│ │ │ ├── triple_NN1_0_erd_crow.mmd
│ │ │ ├── triple_NN1_0_uml.puml
│ │ │ ├── triple_NN1_1_erd_chen.gv
│ │ │ ├── triple_NN1_1_erd_chen.txt
│ │ │ ├── triple_NN1_1_erd_crow.mmd
│ │ │ └── triple_NN1_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_NN1_0_debug.tsv
│ │ │ ├── triple_NN1_0_dependencies.gv
│ │ │ ├── triple_NN1_0_mld.html
│ │ │ ├── triple_NN1_0_mld.mcd
│ │ │ ├── triple_NN1_0_mld.md
│ │ │ ├── triple_NN1_0_mld.tex
│ │ │ ├── triple_NN1_0_mld.txt
│ │ │ ├── triple_NN1_1_debug.tsv
│ │ │ ├── triple_NN1_1_dependencies.gv
│ │ │ ├── triple_NN1_1_mld.html
│ │ │ ├── triple_NN1_1_mld.mcd
│ │ │ ├── triple_NN1_1_mld.md
│ │ │ ├── triple_NN1_1_mld.tex
│ │ │ └── triple_NN1_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_NN1_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_NN1_0_rw_drain.mcd
│ │ ├── triple_NN1_0_rw_drown.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=2.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NN1_0_rw_explode_arity=3.mcd
│ │ ├── triple_NN1_0_rw_split.mcd
│ │ ├── triple_NN1_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_NN1_1_rw_drain.mcd
│ │ ├── triple_NN1_1_rw_drown.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=2.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NN1_1_rw_explode_arity=3.mcd
│ │ └── triple_NN1_1_rw_split.mcd
│ ├── triple_NNN/
│ │ ├── _triple_NNN_0.mcd
│ │ ├── _triple_NNN_1.mcd
│ │ ├── ddl/
│ │ │ ├── triple_NNN_0_ddl.d2
│ │ │ ├── triple_NNN_0_ddl.dbml
│ │ │ ├── triple_NNN_0_ddl.sql
│ │ │ ├── triple_NNN_1_ddl.d2
│ │ │ ├── triple_NNN_1_ddl.dbml
│ │ │ └── triple_NNN_1_ddl.sql
│ │ ├── exported/
│ │ │ ├── triple_NNN_0_erd_chen.gv
│ │ │ ├── triple_NNN_0_erd_chen.txt
│ │ │ ├── triple_NNN_0_erd_crow.mmd
│ │ │ ├── triple_NNN_0_uml.puml
│ │ │ ├── triple_NNN_1_erd_chen.gv
│ │ │ ├── triple_NNN_1_erd_chen.txt
│ │ │ ├── triple_NNN_1_erd_crow.mmd
│ │ │ └── triple_NNN_1_uml.puml
│ │ ├── mld/
│ │ │ ├── triple_NNN_0_debug.tsv
│ │ │ ├── triple_NNN_0_dependencies.gv
│ │ │ ├── triple_NNN_0_mld.html
│ │ │ ├── triple_NNN_0_mld.mcd
│ │ │ ├── triple_NNN_0_mld.md
│ │ │ ├── triple_NNN_0_mld.tex
│ │ │ ├── triple_NNN_0_mld.txt
│ │ │ ├── triple_NNN_1_debug.tsv
│ │ │ ├── triple_NNN_1_dependencies.gv
│ │ │ ├── triple_NNN_1_mld.html
│ │ │ ├── triple_NNN_1_mld.mcd
│ │ │ ├── triple_NNN_1_mld.md
│ │ │ ├── triple_NNN_1_mld.tex
│ │ │ └── triple_NNN_1_mld.txt
│ │ └── rewritten/
│ │ ├── triple_NNN_0_rw_create_df_arrows=across.mcd
│ │ ├── triple_NNN_0_rw_drain.mcd
│ │ ├── triple_NNN_0_rw_drown.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2.5.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=2.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NNN_0_rw_explode_arity=3.mcd
│ │ ├── triple_NNN_0_rw_split.mcd
│ │ ├── triple_NNN_1_rw_create_df_arrows=across.mcd
│ │ ├── triple_NNN_1_rw_drain.mcd
│ │ ├── triple_NNN_1_rw_drown.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2,weak.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2.5,weak.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2.5.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=2.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=3,weak.mcd
│ │ ├── triple_NNN_1_rw_explode_arity=3.mcd
│ │ └── triple_NNN_1_rw_split.mcd
│ └── weak/
│ ├── _weak_0.mcd
│ ├── _weak_1.mcd
│ ├── _weak_2.mcd
│ ├── ddl/
│ │ ├── weak_0_ddl.d2
│ │ ├── weak_0_ddl.dbml
│ │ ├── weak_0_ddl.sql
│ │ ├── weak_1_ddl.d2
│ │ ├── weak_1_ddl.dbml
│ │ ├── weak_1_ddl.sql
│ │ ├── weak_2_ddl.d2
│ │ ├── weak_2_ddl.dbml
│ │ └── weak_2_ddl.sql
│ ├── exported/
│ │ ├── weak_0_erd_chen.gv
│ │ ├── weak_0_erd_chen.txt
│ │ ├── weak_0_erd_crow.gv
│ │ ├── weak_0_erd_crow.mmd
│ │ ├── weak_0_uml.puml
│ │ ├── weak_1_erd_chen.gv
│ │ ├── weak_1_erd_chen.txt
│ │ ├── weak_1_erd_crow.gv
│ │ ├── weak_1_erd_crow.mmd
│ │ ├── weak_1_uml.puml
│ │ ├── weak_2_erd_chen.gv
│ │ ├── weak_2_erd_chen.txt
│ │ ├── weak_2_erd_crow.gv
│ │ ├── weak_2_erd_crow.mmd
│ │ └── weak_2_uml.puml
│ ├── mld/
│ │ ├── weak_0_debug.tsv
│ │ ├── weak_0_dependencies.gv
│ │ ├── weak_0_mld.html
│ │ ├── weak_0_mld.mcd
│ │ ├── weak_0_mld.md
│ │ ├── weak_0_mld.tex
│ │ ├── weak_0_mld.txt
│ │ ├── weak_1_debug.tsv
│ │ ├── weak_1_dependencies.gv
│ │ ├── weak_1_mld.html
│ │ ├── weak_1_mld.mcd
│ │ ├── weak_1_mld.md
│ │ ├── weak_1_mld.tex
│ │ ├── weak_1_mld.txt
│ │ ├── weak_2_debug.tsv
│ │ ├── weak_2_dependencies.gv
│ │ ├── weak_2_mld.html
│ │ ├── weak_2_mld.mcd
│ │ ├── weak_2_mld.md
│ │ ├── weak_2_mld.tex
│ │ └── weak_2_mld.txt
│ └── rewritten/
│ ├── weak_0_rw_create_df_arrows=across.mcd
│ ├── weak_0_rw_drain.mcd
│ ├── weak_0_rw_drown.mcd
│ ├── weak_0_rw_explode_arity=2,weak.mcd
│ ├── weak_0_rw_explode_arity=2.5,weak.mcd
│ ├── weak_0_rw_explode_arity=2.5.mcd
│ ├── weak_0_rw_explode_arity=2.mcd
│ ├── weak_0_rw_explode_arity=3,weak.mcd
│ ├── weak_0_rw_explode_arity=3.mcd
│ ├── weak_0_rw_split.mcd
│ ├── weak_1_rw_create_df_arrows=across.mcd
│ ├── weak_1_rw_drain.mcd
│ ├── weak_1_rw_drown.mcd
│ ├── weak_1_rw_explode_arity=2,weak.mcd
│ ├── weak_1_rw_explode_arity=2.5,weak.mcd
│ ├── weak_1_rw_explode_arity=2.5.mcd
│ ├── weak_1_rw_explode_arity=2.mcd
│ ├── weak_1_rw_explode_arity=3,weak.mcd
│ ├── weak_1_rw_explode_arity=3.mcd
│ ├── weak_1_rw_split.mcd
│ ├── weak_2_rw_create_df_arrows=across.mcd
│ ├── weak_2_rw_drain.mcd
│ ├── weak_2_rw_drown.mcd
│ ├── weak_2_rw_explode_arity=2,weak.mcd
│ ├── weak_2_rw_explode_arity=2.5,weak.mcd
│ ├── weak_2_rw_explode_arity=2.5.mcd
│ ├── weak_2_rw_explode_arity=2.mcd
│ ├── weak_2_rw_explode_arity=3,weak.mcd
│ ├── weak_2_rw_explode_arity=3.mcd
│ └── weak_2_rw_split.mcd
└── web/
├── ace-builds/
│ ├── ace.js
│ ├── ext-language_tools.js
│ ├── mode-mocodo.js
│ ├── mode-text.js
│ ├── text_highlight_rules.js
│ └── theme-chrome.js
├── favicons/
│ ├── browserconfig.xml
│ └── manifest.json
├── flashlight.js
├── generate.php
├── get_from_lib.php
├── js.cookie.js
├── mocodo.js
├── purge.php
├── reset.css
├── rewrite.php
└── style.css
SYMBOL INDEX (1242 symbols across 122 files)
FILE: mocodo/__init__.py
function load_ipython_extension (line 8) | def load_ipython_extension(ipython):
FILE: mocodo/__main__.py
class ResponseLogger (line 33) | class ResponseLogger:
method __init__ (line 35) | def __init__(self, params):
method log_nothing (line 50) | def log_nothing(self, *args, **kwargs):
method log_for_magic (line 53) | def log_for_magic(self, key, value):
method dump (line 57) | def dump(self):
function flip (line 61) | def flip(source, subargs):
class Runner (line 75) | class Runner:
method __init__ (line 77) | def __init__(self, args, printer):
method __call__ (line 88) | def __call__(self):
method get_rendering_service (line 235) | def get_rendering_service(self, extension):
method get_converted_file_paths (line 250) | def get_converted_file_paths(self, result):
method control_for_overlaps (line 294) | def control_for_overlaps(self, mcd):
method add_gutter_params (line 307) | def add_gutter_params(self, params):
function main (line 334) | def main():
FILE: mocodo/api.py
function mocodo (line 9) | def mocodo(arg_string="", quiet=True):
FILE: mocodo/argument_parser.py
class ArgumentDefaultsRawDescriptionHelpFormatter (line 19) | class ArgumentDefaultsRawDescriptionHelpFormatter(
function init_localization (line 25) | def init_localization(language):
class Transformations (line 52) | class Transformations:
method __init__ (line 54) | def __init__(self, language):
method extract_transformation_subargs (line 77) | def extract_transformation_subargs(self, arg):
function extract_subargs (line 94) | def extract_subargs(arg):
function rate (line 107) | def rate(string):
function scale (line 119) | def scale(string):
function non_negative_integer (line 131) | def non_negative_integer(string):
function positive_integer (line 143) | def positive_integer(string):
function parsed_arguments (line 154) | def parsed_arguments(args):
FILE: mocodo/association.py
class Association (line 7) | class Association:
method reset_df_counter (line 12) | def reset_df_counter(cls):
method __init__ (line 15) | def __init__(self, clause, **params):
method get_note_data (line 86) | def get_note_data(self):
method register_boxes (line 99) | def register_boxes(self, boxes):
method register_mcd_has_cif (line 102) | def register_mcd_has_cif(self, mcd_has_cif):
method calculate_size_when_invisible (line 107) | def calculate_size_when_invisible(self, *ignored):
method calculate_size_when_visible (line 111) | def calculate_size_when_visible(self, style, get_font_metrics):
method register_center (line 123) | def register_center(self, geo):
method set_view_strategies (line 131) | def set_view_strategies(self):
method description_when_visible (line 334) | def description_when_visible(self, style, geo):
method leg_descriptions (line 355) | def leg_descriptions(self, style, geo):
method cluster_hull (line 362) | def cluster_hull(self, e1, e2, card_margin):
function points_to_rounded_path (line 437) | def points_to_rounded_path(points, r):
FILE: mocodo/attribute.py
class Attribute (line 3) | class Attribute:
method __init__ (line 11) | def __init__(self, attribute):
method register_foreign_key_status (line 21) | def register_foreign_key_status(self, attribute, fk_format):
method calculate_size (line 28) | def calculate_size(self, style, get_font_metrics):
method set_id_gutter_width (line 35) | def set_id_gutter_width(self, id_gutter_width):
method description (line 38) | def description(self, style, x, y, dx, dy):
class SimpleEntityAttribute (line 68) | class SimpleEntityAttribute(Attribute):
method __init__ (line 70) | def __init__(self, attribute):
class SimpleAssociationAttribute (line 77) | class SimpleAssociationAttribute(Attribute):
method __init__ (line 79) | def __init__(self, attribute):
class IdentifierAttribute (line 86) | class IdentifierAttribute(Attribute):
method __init__ (line 88) | def __init__(self, attribute):
method calculate_size (line 94) | def calculate_size(self, *args):
class StrongAttribute (line 97) | class StrongAttribute(IdentifierAttribute):
method __init__ (line 99) | def __init__(self, attribute):
method description (line 104) | def description(self, style, x, y, dx, dy):
class WeakAttribute (line 119) | class WeakAttribute(IdentifierAttribute):
method __init__ (line 121) | def __init__(self, attribute):
method description (line 126) | def description(self, style, x, y, dx, dy):
class PhantomAttribute (line 143) | class PhantomAttribute(Attribute):
method __init__ (line 145) | def __init__(self, attribute):
method description (line 150) | def description(self, *_):
class InheritanceAttribute (line 154) | class InheritanceAttribute(Attribute):
method __init__ (line 156) | def __init__(self, attribute):
FILE: mocodo/common.py
function contract_path (line 11) | def contract_path(path):
class Printer (line 23) | class Printer:
method __init__ (line 25) | def __init__(self, quiet=False):
method safe_print_for_PHP (line 32) | def safe_print_for_PHP(self, s):
class Common (line 41) | class Common:
method __init__ (line 43) | def __init__(self, params):
method output_success_message (line 46) | def output_success_message(self, path):
method update_source (line 49) | def update_source(self, source):
method load_input_file (line 54) | def load_input_file(self):
method load_style (line 78) | def load_style(self):
FILE: mocodo/constraint.py
class Constraint (line 7) | class Constraint:
method reset_counter (line 12) | def reset_counter(cls):
method __init__ (line 15) | def __init__(self, clause):
method register_boxes (line 33) | def register_boxes(self, boxes):
method calculate_size (line 36) | def calculate_size(self, style, get_font_metrics):
method register_center (line 46) | def register_center(self, geo):
method _description (line 69) | def _description(self, style):
method description (line 96) | def description(self, style, geo):
method leg_descriptions (line 115) | def leg_descriptions(self, style, geo):
method invert_coords_horizontal_mirror (line 121) | def invert_coords_horizontal_mirror(self):
method invert_coords_vertical_mirror (line 126) | def invert_coords_vertical_mirror(self):
method invert_coords_diagonal_mirror (line 131) | def invert_coords_diagonal_mirror(self):
FILE: mocodo/convert/_ast.py
function ast_to_yaml (line 3) | def ast_to_yaml(node, indent=""):
function run (line 15) | def run(source, subargs=None, common=None):
FILE: mocodo/convert/_chen.py
class Chen (line 14) | class Chen(Visitor):
method __init__ (line 15) | def __init__(self, subargs, common):
method entity_or_table_attr (line 41) | def entity_or_table_attr(self, tree):
method entity_clause (line 47) | def entity_clause(self, tree):
method assoc_clause (line 71) | def assoc_clause(self, tree):
method start (line 124) | def start(self, tree):
method get_graphviz (line 132) | def get_graphviz(self, common):
method get_text_for_testing (line 272) | def get_text_for_testing(self):
function run (line 303) | def run(source, subargs=None, common=None, testing=False):
FILE: mocodo/convert/_crow.py
class Crow (line 12) | class Crow(Visitor):
method __init__ (line 13) | def __init__(self):
method entity_or_table_attr (line 20) | def entity_or_table_attr(self, tree):
method entity_clause (line 29) | def entity_clause(self, tree):
method assoc_clause (line 45) | def assoc_clause(self, tree):
method start (line 59) | def start(self, tree):
function run (line 67) | def run(source, subargs, common=None):
FILE: mocodo/convert/_data_dict.py
class AttributeListExtractor (line 23) | class AttributeListExtractor(Transformer): # depth-first, post-order
method __init__ (line 24) | def __init__(self):
method _box_clause (line 30) | def _box_clause(self, children):
method attr (line 41) | def attr(self, children):
method datatype (line 45) | def datatype(self, children):
method finalize (line 50) | def finalize(self, common, subargs):
method get_tsv (line 81) | def get_tsv(self):
method get_markdown (line 88) | def get_markdown(self):
function run (line 102) | def run(source, subargs=None, common=None):
FILE: mocodo/convert/_prompt.py
class CreateLegNotePlaceholder (line 5) | class CreateLegNotePlaceholder(Visitor):
method assoc_leg (line 6) | def assoc_leg(self, tree):
method comment (line 15) | def comment(self, tree):
class CreateTypePlaceholder (line 20) | class CreateTypePlaceholder(Visitor):
method typed_attr (line 21) | def typed_attr(self, tree):
function CreatePlaceholder (line 25) | def CreatePlaceholder(subarg):
function get_prompt (line 34) | def get_prompt(source, chat_dir, subarg):
function backticks (line 51) | def backticks(text):
function run (line 55) | def run(source, subargs, common):
FILE: mocodo/convert/_share.py
function run (line 4) | def run(source, subargs=None, common=None):
FILE: mocodo/convert/_uml.py
class UmlClassDiagram (line 30) | class UmlClassDiagram(Visitor):
method __init__ (line 31) | def __init__(self, preamble, common):
method entity_or_table_attr (line 40) | def entity_or_table_attr(self, tree):
method entity_clause (line 49) | def entity_clause(self, tree):
method assoc_clause (line 68) | def assoc_clause(self, tree):
method inheritance_clause (line 135) | def inheritance_clause(self, tree):
method start (line 148) | def start(self, tree):
method get_plantuml (line 151) | def get_plantuml(self):
function run (line 221) | def run(source, subargs=None, common=None):
FILE: mocodo/convert/crow_gv.py
class CrowGv (line 23) | class CrowGv(Crow):
method get_text (line 25) | def get_text(self, common):
function run (line 90) | def run(source, subargs, common=None):
FILE: mocodo/convert/crow_mmd.py
function sanitize_type (line 32) | def sanitize_type(s):
class CrowMmd (line 45) | class CrowMmd(Crow):
method get_text (line 46) | def get_text(self):
function run (line 66) | def run(source, subargs, common=None):
FILE: mocodo/convert/read_template.py
function read_template (line 7) | def read_template(stem_or_path, official_template_dir):
FILE: mocodo/convert/relations.py
function set_defaults (line 11) | def set_defaults(template):
class Relations (line 74) | class Relations:
method __init__ (line 76) | def __init__(self, mcd, params):
method get_text (line 96) | def get_text(self, template):
method map_mcd_layout_onto_mld (line 198) | def map_mcd_layout_onto_mld(self, lines):
method may_retrieve_distant_leg_note (line 224) | def may_retrieve_distant_leg_note(self, leg, attribute):
method may_retrieve_distant_outer_source (line 231) | def may_retrieve_distant_outer_source(self, leg, attribute):
method ensure_no_reciprocical_relative_entities (line 238) | def ensure_no_reciprocical_relative_entities(self):
method pop_optionality_from_datatype (line 250) | def pop_optionality_from_datatype(attribute, is_primary = False):
method relations_from_entities (line 263) | def relations_from_entities(self):
method strengthen_weak_identifiers (line 295) | def strengthen_weak_identifiers(self):
method find_inheritance_parent_or_children_to_delete (line 360) | def find_inheritance_parent_or_children_to_delete(self):
method strengthen_children (line 373) | def strengthen_children(self):
method strengthen_parents (line 397) | def strengthen_parents(self):
method process_associations (line 418) | def process_associations(self):
method process_inheritances (line 612) | def process_inheritances(self):
method delete_inheritance_parent_or_children_to_delete (line 676) | def delete_inheritance_parent_or_children_to_delete(self):
method delete_deletable_relations (line 680) | def delete_deletable_relations(self):
method make_primary_keys_first (line 692) | def make_primary_keys_first(self):
FILE: mocodo/dev/json_to_yaml_templates.py
function repr_single (line 4) | def repr_single(s):
function convert (line 8) | def convert(source_path, target_path):
FILE: mocodo/diagram_link.py
class DiagramLink (line 4) | class DiagramLink:
method __init__ (line 5) | def __init__(self, entities, foreign_entity, foreign_key):
method calculate_size (line 19) | def calculate_size(self, style, *ignored):
method description (line 38) | def description(self, style, geo):
FILE: mocodo/entity.py
class Entity (line 5) | class Entity:
method __init__ (line 6) | def __init__(self, clause):
method add_attributes (line 26) | def add_attributes(self, legs_to_strengthen, is_child, fk_format):
method register_boxes (line 54) | def register_boxes(self, boxes):
method set_id_gutter_visibility (line 57) | def set_id_gutter_visibility(self, is_visible):
method calculate_size_when_invisible (line 60) | def calculate_size_when_invisible(self, *ignored):
method calculate_size_when_visible (line 64) | def calculate_size_when_visible(self, style, get_font_metrics):
method register_center (line 92) | def register_center(self, geo):
method description_when_visible (line 100) | def description_when_visible(self, style, geo):
FILE: mocodo/font_metrics.py
function font_metrics_factory (line 5) | def font_metrics_factory(params):
FILE: mocodo/grid.py
class Grid (line 5) | class Grid(list):
method __init__ (line 7) | def __init__(self, max_number_of_nodes=100, min_balance=0.5):
method get_nth_next (line 26) | def get_nth_next(self, index, nth):
method get_markdown (line 34) | def get_markdown(self):
FILE: mocodo/guess_title.py
function guess_title (line 17) | def guess_title(source, language):
function may_update_params_with_guessed_title (line 40) | def may_update_params_with_guessed_title(source, params):
FILE: mocodo/inheritance.py
class Inheritance (line 11) | class Inheritance:
method reset_counter (line 16) | def reset_counter(cls):
method __init__ (line 19) | def __init__(self, clause, **params):
method register_boxes (line 49) | def register_boxes(self, boxes):
method calculate_size (line 52) | def calculate_size(self, style, get_font_metrics):
method register_center (line 64) | def register_center(self, geo):
method description (line 72) | def description(self, style, geo):
method leg_descriptions (line 119) | def leg_descriptions(self, style, geo):
FILE: mocodo/leg.py
class Leg (line 8) | class Leg:
method __init__ (line 9) | def __init__(self, association, leg_clause, **params):
method register_entity (line 47) | def register_entity(self, entity):
method register_mcd_has_cif (line 50) | def register_mcd_has_cif(self, mcd_has_cif):
method append_candidate_group (line 55) | def append_candidate_group(self, candidate_number: str):
method calculate_size (line 62) | def calculate_size(self, style, get_font_metrics):
method set_spin_strategy (line 67) | def set_spin_strategy(self, spin):
method _straight_description (line 74) | def _straight_description(self, style, geo):
method _curved_description (line 187) | def _curved_description(self, style, geo):
class InheritanceLeg (line 306) | class InheritanceLeg:
method __init__ (line 307) | def __init__(self, inheritance, leg, **params):
method register_entity (line 315) | def register_entity(self, entity):
method calculate_size (line 318) | def calculate_size(self, style, get_font_metrics):
method description (line 323) | def description(self, style, geo):
class ConstraintLeg (line 390) | class ConstraintLeg:
method __init__ (line 392) | def __init__(self, constraint, kind, box_raw_name):
method register_box (line 399) | def register_box(self, box):
method description (line 402) | def description(self, style, geo):
function line_intersection (line 472) | def line_intersection(ex, ey, w, h, ax, ay, cmp=lambda x, y: (x > y) - (...
function straight_leg_factory (line 485) | def straight_leg_factory(ex, ey, ew, eh, ax, ay, aw, ah, cw=0, ch=0, car...
function curved_leg_factory (line 528) | def curved_leg_factory(ex, ey, ew, eh, ax, ay, aw, ah, cw, ch, card_marg...
function orthogonal_translation (line 640) | def orthogonal_translation(x1, y1, x2, y2, d):
FILE: mocodo/magic.py
function update_cell (line 26) | def update_cell(content):
function read_and_cleanup_text (line 51) | def read_and_cleanup_text(path):
function display_converted_file (line 56) | def display_converted_file(path, hide_header):
function mocodo (line 88) | def mocodo(line="", source=""):
FILE: mocodo/mcd.py
function cmp (line 19) | def cmp(x, y):
class Mcd (line 24) | class Mcd:
method __init__ (line 26) | def __init__(self, source, get_font_metrics=None, **params):
method get_notes_data (line 297) | def get_notes_data(self):
method update_notes_data (line 311) | def update_notes_data(self, notes_data):
method update_footer (line 317) | def update_footer(self):
method get_layout_data (line 321) | def get_layout_data(self):
method get_layout (line 355) | def get_layout(self):
method get_row_text (line 358) | def get_row_text(self, row):
method get_non_phantom_count (line 361) | def get_non_phantom_count(self):
method set_layout (line 364) | def set_layout(self, layout, col_count=None, row_count=None, **kwargs):
method get_clauses (line 391) | def get_clauses(self):
method get_vertically_flipped_clauses (line 399) | def get_vertically_flipped_clauses(self):
method get_horizontally_flipped_clauses (line 405) | def get_horizontally_flipped_clauses(self):
method get_diagonally_flipped_clauses (line 411) | def get_diagonally_flipped_clauses(self):
method get_refitted_clauses (line 417) | def get_refitted_clauses(self, nth_fit_or_col_count, row_count=None):
method calculate_or_retrieve_geo (line 440) | def calculate_or_retrieve_geo(self, params):
method calculate_size (line 496) | def calculate_size(self, style):
method description (line 583) | def description(self, style, geo):
method get_overlaps (line 637) | def get_overlaps(self):
FILE: mocodo/mcd_to_svg.py
function svg2png (line 10) | def svg2png(**kargs):
function main (line 15) | def main(mcd, common, suppress_mocodo_header=False):
function html_escape (line 106) | def html_escape(
FILE: mocodo/mocodo_error.py
class MocodoError (line 4) | class MocodoError(Exception):
method __init__ (line 5) | def __init__(self, errno, message):
function subarg_error (line 24) | def subarg_error(subsubopt, subsubarg):
function subsubopt_error (line 27) | def subsubopt_error(subsubopt):
function subopt_error (line 30) | def subopt_error(opt, subopt):
FILE: mocodo/parse_mcd.py
class LarkError (line 39) | class LarkError(Exception):
class ConfigurationError (line 43) | class ConfigurationError(LarkError, ValueError):
function assert_config (line 47) | def assert_config(value, options: Collection, msg='Got %r, expected one ...
class GrammarError (line 52) | class GrammarError(LarkError):
class ParseError (line 56) | class ParseError(LarkError):
class LexError (line 60) | class LexError(LarkError):
class UnexpectedInput (line 65) | class UnexpectedInput(LarkError):
method get_context (line 73) | def get_context(self, text: str, span: int=40) -> str:
method match_examples (line 88) | def match_examples(self, parse_fn: 'Callable[[str], Tree]',
method _format_expected (line 139) | def _format_expected(self, expected):
class UnexpectedEOF (line 146) | class UnexpectedEOF(ParseError, UnexpectedInput):
method __init__ (line 150) | def __init__(self, expected, state=None, terminals_by_name=None):
method __str__ (line 164) | def __str__(self):
class UnexpectedCharacters (line 170) | class UnexpectedCharacters(LexError, UnexpectedInput):
method __init__ (line 176) | def __init__(self, seq, lex_pos, line, column, allowed=None, considere...
method __str__ (line 200) | def __str__(self):
class UnexpectedToken (line 210) | class UnexpectedToken(ParseError, UnexpectedInput):
method __init__ (line 217) | def __init__(self, token, expected, considered_rules=None, state=None,...
method accepts (line 238) | def accepts(self) -> Set[str]:
method __str__ (line 243) | def __str__(self):
class VisitError (line 253) | class VisitError(LarkError):
method __init__ (line 259) | def __init__(self, rule, obj, orig_exc):
class MissingVariableError (line 268) | class MissingVariableError(LarkError):
function classify (line 289) | def classify(seq: Iterable, key: Optional[Callable] = None, value: Optio...
function _deserialize (line 301) | def _deserialize(data: Any, namespace: Dict[str, Any], memo: Dict) -> Any:
class Serialize (line 317) | class Serialize:
method memo_serialize (line 320) | def memo_serialize(self, types_to_memoize: List) -> Any:
method serialize (line 324) | def serialize(self, memo = None) -> Dict[str, Any]:
method deserialize (line 337) | def deserialize(cls: Type[_T], data: Dict[str, Any], memo: Dict[int, A...
class SerializeMemoizer (line 360) | class SerializeMemoizer(Serialize):
method __init__ (line 365) | def __init__(self, types_to_memoize: List) -> None:
method in_types (line 369) | def in_types(self, value: Serialize) -> bool:
method serialize (line 372) | def serialize(self) -> Dict[int, Any]: ##
method deserialize (line 377) | def deserialize(cls, data: Dict[int, Any], namespace: Dict[str, Any], ...
function get_regexp_width (line 397) | def get_regexp_width(expr: str) -> Union[Tuple[int, int], List[int]]:
class Meta (line 434) | class Meta:
method __init__ (line 446) | def __init__(self):
class Tree (line 454) | class Tree(Generic[_Leaf_T]):
method __init__ (line 460) | def __init__(self, data: str, children: 'List[Branch[_Leaf_T]]', meta:...
method meta (line 466) | def meta(self) -> Meta:
method __repr__ (line 471) | def __repr__(self):
method _pretty_label (line 474) | def _pretty_label(self):
method _pretty (line 477) | def _pretty(self, level, indent_str):
method pretty (line 489) | def pretty(self, indent_str: str=' ') -> str:
method __rich__ (line 493) | def __rich__(self, parent:Optional['rich.tree.Tree']=None) -> 'rich.tr...
method _rich (line 497) | def _rich(self, parent):
method __eq__ (line 512) | def __eq__(self, other):
method __ne__ (line 518) | def __ne__(self, other):
method __hash__ (line 521) | def __hash__(self) -> int:
method iter_subtrees (line 524) | def iter_subtrees(self) -> 'Iterator[Tree[_Leaf_T]]':
method iter_subtrees_topdown (line 539) | def iter_subtrees_topdown(self):
method find_pred (line 552) | def find_pred(self, pred: 'Callable[[Tree[_Leaf_T]], bool]') -> 'Itera...
method find_data (line 556) | def find_data(self, data: str) -> 'Iterator[Tree[_Leaf_T]]':
class _DiscardType (line 572) | class _DiscardType:
method __repr__ (line 575) | def __repr__(self):
class _Decoratable (line 583) | class _Decoratable:
method _apply_v_args (line 587) | def _apply_v_args(cls, visit_wrapper):
method __class_getitem__ (line 608) | def __class_getitem__(cls, _):
class Transformer (line 612) | class Transformer(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
method __init__ (line 617) | def __init__(self, visit_tokens: bool=True) -> None:
method _call_userfunc (line 620) | def _call_userfunc(self, tree, new_children=None):
method _call_userfunc_token (line 640) | def _call_userfunc_token(self, token):
method _transform_children (line 653) | def _transform_children(self, children):
method _transform_tree (line 665) | def _transform_tree(self, tree):
method transform (line 669) | def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
method __mul__ (line 673) | def __mul__(
method __default__ (line 680) | def __default__(self, data, children, meta):
method __default_token__ (line 684) | def __default_token__(self, token):
function merge_transformers (line 689) | def merge_transformers(base_transformer=None, **transformers_to_merge):
class InlineTransformer (line 709) | class InlineTransformer(Transformer): ##
method _call_userfunc (line 711) | def _call_userfunc(self, tree, new_children=None):
class TransformerChain (line 723) | class TransformerChain(Generic[_Leaf_T, _Return_T]):
method __init__ (line 727) | def __init__(self, *transformers: 'Union[Transformer, TransformerChain...
method transform (line 730) | def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
method __mul__ (line 735) | def __mul__(
class Transformer_InPlace (line 742) | class Transformer_InPlace(Transformer):
method _transform_tree (line 744) | def _transform_tree(self, tree): ##
method transform (line 748) | def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
class Transformer_NonRecursive (line 755) | class Transformer_NonRecursive(Transformer):
method transform (line 758) | def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
class Transformer_InPlaceRecursive (line 803) | class Transformer_InPlaceRecursive(Transformer):
method _transform_tree (line 805) | def _transform_tree(self, tree):
class VisitorBase (line 813) | class VisitorBase:
method _call_userfunc (line 814) | def _call_userfunc(self, tree):
method __default__ (line 817) | def __default__(self, tree):
method __class_getitem__ (line 821) | def __class_getitem__(cls, _):
class Visitor (line 825) | class Visitor(VisitorBase, ABC, Generic[_Leaf_T]):
method visit (line 828) | def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
method visit_topdown (line 834) | def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
class Visitor_Recursive (line 841) | class Visitor_Recursive(VisitorBase, Generic[_Leaf_T]):
method visit (line 844) | def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
method visit_topdown (line 853) | def visit_topdown(self,tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
class Interpreter (line 864) | class Interpreter(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
method visit (line 867) | def visit(self, tree: Tree[_Leaf_T]) -> _Return_T:
method _visit_tree (line 876) | def _visit_tree(self, tree: Tree[_Leaf_T]):
method visit_children (line 884) | def visit_children(self, tree: Tree[_Leaf_T]) -> List:
method __getattr__ (line 888) | def __getattr__(self, name):
method __default__ (line 891) | def __default__(self, tree):
function visit_children_decor (line 897) | def visit_children_decor(func: _InterMethod) -> _InterMethod:
function _apply_v_args (line 908) | def _apply_v_args(obj, visit_wrapper):
class _VArgsWrapper (line 917) | class _VArgsWrapper:
method __init__ (line 921) | def __init__(self, func: Callable, visit_wrapper: Callable[[Callable, ...
method __call__ (line 931) | def __call__(self, *args, **kwargs):
method __get__ (line 934) | def __get__(self, instance, owner=None):
method __set_name__ (line 946) | def __set_name__(self, owner, name):
function _vargs_inline (line 955) | def _vargs_inline(f, _data, children, _meta):
function _vargs_meta_inline (line 957) | def _vargs_meta_inline(f, _data, children, meta):
function _vargs_meta (line 959) | def _vargs_meta(f, _data, children, meta):
function _vargs_tree (line 961) | def _vargs_tree(f, data, children, meta):
function v_args (line 965) | def v_args(inline: bool = False, meta: bool = False, tree: bool = False,...
class Symbol (line 995) | class Symbol(Serialize):
method __init__ (line 1001) | def __init__(self, name: str) -> None:
method __eq__ (line 1004) | def __eq__(self, other):
method __ne__ (line 1008) | def __ne__(self, other):
method __hash__ (line 1011) | def __hash__(self):
method __repr__ (line 1014) | def __repr__(self):
method renamed (line 1019) | def renamed(self, f):
class Terminal (line 1023) | class Terminal(Symbol):
method __init__ (line 1028) | def __init__(self, name, filter_out=False):
method fullrepr (line 1033) | def fullrepr(self):
method renamed (line 1036) | def renamed(self, f):
class NonTerminal (line 1040) | class NonTerminal(Symbol):
class RuleOptions (line 1046) | class RuleOptions(Serialize):
method __init__ (line 1055) | def __init__(self, keep_all_tokens: bool=False, expand1: bool=False, p...
method __repr__ (line 1062) | def __repr__(self):
class Rule (line 1071) | class Rule(Serialize):
method __init__ (line 1078) | def __init__(self, origin, expansion, order=0, alias=None, options=None):
method _deserialize (line 1086) | def _deserialize(self):
method __str__ (line 1089) | def __str__(self):
method __repr__ (line 1092) | def __repr__(self):
method __hash__ (line 1095) | def __hash__(self):
method __eq__ (line 1098) | def __eq__(self, other):
class Pattern (line 1113) | class Pattern(Serialize, ABC):
method __init__ (line 1120) | def __init__(self, value: str, flags: Collection[str] = (), raw: Optio...
method __repr__ (line 1125) | def __repr__(self):
method __hash__ (line 1130) | def __hash__(self):
method __eq__ (line 1133) | def __eq__(self, other):
method to_regexp (line 1137) | def to_regexp(self) -> str:
method min_width (line 1142) | def min_width(self) -> int:
method max_width (line 1147) | def max_width(self) -> int:
method _get_flags (line 1150) | def _get_flags(self, value):
class PatternStr (line 1156) | class PatternStr(Pattern):
method to_regexp (line 1161) | def to_regexp(self) -> str:
method min_width (line 1165) | def min_width(self) -> int:
method max_width (line 1169) | def max_width(self) -> int:
class PatternRE (line 1173) | class PatternRE(Pattern):
method to_regexp (line 1178) | def to_regexp(self) -> str:
method _get_width (line 1182) | def _get_width(self):
method min_width (line 1188) | def min_width(self) -> int:
method max_width (line 1192) | def max_width(self) -> int:
class TerminalDef (line 1196) | class TerminalDef(Serialize):
method __init__ (line 1204) | def __init__(self, name: str, pattern: Pattern, priority: int = TOKEN_...
method __repr__ (line 1210) | def __repr__(self):
method user_repr (line 1213) | def user_repr(self) -> str:
class Token (line 1222) | class Token(str):
method __new__ (line 1239) | def __new__(
method __new__ (line 1253) | def __new__(
method __new__ (line 1265) | def __new__(cls, *args, **kwargs):
method _future_new (line 1277) | def _future_new(cls, type, value, start_pos=None, line=None, column=No...
method update (line 1291) | def update(self, type: Optional[str] = None, value: Optional[Any] = No...
method update (line 1295) | def update(self, type_: Optional[str] = None, value: Optional[Any] = N...
method update (line 1298) | def update(self, *args, **kwargs):
method _future_update (line 1308) | def _future_update(self, type: Optional[str] = None, value: Optional[A...
method new_borrow_pos (line 1316) | def new_borrow_pos(cls: Type[_T], type_: str, value: Any, borrow_t: 'T...
method __reduce__ (line 1319) | def __reduce__(self):
method __repr__ (line 1322) | def __repr__(self):
method __deepcopy__ (line 1325) | def __deepcopy__(self, memo):
method __eq__ (line 1328) | def __eq__(self, other):
class LineCounter (line 1337) | class LineCounter:
method __init__ (line 1340) | def __init__(self, newline_char):
method __eq__ (line 1347) | def __eq__(self, other):
method feed (line 1353) | def feed(self, token: Token, test_newline=True):
class UnlessCallback (line 1365) | class UnlessCallback:
method __init__ (line 1366) | def __init__(self, scanner):
method __call__ (line 1369) | def __call__(self, t):
class CallChain (line 1376) | class CallChain:
method __init__ (line 1377) | def __init__(self, callback1, callback2, cond):
method __call__ (line 1382) | def __call__(self, t):
function _get_match (line 1387) | def _get_match(re_, regexp, s, flags):
function _create_unless (line 1392) | def _create_unless(terminals, g_regex_flags, re_, use_bytes):
class Scanner (line 1414) | class Scanner:
method __init__ (line 1415) | def __init__(self, terminals, g_regex_flags, re_, use_bytes, match_who...
method _build_mres (line 1426) | def _build_mres(self, terminals, max_size):
method match (line 1449) | def match(self, text, pos):
function _regexp_has_newline (line 1456) | def _regexp_has_newline(r: str):
class LexerState (line 1461) | class LexerState:
method __init__ (line 1470) | def __init__(self, text: str, line_ctr: Optional[LineCounter]=None, la...
method __eq__ (line 1475) | def __eq__(self, other):
method __copy__ (line 1481) | def __copy__(self):
class LexerThread (line 1485) | class LexerThread:
method __init__ (line 1488) | def __init__(self, lexer: 'Lexer', lexer_state: LexerState):
method from_text (line 1493) | def from_text(cls, lexer: 'Lexer', text: str):
method lex (line 1496) | def lex(self, parser_state):
method __copy__ (line 1499) | def __copy__(self):
class Lexer (line 1507) | class Lexer(ABC):
method lex (line 1510) | def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[...
method make_lexer_state (line 1513) | def make_lexer_state(self, text):
function _check_regex_collisions (line 1518) | def _check_regex_collisions(terminal_to_regexp: Dict[TerminalDef, str], ...
class BasicLexer (line 1556) | class BasicLexer(Lexer):
method __init__ (line 1564) | def __init__(self, conf: 'LexerConf', comparator=None) -> None:
method _build_scanner (line 1608) | def _build_scanner(self):
method scanner (line 1623) | def scanner(self):
method match (line 1628) | def match(self, text, pos):
method lex (line 1631) | def lex(self, state: LexerState, parser_state: Any) -> Iterator[Token]:
method next_token (line 1636) | def next_token(self, lex_state: LexerState, parser_state: Any = None) ...
class ContextualLexer (line 1673) | class ContextualLexer(Lexer):
method __init__ (line 1678) | def __init__(self, conf: 'LexerConf', states: Dict[str, Collection[str...
method lex (line 1709) | def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[...
class LexerConf (line 1736) | class LexerConf(Serialize):
method __init__ (line 1751) | def __init__(self, terminals: Collection[TerminalDef], re_module: Modu...
method _deserialize (line 1766) | def _deserialize(self):
method __deepcopy__ (line 1769) | def __deepcopy__(self, memo=None):
class ParserConf (line 1782) | class ParserConf(Serialize):
method __init__ (line 1785) | def __init__(self, rules, callbacks, start):
class ExpandSingleChild (line 1798) | class ExpandSingleChild:
method __init__ (line 1799) | def __init__(self, node_builder):
method __call__ (line 1802) | def __call__(self, children):
class PropagatePositions (line 1810) | class PropagatePositions:
method __init__ (line 1811) | def __init__(self, node_builder, node_filter=None):
method __call__ (line 1815) | def __call__(self, children):
method _pp_get_meta (line 1858) | def _pp_get_meta(self, children):
function make_propagate_positions (line 1870) | def make_propagate_positions(option):
class ChildFilter (line 1881) | class ChildFilter:
method __init__ (line 1882) | def __init__(self, to_include, append_none, node_builder):
method __call__ (line 1887) | def __call__(self, children):
class ChildFilterLALR (line 1904) | class ChildFilterLALR(ChildFilter):
method __call__ (line 1907) | def __call__(self, children):
class ChildFilterLALR_NoPlaceholders (line 1927) | class ChildFilterLALR_NoPlaceholders(ChildFilter):
method __init__ (line 1929) | def __init__(self, to_include, node_builder):
method __call__ (line 1933) | def __call__(self, children):
function _should_expand (line 1947) | def _should_expand(sym):
function maybe_create_child_filter (line 1951) | def maybe_create_child_filter(expansion, keep_all_tokens, ambiguous, _em...
class AmbiguousExpander (line 1981) | class AmbiguousExpander:
method __init__ (line 1983) | def __init__(self, to_expand, tree_class, node_builder):
method __call__ (line 1988) | def __call__(self, children):
function maybe_create_ambiguous_expander (line 2015) | def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_toke...
class AmbiguousIntermediateExpander (line 2022) | class AmbiguousIntermediateExpander:
method __init__ (line 2025) | def __init__(self, tree_class, node_builder):
method __call__ (line 2029) | def __call__(self, children):
function inplace_transformer (line 2063) | def inplace_transformer(func):
function apply_visit_wrapper (line 2073) | def apply_visit_wrapper(func, name, wrapper):
class ParseTreeBuilder (line 2083) | class ParseTreeBuilder:
method __init__ (line 2084) | def __init__(self, rules, tree_class, propagate_positions=False, ambig...
method _init_builders (line 2092) | def _init_builders(self, rules):
method create_callback (line 2110) | def create_callback(self, transformer=None):
class LALR_Parser (line 2145) | class LALR_Parser(Serialize):
method __init__ (line 2146) | def __init__(self, parser_conf, debug=False, strict=False):
method deserialize (line 2156) | def deserialize(cls, data, memo, callbacks, debug=False):
method serialize (line 2162) | def serialize(self, memo: Any = None) -> Dict[str, Any]:
method parse_interactive (line 2165) | def parse_interactive(self, lexer, start):
method parse (line 2168) | def parse(self, lexer, start, on_error=None):
class ParseConf (line 2203) | class ParseConf:
method __init__ (line 2206) | def __init__(self, parse_table, callbacks, start):
class ParserState (line 2217) | class ParserState:
method __init__ (line 2220) | def __init__(self, parse_conf, lexer, state_stack=None, value_stack=No...
method position (line 2227) | def position(self):
method __eq__ (line 2232) | def __eq__(self, other):
method __copy__ (line 2237) | def __copy__(self):
method copy (line 2246) | def copy(self):
method feed_token (line 2249) | def feed_token(self, token, is_end=False):
class _Parser (line 2295) | class _Parser:
method __init__ (line 2296) | def __init__(self, parse_table, callbacks, debug=False):
method parse (line 2301) | def parse(self, lexer, start, value_stack=None, state_stack=None, star...
method parse_from_state (line 2309) | def parse_from_state(self, state, last_token=None):
class Action (line 2336) | class Action:
method __init__ (line 2337) | def __init__(self, name):
method __str__ (line 2339) | def __str__(self):
method __repr__ (line 2341) | def __repr__(self):
class ParseTable (line 2348) | class ParseTable:
method __init__ (line 2349) | def __init__(self, states, start_states, end_states):
method serialize (line 2354) | def serialize(self, memo):
method deserialize (line 2371) | def deserialize(cls, data, memo):
class IntParseTable (line 2381) | class IntParseTable(ParseTable):
method from_ParseTable (line 2384) | def from_ParseTable(cls, parse_table):
function _wrap_lexer (line 2401) | def _wrap_lexer(lexer_class):
function _deserialize_parsing_frontend (line 2414) | def _deserialize_parsing_frontend(data, memo, lexer_conf, callbacks, opt...
class ParsingFrontend (line 2425) | class ParsingFrontend(Serialize):
method __init__ (line 2432) | def __init__(self, lexer_conf: LexerConf, parser_conf: ParserConf, opt...
method _verify_start (line 2473) | def _verify_start(self, start=None):
method _make_lexer_thread (line 2483) | def _make_lexer_thread(self, text: str):
method parse (line 2487) | def parse(self, text: str, start=None, on_error=None):
method parse_interactive (line 2493) | def parse_interactive(self, text: Optional[str]=None, start=None):
function _validate_frontend_args (line 2506) | def _validate_frontend_args(parser, lexer) -> None:
function _get_lexer_callbacks (line 2518) | def _get_lexer_callbacks(transformer, terminals):
class PostLexConnector (line 2526) | class PostLexConnector:
method __init__ (line 2527) | def __init__(self, lexer, postlexer):
method lex (line 2531) | def lex(self, lexer_state, parser_state):
function create_basic_lexer (line 2537) | def create_basic_lexer(lexer_conf, parser, postlex, options) -> BasicLexer:
function create_contextual_lexer (line 2541) | def create_contextual_lexer(lexer_conf: LexerConf, parser, postlex, opti...
function create_lalr_parser (line 2547) | def create_lalr_parser(lexer_conf: LexerConf, parser_conf: ParserConf, o...
class PostLex (line 2558) | class PostLex(ABC):
method process (line 2560) | def process(self, stream: Iterator[Token]) -> Iterator[Token]:
class LarkOptions (line 2565) | class LarkOptions(Serialize):
method __init__ (line 2706) | def __init__(self, options_dict: Dict[str, Any]) -> None:
method __getattr__ (line 2735) | def __getattr__(self, name: str) -> Any:
method __setattr__ (line 2741) | def __setattr__(self, name: str, value: str) -> None:
method serialize (line 2745) | def serialize(self, memo = None) -> Dict[str, Any]:
method deserialize (line 2749) | def deserialize(cls, data: Dict[str, Any], memo: Dict[int, Union[Termi...
class Lark (line 2765) | class Lark(Serialize):
method __init__ (line 2776) | def __init__(self, grammar: 'Union[Grammar, str, IO[str]]', **options)...
method _build_lexer (line 2989) | def _build_lexer(self, dont_ignore: bool=False) -> BasicLexer:
method _prepare_callbacks (line 2997) | def _prepare_callbacks(self) -> None:
method _build_parser (line 3012) | def _build_parser(self) -> "ParsingFrontend":
method save (line 3024) | def save(self, f, exclude_options: Collection[str] = ()) -> None:
method load (line 3032) | def load(cls: Type[_T], f) -> _T:
method _deserialize_lexer_conf (line 3037) | def _deserialize_lexer_conf(self, data: Dict[str, Any], memo: Dict[int...
method _load (line 3047) | def _load(self: _T, f: Any, **kwargs) -> _T:
method _load_from_dict (line 3081) | def _load_from_dict(cls, data, memo, **kwargs):
method open (line 3086) | def open(cls: Type[_T], grammar_filename: str, rel_to: Optional[str]=N...
method open_from_package (line 3095) | def open_from_package(cls: Type[_T], package: str, grammar_path: str, ...
method __repr__ (line 3104) | def __repr__(self):
method lex (line 3108) | def lex(self, text: str, dont_ignore: bool=False) -> Iterator[Token]:
method get_terminal (line 3121) | def get_terminal(self, name: str) -> TerminalDef:
method parse_interactive (line 3125) | def parse_interactive(self, text: Optional[str]=None, start: Optional[...
method parse (line 3129) | def parse(self, text: str, start: Optional[str]=None, on_error: 'Optio...
class DedentError (line 3136) | class DedentError(LarkError):
class Indenter (line 3139) | class Indenter(PostLex, ABC):
method __init__ (line 3143) | def __init__(self) -> None:
method handle_NL (line 3148) | def handle_NL(self, token: Token) -> Iterator[Token]:
method _process (line 3169) | def _process(self, stream):
method process (line 3188) | def process(self, stream):
method always_accept (line 3196) | def always_accept(self):
method NL_type (line 3201) | def NL_type(self) -> str:
method OPEN_PAREN_types (line 3206) | def OPEN_PAREN_types(self) -> List[str]:
method CLOSE_PAREN_types (line 3211) | def CLOSE_PAREN_types(self) -> List[str]:
method INDENT_type (line 3216) | def INDENT_type(self) -> str:
method DEDENT_type (line 3221) | def DEDENT_type(self) -> str:
method tab_len (line 3226) | def tab_len(self) -> int:
class PythonIndenter (line 3230) | class PythonIndenter(Indenter):
function Lark_StandAlone (line 3248) | def Lark_StandAlone(**kwargs):
FILE: mocodo/phantom.py
class Phantom (line 1) | class Phantom:
method reset_counter (line 6) | def reset_counter(cls):
method __init__ (line 9) | def __init__(self):
method calculate_size (line 19) | def calculate_size(self, *ignored):
method register_center (line 23) | def register_center(self, geo):
method register_boxes (line 26) | def register_boxes(self, boxes):
FILE: mocodo/rewrite/_arrange.py
function run (line 5) | def run(source, subargs, **kargs):
FILE: mocodo/rewrite/_drain.py
class DrainerFirstPass (line 9) | class DrainerFirstPass(Visitor):
method __init__ (line 14) | def __init__(self):
method assoc_clause (line 17) | def assoc_clause(self, tree):
class DrainerSecondPass (line 51) | class DrainerSecondPass(Visitor):
method __init__ (line 55) | def __init__(self, drained_attrs):
method entity_clause (line 58) | def entity_clause(self, tree):
function run (line 71) | def run(source, **kargs):
FILE: mocodo/rewrite/_drown.py
class Numbering (line 5) | class Numbering(Visitor):
method __init__ (line 7) | def __init__(self, tree, params):
method update_box_attrs (line 30) | def update_box_attrs(self, tree, token_name):
method box_name (line 37) | def box_name(self, tree):
method entity_clause (line 41) | def entity_clause(self, tree):
method assoc_clause (line 44) | def assoc_clause(self, tree):
function run (line 50) | def run(source, params, **kargs):
FILE: mocodo/rewrite/_explode.py
class Exploder (line 7) | class Exploder(Visitor):
method __init__ (line 9) | def __init__(self, subargs, params):
method line (line 32) | def line(self, tree):
function run (line 99) | def run(source, subargs=None, params=None, **kargs):
FILE: mocodo/rewrite/_grow.py
function random_booleans (line 9) | def random_booleans(n, p):
function calculate_cards (line 15) | def calculate_cards(scheme, refs):
function extract_weak_entities (line 27) | def extract_weak_entities(cards, refs):
function biased_choice (line 32) | def biased_choice(elements):
function biased_sample (line 37) | def biased_sample(elements, k):
function run (line 46) | def run(source, subargs=None, params=None, **kargs):
FILE: mocodo/rewrite/_split.py
class Splitter (line 8) | class Splitter(Visitor):
method line (line 10) | def line(self, tree):
function run (line 82) | def run(source, **kargs):
FILE: mocodo/rewrite/arrange_bb.py
function arrange (line 12) | def arrange(source, subargs, has_expired):
FILE: mocodo/rewrite/arrange_ga.py
function arrange (line 8) | def arrange(source, subargs, has_expired):
FILE: mocodo/rewrite/arrows.py
class ArrowsHere (line 4) | class ArrowsHere(Visitor):
method assoc_leg (line 6) | def assoc_leg(self, tree):
class ArrowsAcross (line 14) | class ArrowsAcross(Visitor):
method assoc_clause (line 16) | def assoc_clause(self, tree):
function create_df_arrows (line 27) | def create_df_arrows(source, where):
FILE: mocodo/rewrite/cards.py
function fix_card (line 6) | def fix_card(
class DfInference (line 20) | class DfInference(Visitor):
method __init__ (line 22) | def __init__(self, df_label):
method assoc_clause (line 25) | def assoc_clause(self, tree):
function infer_dfs (line 40) | def infer_dfs(source, df_label):
class RoleInference (line 46) | class RoleInference(Visitor):
method assoc_clause (line 48) | def assoc_clause(self, tree):
function infer_roles (line 64) | def infer_roles(source):
FILE: mocodo/rewrite/constraints.py
class CreateCifs (line 7) | class CreateCifs(Visitor):
method __init__ (line 9) | def __init__(self):
method entity_clause (line 14) | def entity_clause(self, tree):
method assoc_clause (line 20) | def assoc_clause(self, tree):
method constraint_clause (line 33) | def constraint_clause(self, tree):
method get_new_cifs (line 56) | def get_new_cifs(self, hidden_links_from_sources=False):
function create_cifs (line 73) | def create_cifs(source, subsubarg):
FILE: mocodo/rewrite/cross.py
function cross (line 6) | def cross(x1, y1, x2, y2, x3, y3, x4, y4):
FILE: mocodo/rewrite/damerau_levenshtein.py
function distance (line 4) | def distance(seq1, seq2):
FILE: mocodo/rewrite/fitness.py
function fitness (line 6) | def fitness(links, multiplicity, col_count, row_count, max_distance = 4):
FILE: mocodo/rewrite/guess_entities.py
function run (line 4) | def run(source, id_prefix):
FILE: mocodo/rewrite/obfuscate.py
function random_words_generator (line 10) | def random_words_generator(
function obfuscator_factory (line 28) | def obfuscator_factory(pool, params):
FILE: mocodo/rewrite/op_tk.py
class Mapper (line 48) | class Mapper(Transformer):
method __init__ (line 50) | def __init__(self, op_name, pre_token, subsubarg, params):
function run (line 93) | def run(source, op_name, subargs, params, **kargs):
FILE: mocodo/rewrite/types.py
class CreateTypePlaceholder (line 8) | class CreateTypePlaceholder(Visitor):
method __init__ (line 10) | def __init__(self, subsubarg):
method typed_attr (line 13) | def typed_attr(self, tree):
function create_type_placeholders (line 17) | def create_type_placeholders(source, subsubarg):
function read_default_datatypes (line 23) | def read_default_datatypes(resource_dir, language="en"):
class GuessType (line 33) | class GuessType(Visitor):
method __init__ (line 35) | def __init__(self,params):
method typed_attr (line 47) | def typed_attr(self, tree):
function guess_types (line 69) | def guess_types(source, params):
FILE: mocodo/tools/graphviz_tools.py
function create_name_to_index (line 3) | def create_name_to_index():
function minify_graphviz (line 16) | def minify_graphviz(text):
function row_format_to_td_templates (line 75) | def row_format_to_td_templates(
function table_as_label (line 107) | def table_as_label(header_text, rows, row_format, style):
FILE: mocodo/tools/load_mini_yaml.py
function parse_value (line 4) | def parse_value(v):
function run (line 28) | def run(path):
FILE: mocodo/tools/parser_tools.py
function parse_source (line 6) | def parse_source(source):
class Reconstructor (line 84) | class Reconstructor(Visitor):
method __init__ (line 86) | def __init__(self):
method __default__ (line 89) | def __default__(self, tree):
function reconstruct_source (line 94) | def reconstruct_source(tree):
function transform_source (line 102) | def transform_source(source, transformer):
class ClauseExtractor (line 110) | class ClauseExtractor(Transformer):
method _item (line 128) | def _item(self, key, tree):
method start (line 149) | def start(self, tree):
method line (line 152) | def line(self, tree):
method break_ (line 158) | def break_(self, tree):
method phantoms (line 161) | def phantoms(self, tree):
method comment (line 164) | def comment(self, tree):
method entity_clause (line 167) | def entity_clause(self, tree):
method assoc_clause (line 170) | def assoc_clause(self, tree):
method constraint_clause (line 173) | def constraint_clause(self, tree):
method inheritance_clause (line 176) | def inheritance_clause(self, tree):
method typed_attr (line 185) | def typed_attr(self, tree):
method assoc_leg (line 188) | def assoc_leg(self, tree):
method inheritance_parent (line 191) | def inheritance_parent(self, tree):
method inheritance_child (line 194) | def inheritance_child(self, tree):
method foreign_reference (line 197) | def foreign_reference(self, tree):
method box_name (line 200) | def box_name(self, tree):
method seq (line 203) | def seq(self, tree):
method assoc_attr (line 210) | def assoc_attr(self, tree):
method assoc_leg (line 215) | def assoc_leg(self, tree):
method constraint_target (line 218) | def constraint_target(self, tree):
method foreign_reference (line 221) | def foreign_reference(self, tree):
method entity_or_table_attr (line 224) | def entity_or_table_attr(self, tree):
method this_table_attr (line 232) | def this_table_attr(self, tree):
method that_table (line 235) | def that_table(self, tree):
method that_table_attr (line 238) | def that_table_attr(self, tree):
method constraint_coords (line 241) | def constraint_coords(self, tree):
method _constraint_coord (line 244) | def _constraint_coord(self, x):
method indent (line 251) | def indent(self, tree):
method datatype (line 254) | def datatype(self, tree):
method id_groups (line 257) | def id_groups(self, tree):
function extract_clauses (line 260) | def extract_clauses(source):
function first_child (line 281) | def first_child(tree, name, i=0):
function is_identifier (line 287) | def is_identifier(i, id_groups, id_mark):
FILE: mocodo/tools/pluralize_fr.py
function pluralize (line 59) | def pluralize(word):
FILE: mocodo/tools/string_tools.py
function wrap_label (line 9) | def wrap_label(s, wrapping_ratio=2):
function rstrip_digit_or_underline (line 21) | def rstrip_digit_or_underline(s):
function surrounds (line 28) | def surrounds(s, ends):
function strip_surrounds (line 35) | def strip_surrounds(s, ends):
function is_a_description (line 42) | def is_a_description(note):
function ascii (line 55) | def ascii(s, outliers=str.maketrans(dict(zip(LATIN.split(), ASCII.split(...
function raw_to_bid (line 58) | def raw_to_bid(box_raw_name):
function aggressive_split (line 61) | def aggressive_split(
function spare_protected_suffix (line 90) | def spare_protected_suffix(
function camel (line 105) | def camel(input_string):
function pascal (line 110) | def pascal(input_string):
function snake (line 114) | def snake(input_string):
function urlsafe_encoding (line 117) | def urlsafe_encoding(text):
function markdown_table (line 122) | def markdown_table(rows, formats=None):
FILE: mocodo/tools/various.py
function invert_dict (line 1) | def invert_dict(d):
function first_missing_positive (line 4) | def first_missing_positive(l):
FILE: test/test_api.py
class TestMocodoApi (line 13) | class TestMocodoApi(unittest.TestCase):
method test_unrecognized_arguments (line 15) | def test_unrecognized_arguments(self):
method test_no_arguments (line 19) | def test_no_arguments(self):
method test_help (line 34) | def test_help(self):
method test_version (line 38) | def test_version(self):
method test_language (line 42) | def test_language(self):
method test_input_and_output_dir (line 48) | def test_input_and_output_dir(self):
FILE: test/test_argument_parser.py
class TestSubArguments (line 9) | class TestSubArguments(unittest.TestCase):
method test_extract_subargs (line 10) | def test_extract_subargs(self):
FILE: test/test_arrange_bb.py
class ArrangeBB (line 12) | class ArrangeBB(unittest.TestCase):
method test_constraints (line 14) | def test_constraints(self):
method test_non_connected_graph (line 161) | def test_non_connected_graph(self):
method test_no_link (line 198) | def test_no_link(self):
method test_inheritance (line 230) | def test_inheritance(self):
FILE: test/test_arrange_ga.py
class ArrangeGA (line 11) | class ArrangeGA(unittest.TestCase):
method test_arrange (line 13) | def test_arrange(self):
FILE: test/test_association.py
function association_wrapper (line 11) | def association_wrapper(s, **kargs):
class ParseTest (line 15) | class ParseTest(unittest.TestCase):
method test_reflexive (line 17) | def test_reflexive(self):
method test_double (line 28) | def test_double(self):
method test_triple (line 47) | def test_triple(self):
method test_arrow (line 65) | def test_arrow(self):
method test_note (line 72) | def test_note(self):
method test_note_in_agregation (line 79) | def test_note_in_agregation(self):
method test_attributes (line 88) | def test_attributes(self):
method test_identifiers (line 98) | def test_identifiers(self):
method test_other_card (line 103) | def test_other_card(self):
method test_numbered_association_wrapper (line 114) | def test_numbered_association_wrapper(self):
method test_df (line 122) | def test_df(self):
method test_cluster_of_one_entity (line 131) | def test_cluster_of_one_entity(self):
method test_cluster_of_two_entities (line 134) | def test_cluster_of_two_entities(self):
FILE: test/test_convert_chen.py
class TestChen (line 11) | class TestChen(unittest.TestCase):
method test111N (line 13) | def test111N(self):
method test011N (line 26) | def test011N(self):
method test0N1N (line 39) | def test0N1N(self):
method test_110N (line 55) | def test_110N(self):
method test_gerund (line 68) | def test_gerund(self):
method test_NNN (line 85) | def test_NNN(self):
method test_1NN (line 100) | def test_1NN(self):
method test_11N (line 115) | def test_11N(self):
method test_111 (line 130) | def test_111(self):
method test_attrs (line 145) | def test_attrs(self):
method test_id_weakness (line 165) | def test_id_weakness(self):
FILE: test/test_cross.py
class CrossTests (line 7) | class CrossTests(unittest.TestCase):
method test_non_parallel_normal_intersection (line 9) | def test_non_parallel_normal_intersection(self):
method test_non_parallel_intersection_is_one_extremity (line 16) | def test_non_parallel_intersection_is_one_extremity(self):
method test_non_parallel_intersection_is_two_extremities (line 26) | def test_non_parallel_intersection_is_two_extremities(self):
method test_non_parallel_no_intersection (line 31) | def test_non_parallel_no_intersection(self):
method test_parallel_no_intersection (line 39) | def test_parallel_no_intersection(self):
method test_colinear_intersection_is_two_extremities (line 45) | def test_colinear_intersection_is_two_extremities(self):
method test_colinear_no_intersection (line 49) | def test_colinear_no_intersection(self):
method test_colinear_intersection_is_partial_segment (line 52) | def test_colinear_intersection_is_partial_segment(self):
method test_colinear_intersection_is_partial_segment_horizontal (line 55) | def test_colinear_intersection_is_partial_segment_horizontal(self):
method test_colinear_intersection_is_partial_segment_vertical (line 58) | def test_colinear_intersection_is_partial_segment_vertical(self):
method test_colinear_intersection_is_complete_segment_horizontal (line 61) | def test_colinear_intersection_is_complete_segment_horizontal(self):
method test_colinear_intersection_is_complete_segment_vertical (line 74) | def test_colinear_intersection_is_complete_segment_vertical(self):
method test_colinear_intersection_is_complete_segment (line 79) | def test_colinear_intersection_is_complete_segment(self):
FILE: test/test_data_dict.py
class TestDataDict (line 9) | class TestDataDict(unittest.TestCase):
method test_data_dict (line 11) | def test_data_dict(self):
method test_data_dict_with_invisible_boxes (line 108) | def test_data_dict_with_invisible_boxes(self):
FILE: test/test_entity.py
function entity_wrapper (line 8) | def entity_wrapper(s, legs_to_strengthen=None, is_child=False):
class EntityTest (line 15) | class EntityTest(unittest.TestCase):
method test_default (line 17) | def test_default(self):
method test_datatypes (line 30) | def test_datatypes(self):
method test_numbered_entity (line 39) | def test_numbered_entity(self):
method test_blank (line 47) | def test_blank(self):
method test_all_blank (line 52) | def test_all_blank(self):
method test_no_identifier_at_first_position (line 57) | def test_no_identifier_at_first_position(self):
method test_no_identifier_for_children (line 62) | def test_no_identifier_for_children(self):
method test_multiple_strong_identifier (line 67) | def test_multiple_strong_identifier(self):
method test_weak_identifier (line 72) | def test_weak_identifier(self):
method test_weak_composite_identifier (line 77) | def test_weak_composite_identifier(self):
class CandidateIdentifiersTest (line 83) | class CandidateIdentifiersTest(unittest.TestCase):
method check (line 85) | def check(self, expected_candidates, expected_id_texts, legs_to_streng...
method test_simple_id (line 94) | def test_simple_id(self):
method test_no_id (line 103) | def test_no_id(self):
method test_composite_id (line 113) | def test_composite_id(self):
method test_pushed_simple_id (line 123) | def test_pushed_simple_id(self):
method test_pushed_composite_id (line 135) | def test_pushed_composite_id(self):
method test_simple_weak_id (line 153) | def test_simple_weak_id(self):
method test_no_weak_id (line 163) | def test_no_weak_id(self):
method test_composite_weak_id (line 174) | def test_composite_weak_id(self):
method test_pushed_simple_weak_id (line 185) | def test_pushed_simple_weak_id(self):
method test_pushed_composite_weak_id (line 198) | def test_pushed_composite_weak_id(self):
method test_alt_ids_and_simple_id (line 217) | def test_alt_ids_and_simple_id(self):
method test_alt_ids_and_no_id (line 233) | def test_alt_ids_and_no_id(self):
method test_alt_ids_and_composite_id (line 243) | def test_alt_ids_and_composite_id(self):
method test_alt_ids_and_pushed_simple_id (line 272) | def test_alt_ids_and_pushed_simple_id(self):
method test_alt_ids_and_pushed_composite_id (line 305) | def test_alt_ids_and_pushed_composite_id(self):
method test_alt_ids_and_simple_id (line 338) | def test_alt_ids_and_simple_id(self):
FILE: test/test_fitness.py
class ArrangeBB (line 10) | class ArrangeBB(unittest.TestCase):
method test_optimal_layout (line 12) | def test_optimal_layout(self):
method test_optimal_layout_with_reflexive_association (line 30) | def test_optimal_layout_with_reflexive_association(self):
method test_diagonal_reflexive_association (line 51) | def test_diagonal_reflexive_association(self):
method test_2_0_link (line 69) | def test_2_0_link(self):
method test_1_1_link (line 86) | def test_1_1_link(self):
method test_2_1_link (line 104) | def test_2_1_link(self):
method test_k33 (line 124) | def test_k33(self):
method test_k33_better (line 143) | def test_k33_better(self):
FILE: test/test_grid.py
class GridTests (line 7) | class GridTests(unittest.TestCase):
method test_constructor (line 9) | def test_constructor(self):
method test_nth_next (line 13) | def test_nth_next(self):
FILE: test/test_guess_title.py
class TestDumps (line 7) | class TestDumps(unittest.TestCase):
method test_guess_title (line 9) | def test_guess_title(self):
FILE: test/test_inheritance.py
function inheritance_wrapper (line 11) | def inheritance_wrapper(s, **kargs):
class parse_test (line 14) | class parse_test(unittest.TestCase):
method test_backslash_conservation (line 16) | def test_backslash_conservation(self):
method test_numbered_inheritance (line 24) | def test_numbered_inheritance(self):
FILE: test/test_mcd.py
class McdTest (line 13) | class McdTest(unittest.TestCase):
method test_entity_recognition (line 15) | def test_entity_recognition(self):
method test_association_recognition (line 26) | def test_association_recognition(self):
method test_constraint_recognition (line 47) | def test_constraint_recognition(self):
method test_rows (line 64) | def test_rows(self):
method test_layout (line 87) | def test_layout(self):
method test_input_errors (line 190) | def test_input_errors(self):
method test_duplicate_errors (line 197) | def test_duplicate_errors(self):
method test_constraint_errors (line 223) | def test_constraint_errors(self):
method test_flip (line 231) | def test_flip(self):
method test_explicit_fit (line 330) | def test_explicit_fit(self):
method test_implicit_fit_produces_min_grid_next (line 415) | def test_implicit_fit_produces_min_grid_next(self):
method test_no_overlapping (line 458) | def test_no_overlapping(self):
method test_no_overlapping_with_reflexive_associations (line 469) | def test_no_overlapping_with_reflexive_associations(self):
method test_horizontal_legs_overlap (line 494) | def test_horizontal_legs_overlap(self):
method test_vertical_legs_overlap (line 515) | def test_vertical_legs_overlap(self):
method test_leg_overlaps_entity (line 534) | def test_leg_overlaps_entity(self):
method test_leg_overlaps_association (line 551) | def test_leg_overlaps_association(self):
FILE: test/test_mcd_dimensions.py
function stub_for_get_font_metrics (line 48) | def stub_for_get_font_metrics(s):
function get_dimensions (line 53) | def get_dimensions(mcd, verbose=False):
class McdGeometryTest (line 72) | class McdGeometryTest(unittest.TestCase):
method test_simplest_mcd (line 74) | def test_simplest_mcd(self):
method test_read_me_mcd (line 81) | def test_read_me_mcd(self):
method test_mocodo_online_mcd (line 113) | def test_mocodo_online_mcd(self):
FILE: test/test_parser_tools.py
function fuzzer (line 141) | def fuzzer(seed=0):
class MocodoErrorTest (line 230) | class MocodoErrorTest(unittest.TestCase):
method test_mocodo_errors (line 231) | def test_mocodo_errors(self):
class TestReconstructSource (line 250) | class TestReconstructSource(unittest.TestCase):
method test_reconstruct_source (line 251) | def test_reconstruct_source(self):
method test_alignment (line 259) | def test_alignment(self):
FILE: test/test_read_template.py
class TestReadTemplate (line 15) | class TestReadTemplate(unittest.TestCase):
method test_root_template (line 17) | def test_root_template(self):
method test_child_template (line 22) | def test_child_template(self):
method test_grandchild_template (line 27) | def test_grandchild_template(self):
method test_errors (line 32) | def test_errors(self):
FILE: test/test_relations.py
function debug_table (line 18) | def debug_table(t):
class relationsTest (line 24) | class relationsTest(unittest.TestCase):
method test_arrows_are_ignored (line 26) | def test_arrows_are_ignored(self):
method test_reciprocical_relative_entities (line 41) | def test_reciprocical_relative_entities(self):
method test_association_attributes (line 115) | def test_association_attributes(self):
method test_weak_entities_strengthened_by_itself (line 128) | def test_weak_entities_strengthened_by_itself(self):
method test_weak_entities_strengthened_by_several_entities (line 136) | def test_weak_entities_strengthened_by_several_entities(self):
method test_weak_entities_with_cycle (line 156) | def test_weak_entities_with_cycle(self):
method test_disambiguation_by_role (line 167) | def test_disambiguation_by_role(self):
method test_disambiguation_by_number (line 190) | def test_disambiguation_by_number(self):
method test_disambiguation_by_role_then_number (line 213) | def test_disambiguation_by_role_then_number(self):
method test_inheritance_leftwards_double_arrow (line 231) | def test_inheritance_leftwards_double_arrow(self):
method test_inheritance_leftwards_simple_arrow (line 257) | def test_inheritance_leftwards_simple_arrow(self):
method test_inheritance_rightwards_simple_arrow (line 282) | def test_inheritance_rightwards_simple_arrow(self):
method test_inheritance_rightwards_double_arrow_with_totality (line 310) | def test_inheritance_rightwards_double_arrow_with_totality(self):
method test_inheritance_rightwards_double_arrow_without_totality (line 337) | def test_inheritance_rightwards_double_arrow_without_totality(self):
method test_inheritance_leftwards_simple_arrow_unpretty (line 347) | def test_inheritance_leftwards_simple_arrow_unpretty(self):
method test_inheritance_with_unique_child (line 371) | def test_inheritance_with_unique_child(self):
method test_inheritance_with_distant_leg_note (line 395) | def test_inheritance_with_distant_leg_note(self):
method test_two_same_type_inheritances (line 416) | def test_two_same_type_inheritances(self):
method test_roles_with_inheritance (line 442) | def test_roles_with_inheritance(self):
FILE: test/test_rewrite_cards.py
class TestUpdateCards (line 9) | class TestUpdateCards(unittest.TestCase):
method test_infer_df (line 11) | def test_infer_df(self):
method test_fix_cards (line 40) | def test_fix_cards(self):
method test_delete_cards (line 46) | def test_delete_cards(self):
method test_change_capitalization_cards (line 52) | def test_change_capitalization_cards(self):
method test_infer_roles (line 62) | def test_infer_roles(self):
FILE: test/test_rewrite_decompose.py
class TestUpdater (line 12) | class TestUpdater(unittest.TestCase):
method test_split (line 13) | def test_split(self):
method test_explode_weak (line 66) | def test_explode_weak(self):
method test_explode_arity (line 96) | def test_explode_arity(self): # TODO: more cases
method test_explode_cluster (line 123) | def test_explode_cluster(self):
method test_drain (line 142) | def test_drain(self):
FILE: test/test_rewrite_grow.py
class TestGrow (line 9) | class TestGrow(unittest.TestCase):
method test_default (line 11) | def test_default(self):
FILE: test/test_rewrite_labels.py
class TestUpdateLabels (line 11) | class TestUpdateLabels(unittest.TestCase):
method test_upper (line 13) | def test_upper(self):
method test_obfuscate (line 19) | def test_obfuscate(self):
method test_obfuscate_df (line 52) | def test_obfuscate_df(self):
method test_obfuscate_pool_too_small (line 69) | def test_obfuscate_pool_too_small(self):
FILE: test/test_rewrite_types.py
class TestUpdateTypes (line 8) | class TestUpdateTypes(unittest.TestCase):
method test_create (line 10) | def test_create(self):
method test_guess_types (line 24) | def test_guess_types(self):
FILE: test/test_string_tools.py
class StringToolsTest (line 8) | class StringToolsTest(unittest.TestCase):
method test_wrap_label (line 10) | def test_wrap_label(self):
method test_rstrip_digit_or_underline (line 56) | def test_rstrip_digit_or_underline(self):
method test_surrounds (line 66) | def test_surrounds(self):
method test_snake (line 75) | def test_snake(self):
method test_camel (line 97) | def test_camel(self):
method test_pascal (line 119) | def test_pascal(self):
method test_aggressive_split (line 141) | def test_aggressive_split(self):
FILE: test/test_zoo.py
function save (line 34) | def save(path, text):
function main (line 39) | def main():
function test_launch_snapshot (line 204) | def test_launch_snapshot(capsys):
FILE: test/zoo/alt/ddl/alt_0_ddl.sql
type CLIENT (line 1) | CREATE TABLE CLIENT (
type FOO (line 12) | CREATE TABLE FOO (
type UTILISER (line 25) | CREATE TABLE UTILISER (
FILE: test/zoo/basic/ddl/basic_0_ddl.sql
type CLIENT (line 1) | CREATE TABLE CLIENT (
type COMMANDE (line 9) | CREATE TABLE COMMANDE (
type INCLURE (line 17) | CREATE TABLE INCLURE (
type PRODUIT (line 24) | CREATE TABLE PRODUIT (
FILE: test/zoo/basic/ddl/basic_1_ddl.sql
type CLIENT (line 1) | CREATE TABLE CLIENT (
type COMMANDE (line 9) | CREATE TABLE COMMANDE (
type INCLURE (line 17) | CREATE TABLE INCLURE (
type PRODUIT (line 24) | CREATE TABLE PRODUIT (
FILE: test/zoo/basic/ddl/basic_2_ddl.sql
type CLIENT (line 1) | CREATE TABLE CLIENT (
type COMMANDE (line 9) | CREATE TABLE COMMANDE (
type INCLURE (line 17) | CREATE TABLE INCLURE (
type PRODUIT (line 24) | CREATE TABLE PRODUIT (
FILE: test/zoo/cluster_NN1/ddl/cluster_NN1_0_ddl.sql
type RESERVATION (line 1) | CREATE TABLE RESERVATION (
type SEMAINE (line 12) | CREATE TABLE SEMAINE (
type VOILIER (line 19) | CREATE TABLE VOILIER (
FILE: test/zoo/complex/ddl/complex_ddl.sql
type ANIMAL (line 1) | CREATE TABLE ANIMAL (
type ESPECE (line 18) | CREATE TABLE ESPECE (
type OCCUPE (line 26) | CREATE TABLE OCCUPE (
type PEUT_COHABITER_AVEC (line 36) | CREATE TABLE PEUT_COHABITER_AVEC (
type PEUT_VIVRE_DANS (line 43) | CREATE TABLE PEUT_VIVRE_DANS (
FILE: test/zoo/drain/ddl/drain_ddl.sql
type ENTREPRISE (line 1) | CREATE TABLE ENTREPRISE (
type ETUDIANT (line 8) | CREATE TABLE ETUDIANT (
type STAGE (line 19) | CREATE TABLE STAGE (
FILE: test/zoo/gerund/ddl/gerund_0_ddl.sql
type LIGNE_DE_COMMANDE (line 1) | CREATE TABLE LIGNE_DE_COMMANDE (
FILE: test/zoo/gerund/ddl/gerund_1_ddl.sql
type COMMANDE (line 1) | CREATE TABLE COMMANDE (
type LIGNE_DE_COMMANDE (line 7) | CREATE TABLE LIGNE_DE_COMMANDE (
type PRODUIT (line 14) | CREATE TABLE PRODUIT (
FILE: test/zoo/inheritance/ddl/inheritance_0_ddl.sql
type ALIQUET (line 1) | CREATE TABLE ALIQUET (
type CONSEQUAT (line 7) | CREATE TABLE CONSEQUAT (
type CURABITUR (line 13) | CREATE TABLE CURABITUR (
type DIGNISSIM (line 19) | CREATE TABLE DIGNISSIM (
type LIBERO (line 25) | CREATE TABLE LIBERO (
type QUAM (line 31) | CREATE TABLE QUAM (
type SUSCIPIT (line 38) | CREATE TABLE SUSCIPIT (
type TRISTIS (line 45) | CREATE TABLE TRISTIS (
type ULTRICES (line 60) | CREATE TABLE ULTRICES (
FILE: test/zoo/inheritance/ddl/inheritance_1_ddl.sql
type ALIQUET (line 1) | CREATE TABLE ALIQUET (
type CONSEQUAT (line 7) | CREATE TABLE CONSEQUAT (
type CURABITUR (line 13) | CREATE TABLE CURABITUR (
type DIGNISSIM (line 19) | CREATE TABLE DIGNISSIM (
type LACUS (line 25) | CREATE TABLE LACUS (
type LIBERO (line 32) | CREATE TABLE LIBERO (
type NEC (line 38) | CREATE TABLE NEC (
type QUAM (line 46) | CREATE TABLE QUAM (
type SODALES (line 53) | CREATE TABLE SODALES (
type SUSCIPIT (line 60) | CREATE TABLE SUSCIPIT (
type TRISTIS (line 67) | CREATE TABLE TRISTIS (
type ULTRICES (line 75) | CREATE TABLE ULTRICES (
FILE: test/zoo/inheritance/ddl/inheritance_2_ddl.sql
type ALIQUET (line 1) | CREATE TABLE ALIQUET (
type CONSEQUAT (line 8) | CREATE TABLE CONSEQUAT (
type CURABITUR (line 14) | CREATE TABLE CURABITUR (
type DIGNISSIM (line 20) | CREATE TABLE DIGNISSIM (
type LACUS (line 26) | CREATE TABLE LACUS (
type LIBERO (line 35) | CREATE TABLE LIBERO (
type NEC (line 41) | CREATE TABLE NEC (
type QUAM (line 51) | CREATE TABLE QUAM (
type SODALES (line 58) | CREATE TABLE SODALES (
type SUSCIPIT (line 67) | CREATE TABLE SUSCIPIT (
type ULTRICES (line 75) | CREATE TABLE ULTRICES (
FILE: test/zoo/inheritance/ddl/inheritance_3_ddl.sql
type TRISTIS (line 1) | CREATE TABLE TRISTIS (
type ULTRICES (line 16) | CREATE TABLE ULTRICES (
FILE: test/zoo/inheritance/ddl/inheritance_4_ddl.sql
type LACUS (line 1) | CREATE TABLE LACUS (
type NEC (line 8) | CREATE TABLE NEC (
type SODALES (line 17) | CREATE TABLE SODALES (
type TRISTIS (line 24) | CREATE TABLE TRISTIS (
type ULTRICES (line 31) | CREATE TABLE ULTRICES (
FILE: test/zoo/inheritance/ddl/inheritance_5_ddl.sql
type LACUS (line 1) | CREATE TABLE LACUS (
type NEC (line 9) | CREATE TABLE NEC (
type SODALES (line 19) | CREATE TABLE SODALES (
type ULTRICES (line 27) | CREATE TABLE ULTRICES (
FILE: test/zoo/inheritance_weak/ddl/strong_child_0_ddl.sql
type CONTRAT (line 1) | CREATE TABLE CONTRAT (
type PROFESSEUR (line 8) | CREATE TABLE PROFESSEUR (
type SALARIE (line 16) | CREATE TABLE SALARIE (
type VACATAIRE (line 24) | CREATE TABLE VACATAIRE (
FILE: test/zoo/inheritance_weak/ddl/strong_child_1_ddl.sql
type CONTRAT (line 1) | CREATE TABLE CONTRAT (
type PROFESSEUR (line 8) | CREATE TABLE PROFESSEUR (
FILE: test/zoo/inheritance_weak/ddl/strong_child_2_ddl.sql
type CONTRAT (line 1) | CREATE TABLE CONTRAT (
type SALARIE (line 8) | CREATE TABLE SALARIE (
type VACATAIRE (line 19) | CREATE TABLE VACATAIRE (
FILE: test/zoo/landing/ddl/landing_ddl.sql
type AYANT_DROIT (line 1) | CREATE TABLE AYANT_DROIT (
type COMPOSER (line 8) | CREATE TABLE COMPOSER (
type DEPARTEMENT (line 15) | CREATE TABLE DEPARTEMENT (
type EMPLOYE (line 21) | CREATE TABLE EMPLOYE (
type FOURNIR (line 28) | CREATE TABLE FOURNIR (
type PIECE (line 36) | CREATE TABLE PIECE (
type PROJET (line 42) | CREATE TABLE PROJET (
type REQUERIR (line 49) | CREATE TABLE REQUERIR (
type SOCIETE (line 56) | CREATE TABLE SOCIETE (
type TRAVAILLER (line 63) | CREATE TABLE TRAVAILLER (
FILE: test/zoo/protected/ddl/protected_0_ddl.sql
type AGENCE (line 1) | CREATE TABLE AGENCE (
type DIRECTION_REGIONALE (line 7) | CREATE TABLE DIRECTION_REGIONALE (
type SUPERVISER (line 13) | CREATE TABLE SUPERVISER (
FILE: test/zoo/reflexive/ddl/reflexive_0_ddl.sql
type COMPOSER (line 1) | CREATE TABLE COMPOSER (
type HOMME (line 7) | CREATE TABLE HOMME (
FILE: test/zoo/split/ddl/split_ddl.sql
type BATAILLE (line 1) | CREATE TABLE BATAILLE (
type TROPHEE (line 8) | CREATE TABLE TROPHEE (
type VILLAGEOIS (line 17) | CREATE TABLE VILLAGEOIS (
FILE: test/zoo/ternary_unicity/ddl/ternary_unicity_0_ddl.sql
type DISPONIBILITE (line 1) | CREATE TABLE DISPONIBILITE (
type RESERVATION (line 7) | CREATE TABLE RESERVATION (
type SEMAINE (line 19) | CREATE TABLE SEMAINE (
FILE: test/zoo/triple_111/ddl/triple_111_0_ddl.sql
type UTILISER (line 1) | CREATE TABLE UTILISER (
FILE: test/zoo/triple_111/ddl/triple_111_1_ddl.sql
type PROJET (line 1) | CREATE TABLE PROJET (
type TECHNICIEN (line 7) | CREATE TABLE TECHNICIEN (
type UTILISER (line 13) | CREATE TABLE UTILISER (
FILE: test/zoo/triple_N11/ddl/triple_N11_0_ddl.sql
type AFFECTER (line 1) | CREATE TABLE AFFECTER (
FILE: test/zoo/triple_N11/ddl/triple_N11_1_ddl.sql
type AFFECTER (line 1) | CREATE TABLE AFFECTER (
type EMPLOYE (line 9) | CREATE TABLE EMPLOYE (
type PROJET (line 15) | CREATE TABLE PROJET (
type SITE (line 21) | CREATE TABLE SITE (
FILE: test/zoo/triple_NN1/ddl/triple_NN1_0_ddl.sql
type GERER (line 1) | CREATE TABLE GERER (
FILE: test/zoo/triple_NN1/ddl/triple_NN1_1_ddl.sql
type GERER (line 1) | CREATE TABLE GERER (
type INGENIEUR (line 8) | CREATE TABLE INGENIEUR (
type PROJET (line 14) | CREATE TABLE PROJET (
type RESPONSABLE (line 20) | CREATE TABLE RESPONSABLE (
FILE: test/zoo/triple_NNN/ddl/triple_NNN_0_ddl.sql
type APPLIQUER (line 1) | CREATE TABLE APPLIQUER (
FILE: test/zoo/triple_NNN/ddl/triple_NNN_1_ddl.sql
type APPLIQUER (line 1) | CREATE TABLE APPLIQUER (
type COMPETENCE (line 8) | CREATE TABLE COMPETENCE (
type EMPLOYE (line 14) | CREATE TABLE EMPLOYE (
type PROJET (line 20) | CREATE TABLE PROJET (
FILE: test/zoo/weak/ddl/weak_0_ddl.sql
type EXEMPLAIRE (line 1) | CREATE TABLE EXEMPLAIRE (
FILE: test/zoo/weak/ddl/weak_1_ddl.sql
type EXEMPLAIRE (line 1) | CREATE TABLE EXEMPLAIRE (
type OEUVRE (line 10) | CREATE TABLE OEUVRE (
FILE: test/zoo/weak/ddl/weak_2_ddl.sql
type APPARTEMENT (line 1) | CREATE TABLE APPARTEMENT (
type ETAGE (line 10) | CREATE TABLE ETAGE (
type IMMEUBLE (line 18) | CREATE TABLE IMMEUBLE (
type RUE (line 25) | CREATE TABLE RUE (
FILE: web/ace-builds/ace.js
function o (line 1) | function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.defin...
function r (line 1) | function r(e,t,n){Object.defineProperty(e,t,{value:n,enumerable:!1,writa...
function u (line 1) | function u(){var e=o;o=null,e&&e.forEach(function(e){a(e[0],e[1])})}
function a (line 1) | function a(e,n,r){if(typeof document=="undefined")return;if(o)if(r)u();e...
function o (line 1) | function o(e){typeof console!="undefined"&&console.warn&&console.warn.ap...
function u (line 1) | function u(e,t){var n=new Error(e);n.data=t,typeof console=="object"&&co...
function e (line 1) | function e(){this.$defaultOptions={}}
function s (line 1) | function s(t){if(!i||!i.document)return;r.set("packaged",t||e.packaged||...
function o (line 1) | function o(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCas...
function e (line 1) | function e(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}}
function a (line 1) | function a(){u=!1;try{document.createComment("").addEventListener("test"...
function f (line 1) | function f(){return u==undefined&&a(),u}
function l (line 1) | function l(e,t,n){this.elem=e,this.type=t,this.callback=n}
function d (line 1) | function d(e,t,n){var u=p(t);if(!i.isMac&&s){t.getModifierState&&(t.getM...
function v (line 1) | function v(){s=Object.create(null)}
function i (line 1) | function i(e){t&&t(e),n&&n(e),h(r,"mousemove",t),h(r,"mouseup",i),h(r,"d...
function p (line 1) | function p(e){t.getButton(e)!==0?u=0:e.detail>1?(u++,u>4&&(u=1)):u=1;if(...
function P (line 1) | function P(e){(!n||!n.parentNode)&&document.removeEventListener("selecti...
function $ (line 1) | function $(){T=!0,n.blur(),n.focus(),T=!1}
function K (line 1) | function K(e){e.keyCode==27&&n.value.length<n.selectionStart&&(w||(N=n.v...
function G (line 1) | function G(){clearTimeout(Q),Q=setTimeout(function(){S&&(n.style.cssText...
function Z (line 1) | function Z(e,t,n){var r=null,i=!1;n.addEventListener("keydown",function(...
function u (line 1) | function u(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}
function a (line 1) | function a(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.colum...
function e (line 1) | function e(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler(...
function r (line 1) | function r(){this.constructor=t}
function e (line 1) | function e(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}
function e (line 1) | function e(){this.popups=[]}
function t (line 1) | function t(t){t===void 0&&(t=document.body);var n=e.call(this,t)||this;n...
function f (line 1) | function f(e){function a(){var i=u.getDocumentPosition().row,s=t.session...
function r (line 1) | function r(){this.constructor=t}
function t (line 1) | function t(t){var n=e.call(this,t.container)||this;return n.editor=t,n}
function e (line 1) | function e(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clie...
function f (line 1) | function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||...
function l (line 1) | function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}
function b (line 1) | function b(){var e=window.navigator&&window.navigator.clipboard,r=!1,i=f...
function w (line 1) | function w(){y||b();var e=t.selection.cursor,n=t.renderer.textToScreenCo...
function E (line 1) | function E(e){y&&(y.style.display="none"),t.off("input",E)}
function S (line 1) | function S(){l=null,clearTimeout(l);var e=t.selection.getRange(),r=e.con...
function x (line 1) | function x(){l=null,clearTimeout(l),t.selection.moveToPosition(p);var e=...
function T (line 1) | function T(){h+=60,c=setInterval(function(){h--<=0&&(clearInterval(c),c=...
function e (line 1) | function e(e){var t=this;this.editor=e,new s(this),new o(this),new a(thi...
function e (line 1) | function e(e){e.on("click",function(t){var n=t.getDocumentPosition(),i=e...
function e (line 1) | function e(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],thi...
function F (line 1) | function F(e,t,n,r){var i=s?d:p,c=null,h=null,v=null,m=0,g=null,y=null,b...
function I (line 1) | function I(e,t,n){if(o<e)return;if(e==1&&s==m&&!f){n.reverse();return}va...
function q (line 1) | function q(e,t,n,r){var i=t[r],o,c,h,p;switch(i){case g:case y:u=!1;case...
function R (line 1) | function R(e){var t=e.charCodeAt(0),n=t>>8;return n==0?t>191?g:B[t]:n==5...
function U (line 1) | function U(e){return e>="\u064b"&&e<="\u0655"}
function e (line 1) | function e(e){this.session=e,this.bidiMap={},this.currentRow=null,this.b...
function e (line 1) | function e(e){this.states=e,this.regExps={},this.matchMappings={};for(va...
function i (line 1) | function i(s){var o=r[s];o.processed=!0;for(var u=0;u<o.length;u++){var ...
function e (line 1) | function e(e,t,n){this.$session=e,this.$row=t,this.$rowTokens=e.getToken...
function w (line 1) | function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}
function r (line 1) | function r(e,t){throw console.log("Invalid Delta:",e),"Invalid Delta: "+t}
function i (line 1) | function i(e,t){return t.row>=0&&t.row<e.length&&t.column>=0&&t.column<=...
function s (line 1) | function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.actio...
function o (line 1) | function o(e,t,n){var r=n?e.column<=t.column:e.column<t.column;return e....
function u (line 1) | function u(e,t,n){var r=e.action=="insert",i=(r?1:-1)*(e.end.row-e.start...
function e (line 1) | function e(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e)...
function e (line 1) | function e(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArr...
function e (line 1) | function e(e,t){this.running=!1,this.lines=[],this.states=[],this.curren...
function e (line 1) | function e(e,t,n){n===void 0&&(n="text"),this.setRegexp(e),this.clazz=t,...
function e (line 1) | function e(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.fol...
function e (line 1) | function e(){this.ranges=[],this.$bias=1}
function o (line 1) | function o(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}
function u (line 1) | function u(e,t){o(e.start,t),o(e.end,t)}
function a (line 1) | function a(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}
function f (line 1) | function f(e,t){a(e.start,t),a(e.end,t)}
function r (line 1) | function r(){this.constructor=t}
function t (line 1) | function t(t,n){var r=e.call(this)||this;return r.foldLine=null,r.placeh...
function a (line 1) | function a(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if...
function s (line 1) | function s(){this.findMatchingBracket=function(e,t){if(e.column==0)retur...
function x (line 1) | function x(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=46...
function e (line 1) | function e(t,n){this.$breakpoints=[],this.$decorations=[],this.$frontMar...
function n (line 1) | function n(e){return t?e.action!=="insert":e.action==="insert"}
function l (line 1) | function l(){var t=0;if(f===0)return t;if(a)for(var r=0;r<e.length;r++){...
function c (line 1) | function c(t){var n=t-s;for(var i=s;i<t;i++){var u=e[i];if(u===12||u===2...
function u (line 1) | function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}retu...
function e (line 1) | function e(){this.$options={}}
function a (line 1) | function a(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||...
function r (line 1) | function r(){this.constructor=t}
function e (line 1) | function e(e,t){this.$init(e,t,!1)}
function t (line 1) | function t(t,n){var r=e.call(this,t,n)||this;return r.$singleCommand=!0,r}
function r (line 1) | function r(){this.constructor=t}
function t (line 1) | function t(t,n){var r=e.call(this,n,t)||this;return r.byName=r.commands,...
function o (line 1) | function o(e,t){return{win:e,mac:t}}
function e (line 1) | function e(e){this.session=e,this.session.widgetManager=this,this.sessio...
function e (line 1) | function e(e){this.editor=e,this.gutterLayer=e.renderer.$gutterLayer,thi...
function e (line 1) | function e(t,n,r){this.$toDestroy=[];var i=t.getContainerElement();this....
function i (line 1) | function i(e,t){for(var n=t;n--;){var r=e[n];if(r&&!r[0].ignore){while(n...
function a (line 1) | function a(e){var t=e.action=="insert",n=e.start,r=e.end,i=(r.row-n.row)...
function f (line 1) | function f(e){return{row:e.row,column:e.column}}
function l (line 1) | function l(e){return{start:f(e.start),end:f(e.end),action:e.action,lines...
function c (line 1) | function c(e){e=e||this;if(Array.isArray(e))return e.map(c).join("\n");v...
function h (line 1) | function h(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e...
function p (line 1) | function p(e,t){var n=e.action=="insert",r=t.action=="insert";if(n&&r)if...
function d (line 1) | function d(e,t){for(var n=e.length;n--;)for(var r=0;r<t.length;r++)if(!p...
function v (line 1) | function v(e,t){var n=e.action=="insert",r=t.action=="insert";if(n&&r)o(...
function m (line 1) | function m(e,t,n){g(e.start,t.start,t.end,n),g(e.end,t.start,t.end,n)}
function g (line 1) | function g(e,t,n,r){e.row==(r==1?t:n).row&&(e.column+=r*(n.column-t.colu...
function y (line 1) | function y(e,t){var n=e.lines,r=e.end;e.end=f(t);var i=e.end.row-e.start...
function b (line 1) | function b(e,t){t=l(t);for(var n=e.length;n--;){var r=e[n];for(var i=0;i...
function w (line 1) | function w(e,t){for(var n=0;n<t.length;n++){var r=t[n];for(var i=0;i<r.l...
function e (line 1) | function e(){this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=Infinity,t...
function e (line 1) | function e(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.sty...
function l (line 1) | function l(e){var t=document.createTextNode("");e.appendChild(t);var n=r...
function e (line 1) | function e(e){this.element=r.createElement("div"),this.element.className...
function o (line 1) | function o(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}
function e (line 1) | function e(e){this.element=i.createElement("div"),this.element.className...
function e (line 1) | function e(e){this.dom=i,this.element=this.dom.createElement("div"),this...
function i (line 1) | function i(e,t,n){var i=0,s=0;while(s+e[i].value.length<t){s+=e[i].value...
function e (line 1) | function e(e){this.element=r.createElement("div"),this.element.className...
function r (line 1) | function r(){this.constructor=t}
function e (line 1) | function e(e,t){this.element=s.createElement("div"),this.element.classNa...
function t (line 1) | function t(t,n){var r=e.call(this,t,"-v")||this;return r.scrollTop=0,r.s...
function t (line 1) | function t(t,n){var r=e.call(this,t,"-h")||this;return r.scrollLeft=0,r....
function r (line 1) | function r(){this.constructor=t}
function e (line 1) | function e(e,t){this.element=s.createElement("div"),this.element.classNa...
function t (line 1) | function t(t,n){var r=e.call(this,t,"-v")||this;return r.scrollTop=0,r.s...
function t (line 1) | function t(t,n){var r=e.call(this,t,"-h")||this;return r.scrollLeft=0,r....
function e (line 1) | function e(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$rec...
function e (line 1) | function e(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(...
function r (line 1) | function r(e,t,n){var r=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1]...
function i (line 1) | function i(e,t){return[e[0]-t[0],e[1]-t[1]]}
function s (line 1) | function s(e,t){return[e[0]+t[0],e[1]+t[1]]}
function o (line 1) | function o(e,t){return[e*t[0],e*t[1]]}
function u (line 1) | function u(e){var t=e.getBoundingClientRect();return[t.left,t.top]}
function e (line 1) | function e(e,t){this.canvas=r.createElement("canvas"),this.renderer=t,th...
function i (line 1) | function i(e,t){return e.priority<t.priority?-1:e.priority>t.priority?1:0}
function e (line 1) | function e(e,t){var n=this;this.container=e||i.createElement("div"),i.ad...
function o (line 1) | function o(){r.$timer=clearInterval(r.$timer),r.$scrollAnimation=null,r....
function s (line 1) | function s(r){if(n.$themeId!=e)return t&&t();if(!r||!r.cssClass)throw ne...
function u (line 1) | function u(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return n...
function a (line 1) | function a(e){if(typeof Worker=="undefined")return{postMessage:function(...
function e (line 1) | function e(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc...
function s (line 1) | function s(e,t){return e.row==t.row&&e.column==t.column}
function o (line 1) | function o(e){var t=e.domEvent,n=t.altKey,o=t.shiftKey,u=t.ctrlKey,a=e.g...
function h (line 1) | function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$optio...
function v (line 1) | function v(e,t){return e.row==t.row&&e.column==t.column}
function m (line 1) | function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$o...
function g (line 1) | function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}if(!...
function u (line 1) | function u(e){return a.stringRepeat(" ",e)}
function f (line 1) | function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([...
function l (line 1) | function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o)+e[4].replace(/^([...
function c (line 1) | function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "...
function u (line 1) | function u(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[...
function a (line 1) | function a(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.l...
FILE: web/ace-builds/ext-language_tools.js
function p (line 1) | function p(e){var t=(new Date).toLocaleString("en-us",e);return t.length...
function e (line 1) | function e(){this.snippetMap={},this.snippetNameMap={},this.variables=h}
function t (line 1) | function t(e){return e=e.substr(1),/^\d+$/.test(e)?[{tabstopId:parseInt(...
function n (line 1) | function n(e){return"(?:[^\\\\"+e+"]|\\\\.)"}
function f (line 1) | function f(t){var n=e.indexOf(t,s+1);n!=-1&&(s=n)}
function s (line 1) | function s(e){return e&&!/^\^?\(.*\)\$?$|^\\b$/.test(e)&&(e="(?:"+e+")")...
function u (line 1) | function u(e,t,n){return e=s(e),t=s(t),n?(e=t+e,e&&e[e.length-1]!="$"&&(...
function a (line 1) | function a(e){e.scope||(e.scope=t||"_"),t=e.scope,n[t]||(n[t]=[],r[t]={}...
function i (line 1) | function i(e){var i=r[e.scope||t];if(i&&i[e.name]){delete i[e.name];var ...
function l (line 1) | function l(e){var t=[];for(var n=0;n<e.length;n++){var r=e[n];if(typeof ...
function e (line 1) | function e(e){this.index=0,this.ranges=[],this.tabstops=[];if(e.tabstopM...
function e (line 1) | function e(e){var t=a.createElement("div"),n=new c(t);e&&e.appendChild(t...
function e (line 1) | function e(){this.editor=null}
function e (line 1) | function e(){this.autoInsert=!1,this.autoSelect=!0,this.autoShown=!1,thi...
function e (line 1) | function e(){this.active=!0}
function e (line 1) | function e(e,t){this.all=e,this.filtered=e,this.filterText=t||"",this.ex...
function s (line 1) | function s(e,t){var n=e.getTextRange(r.fromPoints({row:0,column:0},t));r...
function o (line 1) | function o(e,t){var n=s(e,t),r=e.getValue().split(i),o=Object.create(nul...
FILE: web/ace-builds/text_highlight_rules.js
function processState (line 93) | function processState(key) {
FILE: web/flashlight.js
function switchOnFlashlight (line 1) | function switchOnFlashlight(event) {
function switchOffFlashlight (line 8) | function switchOffFlashlight() {
function trackMouse (line 15) | function trackMouse(event) {
FILE: web/js.cookie.js
function extend (line 22) | function extend () {
function init (line 34) | function init (converter) {
FILE: web/mocodo.js
function createTabs (line 180) | function createTabs() {
function activateTab (line 198) | function activateTab(zone, target) {
function createOptions (line 209) | function createOptions(id, items, selected, on_demand_index) {
function createCheckboxes (line 214) | function createCheckboxes(group, group_name) {
function appendMenuToInput (line 236) | function appendMenuToInput(menuId, inputId) {
function refreshSize (line 239) | function refreshSize(geo) {
function refreshCoordinates (line 246) | function refreshCoordinates(geo) {
function refreshCardinalities (line 259) | function refreshCardinalities(geo) {
function refreshArrows (line 266) | function refreshArrows(geo) {
function refreshDiagram (line 273) | function refreshDiagram(result) {
function refreshConvertOutput (line 290) | function refreshConvertOutput(result) {
function sendToBasthon (line 335) | function sendToBasthon() {
function generate (line 366) | function generate() {
function rewrite (line 423) | function rewrite(args) {
function get_from_lib (line 472) | function get_from_lib() {
function setPulsatingButton (line 494) | function setPulsatingButton(is_visible, checkbox, button) {
function setDecompositionKnowledge (line 507) | function setDecompositionKnowledge(is_visible) {
function setRandomKnowledge (line 510) | function setRandomKnowledge(is_visible) {
function setClusterKnowledge (line 513) | function setClusterKnowledge(is_visible) {
function setButtonPreviewOnHover (line 516) | function setButtonPreviewOnHover(checkboxId, buttonId) {
function setTutorialKnowledge (line 529) | function setTutorialKnowledge(is_advanced) {
function setEditorContent (line 538) | function setEditorContent(text) {
function markAsDirty (line 545) | function markAsDirty() {
function changeTitleToNthTuto (line 550) | function changeTitleToNthTuto() {
function markAsMoved (line 557) | function markAsMoved() {
function markAsReady (line 560) | function markAsReady() {
function onBlur (line 565) | function onBlur(elt) {
function onFocus (line 570) | function onFocus(elt) {
function writeCookie (line 575) | function writeCookie() {
function readCookie (line 578) | function readCookie() {
function handleClick (line 605) | function handleClick(element, rewrite_operation) {
function closePopup (line 627) | function closePopup() {
function make_editor_react_on_change (line 638) | function make_editor_react_on_change(flag) {
Condensed preview — 1279 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (7,264K chars).
[
{
"path": ".gitignore",
"chars": 481,
"preview": "*.pyc\nbuild/*\ndist/*\nMANIFEST.in\nmocodo.egg-info/*\nparams.json\nREADME.rst\nsandbox/*\nmeta/*\ndoc/mocodo_notebook\ndoc/.ipyn"
},
{
"path": "LICENSE",
"chars": 1073,
"preview": "MIT License\n\nCopyright (c) 2017- Aristide Grange\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "README.md",
"chars": 10583,
"preview": "**Octobre 2025.** Basthon prend maintenant en charge Mocodo 4.3.2.\n\n**Mars 2025.** Mocodo [4.3](https://github.com/laowa"
},
{
"path": "doc/build_doc.sh",
"chars": 78,
"preview": "# Export directly from the notebook File > Save and export notebook as > HTML\n"
},
{
"path": "doc/examples/four_random_layouts.mcd",
"chars": 1400,
"preview": "::\nTincidunt1, 11 Ante1, 0N Massa1\n::::::\n\nEuismod1, 0N Massa1, 0N Massa1\nMassa1: metus, posuere\nConvallis1, 0N Aliquet1"
},
{
"path": "doc/examples/landing.mcd",
"chars": 579,
"preview": "AYANT-DROIT: nom ayant-droit, lien\nDIRIGER, 0N [responsable] EMPLOYÉ, 01 PROJET\nREQUÉRIR, 1N PROJET, 0N PIÈCE: qté requi"
},
{
"path": "doc/examples/option_syntax_1.abnf",
"chars": 110,
"preview": "start = opt \" \" (arg *(\",\" arg))\n\narg = subopt [\":\" subarg *(\",\" subarg)]\n\nsubarg = subsubarg [\"=\" subsubopt]\n"
},
{
"path": "doc/examples/option_syntax_2.abnf",
"chars": 180,
"preview": "start = opt \" \" ((subopt [\":\" (subsubarg [\"=\" subsubopt]) *(\",\" (subsubarg [\"=\" subsubopt]))]) *(\",\" (subopt [\":\" (subsu"
},
{
"path": "doc/fr_cheat_sheet.md",
"chars": 17099,
"preview": "### Opérations de conversion\n\n| Sous-option | Description | Exemples | Explications |\n| :-- | :-- | :-- | :-- |\n| <span "
},
{
"path": "doc/fr_refman.html",
"chars": 2283831,
"preview": "<!DOCTYPE html>\n\n<html lang=\"en\">\n<head><meta charset=\"utf-8\"/>\n<meta content=\"width=device-width, initial-scale=1.0\" na"
},
{
"path": "doc/fr_refman.ipynb",
"chars": 1667003,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {\n \"toc\": true\n },\n \"source\": [\n \"<h1>Mocodo<span"
},
{
"path": "doc/readme/ccp.mcd",
"chars": 372,
"preview": "%%mocodo --colors ocean\nCLIENT: Réf. client [VARCHAR(8)], Nom [VARCHAR(255)], Prénom [VARCHAR(255)], Adresse [VARCHAR(25"
},
{
"path": "doc/tutorial.ipynb",
"chars": 37403,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {\n \"init_cell\": true\n },\n \"o"
},
{
"path": "doc/tutorial_lib/tuto-0000.mcd",
"chars": 1497,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0001.mcd",
"chars": 617,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0002.mcd",
"chars": 1151,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0003.mcd",
"chars": 818,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0004.mcd",
"chars": 774,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0005.mcd",
"chars": 1020,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0006.mcd",
"chars": 875,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0007.mcd",
"chars": 853,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0008.mcd",
"chars": 895,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0009.mcd",
"chars": 1243,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0010.mcd",
"chars": 929,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0011.mcd",
"chars": 1004,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0012.mcd",
"chars": 1018,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0013.mcd",
"chars": 1277,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0014.mcd",
"chars": 1430,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0015.mcd",
"chars": 1098,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0016.mcd",
"chars": 959,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0017.mcd",
"chars": 1098,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0018.mcd",
"chars": 928,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0019.mcd",
"chars": 768,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0020.mcd",
"chars": 1463,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0021.mcd",
"chars": 1146,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0022.mcd",
"chars": 774,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0023.mcd",
"chars": 1089,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0024.mcd",
"chars": 1241,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0025.mcd",
"chars": 1430,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0026.mcd",
"chars": 803,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0027.mcd",
"chars": 927,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0028.mcd",
"chars": 835,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0029.mcd",
"chars": 1519,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0030.mcd",
"chars": 953,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0031.mcd",
"chars": 1197,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0032.mcd",
"chars": 907,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0033.mcd",
"chars": 1117,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0034.mcd",
"chars": 1155,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0035.mcd",
"chars": 1263,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0036.mcd",
"chars": 1326,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0037.mcd",
"chars": 1409,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "doc/tutorial_lib/tuto-0038.mcd",
"chars": 1183,
"preview": "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n% "
},
{
"path": "index.php",
"chars": 22587,
"preview": "<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n\t<title>Mocodo online</title>\n\t<meta charset=\"utf-8\" />\n\t<meta name=\"apple-mobil"
},
{
"path": "laowantong.vscode-mocodo/.vscode/launch.json",
"chars": 540,
"preview": "// A launch configuration that launches the extension inside a new window\n// Use IntelliSense to learn about possible at"
},
{
"path": "laowantong.vscode-mocodo/.vscodeignore",
"chars": 73,
"preview": ".vscode/**\n.vscode-test/**\n.gitignore\nvsc-extension-quickstart.md\n*.vsix\n"
},
{
"path": "laowantong.vscode-mocodo/LICENSE",
"chars": 1073,
"preview": "MIT License\n\nCopyright (c) 2017- Aristide Grange\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "laowantong.vscode-mocodo/README.md",
"chars": 1018,
"preview": "# Mocodo Syntax\n\nSyntax highlighting support for Mocodo.\n\n\n\nMocodo is a "
},
{
"path": "laowantong.vscode-mocodo/highlighting_zoo.mcd",
"chars": 5560,
"preview": "%%mocodo\n:\n:::\n: : :\n : : :\n % commented\n% commented %\n % foo\\\\ , % foo /TX\\\\\nAYANT-DROIT: nom ayant-droit, l"
},
{
"path": "laowantong.vscode-mocodo/language-configuration.json",
"chars": 199,
"preview": "{\n \"comments\": {\n \"lineComment\": \"%\",\n },\n \"autoClosingPairs\": [\n [\"[\", \"]\"],\n [\"(\", \")\"]\n"
},
{
"path": "laowantong.vscode-mocodo/package.json",
"chars": 948,
"preview": "{\n \"name\": \"vscode-mocodo\",\n \"version\": \"1.0.6\",\n \"publisher\": \"laowantong\",\n \"engines\": {\n \"vscode\": \"^1.2.0\"\n "
},
{
"path": "laowantong.vscode-mocodo/syntaxes/mocodo.tmLanguage.json",
"chars": 8744,
"preview": "{\n \"name\": \"Mocodo\",\n \"scopeName\": \"source.mocodo\",\n \"uuid\": \"2AD24A5A-63C9-40B3-B6AA-E240B7B54480\",\n \"patterns\": [\n"
},
{
"path": "laowantong.vscode-mocodo/syntaxes/mocodo.tmLanguage.yaml",
"chars": 6892,
"preview": "---\nname: Mocodo\nscopeName: source.mocodo\nuuid: 2AD24A5A-63C9-40B3-B6AA-E240B7B54480\n\n# Warning: yaml_to_json_tmlanguage"
},
{
"path": "laowantong.vscode-mocodo/vsc-extension-quickstart.md",
"chars": 1589,
"preview": "# Welcome to your VS Code Extension\n\n## What's in the folder\n\n* This folder contains all of the files necessary for your"
},
{
"path": "mocodo/__init__.py",
"chars": 458,
"preview": "from pathlib import Path\nfrom importlib import import_module\n\n__version__ = \"4.3.3\"\nSCRIPT_DIRECTORY = Path(__file__).re"
},
{
"path": "mocodo/__main__.py",
"chars": 16905,
"preview": "import sys\n\nif sys.version_info < (3, 6):\n print(f\"Mocodo requires Python 3.6 or later to run.\\nThis version is {sys."
},
{
"path": "mocodo/api.py",
"chars": 1444,
"preview": "import argparse\nimport os\nfrom pathlib import Path\nimport shlex\nfrom . import __version__, SCRIPT_DIRECTORY\nfrom .__main"
},
{
"path": "mocodo/argument_parser.py",
"chars": 18430,
"preview": "import argparse\nimport contextlib\nimport gettext\nimport json\nimport locale\nimport os\nimport random\nimport re\nimport impo"
},
{
"path": "mocodo/association.py",
"chars": 20333,
"preview": "import re\nfrom .attribute import *\nfrom .leg import *\nfrom .mocodo_error import MocodoError\nfrom .tools.string_tools imp"
},
{
"path": "mocodo/attribute.py",
"chars": 5806,
"preview": "from .tools.string_tools import raw_to_bid\n\nclass Attribute:\n\n # The following three static attributes will be update"
},
{
"path": "mocodo/common.py",
"chars": 4603,
"preview": "import json\nimport numbers\nimport sys\nfrom pathlib import Path\nimport contextlib\nimport importlib\n\nfrom .mocodo_error im"
},
{
"path": "mocodo/constraint.py",
"chars": 5569,
"preview": "import re\n\nfrom .attribute import *\nfrom .leg import ConstraintLeg\nfrom .tools.string_tools import is_a_description, raw"
},
{
"path": "mocodo/convert/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "mocodo/convert/_ast.py",
"chars": 674,
"preview": "from ..tools.parser_tools import parse_source, Token\n\ndef ast_to_yaml(node, indent=\"\"):\n indent += \" \"\n if isinst"
},
{
"path": "mocodo/convert/_chen.py",
"chars": 14926,
"preview": "from collections import Counter\nimport itertools\nimport re\n\n__import__(\"sys\").path[0:0] = [\".\"]\n\nfrom ..parse_mcd import"
},
{
"path": "mocodo/convert/_crow.py",
"chars": 3482,
"preview": "import importlib\n\n__import__(\"sys\").path[0:0] = [\".\"]\n\nfrom ..mocodo_error import subsubopt_error\nfrom ..parse_mcd impor"
},
{
"path": "mocodo/convert/_data_dict.py",
"chars": 4635,
"preview": "__import__(\"sys\").path[0:0] = [\".\"]\n\nimport re\n\nfrom ..tools.string_tools import markdown_table\nfrom ..parse_mcd import "
},
{
"path": "mocodo/convert/_prompt.py",
"chars": 2324,
"preview": "from ..parse_mcd import Visitor\nfrom ..tools.parser_tools import parse_source, reconstruct_source, first_child\nfrom path"
},
{
"path": "mocodo/convert/_share.py",
"chars": 303,
"preview": "from ..tools.string_tools import urlsafe_encoding\n\n\ndef run(source, subargs=None, common=None):\n return {\n \"st"
},
{
"path": "mocodo/convert/_uml.py",
"chars": 10451,
"preview": "import itertools\nimport gettext\n\n__import__(\"sys\").path[0:0] = [\".\"]\n\nfrom ..parse_mcd import Visitor\nfrom ..tools.parse"
},
{
"path": "mocodo/convert/crow_gv.py",
"chars": 4247,
"preview": "__import__(\"sys\").path[0:0] = [\".\"]\n\nfrom ._crow import Crow\nfrom ..tools.parser_tools import parse_source\nfrom ..rewrit"
},
{
"path": "mocodo/convert/crow_mmd.py",
"chars": 2379,
"preview": "import re\n\n__import__(\"sys\").path[0:0] = [\".\"]\n\nfrom ._crow import Crow\nfrom ..tools.parser_tools import parse_source\nfr"
},
{
"path": "mocodo/convert/read_template.py",
"chars": 4484,
"preview": "from bisect import bisect_left\nfrom pathlib import Path\n\nfrom ..tools import load_mini_yaml\nfrom ..mocodo_error import M"
},
{
"path": "mocodo/convert/relations.py",
"chars": 41374,
"preview": "import collections\nfrom pathlib import Path\nimport re\n\nfrom mocodo.tools.various import first_missing_positive\n\nfrom ..m"
},
{
"path": "mocodo/dev/json_to_yaml_templates.py",
"chars": 1586,
"preview": "from pathlib import Path\nfrom json import loads\n\ndef repr_single(s):\n \"\"\"repr() but with single quotes\"\"\"\n return "
},
{
"path": "mocodo/dev/update_sql_reserved_words.py",
"chars": 1392,
"preview": "from pathlib import Path\nimport re\nimport requests\n\nurl = \"https://modern-sql.com/reserved-words-empirical-list.html\"\nte"
},
{
"path": "mocodo/dev/update_transfo_metadata.py",
"chars": 3600,
"preview": "from pathlib import Path\nfrom collections import defaultdict\nimport json\nimport os\n\nfrom mocodo.argument_parser import i"
},
{
"path": "mocodo/diagram_link.py",
"chars": 4471,
"preview": "from .mocodo_error import MocodoError\n\n\nclass DiagramLink:\n def __init__(self, entities, foreign_entity, foreign_key)"
},
{
"path": "mocodo/entity.py",
"chars": 9588,
"preview": "from collections import defaultdict\nfrom .attribute import *\nfrom .tools.string_tools import rstrip_digit_or_underline, "
},
{
"path": "mocodo/font_metrics.py",
"chars": 1119,
"preview": "import json\nfrom pathlib import Path\n\n\ndef font_metrics_factory(params):\n class FontMetrics:\n\n data = json.loa"
},
{
"path": "mocodo/grid.py",
"chars": 1957,
"preview": "import itertools\nimport math\n\n\nclass Grid(list):\n \n def __init__(self, max_number_of_nodes=100, min_balance=0.5):\n"
},
{
"path": "mocodo/guess_title.py",
"chars": 1523,
"preview": "\n\nfrom collections import Counter\nimport contextlib\nfrom importlib import import_module\nimport re\nfrom pathlib import Pa"
},
{
"path": "mocodo/inheritance.py",
"chars": 4754,
"preview": "from math import sqrt\n\nfrom .attribute import *\nfrom .leg import *\nfrom .tools.string_tools import rstrip_digit_or_under"
},
{
"path": "mocodo/leg.py",
"chars": 25000,
"preview": "import operator\nfrom math import hypot, sqrt\n\nfrom .mocodo_error import MocodoError\nfrom .tools.string_tools import surr"
},
{
"path": "mocodo/magic.py",
"chars": 8002,
"preview": "import argparse\nimport contextlib\nimport importlib\nimport json\nimport re\nimport shlex\nimport warnings\nfrom base64 import"
},
{
"path": "mocodo/mcd.py",
"chars": 32481,
"preview": "import itertools\nfrom collections import defaultdict\nfrom hashlib import md5\nimport json\nfrom pathlib import Path\n\nfrom "
},
{
"path": "mocodo/mcd_to_svg.py",
"chars": 11571,
"preview": "from pathlib import Path\nimport re\n\nfrom .mocodo_error import MocodoError\nfrom . import __version__\n\ntry:\n from cairo"
},
{
"path": "mocodo/mocodo_error.py",
"chars": 1109,
"preview": "import textwrap\n\n\nclass MocodoError(Exception):\n def __init__(self, errno, message):\n message = f\"Mocodo Err.{"
},
{
"path": "mocodo/parse_mcd.py",
"chars": 257508,
"preview": "# The file was automatically generated by Lark v1.1.7\n__version__ = \"1.1.7\"\n\n#\n#\n# Lark Stand-alone Generator Tool\n# -"
},
{
"path": "mocodo/phantom.py",
"chars": 626,
"preview": "class Phantom:\n\n counter = 0\n\n @classmethod\n def reset_counter(cls):\n cls.counter = 0\n\n def __init__("
},
{
"path": "mocodo/resources/colors/blank.json",
"chars": 756,
"preview": "{\n \"association_attribute_text_color\": null,\n \"association_cartouche_color\": \"#FFFFFF\",\n \"association_cartouche_text_"
},
{
"path": "mocodo/resources/colors/brewer+1.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#dfc27d\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+2.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#f1b6da\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+3.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#c2a5cf\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+4.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#fdb863\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+5.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#f4a582\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+6.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#f4a582\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+7.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#fdae61\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+8.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#fdae61\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer+9.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#fdae61\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-1.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#80cdc1\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-2.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#b8e186\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-3.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#a6dba0\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-4.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#b2abd2\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-5.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#92c5de\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-6.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#bababa\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-7.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#abd9e9\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-8.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#a6d96a\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/brewer-9.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#abdda4\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/bw-alpha.json",
"chars": 778,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#FFFFFF\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/bw.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#FFFFFF\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/dark-desert.json",
"chars": 827,
"preview": "{\n \"association_attribute_text_color\": \"#D3B08C\",\n \"association_cartouche_color\": \"#4E3925\",\n \"association_cart"
},
{
"path": "mocodo/resources/colors/dark-ocean.json",
"chars": 827,
"preview": "{\n \"association_attribute_text_color\": \"#b4c8a1\",\n \"association_cartouche_color\": \"#2d3b22\",\n \"association_cart"
},
{
"path": "mocodo/resources/colors/dark-pond.json",
"chars": 827,
"preview": "{\n \"association_attribute_text_color\": \"#A7BEC1\",\n \"association_cartouche_color\": \"#31572E\",\n \"association_cart"
},
{
"path": "mocodo/resources/colors/dark.json",
"chars": 827,
"preview": "{\n \"association_attribute_text_color\": \"#FFFFFF\",\n \"association_cartouche_color\": \"#444444\",\n \"association_cart"
},
{
"path": "mocodo/resources/colors/desert.json",
"chars": 778,
"preview": "{\n \"association_attribute_text_color\": \"#7F5D3B\",\n \"association_cartouche_color\": \"#CE9F6F\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/gray.json",
"chars": 778,
"preview": "{\n \"association_attribute_text_color\": \"#000000\",\n \"association_cartouche_color\": \"#FFFFFF\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/keepsake.json",
"chars": 778,
"preview": "{\n \"association_attribute_text_color\": \"#57483d\",\n \"association_cartouche_color\": \"#c6aea5\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/mondrian.json",
"chars": 784,
"preview": "{\n \"association_attribute_text_color\": \"#060100\",\n \"association_cartouche_color\": \"#081a84\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/ocean.json",
"chars": 778,
"preview": "{\n \"association_attribute_text_color\": \"#607734\",\n \"association_cartouche_color\": \"#b2bba4\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/pond.json",
"chars": 778,
"preview": "{\n \"association_attribute_text_color\": \"#3d484a\",\n \"association_cartouche_color\": \"#9ebd6d\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/wb.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#FFFFFF\",\n \"association_cartouche_color\": \"#000000\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/colors/xinnian.json",
"chars": 783,
"preview": "{\n \"association_attribute_text_color\": \"#ffcf00\",\n \"association_cartouche_color\": \"#fd0400\",\n \"association_cartouche_"
},
{
"path": "mocodo/resources/default_datatypes_en.tsv",
"chars": 2299,
"preview": "Date and Time\n\n\\bdate$\tDATE\n\\bday$\tDATE\n\\btime$\tTIME\n\\bdatetime$\tDATETIME\n\\btimestamp$\tTIMESTAMP\n\\bat$\tTIMESTAMP\n\\bbefor"
},
{
"path": "mocodo/resources/default_datatypes_fr.tsv",
"chars": 2438,
"preview": "Date and Time\n\n^date\\b\tDATE\n^jour\\b\tDATE\n^heure\\b\tTIME\n^date et heure\\b\tDATETIME\n^horodatage\\b\tTIMESTAMP\n\\ba$\tTIMESTAMP\n"
},
{
"path": "mocodo/resources/font_metrics.json",
"chars": 67828,
"preview": "{\n\"alphabet\": \" !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§©"
},
{
"path": "mocodo/resources/grammar.lark",
"chars": 2950,
"preview": "// NOTE: add a newline at the beginning and at the end of the input before parsing it.\n// https://github.com/lark-parser"
},
{
"path": "mocodo/resources/i18n/messages_fr.po",
"chars": 34706,
"preview": "# MOCODO\n# Copyright (C) 2023 Aristide Grange\n# \n# Translators:\n# Aristide Grange, 2023\nmsgid \"\"\nmsgstr \"Project-Id-Vers"
},
{
"path": "mocodo/resources/lorem/disparition.txt",
"chars": 62460,
"preview": "aaaaaaah\nabaissa\nabandon\nabandonna\nabandonnai\nabandonnait\nabandonnant\nabandonnas\nabandons\nabasourdi\nabasourdir\nabasourdi"
},
{
"path": "mocodo/resources/lorem/en4.txt",
"chars": 3200,
"preview": "able\nacid\naide\nAIDS\nally\nalso\namid\nArab\narea\narmy\natop\naunt\nauto\naway\nbaby\nback\nbake\nball\nband\nbank\nbare\nbarn\nbase\nbath\n"
},
{
"path": "mocodo/resources/lorem/fr.txt",
"chars": 28645,
"preview": "pour\ndans\nplus\nsont\navec\ncette\nmais\ncomme\ntout\nnous\nMais\nfait\nété\naussi\nleur\nbien\npeut\ndeux\nencore\nmarché\nPour\ndonc\ncour"
},
{
"path": "mocodo/resources/lorem/fr5.txt",
"chars": 3248,
"preview": "encore\ngroupe\ndepuis\ncontre\nfrancs\nautres\ncompte\nniveau\npartie\nhausse\nvaleur\nBourse\ntoutes\nnombre\ngrande\npermet\nchaque\nF"
},
{
"path": "mocodo/resources/lorem/lorem.txt",
"chars": 53212,
"preview": "aberat\nabesset\nabest\nabiit\nabire\nabit\nablatiuo\nabsens\nabsentis\nabsit\nabsolui\nabsolutus\nabstinentia\nabstinere\nabstinuit\na"
},
{
"path": "mocodo/resources/pristine_sandbox.mcd",
"chars": 579,
"preview": "AYANT-DROIT: nom ayant-droit, lien\nDIRIGER, 0N [responsable] EMPLOYÉ, 01 PROJET\nREQUÉRIR, 1N PROJET, 0N PIÈCE: qté requi"
},
{
"path": "mocodo/resources/prompts/chat/cards_examples/1_input.mcd",
"chars": 550,
"preview": "Bureau: num. bureau\nRattacher, 11 [?] Bureau, 1N [?] Département\nDépartement: num. département, budget département\nDépen"
},
{
"path": "mocodo/resources/prompts/chat/cards_examples/1_output.mcd",
"chars": 1215,
"preview": "Bureau: num. bureau\nRattacher, 11 [Tout bureau est rattaché à un département.] Bureau, 1N [Tout département compte au mo"
},
{
"path": "mocodo/resources/prompts/chat/cards_examples/2_input.mcd",
"chars": 522,
"preview": "Rejoindre, 01 [?] Rivière, 0N [?] Rivière\nRivière: pos. source, nom rivière, longueur, position fin\nSe Jeter, 01 [?] Riv"
},
{
"path": "mocodo/resources/prompts/chat/cards_examples/2_output.mcd",
"chars": 1326,
"preview": "Rejoindre, 01 [Une rivière peut rejoindre au plus une autre rivière.] Rivière, 0N [Une rivière a un nombre quelconque d'"
},
{
"path": "mocodo/resources/prompts/chat/cards_examples/3_input.mcd",
"chars": 1364,
"preview": ":\n:\nDF2, 11 Ville, 0N Pays\nVille: code ville, nom ville, population, code postal\nDF1, 0N Ville, 11 Producteur\n\nLangue: c"
},
{
"path": "mocodo/resources/prompts/chat/cards_examples/3_output.mcd",
"chars": 3146,
"preview": ":\n:\nDF2, 11 [Une ville appartient à un et un seul pays.] Ville, 0N [Un pays peut avoir un nombre quelconque de villes.] "
},
{
"path": "mocodo/resources/prompts/chat/cards_fr.md",
"chars": 2015,
"preview": "Tu es un enseignant spécialiste des Modèles Conceptuels de Données (MCD) de la méthode MERISE.\n\n# Syntaxe de Mocodo\n\nPou"
},
{
"path": "mocodo/resources/prompts/chat/types_examples/1_input.mcd",
"chars": 452,
"preview": "Recevoir, 01 Rivière, 0N Rivière\nRivière: pos. source, nom rivière, longueur, position fin\nSe Jeter, 01 Rivière, 1N Mer\n"
},
{
"path": "mocodo/resources/prompts/chat/types_examples/1_output.mcd",
"chars": 630,
"preview": "Recevoir, 01 Rivière, 0N Rivière\nRivière: pos. source [POINT], nom rivière [VARCHAR(255)], longueur [INTEGER], position "
},
{
"path": "mocodo/resources/prompts/chat/types_examples/2_input.mcd",
"chars": 1364,
"preview": ":\n:\nDF2, 11 Ville, 0N Pays\nVille: code ville, nom ville, population, code postal\nDF1, 0N Ville, 11 Producteur\n\nLangue: c"
},
{
"path": "mocodo/resources/prompts/chat/types_examples/2_output.mcd",
"chars": 2166,
"preview": ":\n:\nDF2, 11 Ville, 0N Pays\nVille: code ville [VARCHAR(10)], nom ville [VARCHAR(255)], population [INTEGER], code postal "
},
{
"path": "mocodo/resources/prompts/chat/types_fr.md",
"chars": 1258,
"preview": "Tu es un enseignant spécialiste des Modèles Conceptuels de Données (MCD) de la méthode MERISE.\n\n# Syntaxe de Mocodo\n\nPou"
},
{
"path": "mocodo/resources/relation_templates/_index.json",
"chars": 5764,
"preview": "{\n \"d2\": {\n \"category\": \"cv\",\n \"help_en\": \"convert the conceptual model into a relational schema in D2 format\",\n "
},
{
"path": "mocodo/resources/relation_templates/d2.yaml",
"chars": 3044,
"preview": "help_en: 'convert the conceptual model into a relational schema in D2 format'\nhelp_fr: 'convertit le modèle conceptuel e"
},
{
"path": "mocodo/resources/relation_templates/dbml-b.yaml",
"chars": 129,
"preview": "parent: 'dbml'\ncompose_relational_schema: 'Project \"{title}\" {{\\n Note: ''Generated by Mocodo {version}''\\n}}\\n\\n{relat"
},
{
"path": "mocodo/resources/relation_templates/dbml.yaml",
"chars": 4503,
"preview": "help_en: 'convert the conceptual model into a relational schema in DBML format'\nhelp_fr: 'convertit le modèle conceptuel"
},
{
"path": "mocodo/resources/relation_templates/ddl.yaml",
"chars": 14,
"preview": "parent: 'sql'\n"
},
{
"path": "mocodo/resources/relation_templates/debug.yaml",
"chars": 1386,
"preview": "help_en: 'list internal informations relative to the conversion into relational schema'\nhelp_fr: 'liste des informations"
},
{
"path": "mocodo/resources/relation_templates/dependencies.yaml",
"chars": 1230,
"preview": "help_en: 'convert the conceptual model into a dependency graph'\nhelp_fr: 'convertit le modèle conceptuel en un graphe de"
},
{
"path": "mocodo/resources/relation_templates/diagram-c.yaml",
"chars": 1011,
"preview": "stem_suffix: '_mld'\nextension: 'mcd'\nto_defer: false\nhighlight: 'plain'\ncompose_primary_key: '_{label}'\ncompose_foreign_"
},
{
"path": "mocodo/resources/relation_templates/diagram.yaml",
"chars": 440,
"preview": "help_en: 'convert the conceptual model into a relational diagram in Mocodo syntax'\nhelp_fr: 'convertit le modèle concept"
},
{
"path": "mocodo/resources/relation_templates/html-b.yaml",
"chars": 72,
"preview": "parent: 'html-bc'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/html-bc.yaml",
"chars": 970,
"preview": "parent: 'html-c'\ncompose_relational_schema: '<!-- Generated by Mocodo {version}-->\\n\\n<html>\\n<head>\\n<!-- TO_BE_DELETED"
},
{
"path": "mocodo/resources/relation_templates/html-bce.yaml",
"chars": 971,
"preview": "parent: 'html-ce'\ncompose_relational_schema: '<!-- Generated by Mocodo {version}-->\\n\\n<html>\\n<head>\\n<!-- TO_BE_DELETE"
},
{
"path": "mocodo/resources/relation_templates/html-be.yaml",
"chars": 73,
"preview": "parent: 'html-bce'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/html-c.yaml",
"chars": 3754,
"preview": "stem_suffix: '_mld'\nextension: 'html'\nto_defer: false\nhighlight: 'html'\ntransform_attribute:\n - order: 100\n search: "
},
{
"path": "mocodo/resources/relation_templates/html-ce.yaml",
"chars": 17912,
"preview": "parent: 'html-c'\ncompose_association_attribute: '<span class=''normal''>{label}</span><item>Le champ <i>{label}</i> étai"
},
{
"path": "mocodo/resources/relation_templates/html-e.yaml",
"chars": 72,
"preview": "parent: 'html-ce'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/html.yaml",
"chars": 696,
"preview": "help_en: 'convert the conceptual model into a relational schema in HTML format'\nhelp_fr: 'convertit le modèle conceptuel"
},
{
"path": "mocodo/resources/relation_templates/latex-b.yaml",
"chars": 73,
"preview": "parent: 'latex-bc'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/latex-bc.yaml",
"chars": 624,
"preview": "parent: 'latex-c'\ncompose_relational_schema: '% Generated by Mocodo {version}\\n\\n\\documentclass[a4paper]{{article}}\\n\\us"
},
{
"path": "mocodo/resources/relation_templates/latex-bce.yaml",
"chars": 625,
"preview": "parent: 'latex-ce'\ncompose_relational_schema: '% Generated by Mocodo {version}\\n\\n\\documentclass[a4paper]{{article}}\\n\\u"
},
{
"path": "mocodo/resources/relation_templates/latex-be.yaml",
"chars": 74,
"preview": "parent: 'latex-bce'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/latex-c.yaml",
"chars": 1140,
"preview": "parent: 'html-c'\nextension: 'tex'\nhighlight: 'latex'\ncolumn_separator: ', '\ncompose_relation: ' \\item \\relat{{{this_rel"
},
{
"path": "mocodo/resources/relation_templates/latex-ce.yaml",
"chars": 1761,
"preview": "parent: 'html-ce'\nextension: 'tex'\nhighlight: 'latex'\ncolumn_separator: ', '\ncompose_relation: ' \\item \\relat{{{this_re"
},
{
"path": "mocodo/resources/relation_templates/latex-e.yaml",
"chars": 73,
"preview": "parent: 'latex-ce'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/latex.yaml",
"chars": 705,
"preview": "help_en: 'convert the conceptual model into a relational schema in LaTeX format'\nhelp_fr: 'convertit le modèle conceptue"
},
{
"path": "mocodo/resources/relation_templates/markdown-b.yaml",
"chars": 76,
"preview": "parent: 'markdown-bc'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/markdown-bc.yaml",
"chars": 21,
"preview": "parent: 'markdown-c'\n"
},
{
"path": "mocodo/resources/relation_templates/markdown-bce.yaml",
"chars": 22,
"preview": "parent: 'markdown-ce'\n"
},
{
"path": "mocodo/resources/relation_templates/markdown-be.yaml",
"chars": 77,
"preview": "parent: 'markdown-bce'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/markdown-c.yaml",
"chars": 768,
"preview": "parent: 'html-c'\nextension: 'md'\nhighlight: 'markdown'\ncolumn_separator: ', '\ncompose_relation: '- **{this_relation_name"
},
{
"path": "mocodo/resources/relation_templates/markdown-ce.yaml",
"chars": 1236,
"preview": "parent: 'html-ce'\nextension: 'md'\nhighlight: 'markdown'\ncolumn_separator: ', '\ncompose_relation: '- **{this_relation_nam"
},
{
"path": "mocodo/resources/relation_templates/markdown-e.yaml",
"chars": 76,
"preview": "parent: 'markdown-ce'\nadd_unicity_constraints:\nadd_optionality_constraints:\n"
},
{
"path": "mocodo/resources/relation_templates/markdown.yaml",
"chars": 639,
"preview": "help_en: 'convert the conceptual model into a relational schema in Markdown format'\nhelp_fr: 'convertit le modèle concep"
},
{
"path": "mocodo/resources/relation_templates/md-b.yaml",
"chars": 21,
"preview": "parent: 'markdown-b'\n"
},
{
"path": "mocodo/resources/relation_templates/md-bc.yaml",
"chars": 22,
"preview": "parent: 'markdown-bc'\n"
},
{
"path": "mocodo/resources/relation_templates/md-bce.yaml",
"chars": 23,
"preview": "parent: 'markdown-bce'\n"
},
{
"path": "mocodo/resources/relation_templates/md-be.yaml",
"chars": 22,
"preview": "parent: 'markdown-be'\n"
},
{
"path": "mocodo/resources/relation_templates/md-c.yaml",
"chars": 21,
"preview": "parent: 'markdown-c'\n"
},
{
"path": "mocodo/resources/relation_templates/md-ce.yaml",
"chars": 22,
"preview": "parent: 'markdown-ce'\n"
},
{
"path": "mocodo/resources/relation_templates/md-e.yaml",
"chars": 21,
"preview": "parent: 'markdown-e'\n"
},
{
"path": "mocodo/resources/relation_templates/md.yaml",
"chars": 19,
"preview": "parent: 'markdown'\n"
},
{
"path": "mocodo/resources/relation_templates/mld-b.yaml",
"chars": 21,
"preview": "parent: 'markdown-b'\n"
},
{
"path": "mocodo/resources/relation_templates/mld-bc.yaml",
"chars": 22,
"preview": "parent: 'markdown-bc'\n"
},
{
"path": "mocodo/resources/relation_templates/mld-bce.yaml",
"chars": 23,
"preview": "parent: 'markdown-bce'\n"
},
{
"path": "mocodo/resources/relation_templates/mld-be.yaml",
"chars": 22,
"preview": "parent: 'markdown-be'\n"
}
]
// ... and 1079 more files (download for full content)
About this extraction
This page contains the full source code of the laowantong/mocodo GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1279 files (6.4 MB), approximately 1.7M tokens, and a symbol index with 1242 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.