[
  {
    "path": ".github/workflows/deploy.yml",
    "content": "# https://dev.to/github/how-to-deploy-a-static-site-in-any-framework-of-your-choice-github-pages-neh\nname: Deploy to GitHub Pages\n\non:\n  # Trigger the workflow every time you push to the `main` branch\n  push:\n    branches: [ main ]\n  # Allows you to run this workflow manually from the Actions tab on GitHub.\n  workflow_dispatch:\n\n  # Allow this job to clone the repo and create a page deployment\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\njobs:\n  specs:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Check out your repository using git\n      uses: actions/checkout@v4\n\n    - name: Use Node.js 16\n      uses: actions/setup-node@v4\n      with:\n        node-version: '16'\n        cache: 'npm'\n\n    - name: Install dependencies\n      run: npm ci\n\n    - name: Run specs\n      run: npm run test\n\n  build:\n    runs-on: ubuntu-latest\n    needs: specs\n    env:\n      NODE_ENV: production\n\n    steps:\n    - name: Check out your repository using git\n      uses: actions/checkout@v4\n\n    - name: Use Node.js 16\n      uses: actions/setup-node@v4\n      with:\n        node-version: '16'\n        cache: 'npm'\n\n    - name: Install dependencies\n      run: npm ci\n\n    - name: Build React\n      run: npm run build\n\n    - name: Upload artifact\n      uses: actions/upload-pages-artifact@v3\n      with:\n        path: ./build\n\n  deploy:\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    runs-on: ubuntu-latest\n    needs: build\n    steps:\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@v4\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n.cache\nnode_modules\ndist\n.env\n.eslintcache\n.idea\n.log\n.rollup.cache\n*.csv\n"
  },
  {
    "path": ".npmrc",
    "content": "8.19.3\n"
  },
  {
    "path": ".nvmrc",
    "content": "16.19.0\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# SQL Schema Visualizer Contribution Guidelines\n\nFirst of all, thank you for your interest in contributing to the Schema Visualizer :raised_hands: Every form of contribution is appreciated. From issues to pull requests and documentation.\n\nPlease, check out [existing issues](https://github.com/sqlhabit/sql_schema_visualizer/issues) before you open a new one.\n\n## Bugs and Features\n\nIf you have a **question**, **feature request** or a **bug report** simply create a [new issue](https://github.com/sqlhabit/sql_schema_visualizer/issues/new/choose).\n\n## Pull Requests\n\nBefore submitting a substantial PR, please, open a [new issue](https://github.com/sqlhabit/sql_schema_visualizer/issues/new/choose). Let's discuss and plan it first. :pray:\n\n### :mag: Anatomy of a great PR\n\n1. Use a meaningful commit name.\n2. Add a detailed PR description.\n3. Write comments for key code changes. They'll help reviewing and serve as future documentation.\n4. Write specs to make your changes bullet proof.\n5. PROFIT. :beers:\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2023 Anatoli Makarevich @ SQL Habit\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "![SQL Schema Visualizer snapshot](https://raw.githubusercontent.com/sqlhabit/sql_schema_visualizer/main/docs/snapshot.png)\n\n<div align=\"center\">\n\n# SQL Schema Visualizer\n\n![GitHub License MIT](https://img.shields.io/github/license/sqlhabit/sql_schema_visualizer?color=%2347A3F3)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/sqlhabit/sql_schema_visualizer?color=%2347A3F3)\n\nA relational database schema visualizer built with React and [ReactFlow](https://github.com/wbkd/react-flow).\n\nOriginally built for [the SQL Habit course](https://www.sqlhabit.com/), it's available for everyone. Enjoy :heart:\n\n[:mag: How to visualize your schema](https://github.com/sqlhabit/sql_schema_visualizer#how-to-visualize-your-schema) | [:microscope: How it works](https://github.com/sqlhabit/sql_schema_visualizer#under-the-hood) | [:handshake: Contributing](https://github.com/sqlhabit/sql_schema_visualizer#contributing)\n\n</div>\n\n## Features\n\n:dash: **Easy to start**: you can import your schema(s) in 1.5 minutes.\n<br>\n:checkered_flag: **Easy to finish**: you only need to configure edges and table positions.\n<br>\n:wrench: **Customizable**: add table/column descriptions and schema colors.\n<br>\n:rocket: **Make it yours**: you get the whole React app, so you can change everything.\n\n### Highlight specific tables and columns via a URL param\n\nYou can highlight tables and columns via the `highlights` URL param. Here's an example URL:\n\nhttps://sqlhabit.github.io/sql_schema_visualizer/databases/bindle?highlights=users:id,email,signup_date;purchases:user_id,created_at\n\n:mag: Note that tables are followed by semicolons `:` and column names are separated with commas `,`. Here's how it looks like:\n\n<img src=\"https://raw.githubusercontent.com/sqlhabit/sql_schema_visualizer/main/docs/table_highlights.png\" width=\"400px\">\n\n## How to visualize your schema(s)\n\nSchema Visualizer can visualize multiple schemas – each schema will have its own URL.\n\nA schema configuration lives in [its own folder](https://github.com/sqlhabit/sql_schema_visualizer/tree/main/src/config/databases) and contains a bunch of [simple JSON files](https://github.com/sqlhabit/sql_schema_visualizer/tree/main/src/config/databases/bindle).\n\nHere's how you can import your schema:\n\n### Step 1. Clone and set up the repo\n\nClone the repo:\n\n```bash\ngit clone https://github.com/sqlhabit/sql_schema_visualizer.git\n\ncd sql_schema_visualizer\n```\n\nInstall dependencies:\n\n```bash\nnpm install\n```\n\n:bulb: You might need to install [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) as well to make sure you're not using an old Node version.\n\n### Step 2. Reset schema configuration\n\nBy default, Schema Visualizer contains [SQL Habit's](https://www.sqlhabit.com) dataset schemas. Let's delete all before we import new schemas:\n\n```bash\nnpm run reset\n```\n\n### Step 3. Export your schema into a CSV file\n\nA schema config consists of [tables](https://github.com/sqlhabit/sql_schema_visualizer/tree/main/src/config/databases/bindle/tables), [edges](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/edges.json), [table positions](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/tablePositions.json) and [schema colors](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/schemaColors.json).\n\nGood news is that we can import tables using an SQL query. :rocket:\n\nPick a query for your database type and save the output to a CSV file like `my_schema.csv`. Put it to the root folder (next to [the `schema.csv.template` file](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/schema.csv.template)).\n\n#### Postgres / Redshift\n\n```sql\nSELECT\n  t.table_schema,\n  t.table_name,\n  c.column_name,\n  c.data_type,\n  c.ordinal_position\nFROM information_schema.tables t\nLEFT JOIN information_schema.columns c\n  ON t.table_schema = c.table_schema\n    AND t.table_name = c.table_name\nWHERE\n  t.table_schema NOT IN ('information_schema', 'pg_catalog')\n  AND t.table_name NOT IN ('schema_migrations', 'ar_internal_metadata')\nORDER BY 1, 2, 5\n```\n\n#### BigQuery\n\n```sql\nSELECT\n  c.table_schema,\n  c.table_name,\n  c.column_name,\n  c.data_type,\n  c.ordinal_position\nFROM %PROJECT_NAME%.%DATASET_NAME%.INFORMATION_SCHEMA.COLUMNS c\nJOIN %PROJECT_NAME%.%DATASET_NAME%.INFORMATION_SCHEMA.TABLES t\n  ON c.table_schema = t.table_schema\n  AND c.table_name = t.table_name\nWHERE\n  c.table_schema NOT IN ('INFORMATION_SCHEMA')\nORDER BY 1, 2, 5\n```\n\n:mag: Make sure to replace `%PROJECT_NAME%.%DATASET_NAME%` with proper values.\n\n#### Snowflake\n\n```sql\nSELECT\n  c.table_schema,\n  c.table_name,\n  c.column_name,\n  c.data_type,\n  c.ordinal_position\nFROM information_schema.columns c\nJOIN information_schema.tables t\n  ON c.table_schema = t.table_schema\n  AND c.table_name = t.table_name\nWHERE\n  c.table_schema NOT IN ('INFORMATION_SCHEMA')\n  AND t.table_type = 'BASE TABLE'\nORDER BY 1, 2, 5\n```\n\n#### MySQL\n\n```sql\nSELECT\n  c.table_schema,\n  c.table_name,\n  c.column_name,\n  c.data_type,\n  c.ordinal_position\nFROM information_schema.columns c\nLEFT JOIN information_schema.views v\n  ON v.table_schema = c.table_schema\n    AND v.table_name = c.table_name\nWHERE\n  c.table_schema NOT IN ('sys','information_schema', 'mysql', 'performance_schema')\n  AND c.table_name NOT IN ('schema_migrations', 'ar_internal_metadata')\nORDER BY 1, 2, 5\n```\n\n#### [SAP ASE](https://github.com/sqlhabit/sql_schema_visualizer/issues/8)\n\n```sql\nSELECT\n  'public' as table_schema,\n  so.name as table_name,\n  sc.name as column_name,\n  sc.type as data_type,\n  sc.colid as ordinal_position\nFROM syscolumns sc\nINNER JOIN sysobjects so\n  ON sc.id = so.id\nWHERE so.type = 'U'\n```\n\n### Step 4. Import schema\n\nNow we can import tables. The argument of the `npm run import` command is your CSV file name:\n\n\n```bash\nnpm run import my_schema\n```\n\nYou should see table JSON files added to the `src/config/databases/my_schema/tables` folder.\n\nLet's spin up a dev server and see our tables [in the browser](http://localhost:3000/):\n\n```bash\nnpm run start\n```\n\n### Step 5. Configure your schema\n\n#### A. Set primary keys\n\nTo show a :key: icon next to the column name, add the `key` param to a column definition. Here's an example from [the `users` table](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/tables/users.json):\n\n```json\n{\n  \"name\": \"id\",\n  \"key\": true,\n  \"description\": \"Unique identifier of a user.\",\n  \"type\": \"number\"\n}\n```\n\n#### B. Add edges\n\nDefine edges in [the `src/config/edges.json` file](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/edges.json):\n\nHere's an example for **has one** relation:\n\n```json\n{\n  \"source\": \"users\",\n  \"sourceKey\": \"id\",\n  \"target\": \"profiles\",\n  \"targetKey\": \"user_id\",\n  \"relation\": \"hasOne\"\n}\n```\n\nand **has many** relation:\n\n```json\n{\n  \"source\": \"users\",\n  \"sourceKey\": \"id\",\n  \"target\": \"purchases\",\n  \"targetKey\": \"user_id\",\n  \"relation\": \"hasMany\"\n}\n```\n\n#### C. Add schema colors\n\nYou can set custom header colors for tables that belongs to the same schema in [the `schemaColors.json` file](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/schemaColors.json). Here's an example:\n\n```json\n{\n  \"DEFAULT\": \"#91C4F2\",\n  \"public\": \"#BEB8EB\",\n  \"adjust\": \"#AFA2FF\",\n  \"helpers\": \"#75C9C8\",\n  \"web_analytics\": \"#F6BDD1\",\n  \"mobile_analytics\": \"#FFD791\"\n}\n```\n\n#### D. Add table positions\n\nTable positions are defined in the [`tablePositions.json` file](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/tablePositions.json):\n\n```json\n{\n\"adjust.callbacks\": {\n  \"x\": 864,\n  \"y\": -192\n},\n\"helpers.dates\": {\n  \"x\": 512,\n  \"y\": 528\n},\n\"mobile_analytics.events\": {\n  \"x\": 656,\n  \"y\": -336\n}\n```\n\nAfter you import a schema, every table will have a default position set in the [`tablePositions.json`](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/tablePositions.json) file.\n\nThere's no need to update them manually. Instead:\n\n1. Open Schema Visualizer [http://localhost:3000](http://localhost:3000).\n2. Drag table nodes around to find a perfect arrangement.\n3. **CTRL** + **P**. It copies node positions JSON to your clipboard.\n4. Paste (**CMD** + **V**) JSON with positions to the [`tablePositions.json`](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/tablePositions.json) file of your schema.\n5. PROFIT :beers:\n\n#### E. Add table and column descriptions\n\nTable and column descriptions are visible if you press `CMD` key and hover over a table or column name.\n\nAdd custom copy to the `\"description\"` keys [in table config files](https://github.com/sqlhabit/sql_schema_visualizer/tree/main/src/config/databases/bindle/tables/users.json). Here's an example:\n\n```json\n{\n  \"name\": \"users\",\n  \"description\": \"This table contains all user records of Bindle.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a user.\",\n      \"type\": \"number\"\n    }\n  ]\n}\n```\n\n### Publish your schema online\n\n#### Building your Schema Visualizer\n\nOnce you're finished with config file, build the project and upload the files from the [`/build`](https://github.com/sqlhabit/sql_schema_visualizer/tree/main/build) folder to your hosting of choice:\n\n\n```sh\nnpm build\n```\n\nI highly recommend https://surge.sh/. It'll take you ~2 minutes to deploy your schema online:\n\n1. `npm install --global surge`.\n2. `cd build`\n3. `surge`\n4. PROFIT :beers:\n\n## Contributing\n\nYou're more than welcome to contribute. In fact, I'm really looking forward to it! :rocket:\n\nJust make sure to check out the [contribution guidelines](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/CONTRIBUTING.md). :pray:\n\n## Under the hood\n\nSchema Visualizer is built with [ReactFlow](https://reactflow.dev/).\n\nEvery table is a ReactFlow [Custom Node](https://reactflow.dev/docs/guides/custom-nodes/) with custom [Markers](https://reactflow.dev/docs/examples/edges/markers/) (those SVG icons with dot and fork).\n\nHere's [a ReactFlow sandbox example](https://github.com/wbkd/react-flow-example-apps/tree/main/reactflow-create-react-app) of Custom Nodes.\n\n### Config files\n\nIt all starts with plain [JSON config files](https://github.com/sqlhabit/sql_schema_visualizer/tree/main/src/config). There're 4 of them:\n\n* [tables](https://github.com/sqlhabit/sql_schema_visualizer/tree/main/src/config/databases/bindle/tables)\n* [edges](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/edges.json)\n* [tablePositions](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/tablePositions.json)\n* [schemaColors](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/databases/bindle/schemaColors.json)\n\nLater they're translated into Nodes and Edges digestible by ReactFlow.\n\n### Nodes and Handles\n\nReactFlow draws SVG edges between custom [Table Nodes](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/Visualizer/components/TableNode.tsx#L64).\n\nThose edges start and end in ReactFlow Handle's. Every table column row has 2 handles – left and right. :bulb: A handle could be either **source** (for an outgoing edge) or a **target** (for an incoming edge). Handles are configured [based on the edges config](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/Visualizer/helpers/initializeNodes.ts#L4).\n\n### Edges\n\nAs you can see, edges are dynamically change handles and orientation depending on relative node positions. That way it's less config to maintain, here're [helper](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/Visualizer/helpers/calculateTargetPosition.ts) [functions](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/Visualizer/helpers/calculateSourcePosition.ts) that take care of that.\n\n### More details\n\n[Here's the entry file](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/Visualizer/index.tsx) to the ReactFlow app.\n\nHave fun exploring the app, it was a pleasure to build! If you have a question – open a [new issue](https://github.com/sqlhabit/sql_schema_visualizer/issues/new/choose). :beers:\n\n## Development\n\nYou'll need to install dependencies and start a dev server:\n\n```sh\nnpm install\n\nnpm start\n```\n\nYou'll find the running visualizer at [http://localhost:3000](http://localhost:3000).\n\n## Testing\n\nTests are written with the [React Testing Library](https://testing-library.com/docs/react-testing-library/example-intro). Run all of them via\n\n\n```sh\nnpm test\n```\n\n## Maintainers\n\nSchema Visualizer is a project of Anatoli of [SQL Habit](https://www.sqlhabit.com/). Hi from Berlin! :wave: :beers:\n\nAnatoli Makarevich • [Twitter](https://twitter.com/makaroni4) • [Github](https://github.com/makaroni4)\n\n\n## License\n\nSQL Schema Visualizer is [MIT licensed](https://github.com/sqlhabit/sql_schema_visualizer/blob/main/LICENSE).\n"
  },
  {
    "path": "bin/create_db_pages",
    "content": "#!/usr/bin/env node\n\nconst databases = require(\"../src/config/databases.json\");\n\nconst fs = require(\"fs\").promises;\n\n// design_notes/0001_using_regular_links.md\n(async () => {\n  await fs.mkdir(\"build/databases\");\n\n  for (const databaseSlug of Object.keys(databases)) {\n    await fs.copyFile(\"build/index.html\", `build/databases/${databaseSlug}.html`);\n  };\n})();\n"
  },
  {
    "path": "bin/import",
    "content": "#!/usr/bin/env node\n\nconst fs = require(\"fs\").promises;\n\nconst SCHEMA_COLORS_TEMPLATE_FILE = \"src/config/schemaColors.json.template\";\nconst TABLES_INDEX_FILE_TEMPLATE = \"src/config/tables.ts.template\";\nconst DATABASES_FILE = \"src/config/databases.json\";\n\nconst DATA_TYPES = {\n  \"character varying\": \"text\",\n  \"timestamp without time zone\": \"timestamp\"\n}\n\nconst adjustDataTypeName = (rawName) => {\n  if(DATA_TYPES[rawName]) {\n    return DATA_TYPES[rawName];\n  } else {\n    return rawName;\n  }\n};\n\nconst readTableData = async (databaseName) => {\n  const schema = await fs.readFile(`${databaseName}.csv`, \"utf8\");\n\n  const schemaData = schema.replaceAll('\"', '').trim().split(\"\\n\").map(row => row.split(\",\"));\n  const [headers] = schemaData.splice(0, 1);\n\n  const data = schemaData.map(row => {\n    return Object.fromEntries(headers.map((key, index) => [key, row[index]]));\n  });\n\n  data.map(o => o.data_type = adjustDataTypeName(o.data_type));\n\n  return data;\n};\n\nconst importSchemaColors = async (databaseName, schemas) => {\n  const schemasTemplateFile = await fs.readFile(SCHEMA_COLORS_TEMPLATE_FILE, \"utf8\");\n  const defaultSchemaColors = JSON.parse(schemasTemplateFile);\n  let schemaColors = Object.keys(schemas).reduce((acc, schemaName) => {\n    acc[schemaName] = defaultSchemaColors.DEFAULT;\n    return acc;\n  }, {});\n\n  schemaColors = {\n    ...defaultSchemaColors,\n    ...schemaColors\n  };\n\n  await fs.writeFile(`src/config/databases/${databaseName}/schemaColors.json`, JSON.stringify(schemaColors, null, 2), \"utf8\");\n};\n\nconst importTablePositions = async (databaseName, tables) => {\n  const tableCount = Object.keys(tables).length;\n  const tablesPerRow = Math.round(Math.sqrt(tableCount));\n\n  const tablePositions = Object.keys(tables).reduce((acc, tableName, index) => {\n    const fullTableName = tableName.includes(\".\") ? tableName : `public.${tableName}`;\n\n    const yPosition = Math.floor(index / tablesPerRow);\n    const xPosition = index % tablesPerRow;\n\n    acc[fullTableName] = {\n      x: xPosition * 300,\n      y: yPosition * 450\n    };\n    return acc;\n  }, {});\n\n  await fs.writeFile(`src/config/databases/${databaseName}/tablePositions.json`, JSON.stringify(tablePositions, null, 2), \"utf8\");\n};\n\nconst importTableConfigs = async (databaseName, tables) => {\n  await fs.mkdir(`src/config/databases/${databaseName}/tables`);\n\n  Object.keys(tables).forEach(async tableName => {\n    const tableFile = `src/config/databases/${databaseName}/tables/${tableName}.json`;\n    const tableConfig = {\n      name: tableName,\n      description: \"\",\n      schemaColor: \"#91C4F2\",\n      columns: []\n    };\n\n    tables[tableName].forEach(row => {\n      const columnName = row[0];\n      const columnType = row[1];\n\n      tableConfig.columns.push({\n        name: columnName,\n        description: \"\",\n        type: columnType\n      });\n    });\n\n    await fs.writeFile(tableFile, JSON.stringify(tableConfig, null, 2), \"utf8\");\n  });\n};\n\n// https://ourcodeworld.com/articles/read/608/how-to-camelize-and-decamelize-strings-in-javascript\nconst camelize = (text) => {\n  return text.replace(/\\W/, \"-\").replace(/^([A-Z])|[\\s-_]+(\\w)/g, function(match, p1, p2, offset) {\n      if (p2) return p2.toUpperCase();\n      return p1.toLowerCase();\n  });\n};\n\nconst importEdgeConfigs = async (databaseName, tables) => {\n  await fs.writeFile(`src/config/databases/${databaseName}/edges.json`, JSON.stringify([], null, 2), \"utf8\");\n};\n\nconst importTablesIndexFile = async (databaseName, tables) => {\n  const importStatements = [];\n  const names = [];\n\n  Object.keys(tables).forEach(tableName => {\n    const tableConfigFileName = `${camelize(tableName)}Table`;\n\n    importStatements.push(`import ${tableConfigFileName} from \"./tables/${tableName}.json\";`);\n    names.push(`  ${tableConfigFileName}`);\n  });\n\n  const loadTablesTemplate = await fs.readFile(TABLES_INDEX_FILE_TEMPLATE, \"utf8\");\n  const loadTablesHelper = loadTablesTemplate\n    .replace(\"%TABLE_FILES%\", importStatements.join(\"\\n\"))\n    .replace(\"%TABLE_NAMES%\", names.join(\",\\n\"))\n\n  await fs.writeFile(`src/config/databases/${databaseName}/tables.ts`, loadTablesHelper, \"utf8\");\n};\n\nconst addDatabaseEntry = async (databaseName) => {\n  const rawDatabases = await fs.readFile(DATABASES_FILE, \"utf8\");\n  const databases = JSON.parse(rawDatabases);\n\n  databases[databaseName] = {\n    name: databaseName,\n    description: \"\"\n  }\n\n  await fs.writeFile(DATABASES_FILE, JSON.stringify(databases, null, 2), \"utf8\");\n};\n\nconst importConfigFiles = async ({ databaseName }) => {\n  const databaseConfigFolder = `src/config/databases/${databaseName}`;\n  await fs.mkdir(databaseConfigFolder);\n\n  const tableData = await readTableData(databaseName);\n  const tables = {};\n  const schemas = {};\n\n  tableData.forEach(row => {\n    schemas[row.table_schema] = true;\n\n    const name = row.table_schema === \"public\" ? row.table_name : `${row.table_schema}.${row.table_name}`;\n\n    if(tables[name]) {\n      tables[name].push([row.column_name, row.data_type]);\n    } else {\n      tables[name] = [[row.column_name, row.data_type]];\n    }\n  });\n\n  await importSchemaColors(databaseName, schemas);\n  await importTablePositions(databaseName, tables);\n  await importTableConfigs(databaseName, tables);\n  await importEdgeConfigs(databaseName, tables);\n  await importTablesIndexFile(databaseName, tables);\n  await addDatabaseEntry(databaseName);\n};\n\n(async () => {\n  const databaseName = process.argv[2];\n  if(!databaseName) {\n    console.log(\"--> Provide a database name like 'npm run import foobar'\");\n    return;\n  }\n\n  const databaseConfigFolder = `src/config/databases/${databaseName}`;\n  try {\n    if(await fs.stat(databaseConfigFolder)) {\n      console.log(`⚠️  Folder ${databaseConfigFolder} already exists.`);\n      return;\n    }\n  } catch {}\n\n  const readline = require(\"readline\").createInterface({\n    input: process.stdin,\n    output: process.stdout\n  });\n\n  readline.question(\"Do you want to import schema from a CSV file? y/n\\n\", async (answer) => {\n    if(answer.toLowerCase().includes(\"y\")) {\n      await importConfigFiles({ databaseName });\n\n      console.log(\"Roger, everything is imported.\");\n    } else {\n      console.log(\"Roger, skipping importing.\");\n    }\n\n    readline.close();\n  });\n})();\n"
  },
  {
    "path": "bin/reset",
    "content": "#!/usr/bin/env node\n\nconst fs = require(\"fs\").promises;\n\nconst resetConfigFile = async (filePath, templatePath = `${filePath}.template`) => {\n  const templateData = await fs.readFile(templatePath, \"utf8\");\n\n  await fs.writeFile(filePath, templateData, \"utf8\");\n};\n\nconst cleanUpDatabasesFolder = async () => {\n  await fs.rm(\"src/config/databases\", { recursive: true });\n  await fs.mkdir(\"src/config/databases\");\n};\n\nconst readline = require(\"readline\").createInterface({\n  input: process.stdin,\n  output: process.stdout\n});\n\nreadline.question(\"Do you want to reset existing tables, edges and schema colors? y/n\\n\", async (answer) => {\n  if(answer.toLowerCase().includes(\"y\")) {\n    await resetConfigFile(\"src/config/databases.json\");\n    await cleanUpDatabasesFolder();\n\n    console.log(\"Roger, everything is reset.\");\n  } else {\n    console.log(\"Roger, skipping resetting.\");\n  }\n\n  readline.close();\n});\n"
  },
  {
    "path": "build/asset-manifest.json",
    "content": "{\n  \"files\": {\n    \"main.css\": \"/sql_schema_visualizer/static/css/main.9f228f45.css\",\n    \"main.js\": \"/sql_schema_visualizer/static/js/main.33dfc6b0.js\",\n    \"static/js/394.14a9b9da.chunk.js\": \"/sql_schema_visualizer/static/js/394.14a9b9da.chunk.js\",\n    \"static/js/226.0d90ab44.chunk.js\": \"/sql_schema_visualizer/static/js/226.0d90ab44.chunk.js\",\n    \"bindle-edges-json.js\": \"/sql_schema_visualizer/static/js/bindle-edges-json.94501736.chunk.js\",\n    \"ecommerce-edges-json.js\": \"/sql_schema_visualizer/static/js/ecommerce-edges-json.fe131063.chunk.js\",\n    \"finance-edges-json.js\": \"/sql_schema_visualizer/static/js/finance-edges-json.cc1c201e.chunk.js\",\n    \"live-edges-json.js\": \"/sql_schema_visualizer/static/js/live-edges-json.849f23e8.chunk.js\",\n    \"movies-edges-json.js\": \"/sql_schema_visualizer/static/js/movies-edges-json.5b3266f6.chunk.js\",\n    \"nba-edges-json.js\": \"/sql_schema_visualizer/static/js/nba-edges-json.b14b1c04.chunk.js\",\n    \"the-bank-job-edges-json.js\": \"/sql_schema_visualizer/static/js/the-bank-job-edges-json.f4126c62.chunk.js\",\n    \"bindle-tablePositions-json.js\": \"/sql_schema_visualizer/static/js/bindle-tablePositions-json.847db583.chunk.js\",\n    \"ecommerce-tablePositions-json.js\": \"/sql_schema_visualizer/static/js/ecommerce-tablePositions-json.03a16298.chunk.js\",\n    \"finance-tablePositions-json.js\": \"/sql_schema_visualizer/static/js/finance-tablePositions-json.9ab03387.chunk.js\",\n    \"live-tablePositions-json.js\": \"/sql_schema_visualizer/static/js/live-tablePositions-json.88001c8e.chunk.js\",\n    \"movies-tablePositions-json.js\": \"/sql_schema_visualizer/static/js/movies-tablePositions-json.1435348f.chunk.js\",\n    \"nba-tablePositions-json.js\": \"/sql_schema_visualizer/static/js/nba-tablePositions-json.eda5bb0d.chunk.js\",\n    \"the-bank-job-tablePositions-json.js\": \"/sql_schema_visualizer/static/js/the-bank-job-tablePositions-json.1ddd80ab.chunk.js\",\n    \"bindle-schemaColors-json.js\": \"/sql_schema_visualizer/static/js/bindle-schemaColors-json.b87e5760.chunk.js\",\n    \"ecommerce-schemaColors-json.js\": \"/sql_schema_visualizer/static/js/ecommerce-schemaColors-json.fdb98809.chunk.js\",\n    \"finance-schemaColors-json.js\": \"/sql_schema_visualizer/static/js/finance-schemaColors-json.e0d3a5af.chunk.js\",\n    \"live-schemaColors-json.js\": \"/sql_schema_visualizer/static/js/live-schemaColors-json.3efe2122.chunk.js\",\n    \"movies-schemaColors-json.js\": \"/sql_schema_visualizer/static/js/movies-schemaColors-json.a48d91cc.chunk.js\",\n    \"nba-schemaColors-json.js\": \"/sql_schema_visualizer/static/js/nba-schemaColors-json.e0912a1a.chunk.js\",\n    \"the-bank-job-schemaColors-json.js\": \"/sql_schema_visualizer/static/js/the-bank-job-schemaColors-json.00b0e9ee.chunk.js\",\n    \"bindle-tables.js\": \"/sql_schema_visualizer/static/js/bindle-tables.0d2bfe46.chunk.js\",\n    \"ecommerce-tables.js\": \"/sql_schema_visualizer/static/js/ecommerce-tables.f5264437.chunk.js\",\n    \"finance-tables.js\": \"/sql_schema_visualizer/static/js/finance-tables.eac6da84.chunk.js\",\n    \"live-tables.js\": \"/sql_schema_visualizer/static/js/live-tables.5a699030.chunk.js\",\n    \"movies-tables.js\": \"/sql_schema_visualizer/static/js/movies-tables.37f21107.chunk.js\",\n    \"nba-tables.js\": \"/sql_schema_visualizer/static/js/nba-tables.7858f3c9.chunk.js\",\n    \"the-bank-job-tables.js\": \"/sql_schema_visualizer/static/js/the-bank-job-tables.b72c42c8.chunk.js\",\n    \"index.html\": \"/sql_schema_visualizer/index.html\",\n    \"main.9f228f45.css.map\": \"/sql_schema_visualizer/static/css/main.9f228f45.css.map\",\n    \"main.33dfc6b0.js.map\": \"/sql_schema_visualizer/static/js/main.33dfc6b0.js.map\",\n    \"394.14a9b9da.chunk.js.map\": \"/sql_schema_visualizer/static/js/394.14a9b9da.chunk.js.map\",\n    \"226.0d90ab44.chunk.js.map\": \"/sql_schema_visualizer/static/js/226.0d90ab44.chunk.js.map\",\n    \"bindle-tables.0d2bfe46.chunk.js.map\": \"/sql_schema_visualizer/static/js/bindle-tables.0d2bfe46.chunk.js.map\",\n    \"ecommerce-tables.f5264437.chunk.js.map\": \"/sql_schema_visualizer/static/js/ecommerce-tables.f5264437.chunk.js.map\",\n    \"finance-tables.eac6da84.chunk.js.map\": \"/sql_schema_visualizer/static/js/finance-tables.eac6da84.chunk.js.map\",\n    \"live-tables.5a699030.chunk.js.map\": \"/sql_schema_visualizer/static/js/live-tables.5a699030.chunk.js.map\",\n    \"movies-tables.37f21107.chunk.js.map\": \"/sql_schema_visualizer/static/js/movies-tables.37f21107.chunk.js.map\",\n    \"nba-tables.7858f3c9.chunk.js.map\": \"/sql_schema_visualizer/static/js/nba-tables.7858f3c9.chunk.js.map\",\n    \"the-bank-job-tables.b72c42c8.chunk.js.map\": \"/sql_schema_visualizer/static/js/the-bank-job-tables.b72c42c8.chunk.js.map\"\n  },\n  \"entrypoints\": [\n    \"static/css/main.9f228f45.css\",\n    \"static/js/main.33dfc6b0.js\"\n  ]\n}"
  },
  {
    "path": "build/databases/bindle.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/databases/ecommerce.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/databases/finance.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/databases/live.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/databases/movies.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/databases/nba.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/databases/the-bank-job.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/index.html",
    "content": "<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"/><link rel=\"icon\" href=\"/sql_schema_visualizer/favicon.ico\"/><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"/><meta name=\"description\" content=\"Schema Visualizer\"/><title>Schema Visualizer</title><script defer=\"defer\" src=\"/sql_schema_visualizer/static/js/main.33dfc6b0.js\"></script><link href=\"/sql_schema_visualizer/static/css/main.9f228f45.css\" rel=\"stylesheet\"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position:fixed;top:0;right:0;z-index:99999\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\"/></a><div id=\"root\"></div></body></html>"
  },
  {
    "path": "build/static/css/main.9f228f45.css",
    "content": "@import url(https://fonts.googleapis.com/css?family=Muli:400,400i,500,600,700,800&display=swap);.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.bottom,.react-flow__resize-control.top{cursor:ns-resize}.react-flow__resize-control.bottom.right,.react-flow__resize-control.top.left{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:#3367d9;border:1px solid #fff;border-radius:1px;height:4px;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:4px}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.bottom.left,.react-flow__resize-control.handle.top.left{left:0}.react-flow__resize-control.handle.bottom.right,.react-flow__resize-control.handle.top.right{left:100%}.react-flow__resize-control.line{border:0 solid #3367d9}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{height:100%;top:0;-webkit-transform:translate(-50%);transform:translate(-50%);width:1px}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.bottom,.react-flow__resize-control.line.top{height:1px;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:100%}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__container{height:100%;left:0;position:absolute;top:0;width:100%}.react-flow__pane{cursor:grab;z-index:1}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{pointer-events:none;-webkit-transform-origin:0 0;transform-origin:0 0;z-index:2}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{overflow:visible;pointer-events:none}.react-flow__connection-path,.react-flow__edge-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{cursor:pointer;pointer-events:visibleStroke}.react-flow__edge.animated path{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;-webkit-animation:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection.animated{stroke-dasharray:5;-webkit-animation:dashdraw .5s linear infinite;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none}.react-flow__node,.react-flow__nodes{-webkit-transform-origin:0 0;transform-origin:0 0}.react-flow__node{box-sizing:border-box;cursor:grab;pointer-events:all;position:absolute;-webkit-user-select:none;user-select:none}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{pointer-events:none;-webkit-transform-origin:left top;transform-origin:left top;z-index:3}.react-flow__nodesselection-rect{cursor:grab;pointer-events:all;position:absolute}.react-flow__handle{background:#1a192b;border:1px solid #fff;border-radius:100%;height:6px;min-height:5px;min-width:5px;pointer-events:none;position:absolute;width:6px}.react-flow__handle.connectable{cursor:crosshair;pointer-events:all}.react-flow__handle-bottom{bottom:-4px;top:auto}.react-flow__handle-bottom,.react-flow__handle-top{left:50%;-webkit-transform:translate(-50%);transform:translate(-50%)}.react-flow__handle-top{top:-4px}.react-flow__handle-left{left:-4px}.react-flow__handle-left,.react-flow__handle-right{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.react-flow__handle-right{right:-4px}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{margin:15px;position:absolute;z-index:5}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.react-flow__attribution{background:hsla(0,0%,100%,.5);font-size:10px;margin:0;padding:2px 3px}.react-flow__attribution a{color:#999;text-decoration:none}@-webkit-keyframes dashdraw{0%{stroke-dashoffset:10}}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{height:100%;pointer-events:none;position:absolute;width:100%}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-group,.react-flow__node-input,.react-flow__node-output{background-color:#fff;border:1px solid #1a192b;border-radius:3px;color:#222;font-size:12px;padding:10px;text-align:center;width:150px}.react-flow__node-default.selectable:hover,.react-flow__node-group.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:0 1px 4px 1px rgba(0,0,0,.08)}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:hsla(0,0%,94%,.25)}.react-flow__nodesselection-rect,.react-flow__selection{background:rgba(0,89,220,.08);border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px rgba(0,0,0,.08)}.react-flow__controls-button{align-items:center;background:#fefefe;border:none;border-bottom:1px solid #eee;box-sizing:initial;cursor:pointer;display:flex;height:16px;justify-content:center;padding:5px;-webkit-user-select:none;user-select:none;width:16px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{max-height:12px;max-width:12px;width:100%}.react-flow__minimap{background-color:#fff}.Flow{flex-grow:1;font-size:12px;height:100%;width:100%}:not(:root):-webkit-full-screen::backdrop{background-color:#fff}:not(:root):fullscreen::-webkit-backdrop{background-color:#fff}:not(:root):fullscreen::backdrop{background-color:#fff}.react-flow__node-custom{border:1px solid #555;border-radius:5px;padding:10px;width:300px}.react-flow__edge.selected .react-flow__edge-path{stroke:#2186eb!important}.react-flow__node{background-color:#f5f7fa;max-width:288px}.react-flow__attribution a{background:none}.react-flow__handle-left,.react-flow__handle-right{background:transparent!important;border:0!important}.table{background-color:#fff}.table__name{border:0;border-radius:4px 4px 0 0;font-weight:700;padding:8px;position:relative;text-align:center}.table__columns{border:1px solid #cbd2d9;border-radius:0 0 4px 4px;border-top:0}.table__description{background-color:#fff;border:1px solid #cbd2d9;border-radius:4px;display:none;font-weight:400;padding:8px;position:absolute;right:-6px;text-align:left;top:50%;-webkit-transform:translateX(100%) translateY(-50%);transform:translateX(100%) translateY(-50%);width:150px;z-index:1000}.table__description:after{border:3px solid transparent;border-right-color:#fff;content:\"\";position:absolute;right:100%;top:50%;-webkit-transform:translateX(0) translateY(-50%);transform:translateX(0) translateY(-50%)}.table__description:before{border:4px solid transparent;border-right-color:#cbd2d9;content:\"\";position:absolute;right:100%;top:50%;-webkit-transform:translateX(-.5px) translateY(-50%);transform:translateX(-.5px) translateY(-50%)}.table__description--active{display:block}.table--highlighted .table__name{background-color:#fadb5f}.table--highlighted .table__columns{border:2px dashed #fadb5f;border-top:0}.table:hover .table__name{opacity:1}.table--dimmed .table__name{opacity:.4}.column-name{border-bottom:0;cursor:pointer;font-size:12px;line-height:1;position:relative;z-index:50}.column-name__name{margin-right:16px}.column-name__type{color:#bbb}.column-name__description{background-color:#fff;border:1px solid #cbd2d9;border-radius:4px;display:none;line-height:1.2;padding:8px;position:absolute;right:-6px;top:50%;-webkit-transform:translateX(100%) translateY(-50%);transform:translateX(100%) translateY(-50%);width:150px;z-index:1000}.column-name__description:before{border:4px solid transparent;border-right-color:#cbd2d9;content:\"\";position:absolute;right:100%;top:50%;-webkit-transform:translateX(-.5px) translateY(-50%);transform:translateX(-.5px) translateY(-50%)}.column-name__description:after{border:3px solid transparent;border-right-color:#fff;content:\"\";position:absolute;right:100%;top:50%;-webkit-transform:translateX(0) translateY(-50%);transform:translateX(0) translateY(-50%)}.column-name__inner{display:flex;justify-content:space-between;padding:8px;position:relative}.column-name:last-child{border-bottom:0!important;border-radius:0 0 4px 4px}.column-name:hover{background-color:#efefef;opacity:1}.column-name--highlighted{background-color:#fff3c4;border-color:#fff3c4}.column-name--dimmed{opacity:.4}.column-name--selected .column-name__description{display:block;opacity:1}.info-popup{align-items:center;background-color:rgba(0,0,0,.7);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:100000}.info-popup__inner{background-color:#fff;border-radius:8px;font-size:16px;left:50%;line-height:1.4;max-height:100%;overflow-y:auto;padding:16px 16px 8px;position:fixed;top:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);width:100%;z-index:200000}@media(min-width:512px){.info-popup__inner{max-width:576px}}.info-popup__headline{margin-top:0}.info-popup__database-name{margin-bottom:8px}.info-popup__database-name+p{margin-top:0}.info-popup__close-icon{cursor:pointer;position:absolute;right:12px;top:12px}.info-popup__close-icon:hover{opacity:.7}.has-one-edge.selected path.react-flow__edge-path{marker-end:url(#hasOneSelected);stroke-width:1.5px}.has-one-edge--highlighted path.react-flow__connection-path,.has-one-edge--highlighted path.react-flow__edge-interaction,.has-one-edge--highlighted path.react-flow__edge-path{stroke:#2186eb!important;stroke-width:1.5px}.has-one-edge-reversed.selected path.react-flow__edge-path{marker-end:url(#hasOneReversedSelected);stroke-width:1.5px}.has-one-edge-reversed--highlighted path.react-flow__connection-path,.has-one-edge-reversed--highlighted path.react-flow__edge-interaction,.has-one-edge-reversed--highlighted path.react-flow__edge-path{stroke:#2186eb!important;stroke-width:1.5px}.has-many-edge.selected path.react-flow__edge-path{marker-end:url(#hasManySelected);stroke-width:1.5}.has-many-edge--highlighted path.react-flow__connection-path,.has-many-edge--highlighted path.react-flow__edge-interaction,.has-many-edge--highlighted path.react-flow__edge-path{stroke:#2186eb!important;stroke-width:1.5px}.has-many-edge-reversed.selected path.react-flow__edge-path{marker-end:url(#hasManyReversedSelected);stroke-width:1.5}.has-many-edge-reversed--highlighted path.react-flow__connection-path,.has-many-edge-reversed--highlighted path.react-flow__edge-interaction,.has-many-edge-reversed--highlighted path.react-flow__edge-path{stroke:#2186eb!important;stroke-width:1.5px}.key-icon{height:12px;margin-right:4px;width:12px}.left-handle{left:0;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.left-handle,.right-handle{height:2px;min-width:2px;top:50%;width:2px}.right-handle{right:0;-webkit-transform:translateX(50%) translateY(-50%);transform:translateX(50%) translateY(-50%)}.App{display:flex;flex-direction:column;height:100%}.App-header{align-items:center;border-bottom:1px solid #eee;display:flex;height:40px;padding:0 1rem}.App__logo{background:none;cursor:pointer;left:16px;position:fixed;text-decoration:none;top:16px;z-index:50000}.layout{position:fixed}.layout,.layout__outlet{height:100%;width:100%}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{color:#1f2933;font-display:swap;font-family:Muli,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}#root,body,html{height:100%}h1,h2,h3,h4{margin-bottom:0;margin-top:1em}a{background:linear-gradient(90deg,#1f2933,#1f2933),linear-gradient(90deg,red,#ff00b4,#2186eb);background-position:100% 100%,0 100%;background-repeat:no-repeat;background-size:100% 1px,0 1px;color:inherit;text-decoration:none;transition:background-size .4s}a:hover{background-size:0 1px,100% 1px}.emoji{height:1.1em;margin:0 .05em 0 .1em;vertical-align:-.1em;width:1.1em}.mb-32{margin-bottom:32px}\n/*# sourceMappingURL=main.9f228f45.css.map*/"
  },
  {
    "path": "build/static/js/226.0d90ab44.chunk.js",
    "content": "/*! For license information please see 226.0d90ab44.chunk.js.LICENSE.txt */\n\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[226],{3226:function(d,u,f){f.r(u);var c=function(){var d={base:\"https://twemoji.maxcdn.com/v/14.0.2/\",ext:\".png\",size:\"72x72\",className:\"emoji\",convert:{fromCodePoint:function(d){var u=\"string\"===typeof d?parseInt(d,16):d;if(u<65536)return t(u);return t(55296+((u-=65536)>>10),56320+(1023&u))},toCodePoint:g},onerror:function(){this.parentNode&&this.parentNode.replaceChild(r(this.alt,!1),this)},parse:function(u,f){f&&\"function\"!==typeof f||(f={callback:f});return(\"string\"===typeof u?l:i)(u,{callback:f.callback||n,attributes:\"function\"===typeof f.attributes?f.attributes:h,base:\"string\"===typeof f.base?f.base:d.base,ext:f.ext||d.ext,size:f.folder||(c=f.size||d.size,\"number\"===typeof c?c+\"x\"+c:c),className:f.className||d.className,onerror:f.onerror||d.onerror});var c},replace:m,test:function(d){f.lastIndex=0;var u=f.test(d);return f.lastIndex=0,u}},u={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"'\":\"&#39;\",'\"':\"&quot;\"},f=/(?:\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffc-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc68\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc69\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83d\\udc69\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffc-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffb\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffc\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\uddd1\\ud83c\\udffd\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\uddd1\\ud83c\\udffe\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\u2764\\ufe0f\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udffe]|\\ud83e\\uddd1\\ud83c\\udfff\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\udef1\\ud83c\\udffb\\u200d\\ud83e\\udef2\\ud83c[\\udffc-\\udfff]|\\ud83e\\udef1\\ud83c\\udffc\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffd-\\udfff]|\\ud83e\\udef1\\ud83c\\udffd\\u200d\\ud83e\\udef2\\ud83c[\\udffb\\udffc\\udffe\\udfff]|\\ud83e\\udef1\\ud83c\\udffe\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffd\\udfff]|\\ud83e\\udef1\\ud83c\\udfff\\u200d\\ud83e\\udef2\\ud83c[\\udffb-\\udffe]|\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68|\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1|\\ud83d\\udc6b\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6c\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc6d\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc8f\\ud83c[\\udffb-\\udfff]|\\ud83d\\udc91\\ud83c[\\udffb-\\udfff]|\\ud83e\\udd1d\\ud83c[\\udffb-\\udfff]|\\ud83d[\\udc6b-\\udc6d\\udc8f\\udc91]|\\ud83e\\udd1d)|(?:\\ud83d[\\udc68\\udc69]|\\ud83e\\uddd1)(?:\\ud83c[\\udffb-\\udfff])?\\u200d(?:\\u2695\\ufe0f|\\u2696\\ufe0f|\\u2708\\ufe0f|\\ud83c[\\udf3e\\udf73\\udf7c\\udf84\\udf93\\udfa4\\udfa8\\udfeb\\udfed]|\\ud83d[\\udcbb\\udcbc\\udd27\\udd2c\\ude80\\ude92]|\\ud83e[\\uddaf-\\uddb3\\uddbc\\uddbd])|(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75]|\\u26f9)((?:\\ud83c[\\udffb-\\udfff]|\\ufe0f)\\u200d[\\u2640\\u2642]\\ufe0f)|(?:\\ud83c[\\udfc3\\udfc4\\udfca]|\\ud83d[\\udc6e\\udc70\\udc71\\udc73\\udc77\\udc81\\udc82\\udc86\\udc87\\ude45-\\ude47\\ude4b\\ude4d\\ude4e\\udea3\\udeb4-\\udeb6]|\\ud83e[\\udd26\\udd35\\udd37-\\udd39\\udd3d\\udd3e\\uddb8\\uddb9\\uddcd-\\uddcf\\uddd4\\uddd6-\\udddd])(?:\\ud83c[\\udffb-\\udfff])?\\u200d[\\u2640\\u2642]\\ufe0f|(?:\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66|\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f|\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08|\\ud83d\\ude36\\u200d\\ud83c\\udf2b\\ufe0f|\\u2764\\ufe0f\\u200d\\ud83d\\udd25|\\u2764\\ufe0f\\u200d\\ud83e\\ude79|\\ud83c\\udff4\\u200d\\u2620\\ufe0f|\\ud83d\\udc15\\u200d\\ud83e\\uddba|\\ud83d\\udc3b\\u200d\\u2744\\ufe0f|\\ud83d\\udc41\\u200d\\ud83d\\udde8|\\ud83d\\udc68\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc69\\u200d\\ud83d[\\udc66\\udc67]|\\ud83d\\udc6f\\u200d\\u2640\\ufe0f|\\ud83d\\udc6f\\u200d\\u2642\\ufe0f|\\ud83d\\ude2e\\u200d\\ud83d\\udca8|\\ud83d\\ude35\\u200d\\ud83d\\udcab|\\ud83e\\udd3c\\u200d\\u2640\\ufe0f|\\ud83e\\udd3c\\u200d\\u2642\\ufe0f|\\ud83e\\uddde\\u200d\\u2640\\ufe0f|\\ud83e\\uddde\\u200d\\u2642\\ufe0f|\\ud83e\\udddf\\u200d\\u2640\\ufe0f|\\ud83e\\udddf\\u200d\\u2642\\ufe0f|\\ud83d\\udc08\\u200d\\u2b1b)|[#*0-9]\\ufe0f?\\u20e3|(?:[\\xa9\\xae\\u2122\\u265f]\\ufe0f)|(?:\\ud83c[\\udc04\\udd70\\udd71\\udd7e\\udd7f\\ude02\\ude1a\\ude2f\\ude37\\udf21\\udf24-\\udf2c\\udf36\\udf7d\\udf96\\udf97\\udf99-\\udf9b\\udf9e\\udf9f\\udfcd\\udfce\\udfd4-\\udfdf\\udff3\\udff5\\udff7]|\\ud83d[\\udc3f\\udc41\\udcfd\\udd49\\udd4a\\udd6f\\udd70\\udd73\\udd76-\\udd79\\udd87\\udd8a-\\udd8d\\udda5\\udda8\\uddb1\\uddb2\\uddbc\\uddc2-\\uddc4\\uddd1-\\uddd3\\udddc-\\uddde\\udde1\\udde3\\udde8\\uddef\\uddf3\\uddfa\\udecb\\udecd-\\udecf\\udee0-\\udee5\\udee9\\udef0\\udef3]|[\\u203c\\u2049\\u2139\\u2194-\\u2199\\u21a9\\u21aa\\u231a\\u231b\\u2328\\u23cf\\u23ed-\\u23ef\\u23f1\\u23f2\\u23f8-\\u23fa\\u24c2\\u25aa\\u25ab\\u25b6\\u25c0\\u25fb-\\u25fe\\u2600-\\u2604\\u260e\\u2611\\u2614\\u2615\\u2618\\u2620\\u2622\\u2623\\u2626\\u262a\\u262e\\u262f\\u2638-\\u263a\\u2640\\u2642\\u2648-\\u2653\\u2660\\u2663\\u2665\\u2666\\u2668\\u267b\\u267f\\u2692-\\u2697\\u2699\\u269b\\u269c\\u26a0\\u26a1\\u26a7\\u26aa\\u26ab\\u26b0\\u26b1\\u26bd\\u26be\\u26c4\\u26c5\\u26c8\\u26cf\\u26d1\\u26d3\\u26d4\\u26e9\\u26ea\\u26f0-\\u26f5\\u26f8\\u26fa\\u26fd\\u2702\\u2708\\u2709\\u270f\\u2712\\u2714\\u2716\\u271d\\u2721\\u2733\\u2734\\u2744\\u2747\\u2757\\u2763\\u2764\\u27a1\\u2934\\u2935\\u2b05-\\u2b07\\u2b1b\\u2b1c\\u2b50\\u2b55\\u3030\\u303d\\u3297\\u3299])(?:\\ufe0f|(?!\\ufe0e))|(?:(?:\\ud83c[\\udfcb\\udfcc]|\\ud83d[\\udd74\\udd75\\udd90]|[\\u261d\\u26f7\\u26f9\\u270c\\u270d])(?:\\ufe0f|(?!\\ufe0e))|(?:\\ud83c[\\udf85\\udfc2-\\udfc4\\udfc7\\udfca]|\\ud83d[\\udc42\\udc43\\udc46-\\udc50\\udc66-\\udc69\\udc6e\\udc70-\\udc78\\udc7c\\udc81-\\udc83\\udc85-\\udc87\\udcaa\\udd7a\\udd95\\udd96\\ude45-\\ude47\\ude4b-\\ude4f\\udea3\\udeb4-\\udeb6\\udec0\\udecc]|\\ud83e[\\udd0c\\udd0f\\udd18-\\udd1c\\udd1e\\udd1f\\udd26\\udd30-\\udd39\\udd3d\\udd3e\\udd77\\uddb5\\uddb6\\uddb8\\uddb9\\uddbb\\uddcd-\\uddcf\\uddd1-\\udddd\\udec3-\\udec5\\udef0-\\udef6]|[\\u270a\\u270b]))(?:\\ud83c[\\udffb-\\udfff])?|(?:\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f|\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f|\\ud83c\\udde6\\ud83c[\\udde8-\\uddec\\uddee\\uddf1\\uddf2\\uddf4\\uddf6-\\uddfa\\uddfc\\uddfd\\uddff]|\\ud83c\\udde7\\ud83c[\\udde6\\udde7\\udde9-\\uddef\\uddf1-\\uddf4\\uddf6-\\uddf9\\uddfb\\uddfc\\uddfe\\uddff]|\\ud83c\\udde8\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\uddee\\uddf0-\\uddf5\\uddf7\\uddfa-\\uddff]|\\ud83c\\udde9\\ud83c[\\uddea\\uddec\\uddef\\uddf0\\uddf2\\uddf4\\uddff]|\\ud83c\\uddea\\ud83c[\\udde6\\udde8\\uddea\\uddec\\udded\\uddf7-\\uddfa]|\\ud83c\\uddeb\\ud83c[\\uddee-\\uddf0\\uddf2\\uddf4\\uddf7]|\\ud83c\\uddec\\ud83c[\\udde6\\udde7\\udde9-\\uddee\\uddf1-\\uddf3\\uddf5-\\uddfa\\uddfc\\uddfe]|\\ud83c\\udded\\ud83c[\\uddf0\\uddf2\\uddf3\\uddf7\\uddf9\\uddfa]|\\ud83c\\uddee\\ud83c[\\udde8-\\uddea\\uddf1-\\uddf4\\uddf6-\\uddf9]|\\ud83c\\uddef\\ud83c[\\uddea\\uddf2\\uddf4\\uddf5]|\\ud83c\\uddf0\\ud83c[\\uddea\\uddec-\\uddee\\uddf2\\uddf3\\uddf5\\uddf7\\uddfc\\uddfe\\uddff]|\\ud83c\\uddf1\\ud83c[\\udde6-\\udde8\\uddee\\uddf0\\uddf7-\\uddfb\\uddfe]|\\ud83c\\uddf2\\ud83c[\\udde6\\udde8-\\udded\\uddf0-\\uddff]|\\ud83c\\uddf3\\ud83c[\\udde6\\udde8\\uddea-\\uddec\\uddee\\uddf1\\uddf4\\uddf5\\uddf7\\uddfa\\uddff]|\\ud83c\\uddf4\\ud83c\\uddf2|\\ud83c\\uddf5\\ud83c[\\udde6\\uddea-\\udded\\uddf0-\\uddf3\\uddf7-\\uddf9\\uddfc\\uddfe]|\\ud83c\\uddf6\\ud83c\\udde6|\\ud83c\\uddf7\\ud83c[\\uddea\\uddf4\\uddf8\\uddfa\\uddfc]|\\ud83c\\uddf8\\ud83c[\\udde6-\\uddea\\uddec-\\uddf4\\uddf7-\\uddf9\\uddfb\\uddfd-\\uddff]|\\ud83c\\uddf9\\ud83c[\\udde6\\udde8\\udde9\\uddeb-\\udded\\uddef-\\uddf4\\uddf7\\uddf9\\uddfb\\uddfc\\uddff]|\\ud83c\\uddfa\\ud83c[\\udde6\\uddec\\uddf2\\uddf3\\uddf8\\uddfe\\uddff]|\\ud83c\\uddfb\\ud83c[\\udde6\\udde8\\uddea\\uddec\\uddee\\uddf3\\uddfa]|\\ud83c\\uddfc\\ud83c[\\uddeb\\uddf8]|\\ud83c\\uddfd\\ud83c\\uddf0|\\ud83c\\uddfe\\ud83c[\\uddea\\uddf9]|\\ud83c\\uddff\\ud83c[\\udde6\\uddf2\\uddfc]|\\ud83c[\\udccf\\udd8e\\udd91-\\udd9a\\udde6-\\uddff\\ude01\\ude32-\\ude36\\ude38-\\ude3a\\ude50\\ude51\\udf00-\\udf20\\udf2d-\\udf35\\udf37-\\udf7c\\udf7e-\\udf84\\udf86-\\udf93\\udfa0-\\udfc1\\udfc5\\udfc6\\udfc8\\udfc9\\udfcf-\\udfd3\\udfe0-\\udff0\\udff4\\udff8-\\udfff]|\\ud83d[\\udc00-\\udc3e\\udc40\\udc44\\udc45\\udc51-\\udc65\\udc6a\\udc6f\\udc79-\\udc7b\\udc7d-\\udc80\\udc84\\udc88-\\udc8e\\udc90\\udc92-\\udca9\\udcab-\\udcfc\\udcff-\\udd3d\\udd4b-\\udd4e\\udd50-\\udd67\\udda4\\uddfb-\\ude44\\ude48-\\ude4a\\ude80-\\udea2\\udea4-\\udeb3\\udeb7-\\udebf\\udec1-\\udec5\\uded0-\\uded2\\uded5-\\uded7\\udedd-\\udedf\\udeeb\\udeec\\udef4-\\udefc\\udfe0-\\udfeb\\udff0]|\\ud83e[\\udd0d\\udd0e\\udd10-\\udd17\\udd20-\\udd25\\udd27-\\udd2f\\udd3a\\udd3c\\udd3f-\\udd45\\udd47-\\udd76\\udd78-\\uddb4\\uddb7\\uddba\\uddbc-\\uddcc\\uddd0\\uddde-\\uddff\\ude70-\\ude74\\ude78-\\ude7c\\ude80-\\ude86\\ude90-\\udeac\\udeb0-\\udeba\\udec0-\\udec2\\uded0-\\uded9\\udee0-\\udee7]|[\\u23e9-\\u23ec\\u23f0\\u23f3\\u267e\\u26ce\\u2705\\u2728\\u274c\\u274e\\u2753-\\u2755\\u2795-\\u2797\\u27b0\\u27bf\\ue50a])|\\ufe0f/g,c=/\\uFE0F/g,e=String.fromCharCode(8205),b=/[&<>'\"]/g,a=/^(?:iframe|noframes|noscript|script|select|style|textarea)$/,t=String.fromCharCode;return d;function r(d,u){return document.createTextNode(u?d.replace(c,\"\"):d)}function n(d,u){return\"\".concat(u.base,u.size,\"/\",d,u.ext)}function o(d,u){for(var f,c,e=d.childNodes,b=e.length;b--;)3===(c=(f=e[b]).nodeType)?u.push(f):1!==c||\"ownerSVGElement\"in f||a.test(f.nodeName.toLowerCase())||o(f,u);return u}function s(d){return g(d.indexOf(e)<0?d.replace(c,\"\"):d)}function i(d,u){for(var c,e,b,a,t,n,i,l,p,h,m,g,x,C=o(d,[]),v=C.length;v--;){for(b=!1,a=document.createDocumentFragment(),n=(t=C[v]).nodeValue,l=0;i=f.exec(n);){if((p=i.index)!==l&&a.appendChild(r(n.slice(l,p),!0)),g=s(m=i[0]),l=p+m.length,x=u.callback(g,u),g&&x){for(e in(h=new Image).onerror=u.onerror,h.setAttribute(\"draggable\",\"false\"),c=u.attributes(m,g))c.hasOwnProperty(e)&&0!==e.indexOf(\"on\")&&!h.hasAttribute(e)&&h.setAttribute(e,c[e]);h.className=u.className,h.alt=m,h.src=x,b=!0,a.appendChild(h)}h||a.appendChild(r(m,!1)),h=null}b&&(l<n.length&&a.appendChild(r(n.slice(l),!0)),t.parentNode.replaceChild(a,t))}return d}function l(d,u){return m(d,(function(d){var f,c,e=d,a=s(d),t=u.callback(a,u);if(a&&t){for(c in e=\"<img \".concat('class=\"',u.className,'\" ','draggable=\"false\" ','alt=\"',d,'\"',' src=\"',t,'\"'),f=u.attributes(d,a))f.hasOwnProperty(c)&&0!==c.indexOf(\"on\")&&-1===e.indexOf(\" \"+c+\"=\")&&(e=e.concat(\" \",c,'=\"',f[c].replace(b,p),'\"'));e=e.concat(\"/>\")}return e}))}function p(d){return u[d]}function h(){return null}function m(d,u){return String(d).replace(f,u)}function g(d,u){for(var f=[],c=0,e=0,b=0;b<d.length;)c=d.charCodeAt(b++),e?(f.push((65536+(e-55296<<10)+(c-56320)).toString(16)),e=0):55296<=c&&c<=56319?e=c:f.push(c.toString(16));return f.join(u||\"-\")}}();u.default=c}}]);\n//# sourceMappingURL=226.0d90ab44.chunk.js.map"
  },
  {
    "path": "build/static/js/226.0d90ab44.chunk.js.LICENSE.txt",
    "content": "/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */\n"
  },
  {
    "path": "build/static/js/394.14a9b9da.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[394],{1506:function(a,e,n){var o=n(2644),i=n(5020),_=n(6906);a.exports=function(a,e){var n=_(a.utils.assign({},{defs:{},shortcuts:{},enabled:[]},e||{}));a.renderer.rules.emoji=o,a.core.ruler.after(\"linkify\",\"emoji\",i(a,n.defs,n.shortcuts,n.scanRE,n.replaceRE))}},7394:function(a,e,n){var o=n(5297),i=n(9612),_=n(1506);a.exports=function(a,e){var n={defs:o,shortcuts:i,enabled:[]},r=a.utils.assign({},n,e||{});_(a,r)}},9612:function(a){a.exports={angry:[\">:(\",\">:-(\"],blush:[':\")',':-\")'],broken_heart:[\"</3\",\"<\\\\3\"],confused:[\":/\",\":-/\"],cry:[\":'(\",\":'-(\",\":,(\",\":,-(\"],frowning:[\":(\",\":-(\"],heart:[\"<3\"],imp:[\"]:(\",\"]:-(\"],innocent:[\"o:)\",\"O:)\",\"o:-)\",\"O:-)\",\"0:)\",\"0:-)\"],joy:[\":')\",\":'-)\",\":,)\",\":,-)\",\":'D\",\":'-D\",\":,D\",\":,-D\"],kissing:[\":*\",\":-*\"],laughing:[\"x-)\",\"X-)\"],neutral_face:[\":|\",\":-|\"],open_mouth:[\":o\",\":-o\",\":O\",\":-O\"],rage:[\":@\",\":-@\"],smile:[\":D\",\":-D\"],smiley:[\":)\",\":-)\"],smiling_imp:[\"]:)\",\"]:-)\"],sob:[\":,'(\",\":,'-(\",\";(\",\";-(\"],stuck_out_tongue:[\":P\",\":-P\"],sunglasses:[\"8-)\",\"B-)\"],sweat:[\",:(\",\",:-(\"],sweat_smile:[\",:)\",\",:-)\"],unamused:[\":s\",\":-S\",\":z\",\":-Z\",\":$\",\":-$\"],wink:[\";)\",\";-)\"]}},6906:function(a){a.exports=function(a){var e,n=a.defs;a.enabled.length&&(n=Object.keys(n).reduce((function(e,o){return a.enabled.indexOf(o)>=0&&(e[o]=n[o]),e}),{})),e=Object.keys(a.shortcuts).reduce((function(e,o){return n[o]?Array.isArray(a.shortcuts[o])?(a.shortcuts[o].forEach((function(a){e[a]=o})),e):(e[a.shortcuts[o]]=o,e):e}),{});var o,i=Object.keys(n);o=0===i.length?\"^$\":i.map((function(a){return\":\"+a+\":\"})).concat(Object.keys(e)).sort().reverse().map((function(a){return a.replace(/[.?*+^$[\\]\\\\(){}|-]/g,\"\\\\$&\")})).join(\"|\");var _=RegExp(o),r=RegExp(o,\"g\");return{defs:n,shortcuts:e,scanRE:_,replaceRE:r}}},2644:function(a){a.exports=function(a,e){return a[e].content}},5020:function(a){a.exports=function(a,e,n,o,i){var _=a.utils.arrayReplaceAt,r=a.utils.lib.ucmicro,t=new RegExp([r.Z.source,r.P.source,r.Cc.source].join(\"|\"));function s(a,o,_){var r,s=0,l=[];return a.replace(i,(function(o,i,c){var m;if(n.hasOwnProperty(o)){if(m=n[o],i>0&&!t.test(c[i-1]))return;if(i+o.length<c.length&&!t.test(c[i+o.length]))return}else m=o.slice(1,-1);i>s&&((r=new _(\"text\",\"\",0)).content=a.slice(s,i),l.push(r)),(r=new _(\"emoji\",\"\",0)).markup=m,r.content=e[m],l.push(r),s=i+o.length})),s<a.length&&((r=new _(\"text\",\"\",0)).content=a.slice(s),l.push(r)),l}return function(a){var e,n,i,r,t,l=a.tokens,c=0;for(n=0,i=l.length;n<i;n++)if(\"inline\"===l[n].type)for(e=(r=l[n].children).length-1;e>=0;e--)\"link_open\"!==(t=r[e]).type&&\"link_close\"!==t.type||\"auto\"===t.info&&(c-=t.nesting),\"text\"===t.type&&0===c&&o.test(t.content)&&(l[n].children=r=_(r,e,s(t.content,t.level,a.Token)))}}},5297:function(a){a.exports=JSON.parse('{\"100\":\"\\ud83d\\udcaf\",\"1234\":\"\\ud83d\\udd22\",\"grinning\":\"\\ud83d\\ude00\",\"smiley\":\"\\ud83d\\ude03\",\"smile\":\"\\ud83d\\ude04\",\"grin\":\"\\ud83d\\ude01\",\"laughing\":\"\\ud83d\\ude06\",\"satisfied\":\"\\ud83d\\ude06\",\"sweat_smile\":\"\\ud83d\\ude05\",\"rofl\":\"\\ud83e\\udd23\",\"joy\":\"\\ud83d\\ude02\",\"slightly_smiling_face\":\"\\ud83d\\ude42\",\"upside_down_face\":\"\\ud83d\\ude43\",\"wink\":\"\\ud83d\\ude09\",\"blush\":\"\\ud83d\\ude0a\",\"innocent\":\"\\ud83d\\ude07\",\"smiling_face_with_three_hearts\":\"\\ud83e\\udd70\",\"heart_eyes\":\"\\ud83d\\ude0d\",\"star_struck\":\"\\ud83e\\udd29\",\"kissing_heart\":\"\\ud83d\\ude18\",\"kissing\":\"\\ud83d\\ude17\",\"relaxed\":\"\\u263a\\ufe0f\",\"kissing_closed_eyes\":\"\\ud83d\\ude1a\",\"kissing_smiling_eyes\":\"\\ud83d\\ude19\",\"smiling_face_with_tear\":\"\\ud83e\\udd72\",\"yum\":\"\\ud83d\\ude0b\",\"stuck_out_tongue\":\"\\ud83d\\ude1b\",\"stuck_out_tongue_winking_eye\":\"\\ud83d\\ude1c\",\"zany_face\":\"\\ud83e\\udd2a\",\"stuck_out_tongue_closed_eyes\":\"\\ud83d\\ude1d\",\"money_mouth_face\":\"\\ud83e\\udd11\",\"hugs\":\"\\ud83e\\udd17\",\"hand_over_mouth\":\"\\ud83e\\udd2d\",\"shushing_face\":\"\\ud83e\\udd2b\",\"thinking\":\"\\ud83e\\udd14\",\"zipper_mouth_face\":\"\\ud83e\\udd10\",\"raised_eyebrow\":\"\\ud83e\\udd28\",\"neutral_face\":\"\\ud83d\\ude10\",\"expressionless\":\"\\ud83d\\ude11\",\"no_mouth\":\"\\ud83d\\ude36\",\"smirk\":\"\\ud83d\\ude0f\",\"unamused\":\"\\ud83d\\ude12\",\"roll_eyes\":\"\\ud83d\\ude44\",\"grimacing\":\"\\ud83d\\ude2c\",\"lying_face\":\"\\ud83e\\udd25\",\"relieved\":\"\\ud83d\\ude0c\",\"pensive\":\"\\ud83d\\ude14\",\"sleepy\":\"\\ud83d\\ude2a\",\"drooling_face\":\"\\ud83e\\udd24\",\"sleeping\":\"\\ud83d\\ude34\",\"mask\":\"\\ud83d\\ude37\",\"face_with_thermometer\":\"\\ud83e\\udd12\",\"face_with_head_bandage\":\"\\ud83e\\udd15\",\"nauseated_face\":\"\\ud83e\\udd22\",\"vomiting_face\":\"\\ud83e\\udd2e\",\"sneezing_face\":\"\\ud83e\\udd27\",\"hot_face\":\"\\ud83e\\udd75\",\"cold_face\":\"\\ud83e\\udd76\",\"woozy_face\":\"\\ud83e\\udd74\",\"dizzy_face\":\"\\ud83d\\ude35\",\"exploding_head\":\"\\ud83e\\udd2f\",\"cowboy_hat_face\":\"\\ud83e\\udd20\",\"partying_face\":\"\\ud83e\\udd73\",\"disguised_face\":\"\\ud83e\\udd78\",\"sunglasses\":\"\\ud83d\\ude0e\",\"nerd_face\":\"\\ud83e\\udd13\",\"monocle_face\":\"\\ud83e\\uddd0\",\"confused\":\"\\ud83d\\ude15\",\"worried\":\"\\ud83d\\ude1f\",\"slightly_frowning_face\":\"\\ud83d\\ude41\",\"frowning_face\":\"\\u2639\\ufe0f\",\"open_mouth\":\"\\ud83d\\ude2e\",\"hushed\":\"\\ud83d\\ude2f\",\"astonished\":\"\\ud83d\\ude32\",\"flushed\":\"\\ud83d\\ude33\",\"pleading_face\":\"\\ud83e\\udd7a\",\"frowning\":\"\\ud83d\\ude26\",\"anguished\":\"\\ud83d\\ude27\",\"fearful\":\"\\ud83d\\ude28\",\"cold_sweat\":\"\\ud83d\\ude30\",\"disappointed_relieved\":\"\\ud83d\\ude25\",\"cry\":\"\\ud83d\\ude22\",\"sob\":\"\\ud83d\\ude2d\",\"scream\":\"\\ud83d\\ude31\",\"confounded\":\"\\ud83d\\ude16\",\"persevere\":\"\\ud83d\\ude23\",\"disappointed\":\"\\ud83d\\ude1e\",\"sweat\":\"\\ud83d\\ude13\",\"weary\":\"\\ud83d\\ude29\",\"tired_face\":\"\\ud83d\\ude2b\",\"yawning_face\":\"\\ud83e\\udd71\",\"triumph\":\"\\ud83d\\ude24\",\"rage\":\"\\ud83d\\ude21\",\"pout\":\"\\ud83d\\ude21\",\"angry\":\"\\ud83d\\ude20\",\"cursing_face\":\"\\ud83e\\udd2c\",\"smiling_imp\":\"\\ud83d\\ude08\",\"imp\":\"\\ud83d\\udc7f\",\"skull\":\"\\ud83d\\udc80\",\"skull_and_crossbones\":\"\\u2620\\ufe0f\",\"hankey\":\"\\ud83d\\udca9\",\"poop\":\"\\ud83d\\udca9\",\"shit\":\"\\ud83d\\udca9\",\"clown_face\":\"\\ud83e\\udd21\",\"japanese_ogre\":\"\\ud83d\\udc79\",\"japanese_goblin\":\"\\ud83d\\udc7a\",\"ghost\":\"\\ud83d\\udc7b\",\"alien\":\"\\ud83d\\udc7d\",\"space_invader\":\"\\ud83d\\udc7e\",\"robot\":\"\\ud83e\\udd16\",\"smiley_cat\":\"\\ud83d\\ude3a\",\"smile_cat\":\"\\ud83d\\ude38\",\"joy_cat\":\"\\ud83d\\ude39\",\"heart_eyes_cat\":\"\\ud83d\\ude3b\",\"smirk_cat\":\"\\ud83d\\ude3c\",\"kissing_cat\":\"\\ud83d\\ude3d\",\"scream_cat\":\"\\ud83d\\ude40\",\"crying_cat_face\":\"\\ud83d\\ude3f\",\"pouting_cat\":\"\\ud83d\\ude3e\",\"see_no_evil\":\"\\ud83d\\ude48\",\"hear_no_evil\":\"\\ud83d\\ude49\",\"speak_no_evil\":\"\\ud83d\\ude4a\",\"kiss\":\"\\ud83d\\udc8b\",\"love_letter\":\"\\ud83d\\udc8c\",\"cupid\":\"\\ud83d\\udc98\",\"gift_heart\":\"\\ud83d\\udc9d\",\"sparkling_heart\":\"\\ud83d\\udc96\",\"heartpulse\":\"\\ud83d\\udc97\",\"heartbeat\":\"\\ud83d\\udc93\",\"revolving_hearts\":\"\\ud83d\\udc9e\",\"two_hearts\":\"\\ud83d\\udc95\",\"heart_decoration\":\"\\ud83d\\udc9f\",\"heavy_heart_exclamation\":\"\\u2763\\ufe0f\",\"broken_heart\":\"\\ud83d\\udc94\",\"heart\":\"\\u2764\\ufe0f\",\"orange_heart\":\"\\ud83e\\udde1\",\"yellow_heart\":\"\\ud83d\\udc9b\",\"green_heart\":\"\\ud83d\\udc9a\",\"blue_heart\":\"\\ud83d\\udc99\",\"purple_heart\":\"\\ud83d\\udc9c\",\"brown_heart\":\"\\ud83e\\udd0e\",\"black_heart\":\"\\ud83d\\udda4\",\"white_heart\":\"\\ud83e\\udd0d\",\"anger\":\"\\ud83d\\udca2\",\"boom\":\"\\ud83d\\udca5\",\"collision\":\"\\ud83d\\udca5\",\"dizzy\":\"\\ud83d\\udcab\",\"sweat_drops\":\"\\ud83d\\udca6\",\"dash\":\"\\ud83d\\udca8\",\"hole\":\"\\ud83d\\udd73\\ufe0f\",\"bomb\":\"\\ud83d\\udca3\",\"speech_balloon\":\"\\ud83d\\udcac\",\"eye_speech_bubble\":\"\\ud83d\\udc41\\ufe0f\\u200d\\ud83d\\udde8\\ufe0f\",\"left_speech_bubble\":\"\\ud83d\\udde8\\ufe0f\",\"right_anger_bubble\":\"\\ud83d\\uddef\\ufe0f\",\"thought_balloon\":\"\\ud83d\\udcad\",\"zzz\":\"\\ud83d\\udca4\",\"wave\":\"\\ud83d\\udc4b\",\"raised_back_of_hand\":\"\\ud83e\\udd1a\",\"raised_hand_with_fingers_splayed\":\"\\ud83d\\udd90\\ufe0f\",\"hand\":\"\\u270b\",\"raised_hand\":\"\\u270b\",\"vulcan_salute\":\"\\ud83d\\udd96\",\"ok_hand\":\"\\ud83d\\udc4c\",\"pinched_fingers\":\"\\ud83e\\udd0c\",\"pinching_hand\":\"\\ud83e\\udd0f\",\"v\":\"\\u270c\\ufe0f\",\"crossed_fingers\":\"\\ud83e\\udd1e\",\"love_you_gesture\":\"\\ud83e\\udd1f\",\"metal\":\"\\ud83e\\udd18\",\"call_me_hand\":\"\\ud83e\\udd19\",\"point_left\":\"\\ud83d\\udc48\",\"point_right\":\"\\ud83d\\udc49\",\"point_up_2\":\"\\ud83d\\udc46\",\"middle_finger\":\"\\ud83d\\udd95\",\"fu\":\"\\ud83d\\udd95\",\"point_down\":\"\\ud83d\\udc47\",\"point_up\":\"\\u261d\\ufe0f\",\"+1\":\"\\ud83d\\udc4d\",\"thumbsup\":\"\\ud83d\\udc4d\",\"-1\":\"\\ud83d\\udc4e\",\"thumbsdown\":\"\\ud83d\\udc4e\",\"fist_raised\":\"\\u270a\",\"fist\":\"\\u270a\",\"fist_oncoming\":\"\\ud83d\\udc4a\",\"facepunch\":\"\\ud83d\\udc4a\",\"punch\":\"\\ud83d\\udc4a\",\"fist_left\":\"\\ud83e\\udd1b\",\"fist_right\":\"\\ud83e\\udd1c\",\"clap\":\"\\ud83d\\udc4f\",\"raised_hands\":\"\\ud83d\\ude4c\",\"open_hands\":\"\\ud83d\\udc50\",\"palms_up_together\":\"\\ud83e\\udd32\",\"handshake\":\"\\ud83e\\udd1d\",\"pray\":\"\\ud83d\\ude4f\",\"writing_hand\":\"\\u270d\\ufe0f\",\"nail_care\":\"\\ud83d\\udc85\",\"selfie\":\"\\ud83e\\udd33\",\"muscle\":\"\\ud83d\\udcaa\",\"mechanical_arm\":\"\\ud83e\\uddbe\",\"mechanical_leg\":\"\\ud83e\\uddbf\",\"leg\":\"\\ud83e\\uddb5\",\"foot\":\"\\ud83e\\uddb6\",\"ear\":\"\\ud83d\\udc42\",\"ear_with_hearing_aid\":\"\\ud83e\\uddbb\",\"nose\":\"\\ud83d\\udc43\",\"brain\":\"\\ud83e\\udde0\",\"anatomical_heart\":\"\\ud83e\\udec0\",\"lungs\":\"\\ud83e\\udec1\",\"tooth\":\"\\ud83e\\uddb7\",\"bone\":\"\\ud83e\\uddb4\",\"eyes\":\"\\ud83d\\udc40\",\"eye\":\"\\ud83d\\udc41\\ufe0f\",\"tongue\":\"\\ud83d\\udc45\",\"lips\":\"\\ud83d\\udc44\",\"baby\":\"\\ud83d\\udc76\",\"child\":\"\\ud83e\\uddd2\",\"boy\":\"\\ud83d\\udc66\",\"girl\":\"\\ud83d\\udc67\",\"adult\":\"\\ud83e\\uddd1\",\"blond_haired_person\":\"\\ud83d\\udc71\",\"man\":\"\\ud83d\\udc68\",\"bearded_person\":\"\\ud83e\\uddd4\",\"red_haired_man\":\"\\ud83d\\udc68\\u200d\\ud83e\\uddb0\",\"curly_haired_man\":\"\\ud83d\\udc68\\u200d\\ud83e\\uddb1\",\"white_haired_man\":\"\\ud83d\\udc68\\u200d\\ud83e\\uddb3\",\"bald_man\":\"\\ud83d\\udc68\\u200d\\ud83e\\uddb2\",\"woman\":\"\\ud83d\\udc69\",\"red_haired_woman\":\"\\ud83d\\udc69\\u200d\\ud83e\\uddb0\",\"person_red_hair\":\"\\ud83e\\uddd1\\u200d\\ud83e\\uddb0\",\"curly_haired_woman\":\"\\ud83d\\udc69\\u200d\\ud83e\\uddb1\",\"person_curly_hair\":\"\\ud83e\\uddd1\\u200d\\ud83e\\uddb1\",\"white_haired_woman\":\"\\ud83d\\udc69\\u200d\\ud83e\\uddb3\",\"person_white_hair\":\"\\ud83e\\uddd1\\u200d\\ud83e\\uddb3\",\"bald_woman\":\"\\ud83d\\udc69\\u200d\\ud83e\\uddb2\",\"person_bald\":\"\\ud83e\\uddd1\\u200d\\ud83e\\uddb2\",\"blond_haired_woman\":\"\\ud83d\\udc71\\u200d\\u2640\\ufe0f\",\"blonde_woman\":\"\\ud83d\\udc71\\u200d\\u2640\\ufe0f\",\"blond_haired_man\":\"\\ud83d\\udc71\\u200d\\u2642\\ufe0f\",\"older_adult\":\"\\ud83e\\uddd3\",\"older_man\":\"\\ud83d\\udc74\",\"older_woman\":\"\\ud83d\\udc75\",\"frowning_person\":\"\\ud83d\\ude4d\",\"frowning_man\":\"\\ud83d\\ude4d\\u200d\\u2642\\ufe0f\",\"frowning_woman\":\"\\ud83d\\ude4d\\u200d\\u2640\\ufe0f\",\"pouting_face\":\"\\ud83d\\ude4e\",\"pouting_man\":\"\\ud83d\\ude4e\\u200d\\u2642\\ufe0f\",\"pouting_woman\":\"\\ud83d\\ude4e\\u200d\\u2640\\ufe0f\",\"no_good\":\"\\ud83d\\ude45\",\"no_good_man\":\"\\ud83d\\ude45\\u200d\\u2642\\ufe0f\",\"ng_man\":\"\\ud83d\\ude45\\u200d\\u2642\\ufe0f\",\"no_good_woman\":\"\\ud83d\\ude45\\u200d\\u2640\\ufe0f\",\"ng_woman\":\"\\ud83d\\ude45\\u200d\\u2640\\ufe0f\",\"ok_person\":\"\\ud83d\\ude46\",\"ok_man\":\"\\ud83d\\ude46\\u200d\\u2642\\ufe0f\",\"ok_woman\":\"\\ud83d\\ude46\\u200d\\u2640\\ufe0f\",\"tipping_hand_person\":\"\\ud83d\\udc81\",\"information_desk_person\":\"\\ud83d\\udc81\",\"tipping_hand_man\":\"\\ud83d\\udc81\\u200d\\u2642\\ufe0f\",\"sassy_man\":\"\\ud83d\\udc81\\u200d\\u2642\\ufe0f\",\"tipping_hand_woman\":\"\\ud83d\\udc81\\u200d\\u2640\\ufe0f\",\"sassy_woman\":\"\\ud83d\\udc81\\u200d\\u2640\\ufe0f\",\"raising_hand\":\"\\ud83d\\ude4b\",\"raising_hand_man\":\"\\ud83d\\ude4b\\u200d\\u2642\\ufe0f\",\"raising_hand_woman\":\"\\ud83d\\ude4b\\u200d\\u2640\\ufe0f\",\"deaf_person\":\"\\ud83e\\uddcf\",\"deaf_man\":\"\\ud83e\\uddcf\\u200d\\u2642\\ufe0f\",\"deaf_woman\":\"\\ud83e\\uddcf\\u200d\\u2640\\ufe0f\",\"bow\":\"\\ud83d\\ude47\",\"bowing_man\":\"\\ud83d\\ude47\\u200d\\u2642\\ufe0f\",\"bowing_woman\":\"\\ud83d\\ude47\\u200d\\u2640\\ufe0f\",\"facepalm\":\"\\ud83e\\udd26\",\"man_facepalming\":\"\\ud83e\\udd26\\u200d\\u2642\\ufe0f\",\"woman_facepalming\":\"\\ud83e\\udd26\\u200d\\u2640\\ufe0f\",\"shrug\":\"\\ud83e\\udd37\",\"man_shrugging\":\"\\ud83e\\udd37\\u200d\\u2642\\ufe0f\",\"woman_shrugging\":\"\\ud83e\\udd37\\u200d\\u2640\\ufe0f\",\"health_worker\":\"\\ud83e\\uddd1\\u200d\\u2695\\ufe0f\",\"man_health_worker\":\"\\ud83d\\udc68\\u200d\\u2695\\ufe0f\",\"woman_health_worker\":\"\\ud83d\\udc69\\u200d\\u2695\\ufe0f\",\"student\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udf93\",\"man_student\":\"\\ud83d\\udc68\\u200d\\ud83c\\udf93\",\"woman_student\":\"\\ud83d\\udc69\\u200d\\ud83c\\udf93\",\"teacher\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udfeb\",\"man_teacher\":\"\\ud83d\\udc68\\u200d\\ud83c\\udfeb\",\"woman_teacher\":\"\\ud83d\\udc69\\u200d\\ud83c\\udfeb\",\"judge\":\"\\ud83e\\uddd1\\u200d\\u2696\\ufe0f\",\"man_judge\":\"\\ud83d\\udc68\\u200d\\u2696\\ufe0f\",\"woman_judge\":\"\\ud83d\\udc69\\u200d\\u2696\\ufe0f\",\"farmer\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udf3e\",\"man_farmer\":\"\\ud83d\\udc68\\u200d\\ud83c\\udf3e\",\"woman_farmer\":\"\\ud83d\\udc69\\u200d\\ud83c\\udf3e\",\"cook\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udf73\",\"man_cook\":\"\\ud83d\\udc68\\u200d\\ud83c\\udf73\",\"woman_cook\":\"\\ud83d\\udc69\\u200d\\ud83c\\udf73\",\"mechanic\":\"\\ud83e\\uddd1\\u200d\\ud83d\\udd27\",\"man_mechanic\":\"\\ud83d\\udc68\\u200d\\ud83d\\udd27\",\"woman_mechanic\":\"\\ud83d\\udc69\\u200d\\ud83d\\udd27\",\"factory_worker\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udfed\",\"man_factory_worker\":\"\\ud83d\\udc68\\u200d\\ud83c\\udfed\",\"woman_factory_worker\":\"\\ud83d\\udc69\\u200d\\ud83c\\udfed\",\"office_worker\":\"\\ud83e\\uddd1\\u200d\\ud83d\\udcbc\",\"man_office_worker\":\"\\ud83d\\udc68\\u200d\\ud83d\\udcbc\",\"woman_office_worker\":\"\\ud83d\\udc69\\u200d\\ud83d\\udcbc\",\"scientist\":\"\\ud83e\\uddd1\\u200d\\ud83d\\udd2c\",\"man_scientist\":\"\\ud83d\\udc68\\u200d\\ud83d\\udd2c\",\"woman_scientist\":\"\\ud83d\\udc69\\u200d\\ud83d\\udd2c\",\"technologist\":\"\\ud83e\\uddd1\\u200d\\ud83d\\udcbb\",\"man_technologist\":\"\\ud83d\\udc68\\u200d\\ud83d\\udcbb\",\"woman_technologist\":\"\\ud83d\\udc69\\u200d\\ud83d\\udcbb\",\"singer\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udfa4\",\"man_singer\":\"\\ud83d\\udc68\\u200d\\ud83c\\udfa4\",\"woman_singer\":\"\\ud83d\\udc69\\u200d\\ud83c\\udfa4\",\"artist\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udfa8\",\"man_artist\":\"\\ud83d\\udc68\\u200d\\ud83c\\udfa8\",\"woman_artist\":\"\\ud83d\\udc69\\u200d\\ud83c\\udfa8\",\"pilot\":\"\\ud83e\\uddd1\\u200d\\u2708\\ufe0f\",\"man_pilot\":\"\\ud83d\\udc68\\u200d\\u2708\\ufe0f\",\"woman_pilot\":\"\\ud83d\\udc69\\u200d\\u2708\\ufe0f\",\"astronaut\":\"\\ud83e\\uddd1\\u200d\\ud83d\\ude80\",\"man_astronaut\":\"\\ud83d\\udc68\\u200d\\ud83d\\ude80\",\"woman_astronaut\":\"\\ud83d\\udc69\\u200d\\ud83d\\ude80\",\"firefighter\":\"\\ud83e\\uddd1\\u200d\\ud83d\\ude92\",\"man_firefighter\":\"\\ud83d\\udc68\\u200d\\ud83d\\ude92\",\"woman_firefighter\":\"\\ud83d\\udc69\\u200d\\ud83d\\ude92\",\"police_officer\":\"\\ud83d\\udc6e\",\"cop\":\"\\ud83d\\udc6e\",\"policeman\":\"\\ud83d\\udc6e\\u200d\\u2642\\ufe0f\",\"policewoman\":\"\\ud83d\\udc6e\\u200d\\u2640\\ufe0f\",\"detective\":\"\\ud83d\\udd75\\ufe0f\",\"male_detective\":\"\\ud83d\\udd75\\ufe0f\\u200d\\u2642\\ufe0f\",\"female_detective\":\"\\ud83d\\udd75\\ufe0f\\u200d\\u2640\\ufe0f\",\"guard\":\"\\ud83d\\udc82\",\"guardsman\":\"\\ud83d\\udc82\\u200d\\u2642\\ufe0f\",\"guardswoman\":\"\\ud83d\\udc82\\u200d\\u2640\\ufe0f\",\"ninja\":\"\\ud83e\\udd77\",\"construction_worker\":\"\\ud83d\\udc77\",\"construction_worker_man\":\"\\ud83d\\udc77\\u200d\\u2642\\ufe0f\",\"construction_worker_woman\":\"\\ud83d\\udc77\\u200d\\u2640\\ufe0f\",\"prince\":\"\\ud83e\\udd34\",\"princess\":\"\\ud83d\\udc78\",\"person_with_turban\":\"\\ud83d\\udc73\",\"man_with_turban\":\"\\ud83d\\udc73\\u200d\\u2642\\ufe0f\",\"woman_with_turban\":\"\\ud83d\\udc73\\u200d\\u2640\\ufe0f\",\"man_with_gua_pi_mao\":\"\\ud83d\\udc72\",\"woman_with_headscarf\":\"\\ud83e\\uddd5\",\"person_in_tuxedo\":\"\\ud83e\\udd35\",\"man_in_tuxedo\":\"\\ud83e\\udd35\\u200d\\u2642\\ufe0f\",\"woman_in_tuxedo\":\"\\ud83e\\udd35\\u200d\\u2640\\ufe0f\",\"person_with_veil\":\"\\ud83d\\udc70\",\"man_with_veil\":\"\\ud83d\\udc70\\u200d\\u2642\\ufe0f\",\"woman_with_veil\":\"\\ud83d\\udc70\\u200d\\u2640\\ufe0f\",\"bride_with_veil\":\"\\ud83d\\udc70\\u200d\\u2640\\ufe0f\",\"pregnant_woman\":\"\\ud83e\\udd30\",\"breast_feeding\":\"\\ud83e\\udd31\",\"woman_feeding_baby\":\"\\ud83d\\udc69\\u200d\\ud83c\\udf7c\",\"man_feeding_baby\":\"\\ud83d\\udc68\\u200d\\ud83c\\udf7c\",\"person_feeding_baby\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udf7c\",\"angel\":\"\\ud83d\\udc7c\",\"santa\":\"\\ud83c\\udf85\",\"mrs_claus\":\"\\ud83e\\udd36\",\"mx_claus\":\"\\ud83e\\uddd1\\u200d\\ud83c\\udf84\",\"superhero\":\"\\ud83e\\uddb8\",\"superhero_man\":\"\\ud83e\\uddb8\\u200d\\u2642\\ufe0f\",\"superhero_woman\":\"\\ud83e\\uddb8\\u200d\\u2640\\ufe0f\",\"supervillain\":\"\\ud83e\\uddb9\",\"supervillain_man\":\"\\ud83e\\uddb9\\u200d\\u2642\\ufe0f\",\"supervillain_woman\":\"\\ud83e\\uddb9\\u200d\\u2640\\ufe0f\",\"mage\":\"\\ud83e\\uddd9\",\"mage_man\":\"\\ud83e\\uddd9\\u200d\\u2642\\ufe0f\",\"mage_woman\":\"\\ud83e\\uddd9\\u200d\\u2640\\ufe0f\",\"fairy\":\"\\ud83e\\uddda\",\"fairy_man\":\"\\ud83e\\uddda\\u200d\\u2642\\ufe0f\",\"fairy_woman\":\"\\ud83e\\uddda\\u200d\\u2640\\ufe0f\",\"vampire\":\"\\ud83e\\udddb\",\"vampire_man\":\"\\ud83e\\udddb\\u200d\\u2642\\ufe0f\",\"vampire_woman\":\"\\ud83e\\udddb\\u200d\\u2640\\ufe0f\",\"merperson\":\"\\ud83e\\udddc\",\"merman\":\"\\ud83e\\udddc\\u200d\\u2642\\ufe0f\",\"mermaid\":\"\\ud83e\\udddc\\u200d\\u2640\\ufe0f\",\"elf\":\"\\ud83e\\udddd\",\"elf_man\":\"\\ud83e\\udddd\\u200d\\u2642\\ufe0f\",\"elf_woman\":\"\\ud83e\\udddd\\u200d\\u2640\\ufe0f\",\"genie\":\"\\ud83e\\uddde\",\"genie_man\":\"\\ud83e\\uddde\\u200d\\u2642\\ufe0f\",\"genie_woman\":\"\\ud83e\\uddde\\u200d\\u2640\\ufe0f\",\"zombie\":\"\\ud83e\\udddf\",\"zombie_man\":\"\\ud83e\\udddf\\u200d\\u2642\\ufe0f\",\"zombie_woman\":\"\\ud83e\\udddf\\u200d\\u2640\\ufe0f\",\"massage\":\"\\ud83d\\udc86\",\"massage_man\":\"\\ud83d\\udc86\\u200d\\u2642\\ufe0f\",\"massage_woman\":\"\\ud83d\\udc86\\u200d\\u2640\\ufe0f\",\"haircut\":\"\\ud83d\\udc87\",\"haircut_man\":\"\\ud83d\\udc87\\u200d\\u2642\\ufe0f\",\"haircut_woman\":\"\\ud83d\\udc87\\u200d\\u2640\\ufe0f\",\"walking\":\"\\ud83d\\udeb6\",\"walking_man\":\"\\ud83d\\udeb6\\u200d\\u2642\\ufe0f\",\"walking_woman\":\"\\ud83d\\udeb6\\u200d\\u2640\\ufe0f\",\"standing_person\":\"\\ud83e\\uddcd\",\"standing_man\":\"\\ud83e\\uddcd\\u200d\\u2642\\ufe0f\",\"standing_woman\":\"\\ud83e\\uddcd\\u200d\\u2640\\ufe0f\",\"kneeling_person\":\"\\ud83e\\uddce\",\"kneeling_man\":\"\\ud83e\\uddce\\u200d\\u2642\\ufe0f\",\"kneeling_woman\":\"\\ud83e\\uddce\\u200d\\u2640\\ufe0f\",\"person_with_probing_cane\":\"\\ud83e\\uddd1\\u200d\\ud83e\\uddaf\",\"man_with_probing_cane\":\"\\ud83d\\udc68\\u200d\\ud83e\\uddaf\",\"woman_with_probing_cane\":\"\\ud83d\\udc69\\u200d\\ud83e\\uddaf\",\"person_in_motorized_wheelchair\":\"\\ud83e\\uddd1\\u200d\\ud83e\\uddbc\",\"man_in_motorized_wheelchair\":\"\\ud83d\\udc68\\u200d\\ud83e\\uddbc\",\"woman_in_motorized_wheelchair\":\"\\ud83d\\udc69\\u200d\\ud83e\\uddbc\",\"person_in_manual_wheelchair\":\"\\ud83e\\uddd1\\u200d\\ud83e\\uddbd\",\"man_in_manual_wheelchair\":\"\\ud83d\\udc68\\u200d\\ud83e\\uddbd\",\"woman_in_manual_wheelchair\":\"\\ud83d\\udc69\\u200d\\ud83e\\uddbd\",\"runner\":\"\\ud83c\\udfc3\",\"running\":\"\\ud83c\\udfc3\",\"running_man\":\"\\ud83c\\udfc3\\u200d\\u2642\\ufe0f\",\"running_woman\":\"\\ud83c\\udfc3\\u200d\\u2640\\ufe0f\",\"woman_dancing\":\"\\ud83d\\udc83\",\"dancer\":\"\\ud83d\\udc83\",\"man_dancing\":\"\\ud83d\\udd7a\",\"business_suit_levitating\":\"\\ud83d\\udd74\\ufe0f\",\"dancers\":\"\\ud83d\\udc6f\",\"dancing_men\":\"\\ud83d\\udc6f\\u200d\\u2642\\ufe0f\",\"dancing_women\":\"\\ud83d\\udc6f\\u200d\\u2640\\ufe0f\",\"sauna_person\":\"\\ud83e\\uddd6\",\"sauna_man\":\"\\ud83e\\uddd6\\u200d\\u2642\\ufe0f\",\"sauna_woman\":\"\\ud83e\\uddd6\\u200d\\u2640\\ufe0f\",\"climbing\":\"\\ud83e\\uddd7\",\"climbing_man\":\"\\ud83e\\uddd7\\u200d\\u2642\\ufe0f\",\"climbing_woman\":\"\\ud83e\\uddd7\\u200d\\u2640\\ufe0f\",\"person_fencing\":\"\\ud83e\\udd3a\",\"horse_racing\":\"\\ud83c\\udfc7\",\"skier\":\"\\u26f7\\ufe0f\",\"snowboarder\":\"\\ud83c\\udfc2\",\"golfing\":\"\\ud83c\\udfcc\\ufe0f\",\"golfing_man\":\"\\ud83c\\udfcc\\ufe0f\\u200d\\u2642\\ufe0f\",\"golfing_woman\":\"\\ud83c\\udfcc\\ufe0f\\u200d\\u2640\\ufe0f\",\"surfer\":\"\\ud83c\\udfc4\",\"surfing_man\":\"\\ud83c\\udfc4\\u200d\\u2642\\ufe0f\",\"surfing_woman\":\"\\ud83c\\udfc4\\u200d\\u2640\\ufe0f\",\"rowboat\":\"\\ud83d\\udea3\",\"rowing_man\":\"\\ud83d\\udea3\\u200d\\u2642\\ufe0f\",\"rowing_woman\":\"\\ud83d\\udea3\\u200d\\u2640\\ufe0f\",\"swimmer\":\"\\ud83c\\udfca\",\"swimming_man\":\"\\ud83c\\udfca\\u200d\\u2642\\ufe0f\",\"swimming_woman\":\"\\ud83c\\udfca\\u200d\\u2640\\ufe0f\",\"bouncing_ball_person\":\"\\u26f9\\ufe0f\",\"bouncing_ball_man\":\"\\u26f9\\ufe0f\\u200d\\u2642\\ufe0f\",\"basketball_man\":\"\\u26f9\\ufe0f\\u200d\\u2642\\ufe0f\",\"bouncing_ball_woman\":\"\\u26f9\\ufe0f\\u200d\\u2640\\ufe0f\",\"basketball_woman\":\"\\u26f9\\ufe0f\\u200d\\u2640\\ufe0f\",\"weight_lifting\":\"\\ud83c\\udfcb\\ufe0f\",\"weight_lifting_man\":\"\\ud83c\\udfcb\\ufe0f\\u200d\\u2642\\ufe0f\",\"weight_lifting_woman\":\"\\ud83c\\udfcb\\ufe0f\\u200d\\u2640\\ufe0f\",\"bicyclist\":\"\\ud83d\\udeb4\",\"biking_man\":\"\\ud83d\\udeb4\\u200d\\u2642\\ufe0f\",\"biking_woman\":\"\\ud83d\\udeb4\\u200d\\u2640\\ufe0f\",\"mountain_bicyclist\":\"\\ud83d\\udeb5\",\"mountain_biking_man\":\"\\ud83d\\udeb5\\u200d\\u2642\\ufe0f\",\"mountain_biking_woman\":\"\\ud83d\\udeb5\\u200d\\u2640\\ufe0f\",\"cartwheeling\":\"\\ud83e\\udd38\",\"man_cartwheeling\":\"\\ud83e\\udd38\\u200d\\u2642\\ufe0f\",\"woman_cartwheeling\":\"\\ud83e\\udd38\\u200d\\u2640\\ufe0f\",\"wrestling\":\"\\ud83e\\udd3c\",\"men_wrestling\":\"\\ud83e\\udd3c\\u200d\\u2642\\ufe0f\",\"women_wrestling\":\"\\ud83e\\udd3c\\u200d\\u2640\\ufe0f\",\"water_polo\":\"\\ud83e\\udd3d\",\"man_playing_water_polo\":\"\\ud83e\\udd3d\\u200d\\u2642\\ufe0f\",\"woman_playing_water_polo\":\"\\ud83e\\udd3d\\u200d\\u2640\\ufe0f\",\"handball_person\":\"\\ud83e\\udd3e\",\"man_playing_handball\":\"\\ud83e\\udd3e\\u200d\\u2642\\ufe0f\",\"woman_playing_handball\":\"\\ud83e\\udd3e\\u200d\\u2640\\ufe0f\",\"juggling_person\":\"\\ud83e\\udd39\",\"man_juggling\":\"\\ud83e\\udd39\\u200d\\u2642\\ufe0f\",\"woman_juggling\":\"\\ud83e\\udd39\\u200d\\u2640\\ufe0f\",\"lotus_position\":\"\\ud83e\\uddd8\",\"lotus_position_man\":\"\\ud83e\\uddd8\\u200d\\u2642\\ufe0f\",\"lotus_position_woman\":\"\\ud83e\\uddd8\\u200d\\u2640\\ufe0f\",\"bath\":\"\\ud83d\\udec0\",\"sleeping_bed\":\"\\ud83d\\udecc\",\"people_holding_hands\":\"\\ud83e\\uddd1\\u200d\\ud83e\\udd1d\\u200d\\ud83e\\uddd1\",\"two_women_holding_hands\":\"\\ud83d\\udc6d\",\"couple\":\"\\ud83d\\udc6b\",\"two_men_holding_hands\":\"\\ud83d\\udc6c\",\"couplekiss\":\"\\ud83d\\udc8f\",\"couplekiss_man_woman\":\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\",\"couplekiss_man_man\":\"\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc68\",\"couplekiss_woman_woman\":\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc8b\\u200d\\ud83d\\udc69\",\"couple_with_heart\":\"\\ud83d\\udc91\",\"couple_with_heart_woman_man\":\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\",\"couple_with_heart_man_man\":\"\\ud83d\\udc68\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc68\",\"couple_with_heart_woman_woman\":\"\\ud83d\\udc69\\u200d\\u2764\\ufe0f\\u200d\\ud83d\\udc69\",\"family\":\"\\ud83d\\udc6a\",\"family_man_woman_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\"family_man_woman_girl\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\"family_man_woman_girl_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\"family_man_woman_boy_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\"family_man_woman_girl_girl\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\"family_man_man_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\",\"family_man_man_girl\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\",\"family_man_man_girl_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\"family_man_man_boy_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\"family_man_man_girl_girl\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\"family_woman_woman_boy\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\"family_woman_woman_girl\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\"family_woman_woman_girl_boy\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\"family_woman_woman_boy_boy\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\"family_woman_woman_girl_girl\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\"family_man_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc66\",\"family_man_boy_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\"family_man_girl\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc67\",\"family_man_girl_boy\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\"family_man_girl_girl\":\"\\ud83d\\udc68\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\"family_woman_boy\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc66\",\"family_woman_boy_boy\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc66\\u200d\\ud83d\\udc66\",\"family_woman_girl\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc67\",\"family_woman_girl_boy\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc66\",\"family_woman_girl_girl\":\"\\ud83d\\udc69\\u200d\\ud83d\\udc67\\u200d\\ud83d\\udc67\",\"speaking_head\":\"\\ud83d\\udde3\\ufe0f\",\"bust_in_silhouette\":\"\\ud83d\\udc64\",\"busts_in_silhouette\":\"\\ud83d\\udc65\",\"people_hugging\":\"\\ud83e\\udec2\",\"footprints\":\"\\ud83d\\udc63\",\"monkey_face\":\"\\ud83d\\udc35\",\"monkey\":\"\\ud83d\\udc12\",\"gorilla\":\"\\ud83e\\udd8d\",\"orangutan\":\"\\ud83e\\udda7\",\"dog\":\"\\ud83d\\udc36\",\"dog2\":\"\\ud83d\\udc15\",\"guide_dog\":\"\\ud83e\\uddae\",\"service_dog\":\"\\ud83d\\udc15\\u200d\\ud83e\\uddba\",\"poodle\":\"\\ud83d\\udc29\",\"wolf\":\"\\ud83d\\udc3a\",\"fox_face\":\"\\ud83e\\udd8a\",\"raccoon\":\"\\ud83e\\udd9d\",\"cat\":\"\\ud83d\\udc31\",\"cat2\":\"\\ud83d\\udc08\",\"black_cat\":\"\\ud83d\\udc08\\u200d\\u2b1b\",\"lion\":\"\\ud83e\\udd81\",\"tiger\":\"\\ud83d\\udc2f\",\"tiger2\":\"\\ud83d\\udc05\",\"leopard\":\"\\ud83d\\udc06\",\"horse\":\"\\ud83d\\udc34\",\"racehorse\":\"\\ud83d\\udc0e\",\"unicorn\":\"\\ud83e\\udd84\",\"zebra\":\"\\ud83e\\udd93\",\"deer\":\"\\ud83e\\udd8c\",\"bison\":\"\\ud83e\\uddac\",\"cow\":\"\\ud83d\\udc2e\",\"ox\":\"\\ud83d\\udc02\",\"water_buffalo\":\"\\ud83d\\udc03\",\"cow2\":\"\\ud83d\\udc04\",\"pig\":\"\\ud83d\\udc37\",\"pig2\":\"\\ud83d\\udc16\",\"boar\":\"\\ud83d\\udc17\",\"pig_nose\":\"\\ud83d\\udc3d\",\"ram\":\"\\ud83d\\udc0f\",\"sheep\":\"\\ud83d\\udc11\",\"goat\":\"\\ud83d\\udc10\",\"dromedary_camel\":\"\\ud83d\\udc2a\",\"camel\":\"\\ud83d\\udc2b\",\"llama\":\"\\ud83e\\udd99\",\"giraffe\":\"\\ud83e\\udd92\",\"elephant\":\"\\ud83d\\udc18\",\"mammoth\":\"\\ud83e\\udda3\",\"rhinoceros\":\"\\ud83e\\udd8f\",\"hippopotamus\":\"\\ud83e\\udd9b\",\"mouse\":\"\\ud83d\\udc2d\",\"mouse2\":\"\\ud83d\\udc01\",\"rat\":\"\\ud83d\\udc00\",\"hamster\":\"\\ud83d\\udc39\",\"rabbit\":\"\\ud83d\\udc30\",\"rabbit2\":\"\\ud83d\\udc07\",\"chipmunk\":\"\\ud83d\\udc3f\\ufe0f\",\"beaver\":\"\\ud83e\\uddab\",\"hedgehog\":\"\\ud83e\\udd94\",\"bat\":\"\\ud83e\\udd87\",\"bear\":\"\\ud83d\\udc3b\",\"polar_bear\":\"\\ud83d\\udc3b\\u200d\\u2744\\ufe0f\",\"koala\":\"\\ud83d\\udc28\",\"panda_face\":\"\\ud83d\\udc3c\",\"sloth\":\"\\ud83e\\udda5\",\"otter\":\"\\ud83e\\udda6\",\"skunk\":\"\\ud83e\\udda8\",\"kangaroo\":\"\\ud83e\\udd98\",\"badger\":\"\\ud83e\\udda1\",\"feet\":\"\\ud83d\\udc3e\",\"paw_prints\":\"\\ud83d\\udc3e\",\"turkey\":\"\\ud83e\\udd83\",\"chicken\":\"\\ud83d\\udc14\",\"rooster\":\"\\ud83d\\udc13\",\"hatching_chick\":\"\\ud83d\\udc23\",\"baby_chick\":\"\\ud83d\\udc24\",\"hatched_chick\":\"\\ud83d\\udc25\",\"bird\":\"\\ud83d\\udc26\",\"penguin\":\"\\ud83d\\udc27\",\"dove\":\"\\ud83d\\udd4a\\ufe0f\",\"eagle\":\"\\ud83e\\udd85\",\"duck\":\"\\ud83e\\udd86\",\"swan\":\"\\ud83e\\udda2\",\"owl\":\"\\ud83e\\udd89\",\"dodo\":\"\\ud83e\\udda4\",\"feather\":\"\\ud83e\\udeb6\",\"flamingo\":\"\\ud83e\\udda9\",\"peacock\":\"\\ud83e\\udd9a\",\"parrot\":\"\\ud83e\\udd9c\",\"frog\":\"\\ud83d\\udc38\",\"crocodile\":\"\\ud83d\\udc0a\",\"turtle\":\"\\ud83d\\udc22\",\"lizard\":\"\\ud83e\\udd8e\",\"snake\":\"\\ud83d\\udc0d\",\"dragon_face\":\"\\ud83d\\udc32\",\"dragon\":\"\\ud83d\\udc09\",\"sauropod\":\"\\ud83e\\udd95\",\"t-rex\":\"\\ud83e\\udd96\",\"whale\":\"\\ud83d\\udc33\",\"whale2\":\"\\ud83d\\udc0b\",\"dolphin\":\"\\ud83d\\udc2c\",\"flipper\":\"\\ud83d\\udc2c\",\"seal\":\"\\ud83e\\uddad\",\"fish\":\"\\ud83d\\udc1f\",\"tropical_fish\":\"\\ud83d\\udc20\",\"blowfish\":\"\\ud83d\\udc21\",\"shark\":\"\\ud83e\\udd88\",\"octopus\":\"\\ud83d\\udc19\",\"shell\":\"\\ud83d\\udc1a\",\"snail\":\"\\ud83d\\udc0c\",\"butterfly\":\"\\ud83e\\udd8b\",\"bug\":\"\\ud83d\\udc1b\",\"ant\":\"\\ud83d\\udc1c\",\"bee\":\"\\ud83d\\udc1d\",\"honeybee\":\"\\ud83d\\udc1d\",\"beetle\":\"\\ud83e\\udeb2\",\"lady_beetle\":\"\\ud83d\\udc1e\",\"cricket\":\"\\ud83e\\udd97\",\"cockroach\":\"\\ud83e\\udeb3\",\"spider\":\"\\ud83d\\udd77\\ufe0f\",\"spider_web\":\"\\ud83d\\udd78\\ufe0f\",\"scorpion\":\"\\ud83e\\udd82\",\"mosquito\":\"\\ud83e\\udd9f\",\"fly\":\"\\ud83e\\udeb0\",\"worm\":\"\\ud83e\\udeb1\",\"microbe\":\"\\ud83e\\udda0\",\"bouquet\":\"\\ud83d\\udc90\",\"cherry_blossom\":\"\\ud83c\\udf38\",\"white_flower\":\"\\ud83d\\udcae\",\"rosette\":\"\\ud83c\\udff5\\ufe0f\",\"rose\":\"\\ud83c\\udf39\",\"wilted_flower\":\"\\ud83e\\udd40\",\"hibiscus\":\"\\ud83c\\udf3a\",\"sunflower\":\"\\ud83c\\udf3b\",\"blossom\":\"\\ud83c\\udf3c\",\"tulip\":\"\\ud83c\\udf37\",\"seedling\":\"\\ud83c\\udf31\",\"potted_plant\":\"\\ud83e\\udeb4\",\"evergreen_tree\":\"\\ud83c\\udf32\",\"deciduous_tree\":\"\\ud83c\\udf33\",\"palm_tree\":\"\\ud83c\\udf34\",\"cactus\":\"\\ud83c\\udf35\",\"ear_of_rice\":\"\\ud83c\\udf3e\",\"herb\":\"\\ud83c\\udf3f\",\"shamrock\":\"\\u2618\\ufe0f\",\"four_leaf_clover\":\"\\ud83c\\udf40\",\"maple_leaf\":\"\\ud83c\\udf41\",\"fallen_leaf\":\"\\ud83c\\udf42\",\"leaves\":\"\\ud83c\\udf43\",\"grapes\":\"\\ud83c\\udf47\",\"melon\":\"\\ud83c\\udf48\",\"watermelon\":\"\\ud83c\\udf49\",\"tangerine\":\"\\ud83c\\udf4a\",\"orange\":\"\\ud83c\\udf4a\",\"mandarin\":\"\\ud83c\\udf4a\",\"lemon\":\"\\ud83c\\udf4b\",\"banana\":\"\\ud83c\\udf4c\",\"pineapple\":\"\\ud83c\\udf4d\",\"mango\":\"\\ud83e\\udd6d\",\"apple\":\"\\ud83c\\udf4e\",\"green_apple\":\"\\ud83c\\udf4f\",\"pear\":\"\\ud83c\\udf50\",\"peach\":\"\\ud83c\\udf51\",\"cherries\":\"\\ud83c\\udf52\",\"strawberry\":\"\\ud83c\\udf53\",\"blueberries\":\"\\ud83e\\uded0\",\"kiwi_fruit\":\"\\ud83e\\udd5d\",\"tomato\":\"\\ud83c\\udf45\",\"olive\":\"\\ud83e\\uded2\",\"coconut\":\"\\ud83e\\udd65\",\"avocado\":\"\\ud83e\\udd51\",\"eggplant\":\"\\ud83c\\udf46\",\"potato\":\"\\ud83e\\udd54\",\"carrot\":\"\\ud83e\\udd55\",\"corn\":\"\\ud83c\\udf3d\",\"hot_pepper\":\"\\ud83c\\udf36\\ufe0f\",\"bell_pepper\":\"\\ud83e\\uded1\",\"cucumber\":\"\\ud83e\\udd52\",\"leafy_green\":\"\\ud83e\\udd6c\",\"broccoli\":\"\\ud83e\\udd66\",\"garlic\":\"\\ud83e\\uddc4\",\"onion\":\"\\ud83e\\uddc5\",\"mushroom\":\"\\ud83c\\udf44\",\"peanuts\":\"\\ud83e\\udd5c\",\"chestnut\":\"\\ud83c\\udf30\",\"bread\":\"\\ud83c\\udf5e\",\"croissant\":\"\\ud83e\\udd50\",\"baguette_bread\":\"\\ud83e\\udd56\",\"flatbread\":\"\\ud83e\\uded3\",\"pretzel\":\"\\ud83e\\udd68\",\"bagel\":\"\\ud83e\\udd6f\",\"pancakes\":\"\\ud83e\\udd5e\",\"waffle\":\"\\ud83e\\uddc7\",\"cheese\":\"\\ud83e\\uddc0\",\"meat_on_bone\":\"\\ud83c\\udf56\",\"poultry_leg\":\"\\ud83c\\udf57\",\"cut_of_meat\":\"\\ud83e\\udd69\",\"bacon\":\"\\ud83e\\udd53\",\"hamburger\":\"\\ud83c\\udf54\",\"fries\":\"\\ud83c\\udf5f\",\"pizza\":\"\\ud83c\\udf55\",\"hotdog\":\"\\ud83c\\udf2d\",\"sandwich\":\"\\ud83e\\udd6a\",\"taco\":\"\\ud83c\\udf2e\",\"burrito\":\"\\ud83c\\udf2f\",\"tamale\":\"\\ud83e\\uded4\",\"stuffed_flatbread\":\"\\ud83e\\udd59\",\"falafel\":\"\\ud83e\\uddc6\",\"egg\":\"\\ud83e\\udd5a\",\"fried_egg\":\"\\ud83c\\udf73\",\"shallow_pan_of_food\":\"\\ud83e\\udd58\",\"stew\":\"\\ud83c\\udf72\",\"fondue\":\"\\ud83e\\uded5\",\"bowl_with_spoon\":\"\\ud83e\\udd63\",\"green_salad\":\"\\ud83e\\udd57\",\"popcorn\":\"\\ud83c\\udf7f\",\"butter\":\"\\ud83e\\uddc8\",\"salt\":\"\\ud83e\\uddc2\",\"canned_food\":\"\\ud83e\\udd6b\",\"bento\":\"\\ud83c\\udf71\",\"rice_cracker\":\"\\ud83c\\udf58\",\"rice_ball\":\"\\ud83c\\udf59\",\"rice\":\"\\ud83c\\udf5a\",\"curry\":\"\\ud83c\\udf5b\",\"ramen\":\"\\ud83c\\udf5c\",\"spaghetti\":\"\\ud83c\\udf5d\",\"sweet_potato\":\"\\ud83c\\udf60\",\"oden\":\"\\ud83c\\udf62\",\"sushi\":\"\\ud83c\\udf63\",\"fried_shrimp\":\"\\ud83c\\udf64\",\"fish_cake\":\"\\ud83c\\udf65\",\"moon_cake\":\"\\ud83e\\udd6e\",\"dango\":\"\\ud83c\\udf61\",\"dumpling\":\"\\ud83e\\udd5f\",\"fortune_cookie\":\"\\ud83e\\udd60\",\"takeout_box\":\"\\ud83e\\udd61\",\"crab\":\"\\ud83e\\udd80\",\"lobster\":\"\\ud83e\\udd9e\",\"shrimp\":\"\\ud83e\\udd90\",\"squid\":\"\\ud83e\\udd91\",\"oyster\":\"\\ud83e\\uddaa\",\"icecream\":\"\\ud83c\\udf66\",\"shaved_ice\":\"\\ud83c\\udf67\",\"ice_cream\":\"\\ud83c\\udf68\",\"doughnut\":\"\\ud83c\\udf69\",\"cookie\":\"\\ud83c\\udf6a\",\"birthday\":\"\\ud83c\\udf82\",\"cake\":\"\\ud83c\\udf70\",\"cupcake\":\"\\ud83e\\uddc1\",\"pie\":\"\\ud83e\\udd67\",\"chocolate_bar\":\"\\ud83c\\udf6b\",\"candy\":\"\\ud83c\\udf6c\",\"lollipop\":\"\\ud83c\\udf6d\",\"custard\":\"\\ud83c\\udf6e\",\"honey_pot\":\"\\ud83c\\udf6f\",\"baby_bottle\":\"\\ud83c\\udf7c\",\"milk_glass\":\"\\ud83e\\udd5b\",\"coffee\":\"\\u2615\",\"teapot\":\"\\ud83e\\uded6\",\"tea\":\"\\ud83c\\udf75\",\"sake\":\"\\ud83c\\udf76\",\"champagne\":\"\\ud83c\\udf7e\",\"wine_glass\":\"\\ud83c\\udf77\",\"cocktail\":\"\\ud83c\\udf78\",\"tropical_drink\":\"\\ud83c\\udf79\",\"beer\":\"\\ud83c\\udf7a\",\"beers\":\"\\ud83c\\udf7b\",\"clinking_glasses\":\"\\ud83e\\udd42\",\"tumbler_glass\":\"\\ud83e\\udd43\",\"cup_with_straw\":\"\\ud83e\\udd64\",\"bubble_tea\":\"\\ud83e\\uddcb\",\"beverage_box\":\"\\ud83e\\uddc3\",\"mate\":\"\\ud83e\\uddc9\",\"ice_cube\":\"\\ud83e\\uddca\",\"chopsticks\":\"\\ud83e\\udd62\",\"plate_with_cutlery\":\"\\ud83c\\udf7d\\ufe0f\",\"fork_and_knife\":\"\\ud83c\\udf74\",\"spoon\":\"\\ud83e\\udd44\",\"hocho\":\"\\ud83d\\udd2a\",\"knife\":\"\\ud83d\\udd2a\",\"amphora\":\"\\ud83c\\udffa\",\"earth_africa\":\"\\ud83c\\udf0d\",\"earth_americas\":\"\\ud83c\\udf0e\",\"earth_asia\":\"\\ud83c\\udf0f\",\"globe_with_meridians\":\"\\ud83c\\udf10\",\"world_map\":\"\\ud83d\\uddfa\\ufe0f\",\"japan\":\"\\ud83d\\uddfe\",\"compass\":\"\\ud83e\\udded\",\"mountain_snow\":\"\\ud83c\\udfd4\\ufe0f\",\"mountain\":\"\\u26f0\\ufe0f\",\"volcano\":\"\\ud83c\\udf0b\",\"mount_fuji\":\"\\ud83d\\uddfb\",\"camping\":\"\\ud83c\\udfd5\\ufe0f\",\"beach_umbrella\":\"\\ud83c\\udfd6\\ufe0f\",\"desert\":\"\\ud83c\\udfdc\\ufe0f\",\"desert_island\":\"\\ud83c\\udfdd\\ufe0f\",\"national_park\":\"\\ud83c\\udfde\\ufe0f\",\"stadium\":\"\\ud83c\\udfdf\\ufe0f\",\"classical_building\":\"\\ud83c\\udfdb\\ufe0f\",\"building_construction\":\"\\ud83c\\udfd7\\ufe0f\",\"bricks\":\"\\ud83e\\uddf1\",\"rock\":\"\\ud83e\\udea8\",\"wood\":\"\\ud83e\\udeb5\",\"hut\":\"\\ud83d\\uded6\",\"houses\":\"\\ud83c\\udfd8\\ufe0f\",\"derelict_house\":\"\\ud83c\\udfda\\ufe0f\",\"house\":\"\\ud83c\\udfe0\",\"house_with_garden\":\"\\ud83c\\udfe1\",\"office\":\"\\ud83c\\udfe2\",\"post_office\":\"\\ud83c\\udfe3\",\"european_post_office\":\"\\ud83c\\udfe4\",\"hospital\":\"\\ud83c\\udfe5\",\"bank\":\"\\ud83c\\udfe6\",\"hotel\":\"\\ud83c\\udfe8\",\"love_hotel\":\"\\ud83c\\udfe9\",\"convenience_store\":\"\\ud83c\\udfea\",\"school\":\"\\ud83c\\udfeb\",\"department_store\":\"\\ud83c\\udfec\",\"factory\":\"\\ud83c\\udfed\",\"japanese_castle\":\"\\ud83c\\udfef\",\"european_castle\":\"\\ud83c\\udff0\",\"wedding\":\"\\ud83d\\udc92\",\"tokyo_tower\":\"\\ud83d\\uddfc\",\"statue_of_liberty\":\"\\ud83d\\uddfd\",\"church\":\"\\u26ea\",\"mosque\":\"\\ud83d\\udd4c\",\"hindu_temple\":\"\\ud83d\\uded5\",\"synagogue\":\"\\ud83d\\udd4d\",\"shinto_shrine\":\"\\u26e9\\ufe0f\",\"kaaba\":\"\\ud83d\\udd4b\",\"fountain\":\"\\u26f2\",\"tent\":\"\\u26fa\",\"foggy\":\"\\ud83c\\udf01\",\"night_with_stars\":\"\\ud83c\\udf03\",\"cityscape\":\"\\ud83c\\udfd9\\ufe0f\",\"sunrise_over_mountains\":\"\\ud83c\\udf04\",\"sunrise\":\"\\ud83c\\udf05\",\"city_sunset\":\"\\ud83c\\udf06\",\"city_sunrise\":\"\\ud83c\\udf07\",\"bridge_at_night\":\"\\ud83c\\udf09\",\"hotsprings\":\"\\u2668\\ufe0f\",\"carousel_horse\":\"\\ud83c\\udfa0\",\"ferris_wheel\":\"\\ud83c\\udfa1\",\"roller_coaster\":\"\\ud83c\\udfa2\",\"barber\":\"\\ud83d\\udc88\",\"circus_tent\":\"\\ud83c\\udfaa\",\"steam_locomotive\":\"\\ud83d\\ude82\",\"railway_car\":\"\\ud83d\\ude83\",\"bullettrain_side\":\"\\ud83d\\ude84\",\"bullettrain_front\":\"\\ud83d\\ude85\",\"train2\":\"\\ud83d\\ude86\",\"metro\":\"\\ud83d\\ude87\",\"light_rail\":\"\\ud83d\\ude88\",\"station\":\"\\ud83d\\ude89\",\"tram\":\"\\ud83d\\ude8a\",\"monorail\":\"\\ud83d\\ude9d\",\"mountain_railway\":\"\\ud83d\\ude9e\",\"train\":\"\\ud83d\\ude8b\",\"bus\":\"\\ud83d\\ude8c\",\"oncoming_bus\":\"\\ud83d\\ude8d\",\"trolleybus\":\"\\ud83d\\ude8e\",\"minibus\":\"\\ud83d\\ude90\",\"ambulance\":\"\\ud83d\\ude91\",\"fire_engine\":\"\\ud83d\\ude92\",\"police_car\":\"\\ud83d\\ude93\",\"oncoming_police_car\":\"\\ud83d\\ude94\",\"taxi\":\"\\ud83d\\ude95\",\"oncoming_taxi\":\"\\ud83d\\ude96\",\"car\":\"\\ud83d\\ude97\",\"red_car\":\"\\ud83d\\ude97\",\"oncoming_automobile\":\"\\ud83d\\ude98\",\"blue_car\":\"\\ud83d\\ude99\",\"pickup_truck\":\"\\ud83d\\udefb\",\"truck\":\"\\ud83d\\ude9a\",\"articulated_lorry\":\"\\ud83d\\ude9b\",\"tractor\":\"\\ud83d\\ude9c\",\"racing_car\":\"\\ud83c\\udfce\\ufe0f\",\"motorcycle\":\"\\ud83c\\udfcd\\ufe0f\",\"motor_scooter\":\"\\ud83d\\udef5\",\"manual_wheelchair\":\"\\ud83e\\uddbd\",\"motorized_wheelchair\":\"\\ud83e\\uddbc\",\"auto_rickshaw\":\"\\ud83d\\udefa\",\"bike\":\"\\ud83d\\udeb2\",\"kick_scooter\":\"\\ud83d\\udef4\",\"skateboard\":\"\\ud83d\\udef9\",\"roller_skate\":\"\\ud83d\\udefc\",\"busstop\":\"\\ud83d\\ude8f\",\"motorway\":\"\\ud83d\\udee3\\ufe0f\",\"railway_track\":\"\\ud83d\\udee4\\ufe0f\",\"oil_drum\":\"\\ud83d\\udee2\\ufe0f\",\"fuelpump\":\"\\u26fd\",\"rotating_light\":\"\\ud83d\\udea8\",\"traffic_light\":\"\\ud83d\\udea5\",\"vertical_traffic_light\":\"\\ud83d\\udea6\",\"stop_sign\":\"\\ud83d\\uded1\",\"construction\":\"\\ud83d\\udea7\",\"anchor\":\"\\u2693\",\"boat\":\"\\u26f5\",\"sailboat\":\"\\u26f5\",\"canoe\":\"\\ud83d\\udef6\",\"speedboat\":\"\\ud83d\\udea4\",\"passenger_ship\":\"\\ud83d\\udef3\\ufe0f\",\"ferry\":\"\\u26f4\\ufe0f\",\"motor_boat\":\"\\ud83d\\udee5\\ufe0f\",\"ship\":\"\\ud83d\\udea2\",\"airplane\":\"\\u2708\\ufe0f\",\"small_airplane\":\"\\ud83d\\udee9\\ufe0f\",\"flight_departure\":\"\\ud83d\\udeeb\",\"flight_arrival\":\"\\ud83d\\udeec\",\"parachute\":\"\\ud83e\\ude82\",\"seat\":\"\\ud83d\\udcba\",\"helicopter\":\"\\ud83d\\ude81\",\"suspension_railway\":\"\\ud83d\\ude9f\",\"mountain_cableway\":\"\\ud83d\\udea0\",\"aerial_tramway\":\"\\ud83d\\udea1\",\"artificial_satellite\":\"\\ud83d\\udef0\\ufe0f\",\"rocket\":\"\\ud83d\\ude80\",\"flying_saucer\":\"\\ud83d\\udef8\",\"bellhop_bell\":\"\\ud83d\\udece\\ufe0f\",\"luggage\":\"\\ud83e\\uddf3\",\"hourglass\":\"\\u231b\",\"hourglass_flowing_sand\":\"\\u23f3\",\"watch\":\"\\u231a\",\"alarm_clock\":\"\\u23f0\",\"stopwatch\":\"\\u23f1\\ufe0f\",\"timer_clock\":\"\\u23f2\\ufe0f\",\"mantelpiece_clock\":\"\\ud83d\\udd70\\ufe0f\",\"clock12\":\"\\ud83d\\udd5b\",\"clock1230\":\"\\ud83d\\udd67\",\"clock1\":\"\\ud83d\\udd50\",\"clock130\":\"\\ud83d\\udd5c\",\"clock2\":\"\\ud83d\\udd51\",\"clock230\":\"\\ud83d\\udd5d\",\"clock3\":\"\\ud83d\\udd52\",\"clock330\":\"\\ud83d\\udd5e\",\"clock4\":\"\\ud83d\\udd53\",\"clock430\":\"\\ud83d\\udd5f\",\"clock5\":\"\\ud83d\\udd54\",\"clock530\":\"\\ud83d\\udd60\",\"clock6\":\"\\ud83d\\udd55\",\"clock630\":\"\\ud83d\\udd61\",\"clock7\":\"\\ud83d\\udd56\",\"clock730\":\"\\ud83d\\udd62\",\"clock8\":\"\\ud83d\\udd57\",\"clock830\":\"\\ud83d\\udd63\",\"clock9\":\"\\ud83d\\udd58\",\"clock930\":\"\\ud83d\\udd64\",\"clock10\":\"\\ud83d\\udd59\",\"clock1030\":\"\\ud83d\\udd65\",\"clock11\":\"\\ud83d\\udd5a\",\"clock1130\":\"\\ud83d\\udd66\",\"new_moon\":\"\\ud83c\\udf11\",\"waxing_crescent_moon\":\"\\ud83c\\udf12\",\"first_quarter_moon\":\"\\ud83c\\udf13\",\"moon\":\"\\ud83c\\udf14\",\"waxing_gibbous_moon\":\"\\ud83c\\udf14\",\"full_moon\":\"\\ud83c\\udf15\",\"waning_gibbous_moon\":\"\\ud83c\\udf16\",\"last_quarter_moon\":\"\\ud83c\\udf17\",\"waning_crescent_moon\":\"\\ud83c\\udf18\",\"crescent_moon\":\"\\ud83c\\udf19\",\"new_moon_with_face\":\"\\ud83c\\udf1a\",\"first_quarter_moon_with_face\":\"\\ud83c\\udf1b\",\"last_quarter_moon_with_face\":\"\\ud83c\\udf1c\",\"thermometer\":\"\\ud83c\\udf21\\ufe0f\",\"sunny\":\"\\u2600\\ufe0f\",\"full_moon_with_face\":\"\\ud83c\\udf1d\",\"sun_with_face\":\"\\ud83c\\udf1e\",\"ringed_planet\":\"\\ud83e\\ude90\",\"star\":\"\\u2b50\",\"star2\":\"\\ud83c\\udf1f\",\"stars\":\"\\ud83c\\udf20\",\"milky_way\":\"\\ud83c\\udf0c\",\"cloud\":\"\\u2601\\ufe0f\",\"partly_sunny\":\"\\u26c5\",\"cloud_with_lightning_and_rain\":\"\\u26c8\\ufe0f\",\"sun_behind_small_cloud\":\"\\ud83c\\udf24\\ufe0f\",\"sun_behind_large_cloud\":\"\\ud83c\\udf25\\ufe0f\",\"sun_behind_rain_cloud\":\"\\ud83c\\udf26\\ufe0f\",\"cloud_with_rain\":\"\\ud83c\\udf27\\ufe0f\",\"cloud_with_snow\":\"\\ud83c\\udf28\\ufe0f\",\"cloud_with_lightning\":\"\\ud83c\\udf29\\ufe0f\",\"tornado\":\"\\ud83c\\udf2a\\ufe0f\",\"fog\":\"\\ud83c\\udf2b\\ufe0f\",\"wind_face\":\"\\ud83c\\udf2c\\ufe0f\",\"cyclone\":\"\\ud83c\\udf00\",\"rainbow\":\"\\ud83c\\udf08\",\"closed_umbrella\":\"\\ud83c\\udf02\",\"open_umbrella\":\"\\u2602\\ufe0f\",\"umbrella\":\"\\u2614\",\"parasol_on_ground\":\"\\u26f1\\ufe0f\",\"zap\":\"\\u26a1\",\"snowflake\":\"\\u2744\\ufe0f\",\"snowman_with_snow\":\"\\u2603\\ufe0f\",\"snowman\":\"\\u26c4\",\"comet\":\"\\u2604\\ufe0f\",\"fire\":\"\\ud83d\\udd25\",\"droplet\":\"\\ud83d\\udca7\",\"ocean\":\"\\ud83c\\udf0a\",\"jack_o_lantern\":\"\\ud83c\\udf83\",\"christmas_tree\":\"\\ud83c\\udf84\",\"fireworks\":\"\\ud83c\\udf86\",\"sparkler\":\"\\ud83c\\udf87\",\"firecracker\":\"\\ud83e\\udde8\",\"sparkles\":\"\\u2728\",\"balloon\":\"\\ud83c\\udf88\",\"tada\":\"\\ud83c\\udf89\",\"confetti_ball\":\"\\ud83c\\udf8a\",\"tanabata_tree\":\"\\ud83c\\udf8b\",\"bamboo\":\"\\ud83c\\udf8d\",\"dolls\":\"\\ud83c\\udf8e\",\"flags\":\"\\ud83c\\udf8f\",\"wind_chime\":\"\\ud83c\\udf90\",\"rice_scene\":\"\\ud83c\\udf91\",\"red_envelope\":\"\\ud83e\\udde7\",\"ribbon\":\"\\ud83c\\udf80\",\"gift\":\"\\ud83c\\udf81\",\"reminder_ribbon\":\"\\ud83c\\udf97\\ufe0f\",\"tickets\":\"\\ud83c\\udf9f\\ufe0f\",\"ticket\":\"\\ud83c\\udfab\",\"medal_military\":\"\\ud83c\\udf96\\ufe0f\",\"trophy\":\"\\ud83c\\udfc6\",\"medal_sports\":\"\\ud83c\\udfc5\",\"1st_place_medal\":\"\\ud83e\\udd47\",\"2nd_place_medal\":\"\\ud83e\\udd48\",\"3rd_place_medal\":\"\\ud83e\\udd49\",\"soccer\":\"\\u26bd\",\"baseball\":\"\\u26be\",\"softball\":\"\\ud83e\\udd4e\",\"basketball\":\"\\ud83c\\udfc0\",\"volleyball\":\"\\ud83c\\udfd0\",\"football\":\"\\ud83c\\udfc8\",\"rugby_football\":\"\\ud83c\\udfc9\",\"tennis\":\"\\ud83c\\udfbe\",\"flying_disc\":\"\\ud83e\\udd4f\",\"bowling\":\"\\ud83c\\udfb3\",\"cricket_game\":\"\\ud83c\\udfcf\",\"field_hockey\":\"\\ud83c\\udfd1\",\"ice_hockey\":\"\\ud83c\\udfd2\",\"lacrosse\":\"\\ud83e\\udd4d\",\"ping_pong\":\"\\ud83c\\udfd3\",\"badminton\":\"\\ud83c\\udff8\",\"boxing_glove\":\"\\ud83e\\udd4a\",\"martial_arts_uniform\":\"\\ud83e\\udd4b\",\"goal_net\":\"\\ud83e\\udd45\",\"golf\":\"\\u26f3\",\"ice_skate\":\"\\u26f8\\ufe0f\",\"fishing_pole_and_fish\":\"\\ud83c\\udfa3\",\"diving_mask\":\"\\ud83e\\udd3f\",\"running_shirt_with_sash\":\"\\ud83c\\udfbd\",\"ski\":\"\\ud83c\\udfbf\",\"sled\":\"\\ud83d\\udef7\",\"curling_stone\":\"\\ud83e\\udd4c\",\"dart\":\"\\ud83c\\udfaf\",\"yo_yo\":\"\\ud83e\\ude80\",\"kite\":\"\\ud83e\\ude81\",\"8ball\":\"\\ud83c\\udfb1\",\"crystal_ball\":\"\\ud83d\\udd2e\",\"magic_wand\":\"\\ud83e\\ude84\",\"nazar_amulet\":\"\\ud83e\\uddff\",\"video_game\":\"\\ud83c\\udfae\",\"joystick\":\"\\ud83d\\udd79\\ufe0f\",\"slot_machine\":\"\\ud83c\\udfb0\",\"game_die\":\"\\ud83c\\udfb2\",\"jigsaw\":\"\\ud83e\\udde9\",\"teddy_bear\":\"\\ud83e\\uddf8\",\"pinata\":\"\\ud83e\\ude85\",\"nesting_dolls\":\"\\ud83e\\ude86\",\"spades\":\"\\u2660\\ufe0f\",\"hearts\":\"\\u2665\\ufe0f\",\"diamonds\":\"\\u2666\\ufe0f\",\"clubs\":\"\\u2663\\ufe0f\",\"chess_pawn\":\"\\u265f\\ufe0f\",\"black_joker\":\"\\ud83c\\udccf\",\"mahjong\":\"\\ud83c\\udc04\",\"flower_playing_cards\":\"\\ud83c\\udfb4\",\"performing_arts\":\"\\ud83c\\udfad\",\"framed_picture\":\"\\ud83d\\uddbc\\ufe0f\",\"art\":\"\\ud83c\\udfa8\",\"thread\":\"\\ud83e\\uddf5\",\"sewing_needle\":\"\\ud83e\\udea1\",\"yarn\":\"\\ud83e\\uddf6\",\"knot\":\"\\ud83e\\udea2\",\"eyeglasses\":\"\\ud83d\\udc53\",\"dark_sunglasses\":\"\\ud83d\\udd76\\ufe0f\",\"goggles\":\"\\ud83e\\udd7d\",\"lab_coat\":\"\\ud83e\\udd7c\",\"safety_vest\":\"\\ud83e\\uddba\",\"necktie\":\"\\ud83d\\udc54\",\"shirt\":\"\\ud83d\\udc55\",\"tshirt\":\"\\ud83d\\udc55\",\"jeans\":\"\\ud83d\\udc56\",\"scarf\":\"\\ud83e\\udde3\",\"gloves\":\"\\ud83e\\udde4\",\"coat\":\"\\ud83e\\udde5\",\"socks\":\"\\ud83e\\udde6\",\"dress\":\"\\ud83d\\udc57\",\"kimono\":\"\\ud83d\\udc58\",\"sari\":\"\\ud83e\\udd7b\",\"one_piece_swimsuit\":\"\\ud83e\\ude71\",\"swim_brief\":\"\\ud83e\\ude72\",\"shorts\":\"\\ud83e\\ude73\",\"bikini\":\"\\ud83d\\udc59\",\"womans_clothes\":\"\\ud83d\\udc5a\",\"purse\":\"\\ud83d\\udc5b\",\"handbag\":\"\\ud83d\\udc5c\",\"pouch\":\"\\ud83d\\udc5d\",\"shopping\":\"\\ud83d\\udecd\\ufe0f\",\"school_satchel\":\"\\ud83c\\udf92\",\"thong_sandal\":\"\\ud83e\\ude74\",\"mans_shoe\":\"\\ud83d\\udc5e\",\"shoe\":\"\\ud83d\\udc5e\",\"athletic_shoe\":\"\\ud83d\\udc5f\",\"hiking_boot\":\"\\ud83e\\udd7e\",\"flat_shoe\":\"\\ud83e\\udd7f\",\"high_heel\":\"\\ud83d\\udc60\",\"sandal\":\"\\ud83d\\udc61\",\"ballet_shoes\":\"\\ud83e\\ude70\",\"boot\":\"\\ud83d\\udc62\",\"crown\":\"\\ud83d\\udc51\",\"womans_hat\":\"\\ud83d\\udc52\",\"tophat\":\"\\ud83c\\udfa9\",\"mortar_board\":\"\\ud83c\\udf93\",\"billed_cap\":\"\\ud83e\\udde2\",\"military_helmet\":\"\\ud83e\\ude96\",\"rescue_worker_helmet\":\"\\u26d1\\ufe0f\",\"prayer_beads\":\"\\ud83d\\udcff\",\"lipstick\":\"\\ud83d\\udc84\",\"ring\":\"\\ud83d\\udc8d\",\"gem\":\"\\ud83d\\udc8e\",\"mute\":\"\\ud83d\\udd07\",\"speaker\":\"\\ud83d\\udd08\",\"sound\":\"\\ud83d\\udd09\",\"loud_sound\":\"\\ud83d\\udd0a\",\"loudspeaker\":\"\\ud83d\\udce2\",\"mega\":\"\\ud83d\\udce3\",\"postal_horn\":\"\\ud83d\\udcef\",\"bell\":\"\\ud83d\\udd14\",\"no_bell\":\"\\ud83d\\udd15\",\"musical_score\":\"\\ud83c\\udfbc\",\"musical_note\":\"\\ud83c\\udfb5\",\"notes\":\"\\ud83c\\udfb6\",\"studio_microphone\":\"\\ud83c\\udf99\\ufe0f\",\"level_slider\":\"\\ud83c\\udf9a\\ufe0f\",\"control_knobs\":\"\\ud83c\\udf9b\\ufe0f\",\"microphone\":\"\\ud83c\\udfa4\",\"headphones\":\"\\ud83c\\udfa7\",\"radio\":\"\\ud83d\\udcfb\",\"saxophone\":\"\\ud83c\\udfb7\",\"accordion\":\"\\ud83e\\ude97\",\"guitar\":\"\\ud83c\\udfb8\",\"musical_keyboard\":\"\\ud83c\\udfb9\",\"trumpet\":\"\\ud83c\\udfba\",\"violin\":\"\\ud83c\\udfbb\",\"banjo\":\"\\ud83e\\ude95\",\"drum\":\"\\ud83e\\udd41\",\"long_drum\":\"\\ud83e\\ude98\",\"iphone\":\"\\ud83d\\udcf1\",\"calling\":\"\\ud83d\\udcf2\",\"phone\":\"\\u260e\\ufe0f\",\"telephone\":\"\\u260e\\ufe0f\",\"telephone_receiver\":\"\\ud83d\\udcde\",\"pager\":\"\\ud83d\\udcdf\",\"fax\":\"\\ud83d\\udce0\",\"battery\":\"\\ud83d\\udd0b\",\"electric_plug\":\"\\ud83d\\udd0c\",\"computer\":\"\\ud83d\\udcbb\",\"desktop_computer\":\"\\ud83d\\udda5\\ufe0f\",\"printer\":\"\\ud83d\\udda8\\ufe0f\",\"keyboard\":\"\\u2328\\ufe0f\",\"computer_mouse\":\"\\ud83d\\uddb1\\ufe0f\",\"trackball\":\"\\ud83d\\uddb2\\ufe0f\",\"minidisc\":\"\\ud83d\\udcbd\",\"floppy_disk\":\"\\ud83d\\udcbe\",\"cd\":\"\\ud83d\\udcbf\",\"dvd\":\"\\ud83d\\udcc0\",\"abacus\":\"\\ud83e\\uddee\",\"movie_camera\":\"\\ud83c\\udfa5\",\"film_strip\":\"\\ud83c\\udf9e\\ufe0f\",\"film_projector\":\"\\ud83d\\udcfd\\ufe0f\",\"clapper\":\"\\ud83c\\udfac\",\"tv\":\"\\ud83d\\udcfa\",\"camera\":\"\\ud83d\\udcf7\",\"camera_flash\":\"\\ud83d\\udcf8\",\"video_camera\":\"\\ud83d\\udcf9\",\"vhs\":\"\\ud83d\\udcfc\",\"mag\":\"\\ud83d\\udd0d\",\"mag_right\":\"\\ud83d\\udd0e\",\"candle\":\"\\ud83d\\udd6f\\ufe0f\",\"bulb\":\"\\ud83d\\udca1\",\"flashlight\":\"\\ud83d\\udd26\",\"izakaya_lantern\":\"\\ud83c\\udfee\",\"lantern\":\"\\ud83c\\udfee\",\"diya_lamp\":\"\\ud83e\\ude94\",\"notebook_with_decorative_cover\":\"\\ud83d\\udcd4\",\"closed_book\":\"\\ud83d\\udcd5\",\"book\":\"\\ud83d\\udcd6\",\"open_book\":\"\\ud83d\\udcd6\",\"green_book\":\"\\ud83d\\udcd7\",\"blue_book\":\"\\ud83d\\udcd8\",\"orange_book\":\"\\ud83d\\udcd9\",\"books\":\"\\ud83d\\udcda\",\"notebook\":\"\\ud83d\\udcd3\",\"ledger\":\"\\ud83d\\udcd2\",\"page_with_curl\":\"\\ud83d\\udcc3\",\"scroll\":\"\\ud83d\\udcdc\",\"page_facing_up\":\"\\ud83d\\udcc4\",\"newspaper\":\"\\ud83d\\udcf0\",\"newspaper_roll\":\"\\ud83d\\uddde\\ufe0f\",\"bookmark_tabs\":\"\\ud83d\\udcd1\",\"bookmark\":\"\\ud83d\\udd16\",\"label\":\"\\ud83c\\udff7\\ufe0f\",\"moneybag\":\"\\ud83d\\udcb0\",\"coin\":\"\\ud83e\\ude99\",\"yen\":\"\\ud83d\\udcb4\",\"dollar\":\"\\ud83d\\udcb5\",\"euro\":\"\\ud83d\\udcb6\",\"pound\":\"\\ud83d\\udcb7\",\"money_with_wings\":\"\\ud83d\\udcb8\",\"credit_card\":\"\\ud83d\\udcb3\",\"receipt\":\"\\ud83e\\uddfe\",\"chart\":\"\\ud83d\\udcb9\",\"envelope\":\"\\u2709\\ufe0f\",\"email\":\"\\ud83d\\udce7\",\"e-mail\":\"\\ud83d\\udce7\",\"incoming_envelope\":\"\\ud83d\\udce8\",\"envelope_with_arrow\":\"\\ud83d\\udce9\",\"outbox_tray\":\"\\ud83d\\udce4\",\"inbox_tray\":\"\\ud83d\\udce5\",\"package\":\"\\ud83d\\udce6\",\"mailbox\":\"\\ud83d\\udceb\",\"mailbox_closed\":\"\\ud83d\\udcea\",\"mailbox_with_mail\":\"\\ud83d\\udcec\",\"mailbox_with_no_mail\":\"\\ud83d\\udced\",\"postbox\":\"\\ud83d\\udcee\",\"ballot_box\":\"\\ud83d\\uddf3\\ufe0f\",\"pencil2\":\"\\u270f\\ufe0f\",\"black_nib\":\"\\u2712\\ufe0f\",\"fountain_pen\":\"\\ud83d\\udd8b\\ufe0f\",\"pen\":\"\\ud83d\\udd8a\\ufe0f\",\"paintbrush\":\"\\ud83d\\udd8c\\ufe0f\",\"crayon\":\"\\ud83d\\udd8d\\ufe0f\",\"memo\":\"\\ud83d\\udcdd\",\"pencil\":\"\\ud83d\\udcdd\",\"briefcase\":\"\\ud83d\\udcbc\",\"file_folder\":\"\\ud83d\\udcc1\",\"open_file_folder\":\"\\ud83d\\udcc2\",\"card_index_dividers\":\"\\ud83d\\uddc2\\ufe0f\",\"date\":\"\\ud83d\\udcc5\",\"calendar\":\"\\ud83d\\udcc6\",\"spiral_notepad\":\"\\ud83d\\uddd2\\ufe0f\",\"spiral_calendar\":\"\\ud83d\\uddd3\\ufe0f\",\"card_index\":\"\\ud83d\\udcc7\",\"chart_with_upwards_trend\":\"\\ud83d\\udcc8\",\"chart_with_downwards_trend\":\"\\ud83d\\udcc9\",\"bar_chart\":\"\\ud83d\\udcca\",\"clipboard\":\"\\ud83d\\udccb\",\"pushpin\":\"\\ud83d\\udccc\",\"round_pushpin\":\"\\ud83d\\udccd\",\"paperclip\":\"\\ud83d\\udcce\",\"paperclips\":\"\\ud83d\\udd87\\ufe0f\",\"straight_ruler\":\"\\ud83d\\udccf\",\"triangular_ruler\":\"\\ud83d\\udcd0\",\"scissors\":\"\\u2702\\ufe0f\",\"card_file_box\":\"\\ud83d\\uddc3\\ufe0f\",\"file_cabinet\":\"\\ud83d\\uddc4\\ufe0f\",\"wastebasket\":\"\\ud83d\\uddd1\\ufe0f\",\"lock\":\"\\ud83d\\udd12\",\"unlock\":\"\\ud83d\\udd13\",\"lock_with_ink_pen\":\"\\ud83d\\udd0f\",\"closed_lock_with_key\":\"\\ud83d\\udd10\",\"key\":\"\\ud83d\\udd11\",\"old_key\":\"\\ud83d\\udddd\\ufe0f\",\"hammer\":\"\\ud83d\\udd28\",\"axe\":\"\\ud83e\\ude93\",\"pick\":\"\\u26cf\\ufe0f\",\"hammer_and_pick\":\"\\u2692\\ufe0f\",\"hammer_and_wrench\":\"\\ud83d\\udee0\\ufe0f\",\"dagger\":\"\\ud83d\\udde1\\ufe0f\",\"crossed_swords\":\"\\u2694\\ufe0f\",\"gun\":\"\\ud83d\\udd2b\",\"boomerang\":\"\\ud83e\\ude83\",\"bow_and_arrow\":\"\\ud83c\\udff9\",\"shield\":\"\\ud83d\\udee1\\ufe0f\",\"carpentry_saw\":\"\\ud83e\\ude9a\",\"wrench\":\"\\ud83d\\udd27\",\"screwdriver\":\"\\ud83e\\ude9b\",\"nut_and_bolt\":\"\\ud83d\\udd29\",\"gear\":\"\\u2699\\ufe0f\",\"clamp\":\"\\ud83d\\udddc\\ufe0f\",\"balance_scale\":\"\\u2696\\ufe0f\",\"probing_cane\":\"\\ud83e\\uddaf\",\"link\":\"\\ud83d\\udd17\",\"chains\":\"\\u26d3\\ufe0f\",\"hook\":\"\\ud83e\\ude9d\",\"toolbox\":\"\\ud83e\\uddf0\",\"magnet\":\"\\ud83e\\uddf2\",\"ladder\":\"\\ud83e\\ude9c\",\"alembic\":\"\\u2697\\ufe0f\",\"test_tube\":\"\\ud83e\\uddea\",\"petri_dish\":\"\\ud83e\\uddeb\",\"dna\":\"\\ud83e\\uddec\",\"microscope\":\"\\ud83d\\udd2c\",\"telescope\":\"\\ud83d\\udd2d\",\"satellite\":\"\\ud83d\\udce1\",\"syringe\":\"\\ud83d\\udc89\",\"drop_of_blood\":\"\\ud83e\\ude78\",\"pill\":\"\\ud83d\\udc8a\",\"adhesive_bandage\":\"\\ud83e\\ude79\",\"stethoscope\":\"\\ud83e\\ude7a\",\"door\":\"\\ud83d\\udeaa\",\"elevator\":\"\\ud83d\\uded7\",\"mirror\":\"\\ud83e\\ude9e\",\"window\":\"\\ud83e\\ude9f\",\"bed\":\"\\ud83d\\udecf\\ufe0f\",\"couch_and_lamp\":\"\\ud83d\\udecb\\ufe0f\",\"chair\":\"\\ud83e\\ude91\",\"toilet\":\"\\ud83d\\udebd\",\"plunger\":\"\\ud83e\\udea0\",\"shower\":\"\\ud83d\\udebf\",\"bathtub\":\"\\ud83d\\udec1\",\"mouse_trap\":\"\\ud83e\\udea4\",\"razor\":\"\\ud83e\\ude92\",\"lotion_bottle\":\"\\ud83e\\uddf4\",\"safety_pin\":\"\\ud83e\\uddf7\",\"broom\":\"\\ud83e\\uddf9\",\"basket\":\"\\ud83e\\uddfa\",\"roll_of_paper\":\"\\ud83e\\uddfb\",\"bucket\":\"\\ud83e\\udea3\",\"soap\":\"\\ud83e\\uddfc\",\"toothbrush\":\"\\ud83e\\udea5\",\"sponge\":\"\\ud83e\\uddfd\",\"fire_extinguisher\":\"\\ud83e\\uddef\",\"shopping_cart\":\"\\ud83d\\uded2\",\"smoking\":\"\\ud83d\\udeac\",\"coffin\":\"\\u26b0\\ufe0f\",\"headstone\":\"\\ud83e\\udea6\",\"funeral_urn\":\"\\u26b1\\ufe0f\",\"moyai\":\"\\ud83d\\uddff\",\"placard\":\"\\ud83e\\udea7\",\"atm\":\"\\ud83c\\udfe7\",\"put_litter_in_its_place\":\"\\ud83d\\udeae\",\"potable_water\":\"\\ud83d\\udeb0\",\"wheelchair\":\"\\u267f\",\"mens\":\"\\ud83d\\udeb9\",\"womens\":\"\\ud83d\\udeba\",\"restroom\":\"\\ud83d\\udebb\",\"baby_symbol\":\"\\ud83d\\udebc\",\"wc\":\"\\ud83d\\udebe\",\"passport_control\":\"\\ud83d\\udec2\",\"customs\":\"\\ud83d\\udec3\",\"baggage_claim\":\"\\ud83d\\udec4\",\"left_luggage\":\"\\ud83d\\udec5\",\"warning\":\"\\u26a0\\ufe0f\",\"children_crossing\":\"\\ud83d\\udeb8\",\"no_entry\":\"\\u26d4\",\"no_entry_sign\":\"\\ud83d\\udeab\",\"no_bicycles\":\"\\ud83d\\udeb3\",\"no_smoking\":\"\\ud83d\\udead\",\"do_not_litter\":\"\\ud83d\\udeaf\",\"non-potable_water\":\"\\ud83d\\udeb1\",\"no_pedestrians\":\"\\ud83d\\udeb7\",\"no_mobile_phones\":\"\\ud83d\\udcf5\",\"underage\":\"\\ud83d\\udd1e\",\"radioactive\":\"\\u2622\\ufe0f\",\"biohazard\":\"\\u2623\\ufe0f\",\"arrow_up\":\"\\u2b06\\ufe0f\",\"arrow_upper_right\":\"\\u2197\\ufe0f\",\"arrow_right\":\"\\u27a1\\ufe0f\",\"arrow_lower_right\":\"\\u2198\\ufe0f\",\"arrow_down\":\"\\u2b07\\ufe0f\",\"arrow_lower_left\":\"\\u2199\\ufe0f\",\"arrow_left\":\"\\u2b05\\ufe0f\",\"arrow_upper_left\":\"\\u2196\\ufe0f\",\"arrow_up_down\":\"\\u2195\\ufe0f\",\"left_right_arrow\":\"\\u2194\\ufe0f\",\"leftwards_arrow_with_hook\":\"\\u21a9\\ufe0f\",\"arrow_right_hook\":\"\\u21aa\\ufe0f\",\"arrow_heading_up\":\"\\u2934\\ufe0f\",\"arrow_heading_down\":\"\\u2935\\ufe0f\",\"arrows_clockwise\":\"\\ud83d\\udd03\",\"arrows_counterclockwise\":\"\\ud83d\\udd04\",\"back\":\"\\ud83d\\udd19\",\"end\":\"\\ud83d\\udd1a\",\"on\":\"\\ud83d\\udd1b\",\"soon\":\"\\ud83d\\udd1c\",\"top\":\"\\ud83d\\udd1d\",\"place_of_worship\":\"\\ud83d\\uded0\",\"atom_symbol\":\"\\u269b\\ufe0f\",\"om\":\"\\ud83d\\udd49\\ufe0f\",\"star_of_david\":\"\\u2721\\ufe0f\",\"wheel_of_dharma\":\"\\u2638\\ufe0f\",\"yin_yang\":\"\\u262f\\ufe0f\",\"latin_cross\":\"\\u271d\\ufe0f\",\"orthodox_cross\":\"\\u2626\\ufe0f\",\"star_and_crescent\":\"\\u262a\\ufe0f\",\"peace_symbol\":\"\\u262e\\ufe0f\",\"menorah\":\"\\ud83d\\udd4e\",\"six_pointed_star\":\"\\ud83d\\udd2f\",\"aries\":\"\\u2648\",\"taurus\":\"\\u2649\",\"gemini\":\"\\u264a\",\"cancer\":\"\\u264b\",\"leo\":\"\\u264c\",\"virgo\":\"\\u264d\",\"libra\":\"\\u264e\",\"scorpius\":\"\\u264f\",\"sagittarius\":\"\\u2650\",\"capricorn\":\"\\u2651\",\"aquarius\":\"\\u2652\",\"pisces\":\"\\u2653\",\"ophiuchus\":\"\\u26ce\",\"twisted_rightwards_arrows\":\"\\ud83d\\udd00\",\"repeat\":\"\\ud83d\\udd01\",\"repeat_one\":\"\\ud83d\\udd02\",\"arrow_forward\":\"\\u25b6\\ufe0f\",\"fast_forward\":\"\\u23e9\",\"next_track_button\":\"\\u23ed\\ufe0f\",\"play_or_pause_button\":\"\\u23ef\\ufe0f\",\"arrow_backward\":\"\\u25c0\\ufe0f\",\"rewind\":\"\\u23ea\",\"previous_track_button\":\"\\u23ee\\ufe0f\",\"arrow_up_small\":\"\\ud83d\\udd3c\",\"arrow_double_up\":\"\\u23eb\",\"arrow_down_small\":\"\\ud83d\\udd3d\",\"arrow_double_down\":\"\\u23ec\",\"pause_button\":\"\\u23f8\\ufe0f\",\"stop_button\":\"\\u23f9\\ufe0f\",\"record_button\":\"\\u23fa\\ufe0f\",\"eject_button\":\"\\u23cf\\ufe0f\",\"cinema\":\"\\ud83c\\udfa6\",\"low_brightness\":\"\\ud83d\\udd05\",\"high_brightness\":\"\\ud83d\\udd06\",\"signal_strength\":\"\\ud83d\\udcf6\",\"vibration_mode\":\"\\ud83d\\udcf3\",\"mobile_phone_off\":\"\\ud83d\\udcf4\",\"female_sign\":\"\\u2640\\ufe0f\",\"male_sign\":\"\\u2642\\ufe0f\",\"transgender_symbol\":\"\\u26a7\\ufe0f\",\"heavy_multiplication_x\":\"\\u2716\\ufe0f\",\"heavy_plus_sign\":\"\\u2795\",\"heavy_minus_sign\":\"\\u2796\",\"heavy_division_sign\":\"\\u2797\",\"infinity\":\"\\u267e\\ufe0f\",\"bangbang\":\"\\u203c\\ufe0f\",\"interrobang\":\"\\u2049\\ufe0f\",\"question\":\"\\u2753\",\"grey_question\":\"\\u2754\",\"grey_exclamation\":\"\\u2755\",\"exclamation\":\"\\u2757\",\"heavy_exclamation_mark\":\"\\u2757\",\"wavy_dash\":\"\\u3030\\ufe0f\",\"currency_exchange\":\"\\ud83d\\udcb1\",\"heavy_dollar_sign\":\"\\ud83d\\udcb2\",\"medical_symbol\":\"\\u2695\\ufe0f\",\"recycle\":\"\\u267b\\ufe0f\",\"fleur_de_lis\":\"\\u269c\\ufe0f\",\"trident\":\"\\ud83d\\udd31\",\"name_badge\":\"\\ud83d\\udcdb\",\"beginner\":\"\\ud83d\\udd30\",\"o\":\"\\u2b55\",\"white_check_mark\":\"\\u2705\",\"ballot_box_with_check\":\"\\u2611\\ufe0f\",\"heavy_check_mark\":\"\\u2714\\ufe0f\",\"x\":\"\\u274c\",\"negative_squared_cross_mark\":\"\\u274e\",\"curly_loop\":\"\\u27b0\",\"loop\":\"\\u27bf\",\"part_alternation_mark\":\"\\u303d\\ufe0f\",\"eight_spoked_asterisk\":\"\\u2733\\ufe0f\",\"eight_pointed_black_star\":\"\\u2734\\ufe0f\",\"sparkle\":\"\\u2747\\ufe0f\",\"copyright\":\"\\xa9\\ufe0f\",\"registered\":\"\\xae\\ufe0f\",\"tm\":\"\\u2122\\ufe0f\",\"hash\":\"#\\ufe0f\\u20e3\",\"asterisk\":\"*\\ufe0f\\u20e3\",\"zero\":\"0\\ufe0f\\u20e3\",\"one\":\"1\\ufe0f\\u20e3\",\"two\":\"2\\ufe0f\\u20e3\",\"three\":\"3\\ufe0f\\u20e3\",\"four\":\"4\\ufe0f\\u20e3\",\"five\":\"5\\ufe0f\\u20e3\",\"six\":\"6\\ufe0f\\u20e3\",\"seven\":\"7\\ufe0f\\u20e3\",\"eight\":\"8\\ufe0f\\u20e3\",\"nine\":\"9\\ufe0f\\u20e3\",\"keycap_ten\":\"\\ud83d\\udd1f\",\"capital_abcd\":\"\\ud83d\\udd20\",\"abcd\":\"\\ud83d\\udd21\",\"symbols\":\"\\ud83d\\udd23\",\"abc\":\"\\ud83d\\udd24\",\"a\":\"\\ud83c\\udd70\\ufe0f\",\"ab\":\"\\ud83c\\udd8e\",\"b\":\"\\ud83c\\udd71\\ufe0f\",\"cl\":\"\\ud83c\\udd91\",\"cool\":\"\\ud83c\\udd92\",\"free\":\"\\ud83c\\udd93\",\"information_source\":\"\\u2139\\ufe0f\",\"id\":\"\\ud83c\\udd94\",\"m\":\"\\u24c2\\ufe0f\",\"new\":\"\\ud83c\\udd95\",\"ng\":\"\\ud83c\\udd96\",\"o2\":\"\\ud83c\\udd7e\\ufe0f\",\"ok\":\"\\ud83c\\udd97\",\"parking\":\"\\ud83c\\udd7f\\ufe0f\",\"sos\":\"\\ud83c\\udd98\",\"up\":\"\\ud83c\\udd99\",\"vs\":\"\\ud83c\\udd9a\",\"koko\":\"\\ud83c\\ude01\",\"sa\":\"\\ud83c\\ude02\\ufe0f\",\"ideograph_advantage\":\"\\ud83c\\ude50\",\"accept\":\"\\ud83c\\ude51\",\"congratulations\":\"\\u3297\\ufe0f\",\"secret\":\"\\u3299\\ufe0f\",\"u6e80\":\"\\ud83c\\ude35\",\"red_circle\":\"\\ud83d\\udd34\",\"orange_circle\":\"\\ud83d\\udfe0\",\"yellow_circle\":\"\\ud83d\\udfe1\",\"green_circle\":\"\\ud83d\\udfe2\",\"large_blue_circle\":\"\\ud83d\\udd35\",\"purple_circle\":\"\\ud83d\\udfe3\",\"brown_circle\":\"\\ud83d\\udfe4\",\"black_circle\":\"\\u26ab\",\"white_circle\":\"\\u26aa\",\"red_square\":\"\\ud83d\\udfe5\",\"orange_square\":\"\\ud83d\\udfe7\",\"yellow_square\":\"\\ud83d\\udfe8\",\"green_square\":\"\\ud83d\\udfe9\",\"blue_square\":\"\\ud83d\\udfe6\",\"purple_square\":\"\\ud83d\\udfea\",\"brown_square\":\"\\ud83d\\udfeb\",\"black_large_square\":\"\\u2b1b\",\"white_large_square\":\"\\u2b1c\",\"black_medium_square\":\"\\u25fc\\ufe0f\",\"white_medium_square\":\"\\u25fb\\ufe0f\",\"black_medium_small_square\":\"\\u25fe\",\"white_medium_small_square\":\"\\u25fd\",\"black_small_square\":\"\\u25aa\\ufe0f\",\"white_small_square\":\"\\u25ab\\ufe0f\",\"large_orange_diamond\":\"\\ud83d\\udd36\",\"large_blue_diamond\":\"\\ud83d\\udd37\",\"small_orange_diamond\":\"\\ud83d\\udd38\",\"small_blue_diamond\":\"\\ud83d\\udd39\",\"small_red_triangle\":\"\\ud83d\\udd3a\",\"small_red_triangle_down\":\"\\ud83d\\udd3b\",\"diamond_shape_with_a_dot_inside\":\"\\ud83d\\udca0\",\"radio_button\":\"\\ud83d\\udd18\",\"white_square_button\":\"\\ud83d\\udd33\",\"black_square_button\":\"\\ud83d\\udd32\",\"checkered_flag\":\"\\ud83c\\udfc1\",\"triangular_flag_on_post\":\"\\ud83d\\udea9\",\"crossed_flags\":\"\\ud83c\\udf8c\",\"black_flag\":\"\\ud83c\\udff4\",\"white_flag\":\"\\ud83c\\udff3\\ufe0f\",\"rainbow_flag\":\"\\ud83c\\udff3\\ufe0f\\u200d\\ud83c\\udf08\",\"transgender_flag\":\"\\ud83c\\udff3\\ufe0f\\u200d\\u26a7\\ufe0f\",\"pirate_flag\":\"\\ud83c\\udff4\\u200d\\u2620\\ufe0f\",\"ascension_island\":\"\\ud83c\\udde6\\ud83c\\udde8\",\"andorra\":\"\\ud83c\\udde6\\ud83c\\udde9\",\"united_arab_emirates\":\"\\ud83c\\udde6\\ud83c\\uddea\",\"afghanistan\":\"\\ud83c\\udde6\\ud83c\\uddeb\",\"antigua_barbuda\":\"\\ud83c\\udde6\\ud83c\\uddec\",\"anguilla\":\"\\ud83c\\udde6\\ud83c\\uddee\",\"albania\":\"\\ud83c\\udde6\\ud83c\\uddf1\",\"armenia\":\"\\ud83c\\udde6\\ud83c\\uddf2\",\"angola\":\"\\ud83c\\udde6\\ud83c\\uddf4\",\"antarctica\":\"\\ud83c\\udde6\\ud83c\\uddf6\",\"argentina\":\"\\ud83c\\udde6\\ud83c\\uddf7\",\"american_samoa\":\"\\ud83c\\udde6\\ud83c\\uddf8\",\"austria\":\"\\ud83c\\udde6\\ud83c\\uddf9\",\"australia\":\"\\ud83c\\udde6\\ud83c\\uddfa\",\"aruba\":\"\\ud83c\\udde6\\ud83c\\uddfc\",\"aland_islands\":\"\\ud83c\\udde6\\ud83c\\uddfd\",\"azerbaijan\":\"\\ud83c\\udde6\\ud83c\\uddff\",\"bosnia_herzegovina\":\"\\ud83c\\udde7\\ud83c\\udde6\",\"barbados\":\"\\ud83c\\udde7\\ud83c\\udde7\",\"bangladesh\":\"\\ud83c\\udde7\\ud83c\\udde9\",\"belgium\":\"\\ud83c\\udde7\\ud83c\\uddea\",\"burkina_faso\":\"\\ud83c\\udde7\\ud83c\\uddeb\",\"bulgaria\":\"\\ud83c\\udde7\\ud83c\\uddec\",\"bahrain\":\"\\ud83c\\udde7\\ud83c\\udded\",\"burundi\":\"\\ud83c\\udde7\\ud83c\\uddee\",\"benin\":\"\\ud83c\\udde7\\ud83c\\uddef\",\"st_barthelemy\":\"\\ud83c\\udde7\\ud83c\\uddf1\",\"bermuda\":\"\\ud83c\\udde7\\ud83c\\uddf2\",\"brunei\":\"\\ud83c\\udde7\\ud83c\\uddf3\",\"bolivia\":\"\\ud83c\\udde7\\ud83c\\uddf4\",\"caribbean_netherlands\":\"\\ud83c\\udde7\\ud83c\\uddf6\",\"brazil\":\"\\ud83c\\udde7\\ud83c\\uddf7\",\"bahamas\":\"\\ud83c\\udde7\\ud83c\\uddf8\",\"bhutan\":\"\\ud83c\\udde7\\ud83c\\uddf9\",\"bouvet_island\":\"\\ud83c\\udde7\\ud83c\\uddfb\",\"botswana\":\"\\ud83c\\udde7\\ud83c\\uddfc\",\"belarus\":\"\\ud83c\\udde7\\ud83c\\uddfe\",\"belize\":\"\\ud83c\\udde7\\ud83c\\uddff\",\"canada\":\"\\ud83c\\udde8\\ud83c\\udde6\",\"cocos_islands\":\"\\ud83c\\udde8\\ud83c\\udde8\",\"congo_kinshasa\":\"\\ud83c\\udde8\\ud83c\\udde9\",\"central_african_republic\":\"\\ud83c\\udde8\\ud83c\\uddeb\",\"congo_brazzaville\":\"\\ud83c\\udde8\\ud83c\\uddec\",\"switzerland\":\"\\ud83c\\udde8\\ud83c\\udded\",\"cote_divoire\":\"\\ud83c\\udde8\\ud83c\\uddee\",\"cook_islands\":\"\\ud83c\\udde8\\ud83c\\uddf0\",\"chile\":\"\\ud83c\\udde8\\ud83c\\uddf1\",\"cameroon\":\"\\ud83c\\udde8\\ud83c\\uddf2\",\"cn\":\"\\ud83c\\udde8\\ud83c\\uddf3\",\"colombia\":\"\\ud83c\\udde8\\ud83c\\uddf4\",\"clipperton_island\":\"\\ud83c\\udde8\\ud83c\\uddf5\",\"costa_rica\":\"\\ud83c\\udde8\\ud83c\\uddf7\",\"cuba\":\"\\ud83c\\udde8\\ud83c\\uddfa\",\"cape_verde\":\"\\ud83c\\udde8\\ud83c\\uddfb\",\"curacao\":\"\\ud83c\\udde8\\ud83c\\uddfc\",\"christmas_island\":\"\\ud83c\\udde8\\ud83c\\uddfd\",\"cyprus\":\"\\ud83c\\udde8\\ud83c\\uddfe\",\"czech_republic\":\"\\ud83c\\udde8\\ud83c\\uddff\",\"de\":\"\\ud83c\\udde9\\ud83c\\uddea\",\"diego_garcia\":\"\\ud83c\\udde9\\ud83c\\uddec\",\"djibouti\":\"\\ud83c\\udde9\\ud83c\\uddef\",\"denmark\":\"\\ud83c\\udde9\\ud83c\\uddf0\",\"dominica\":\"\\ud83c\\udde9\\ud83c\\uddf2\",\"dominican_republic\":\"\\ud83c\\udde9\\ud83c\\uddf4\",\"algeria\":\"\\ud83c\\udde9\\ud83c\\uddff\",\"ceuta_melilla\":\"\\ud83c\\uddea\\ud83c\\udde6\",\"ecuador\":\"\\ud83c\\uddea\\ud83c\\udde8\",\"estonia\":\"\\ud83c\\uddea\\ud83c\\uddea\",\"egypt\":\"\\ud83c\\uddea\\ud83c\\uddec\",\"western_sahara\":\"\\ud83c\\uddea\\ud83c\\udded\",\"eritrea\":\"\\ud83c\\uddea\\ud83c\\uddf7\",\"es\":\"\\ud83c\\uddea\\ud83c\\uddf8\",\"ethiopia\":\"\\ud83c\\uddea\\ud83c\\uddf9\",\"eu\":\"\\ud83c\\uddea\\ud83c\\uddfa\",\"european_union\":\"\\ud83c\\uddea\\ud83c\\uddfa\",\"finland\":\"\\ud83c\\uddeb\\ud83c\\uddee\",\"fiji\":\"\\ud83c\\uddeb\\ud83c\\uddef\",\"falkland_islands\":\"\\ud83c\\uddeb\\ud83c\\uddf0\",\"micronesia\":\"\\ud83c\\uddeb\\ud83c\\uddf2\",\"faroe_islands\":\"\\ud83c\\uddeb\\ud83c\\uddf4\",\"fr\":\"\\ud83c\\uddeb\\ud83c\\uddf7\",\"gabon\":\"\\ud83c\\uddec\\ud83c\\udde6\",\"gb\":\"\\ud83c\\uddec\\ud83c\\udde7\",\"uk\":\"\\ud83c\\uddec\\ud83c\\udde7\",\"grenada\":\"\\ud83c\\uddec\\ud83c\\udde9\",\"georgia\":\"\\ud83c\\uddec\\ud83c\\uddea\",\"french_guiana\":\"\\ud83c\\uddec\\ud83c\\uddeb\",\"guernsey\":\"\\ud83c\\uddec\\ud83c\\uddec\",\"ghana\":\"\\ud83c\\uddec\\ud83c\\udded\",\"gibraltar\":\"\\ud83c\\uddec\\ud83c\\uddee\",\"greenland\":\"\\ud83c\\uddec\\ud83c\\uddf1\",\"gambia\":\"\\ud83c\\uddec\\ud83c\\uddf2\",\"guinea\":\"\\ud83c\\uddec\\ud83c\\uddf3\",\"guadeloupe\":\"\\ud83c\\uddec\\ud83c\\uddf5\",\"equatorial_guinea\":\"\\ud83c\\uddec\\ud83c\\uddf6\",\"greece\":\"\\ud83c\\uddec\\ud83c\\uddf7\",\"south_georgia_south_sandwich_islands\":\"\\ud83c\\uddec\\ud83c\\uddf8\",\"guatemala\":\"\\ud83c\\uddec\\ud83c\\uddf9\",\"guam\":\"\\ud83c\\uddec\\ud83c\\uddfa\",\"guinea_bissau\":\"\\ud83c\\uddec\\ud83c\\uddfc\",\"guyana\":\"\\ud83c\\uddec\\ud83c\\uddfe\",\"hong_kong\":\"\\ud83c\\udded\\ud83c\\uddf0\",\"heard_mcdonald_islands\":\"\\ud83c\\udded\\ud83c\\uddf2\",\"honduras\":\"\\ud83c\\udded\\ud83c\\uddf3\",\"croatia\":\"\\ud83c\\udded\\ud83c\\uddf7\",\"haiti\":\"\\ud83c\\udded\\ud83c\\uddf9\",\"hungary\":\"\\ud83c\\udded\\ud83c\\uddfa\",\"canary_islands\":\"\\ud83c\\uddee\\ud83c\\udde8\",\"indonesia\":\"\\ud83c\\uddee\\ud83c\\udde9\",\"ireland\":\"\\ud83c\\uddee\\ud83c\\uddea\",\"israel\":\"\\ud83c\\uddee\\ud83c\\uddf1\",\"isle_of_man\":\"\\ud83c\\uddee\\ud83c\\uddf2\",\"india\":\"\\ud83c\\uddee\\ud83c\\uddf3\",\"british_indian_ocean_territory\":\"\\ud83c\\uddee\\ud83c\\uddf4\",\"iraq\":\"\\ud83c\\uddee\\ud83c\\uddf6\",\"iran\":\"\\ud83c\\uddee\\ud83c\\uddf7\",\"iceland\":\"\\ud83c\\uddee\\ud83c\\uddf8\",\"it\":\"\\ud83c\\uddee\\ud83c\\uddf9\",\"jersey\":\"\\ud83c\\uddef\\ud83c\\uddea\",\"jamaica\":\"\\ud83c\\uddef\\ud83c\\uddf2\",\"jordan\":\"\\ud83c\\uddef\\ud83c\\uddf4\",\"jp\":\"\\ud83c\\uddef\\ud83c\\uddf5\",\"kenya\":\"\\ud83c\\uddf0\\ud83c\\uddea\",\"kyrgyzstan\":\"\\ud83c\\uddf0\\ud83c\\uddec\",\"cambodia\":\"\\ud83c\\uddf0\\ud83c\\udded\",\"kiribati\":\"\\ud83c\\uddf0\\ud83c\\uddee\",\"comoros\":\"\\ud83c\\uddf0\\ud83c\\uddf2\",\"st_kitts_nevis\":\"\\ud83c\\uddf0\\ud83c\\uddf3\",\"north_korea\":\"\\ud83c\\uddf0\\ud83c\\uddf5\",\"kr\":\"\\ud83c\\uddf0\\ud83c\\uddf7\",\"kuwait\":\"\\ud83c\\uddf0\\ud83c\\uddfc\",\"cayman_islands\":\"\\ud83c\\uddf0\\ud83c\\uddfe\",\"kazakhstan\":\"\\ud83c\\uddf0\\ud83c\\uddff\",\"laos\":\"\\ud83c\\uddf1\\ud83c\\udde6\",\"lebanon\":\"\\ud83c\\uddf1\\ud83c\\udde7\",\"st_lucia\":\"\\ud83c\\uddf1\\ud83c\\udde8\",\"liechtenstein\":\"\\ud83c\\uddf1\\ud83c\\uddee\",\"sri_lanka\":\"\\ud83c\\uddf1\\ud83c\\uddf0\",\"liberia\":\"\\ud83c\\uddf1\\ud83c\\uddf7\",\"lesotho\":\"\\ud83c\\uddf1\\ud83c\\uddf8\",\"lithuania\":\"\\ud83c\\uddf1\\ud83c\\uddf9\",\"luxembourg\":\"\\ud83c\\uddf1\\ud83c\\uddfa\",\"latvia\":\"\\ud83c\\uddf1\\ud83c\\uddfb\",\"libya\":\"\\ud83c\\uddf1\\ud83c\\uddfe\",\"morocco\":\"\\ud83c\\uddf2\\ud83c\\udde6\",\"monaco\":\"\\ud83c\\uddf2\\ud83c\\udde8\",\"moldova\":\"\\ud83c\\uddf2\\ud83c\\udde9\",\"montenegro\":\"\\ud83c\\uddf2\\ud83c\\uddea\",\"st_martin\":\"\\ud83c\\uddf2\\ud83c\\uddeb\",\"madagascar\":\"\\ud83c\\uddf2\\ud83c\\uddec\",\"marshall_islands\":\"\\ud83c\\uddf2\\ud83c\\udded\",\"macedonia\":\"\\ud83c\\uddf2\\ud83c\\uddf0\",\"mali\":\"\\ud83c\\uddf2\\ud83c\\uddf1\",\"myanmar\":\"\\ud83c\\uddf2\\ud83c\\uddf2\",\"mongolia\":\"\\ud83c\\uddf2\\ud83c\\uddf3\",\"macau\":\"\\ud83c\\uddf2\\ud83c\\uddf4\",\"northern_mariana_islands\":\"\\ud83c\\uddf2\\ud83c\\uddf5\",\"martinique\":\"\\ud83c\\uddf2\\ud83c\\uddf6\",\"mauritania\":\"\\ud83c\\uddf2\\ud83c\\uddf7\",\"montserrat\":\"\\ud83c\\uddf2\\ud83c\\uddf8\",\"malta\":\"\\ud83c\\uddf2\\ud83c\\uddf9\",\"mauritius\":\"\\ud83c\\uddf2\\ud83c\\uddfa\",\"maldives\":\"\\ud83c\\uddf2\\ud83c\\uddfb\",\"malawi\":\"\\ud83c\\uddf2\\ud83c\\uddfc\",\"mexico\":\"\\ud83c\\uddf2\\ud83c\\uddfd\",\"malaysia\":\"\\ud83c\\uddf2\\ud83c\\uddfe\",\"mozambique\":\"\\ud83c\\uddf2\\ud83c\\uddff\",\"namibia\":\"\\ud83c\\uddf3\\ud83c\\udde6\",\"new_caledonia\":\"\\ud83c\\uddf3\\ud83c\\udde8\",\"niger\":\"\\ud83c\\uddf3\\ud83c\\uddea\",\"norfolk_island\":\"\\ud83c\\uddf3\\ud83c\\uddeb\",\"nigeria\":\"\\ud83c\\uddf3\\ud83c\\uddec\",\"nicaragua\":\"\\ud83c\\uddf3\\ud83c\\uddee\",\"netherlands\":\"\\ud83c\\uddf3\\ud83c\\uddf1\",\"norway\":\"\\ud83c\\uddf3\\ud83c\\uddf4\",\"nepal\":\"\\ud83c\\uddf3\\ud83c\\uddf5\",\"nauru\":\"\\ud83c\\uddf3\\ud83c\\uddf7\",\"niue\":\"\\ud83c\\uddf3\\ud83c\\uddfa\",\"new_zealand\":\"\\ud83c\\uddf3\\ud83c\\uddff\",\"oman\":\"\\ud83c\\uddf4\\ud83c\\uddf2\",\"panama\":\"\\ud83c\\uddf5\\ud83c\\udde6\",\"peru\":\"\\ud83c\\uddf5\\ud83c\\uddea\",\"french_polynesia\":\"\\ud83c\\uddf5\\ud83c\\uddeb\",\"papua_new_guinea\":\"\\ud83c\\uddf5\\ud83c\\uddec\",\"philippines\":\"\\ud83c\\uddf5\\ud83c\\udded\",\"pakistan\":\"\\ud83c\\uddf5\\ud83c\\uddf0\",\"poland\":\"\\ud83c\\uddf5\\ud83c\\uddf1\",\"st_pierre_miquelon\":\"\\ud83c\\uddf5\\ud83c\\uddf2\",\"pitcairn_islands\":\"\\ud83c\\uddf5\\ud83c\\uddf3\",\"puerto_rico\":\"\\ud83c\\uddf5\\ud83c\\uddf7\",\"palestinian_territories\":\"\\ud83c\\uddf5\\ud83c\\uddf8\",\"portugal\":\"\\ud83c\\uddf5\\ud83c\\uddf9\",\"palau\":\"\\ud83c\\uddf5\\ud83c\\uddfc\",\"paraguay\":\"\\ud83c\\uddf5\\ud83c\\uddfe\",\"qatar\":\"\\ud83c\\uddf6\\ud83c\\udde6\",\"reunion\":\"\\ud83c\\uddf7\\ud83c\\uddea\",\"romania\":\"\\ud83c\\uddf7\\ud83c\\uddf4\",\"serbia\":\"\\ud83c\\uddf7\\ud83c\\uddf8\",\"ru\":\"\\ud83c\\uddf7\\ud83c\\uddfa\",\"rwanda\":\"\\ud83c\\uddf7\\ud83c\\uddfc\",\"saudi_arabia\":\"\\ud83c\\uddf8\\ud83c\\udde6\",\"solomon_islands\":\"\\ud83c\\uddf8\\ud83c\\udde7\",\"seychelles\":\"\\ud83c\\uddf8\\ud83c\\udde8\",\"sudan\":\"\\ud83c\\uddf8\\ud83c\\udde9\",\"sweden\":\"\\ud83c\\uddf8\\ud83c\\uddea\",\"singapore\":\"\\ud83c\\uddf8\\ud83c\\uddec\",\"st_helena\":\"\\ud83c\\uddf8\\ud83c\\udded\",\"slovenia\":\"\\ud83c\\uddf8\\ud83c\\uddee\",\"svalbard_jan_mayen\":\"\\ud83c\\uddf8\\ud83c\\uddef\",\"slovakia\":\"\\ud83c\\uddf8\\ud83c\\uddf0\",\"sierra_leone\":\"\\ud83c\\uddf8\\ud83c\\uddf1\",\"san_marino\":\"\\ud83c\\uddf8\\ud83c\\uddf2\",\"senegal\":\"\\ud83c\\uddf8\\ud83c\\uddf3\",\"somalia\":\"\\ud83c\\uddf8\\ud83c\\uddf4\",\"suriname\":\"\\ud83c\\uddf8\\ud83c\\uddf7\",\"south_sudan\":\"\\ud83c\\uddf8\\ud83c\\uddf8\",\"sao_tome_principe\":\"\\ud83c\\uddf8\\ud83c\\uddf9\",\"el_salvador\":\"\\ud83c\\uddf8\\ud83c\\uddfb\",\"sint_maarten\":\"\\ud83c\\uddf8\\ud83c\\uddfd\",\"syria\":\"\\ud83c\\uddf8\\ud83c\\uddfe\",\"swaziland\":\"\\ud83c\\uddf8\\ud83c\\uddff\",\"tristan_da_cunha\":\"\\ud83c\\uddf9\\ud83c\\udde6\",\"turks_caicos_islands\":\"\\ud83c\\uddf9\\ud83c\\udde8\",\"chad\":\"\\ud83c\\uddf9\\ud83c\\udde9\",\"french_southern_territories\":\"\\ud83c\\uddf9\\ud83c\\uddeb\",\"togo\":\"\\ud83c\\uddf9\\ud83c\\uddec\",\"thailand\":\"\\ud83c\\uddf9\\ud83c\\udded\",\"tajikistan\":\"\\ud83c\\uddf9\\ud83c\\uddef\",\"tokelau\":\"\\ud83c\\uddf9\\ud83c\\uddf0\",\"timor_leste\":\"\\ud83c\\uddf9\\ud83c\\uddf1\",\"turkmenistan\":\"\\ud83c\\uddf9\\ud83c\\uddf2\",\"tunisia\":\"\\ud83c\\uddf9\\ud83c\\uddf3\",\"tonga\":\"\\ud83c\\uddf9\\ud83c\\uddf4\",\"tr\":\"\\ud83c\\uddf9\\ud83c\\uddf7\",\"trinidad_tobago\":\"\\ud83c\\uddf9\\ud83c\\uddf9\",\"tuvalu\":\"\\ud83c\\uddf9\\ud83c\\uddfb\",\"taiwan\":\"\\ud83c\\uddf9\\ud83c\\uddfc\",\"tanzania\":\"\\ud83c\\uddf9\\ud83c\\uddff\",\"ukraine\":\"\\ud83c\\uddfa\\ud83c\\udde6\",\"uganda\":\"\\ud83c\\uddfa\\ud83c\\uddec\",\"us_outlying_islands\":\"\\ud83c\\uddfa\\ud83c\\uddf2\",\"united_nations\":\"\\ud83c\\uddfa\\ud83c\\uddf3\",\"us\":\"\\ud83c\\uddfa\\ud83c\\uddf8\",\"uruguay\":\"\\ud83c\\uddfa\\ud83c\\uddfe\",\"uzbekistan\":\"\\ud83c\\uddfa\\ud83c\\uddff\",\"vatican_city\":\"\\ud83c\\uddfb\\ud83c\\udde6\",\"st_vincent_grenadines\":\"\\ud83c\\uddfb\\ud83c\\udde8\",\"venezuela\":\"\\ud83c\\uddfb\\ud83c\\uddea\",\"british_virgin_islands\":\"\\ud83c\\uddfb\\ud83c\\uddec\",\"us_virgin_islands\":\"\\ud83c\\uddfb\\ud83c\\uddee\",\"vietnam\":\"\\ud83c\\uddfb\\ud83c\\uddf3\",\"vanuatu\":\"\\ud83c\\uddfb\\ud83c\\uddfa\",\"wallis_futuna\":\"\\ud83c\\uddfc\\ud83c\\uddeb\",\"samoa\":\"\\ud83c\\uddfc\\ud83c\\uddf8\",\"kosovo\":\"\\ud83c\\uddfd\\ud83c\\uddf0\",\"yemen\":\"\\ud83c\\uddfe\\ud83c\\uddea\",\"mayotte\":\"\\ud83c\\uddfe\\ud83c\\uddf9\",\"south_africa\":\"\\ud83c\\uddff\\ud83c\\udde6\",\"zambia\":\"\\ud83c\\uddff\\ud83c\\uddf2\",\"zimbabwe\":\"\\ud83c\\uddff\\ud83c\\uddfc\",\"england\":\"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc65\\udb40\\udc6e\\udb40\\udc67\\udb40\\udc7f\",\"scotland\":\"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc73\\udb40\\udc63\\udb40\\udc74\\udb40\\udc7f\",\"wales\":\"\\ud83c\\udff4\\udb40\\udc67\\udb40\\udc62\\udb40\\udc77\\udb40\\udc6c\\udb40\\udc73\\udb40\\udc7f\"}')}}]);\n//# sourceMappingURL=394.14a9b9da.chunk.js.map"
  },
  {
    "path": "build/static/js/bindle-edges-json.94501736.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[691],{8866:function(e){e.exports=JSON.parse('[{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"purchases\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"books_users\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"products\",\"sourceKey\":\"id\",\"target\":\"purchases\",\"targetKey\":\"product_id\",\"relation\":\"hasMany\"},{\"source\":\"books\",\"sourceKey\":\"id\",\"target\":\"books_users\",\"targetKey\":\"book_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"profiles\",\"targetKey\":\"user_id\",\"relation\":\"hasOne\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"accounts\",\"targetKey\":\"user_id\",\"relation\":\"hasOne\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"devices\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"adjust.callbacks\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"visitor_id\",\"target\":\"web_analytics.pageviews\",\"targetKey\":\"visitor_id\",\"relation\":\"hasMany\"},{\"source\":\"web_analytics.pageviews\",\"sourceKey\":\"pageview_id\",\"target\":\"web_analytics.events\",\"targetKey\":\"pageview_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"mobile_analytics.events\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"users\",\"targetKey\":\"referrer_id\",\"relation\":\"hasMany\",\"sourcePosition\":\"left\",\"targetPosition\":\"left\"}]')}}]);"
  },
  {
    "path": "build/static/js/bindle-schemaColors-json.b87e5760.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[480],{1737:function(s){s.exports=JSON.parse('{\"DEFAULT\":\"#91C4F2\",\"public\":\"#BEB8EB\",\"adjust\":\"#AFA2FF\",\"helpers\":\"#75C9C8\",\"web_analytics\":\"#F6BDD1\",\"mobile_analytics\":\"#FFD791\"}')}}]);"
  },
  {
    "path": "build/static/js/bindle-tablePositions-json.847db583.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[356],{3366:function(s){s.exports=JSON.parse('{\"adjust.callbacks\":{\"x\":864,\"y\":-192},\"helpers.dates\":{\"x\":512,\"y\":528},\"mobile_analytics.events\":{\"x\":656,\"y\":-336},\"public.accounts\":{\"x\":-240,\"y\":-192},\"public.books\":{\"x\":-432,\"y\":320},\"public.books_users\":{\"x\":-208,\"y\":224},\"public.devices\":{\"x\":-48,\"y\":-336},\"public.marketing_spends\":{\"x\":672,\"y\":528},\"public.products\":{\"x\":704,\"y\":304},\"public.profiles\":{\"x\":-384,\"y\":-16},\"public.purchases\":{\"x\":432,\"y\":192},\"public.users\":{\"x\":192,\"y\":-96},\"web_analytics.events\":{\"x\":-368,\"y\":624},\"web_analytics.pageviews\":{\"x\":-96,\"y\":544}}')}}]);"
  },
  {
    "path": "build/static/js/bindle-tables.0d2bfe46.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[112],{2905:function(e,t,i){i.r(t),i.d(t,{default:function(){return a}});var a=[JSON.parse('{\"name\":\"accounts\",\"description\":\"Accounts of platforms users can sign up with. Bindle users might have Facebook or Email accounts.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of an account.\",\"key\":true,\"type\":\"integer\"},{\"name\":\"user_id\",\"description\":\"User\\u2019s id.\",\"type\":\"integer\"},{\"name\":\"platform\",\"description\":\"Account\\u2019s platform. Bindle allows email and facebook signups.\",\"type\":\"text\"},{\"name\":\"email\",\"description\":\"Email attached to the account. Note that different platforms could have different emails.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp when this account was created. created_at of the first account is user\\u2019s signup timestamp.\",\"type\":\"datetime\"}]}'),JSON.parse('{\"schema\":\"adjust\",\"name\":\"callbacks\",\"description\":\"Adjust is a mobile attribution service, sort of Google Analytics for the mobile world. Adjust sends back callbacks with information (attribution) about every mobile install, like where this install comes from, which link a person clicked before installing the app.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique ID of an Adjust callback.\",\"type\":\"integer\",\"key\":true},{\"name\":\"tracker\",\"description\":\"Adjust\\u2019s tracker parameter. For example https://app.adjust.com/gxel3d1.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp of a callback.\",\"type\":\"datetime\"},{\"name\":\"campaign_name\",\"description\":\"The value of campaign paramenter in Adjust URL.\",\"type\":\"text\"},{\"name\":\"adgroup_name\",\"description\":\"The value of adgroup paramenter in Adjust URL.\",\"type\":\"text\"},{\"name\":\"creative_name\",\"description\":\"The value of creative paramenter in Adjust URL.\",\"type\":\"text\"},{\"name\":\"label\",\"description\":\"The value of label paramenter in Adjust URL.\",\"type\":\"text\"},{\"name\":\"device_name\",\"description\":\"Model and OS version of a user\\u2019s device.\",\"type\":\"text\"},{\"name\":\"app_version\",\"description\":\"Bindle\\u2019s app version at the moment.\",\"type\":\"text\"},{\"name\":\"activity_kind\",\"description\":\"Predefined Adjust event, could be click, install, event (means custom event and event_name will be present) or else.\",\"type\":\"text\"},{\"name\":\"event_name\",\"description\":\"Custom Adjust event; Bindle has custom signup event.\",\"type\":\"text\"},{\"name\":\"adid\",\"description\":\"Adjust\\u2019s device ID.\",\"type\":\"text\"},{\"name\":\"user_id\",\"description\":\"ID of a user (from users table). Present for signup event.\",\"type\":\"integer\"},{\"name\":\"country\",\"description\":\"Country derived from user\\u2019s IP address.\",\"type\":\"text\"}]}'),JSON.parse('{\"name\":\"books_users\",\"description\":\"A join table for many-to-many relationship between users and books.\",\"columns\":[{\"name\":\"book_id\",\"description\":\"Book\\u2019s id.\",\"type\":\"integer\"},{\"name\":\"user_id\",\"description\":\"User\\u2019s id.\",\"type\":\"integer\"},{\"name\":\"last_page\",\"description\":\"A number of the last page a user read in the book.\",\"type\":\"integer\"},{\"name\":\"created_at\",\"description\":\"When the user started reading the book.\",\"type\":\"datetime\"}]}'),JSON.parse('{\"name\":\"books\",\"description\":\"All books available in the Bindle\\'s library.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of the book.\",\"key\":true,\"type\":\"integer\"},{\"name\":\"name\",\"description\":\"Name of the book.\",\"type\":\"text\"},{\"name\":\"slug\",\"description\":\"Identifer of a book used in URLs. For example https://www.bindle.com/books/final-future. Usually generated from book\\u2019s name.\",\"type\":\"text\"},{\"name\":\"genre\",\"description\":\"Book\\u2019s genre.\",\"type\":\"text\"},{\"name\":\"pages_count\",\"description\":\"Number of pages in the book.\",\"type\":\"integer\"}]}'),JSON.parse('{\"name\":\"devices\",\"description\":\"This table keeps track of all devices users log in to Bindle with \\u2013 browsers or mobile apps.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of a user\\u2019s device.\",\"key\":true,\"type\":\"integer\"},{\"name\":\"user_id\",\"description\":\"id of a user who uses this device.\",\"type\":\"integer\"},{\"name\":\"device_type\",\"description\":\"Type of the device, could be **browser** (for users who are using Bindle website) or **iphone** (users who are reading via Bindle app).\",\"type\":\"text\"},{\"name\":\"connected_at\",\"description\":\"Timestamp when a user started using this device. Device with the earliest **connected_at** field is the device which user used for signing up.\",\"type\":\"datetime\"},{\"name\":\"version\",\"description\":\"For browser devices it\\u2019s a User Agent. For iPhone devices it\\u2019s a version of user\\u2019s iPhone and a version of iOS separated by comma.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"helpers\",\"name\":\"dates\",\"description\":\"A helper table with consecutive dates. Might be useful to join sparse timelines to for reporting metrics per day.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of a date. Just a primary key, an index of the table.\",\"key\":true,\"type\":\"integer\"},{\"name\":\"date\",\"description\":\"A date. By joining the very sparse timeline data to the consecutive range of dates we won\\u2019t have gaps.\",\"type\":\"date\"}]}'),JSON.parse('{\"name\":\"marketing_spends\",\"description\":\"A table that keeps track of Bindle\\'s marketing investments per campaign, per day.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of spend, just a primary key in a table.\",\"key\":true,\"type\":\"integer\"},{\"name\":\"spent_at\",\"description\":\"The date of a spend. Spend data is usually reported by date.\",\"type\":\"date\"},{\"name\":\"amount\",\"description\":\"Amount of money in USD.\",\"type\":\"integer\"},{\"name\":\"clicks\",\"description\":\"Number of clicks on the ad on this date.\",\"type\":\"integer\"},{\"name\":\"utm_source\",\"description\":\"utm_source of marketing campaign.\",\"type\":\"text\"},{\"name\":\"utm_campaign\",\"description\":\"utm_campaign of marketing campaign.\",\"type\":\"text\"},{\"name\":\"utm_term\",\"description\":\"utm_term of marketing campaign.\",\"type\":\"text\"},{\"name\":\"utm_content\",\"description\":\"utm_content of marketing campaign.\",\"type\":\"text\"},{\"name\":\"utm_medium\",\"description\":\"utm_medium of marketing campaign.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"mobile_analytics\",\"name\":\"events\",\"description\":\"This analytics table contains all events fired by Bindle\\'s mobile app.\",\"columns\":[{\"name\":\"event_id\",\"description\":\"Unique identifier of an event.\",\"type\":\"text\",\"key\":true},{\"name\":\"category\",\"description\":\"Category parameter of an event, for example onboarding.\",\"type\":\"text\"},{\"name\":\"action\",\"description\":\"Action parameter of an event, for example screenview.\",\"type\":\"text\"},{\"name\":\"name\",\"description\":\"Name parameter of an event, for example bindle-content.\",\"type\":\"text\"},{\"name\":\"screen_resolution\",\"description\":\"Resolution of a user\\u2019s smartphone, for example 375x812.\",\"type\":\"text\"},{\"name\":\"device_type\",\"description\":\"Model of a user\\u2019s smartphone and the version of the OS, for example iPhone 7,12.1.0.\",\"type\":\"text\"},{\"name\":\"user_id\",\"description\":\"If user is logged in \\u2013 ID of a user in the users table.\",\"type\":\"integer\"},{\"name\":\"adid\",\"description\":\"Unique identifier of a user\\u2019s smartphone, same as in Adjust callbacks table.\",\"type\":\"text\"},{\"name\":\"country\",\"description\":\"Country derived from user\\u2019s IP address.\",\"type\":\"text\"},{\"name\":\"custom_parameters\",\"description\":\"All custom parameters of an even in a key-value format.\",\"type\":\"JSON\"},{\"name\":\"created_at\",\"description\":\"Timestamp of an event.\",\"type\":\"datetime\"},{\"name\":\"app_version\",\"description\":\"Version of the Bindle app a user is using, for example 1.1.1.\",\"type\":\"text\"}]}'),JSON.parse('{\"name\":\"products\",\"description\":\"The list of all purchasable Bindle products (subscriptions).\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of a product.\",\"key\":true,\"type\":\"integer\"},{\"name\":\"name\",\"description\":\"Name of a product.\",\"type\":\"text\"},{\"name\":\"price\",\"description\":\"Price of a product\",\"type\":\"float\"}]}'),JSON.parse('{\"name\":\"profiles\",\"description\":\"To avoid growing the users table further, users\\' profile information was extracted to this table.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"type\":\"number\",\"description\":\"Unique identifier of a profile.\"},{\"name\":\"user_id\",\"type\":\"number\",\"description\":\"User\\u2019s id.\"},{\"name\":\"about\",\"type\":\"text\",\"description\":\"Information about a user.\"},{\"name\":\"interests\",\"type\":\"text\",\"description\":\"User\\u2019s interests. Comma separated list of tags.\"},{\"name\":\"avatar_url\",\"type\":\"text\",\"description\":\"URL of an avatar user uploaded. Check some of them out ;)\"},{\"name\":\"postal_code\",\"type\":\"text\",\"description\":\"A postal code of a user for books delivery.\"}]}'),JSON.parse('{\"name\":\"purchases\",\"description\":\"This table contains all purchase transactions.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of purchase.\",\"type\":\"integer\",\"key\":true},{\"name\":\"user_id\",\"description\":\"id of a user who made the purchase.\",\"type\":\"integer\"},{\"name\":\"product_id\",\"description\":\"id of a product inside products table.\",\"type\":\"integer\"},{\"name\":\"amount\",\"description\":\"How much money user paid. The number might vary since users could apply discounts. Amount is always in US dollars.\",\"type\":\"float\"},{\"name\":\"refunded\",\"description\":\"Status of a purchase, we receive money on the bank account only if purchase wasn\\u2019t refunded.\",\"type\":\"boolean\"},{\"name\":\"created_at\",\"description\":\"When purchase was made.\",\"type\":\"datetime\"}]}'),JSON.parse('{\"name\":\"users\",\"description\":\"This table contains all user records of Bindle.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a user.\",\"type\":\"number\"},{\"name\":\"email\",\"type\":\"text\",\"description\":\"User\\u2019s email, unique.\"},{\"name\":\"first_name\",\"type\":\"text\",\"description\":\"User\\u2019s first name.\"},{\"name\":\"last_name\",\"type\":\"text\",\"description\":\"User\\u2019s last name.\"},{\"name\":\"country\",\"type\":\"text\",\"description\":\"User\\u2019s signup country.\"},{\"name\":\"signup_date\",\"type\":\"date\",\"description\":\"Date when user signed up.\"},{\"name\":\"created_at\",\"type\":\"datetime\",\"description\":\"Timestamp when user record was created, we can treat it as signup date and time.\"},{\"name\":\"status\",\"type\":\"text\",\"description\":\"What status user has in Bindle, could be free (can read only free books) or customer (user who purchased a subscription, can read all books).\"},{\"name\":\"age\",\"type\":\"integer\",\"description\":\"User\\u2019s age.\"},{\"name\":\"referrer_id\",\"type\":\"integer\",\"description\":\"id of another user who referred this user (this is usually set when users sign up via referral link).\"},{\"name\":\"visitor_id\",\"type\":\"text\",\"description\":\"Identifier of a user in the web_analytics.pageviews table. Generated by a web analytics system and stored in a cookie.\"},{\"name\":\"utm_source\",\"type\":\"text\",\"description\":\"utm_source in URL when user signed up, used for marketing attribution\"},{\"name\":\"utm_campaign\",\"type\":\"text\",\"description\":\"utm_campaign in URL when user signed up, used for marketing attribution\"},{\"name\":\"utm_term\",\"type\":\"text\",\"description\":\"utm_term in URL when user signed up, used for marketing attribution\"},{\"name\":\"utm_content\",\"type\":\"text\",\"description\":\"utm_content in URL when user signed up, used for marketing attribution\"},{\"name\":\"utm_medium\",\"type\":\"text\",\"description\":\"utm_medium in URL when user signed up, used for marketing attribution\"},{\"name\":\"adjust_tracker\",\"type\":\"text\",\"description\":\"Adjust tracker in case user signed up via an Adjust link https://app.adjust.com/gxel3d1.\"},{\"name\":\"adjust_campaign\",\"type\":\"text\",\"description\":\"The value of campaign paramenter in Adjust URL.\"},{\"name\":\"adjust_adgroup\",\"type\":\"text\",\"description\":\"The value of adgroup paramenter in Adjust URL.\"},{\"name\":\"adjust_creative\",\"type\":\"text\",\"description\":\"The value of creative paramenter in Adjust URL.\"}]}'),JSON.parse('{\"schema\":\"web_analytics\",\"name\":\"events\",\"description\":\"This table contains all events that happen on Bindle\\'s website pages. Events are tracked during a pageview, that\\'s why there\\'s a has-many relation between pageviews and events.\",\"columns\":[{\"name\":\"pageview_id\",\"description\":\"Category parameter of an event, for example Signup.\",\"type\":\"text\"},{\"name\":\"category\",\"description\":\"Action parameter of an event, for example Click.\",\"type\":\"text\"},{\"name\":\"action\",\"description\":\"Name parameter of an event, for example Signup for free.\",\"type\":\"text\"},{\"name\":\"name\",\"description\":\"Unique identifier of a record inside pageviews table. All events happen within one pageview. \\u26a0\\ufe0f\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp of an event.\",\"type\":\"datetime\"}]}'),JSON.parse('{\"schema\":\"web_analytics\",\"name\":\"pageviews\",\"description\":\"This table contains all pageviews of Bindle\\'s website.\",\"columns\":[{\"name\":\"pageview_id\",\"description\":\"Unique identifier of a pageview.\",\"type\":\"text\",\"key\":true},{\"name\":\"visitor_id\",\"description\":\"Unique identifier of a visitor. A fingerprint used to keep track of guest visitors who haven\\u2019t had signed up.\",\"type\":\"text\"},{\"name\":\"user_id\",\"description\":\"If user is logged in \\u2013 ID of a user in users table.\",\"type\":\"integer\"},{\"name\":\"url\",\"description\":\"URL of the visited page.\",\"type\":\"text\"},{\"name\":\"referer_url\",\"description\":\"URL of the previous page where user clicked on a link with URL.\",\"type\":\"text\"},{\"name\":\"screen_resolution\",\"description\":\"Screen resolution of a user\\u2019s device. Example: 1024x1366.\",\"type\":\"text\"},{\"name\":\"device_type\",\"description\":\"Type of a user\\u2019s device. Could be mobile, tablet or desktop.\",\"type\":\"text\"},{\"name\":\"custom_parameters\",\"description\":\"All custom parameters of a pageview in a key-value format. Could be added per page, for example we might add ab_test_variation key to keep track of what AB-test variation user had seen.\",\"type\":\"JSON\"},{\"name\":\"created_at\",\"description\":\"Timestamp of a pageview.\",\"type\":\"datetime\"},{\"name\":\"country\",\"description\":\"Country derived from user\\u2019s IP address.\",\"type\":\"text\"}]}')]}}]);\n//# sourceMappingURL=bindle-tables.0d2bfe46.chunk.js.map"
  },
  {
    "path": "build/static/js/ecommerce-edges-json.fe131063.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[547],{5336:function(e){e.exports=JSON.parse('[{\"source\":\"vendors\",\"sourceKey\":\"id\",\"target\":\"items\",\"targetKey\":\"vendor_id\",\"relation\":\"hasMany\"},{\"source\":\"categories\",\"sourceKey\":\"id\",\"target\":\"items\",\"targetKey\":\"category_id\",\"relation\":\"hasMany\"},{\"source\":\"items\",\"sourceKey\":\"id\",\"target\":\"reviews\",\"targetKey\":\"item_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"reviews\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"items\",\"sourceKey\":\"id\",\"target\":\"carts_items\",\"targetKey\":\"item_id\",\"relation\":\"hasMany\"},{\"source\":\"carts\",\"sourceKey\":\"id\",\"target\":\"carts_items\",\"targetKey\":\"cart_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"carts\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"carts\",\"sourceKey\":\"id\",\"target\":\"returns\",\"targetKey\":\"cart_id\",\"relation\":\"hasMany\"},{\"source\":\"items\",\"sourceKey\":\"id\",\"target\":\"returns\",\"targetKey\":\"item_id\",\"relation\":\"hasMany\"},{\"source\":\"carts\",\"sourceKey\":\"id\",\"target\":\"purchases\",\"targetKey\":\"cart_id\",\"relation\":\"hasOne\"},{\"source\":\"discount_codes\",\"sourceKey\":\"code\",\"target\":\"purchases\",\"targetKey\":\"discount_code\",\"relation\":\"hasMany\"}]')}}]);"
  },
  {
    "path": "build/static/js/ecommerce-schemaColors-json.fdb98809.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[415],{1090:function(s){s.exports=JSON.parse('{\"DEFAULT\":\"#91C4F2\",\"public\":\"#91C4F2\"}')}}]);"
  },
  {
    "path": "build/static/js/ecommerce-tablePositions-json.03a16298.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[743],{9543:function(s){s.exports=JSON.parse('{\"public.carts\":{\"x\":672,\"y\":368},\"public.carts_items\":{\"x\":464,\"y\":560},\"public.categories\":{\"x\":-160,\"y\":496},\"public.discount_codes\":{\"x\":1136,\"y\":336},\"public.items\":{\"x\":112,\"y\":608},\"public.purchases\":{\"x\":896,\"y\":160},\"public.returns\":{\"x\":400,\"y\":288},\"public.reviews\":{\"x\":400,\"y\":800},\"public.users\":{\"x\":688,\"y\":720},\"public.vendors\":{\"x\":-160,\"y\":848}}')}}]);"
  },
  {
    "path": "build/static/js/ecommerce-tables.f5264437.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[679],{4213:function(e,t,a){a.r(t),a.d(t,{default:function(){return i}});var i=[JSON.parse('{\"name\":\"carts\",\"description\":\"This table contains all carts (purchased or not) that were ever assembled by users.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a cart.\",\"type\":\"bigint\"},{\"name\":\"user_id\",\"description\":\"ID of a user who assemled a cart.\",\"type\":\"bigint\"},{\"name\":\"created_at\",\"description\":\"When a cart was created (when a user added the first item to a cart).\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"carts_items\",\"description\":\"This is a join table that enables many-to-many relation between carts and items.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"item_id\",\"description\":\"ID of an item that was added to a cart.\",\"type\":\"bigint\"},{\"name\":\"cart_id\",\"description\":\"Cart\\'s ID.\",\"type\":\"bigint\"},{\"name\":\"created_at\",\"description\":\"When an item was added to a cart.\",\"type\":\"timestamp\"},{\"name\":\"quantity\",\"description\":\"How many identical items are in a cart.\",\"type\":\"integer\"}]}'),JSON.parse('{\"name\":\"categories\",\"description\":\"This table contains item categories. Note that cateories are nested and a category could have multiple children categories.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an item category.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Category name, like \\\\\"Sport shoes\\\\\".\",\"type\":\"text\"},{\"name\":\"parent_id\",\"description\":\"ID of a parent category. Yep, categories have nested structure. For example, \\\\\"books\\\\\" category have \\\\\"fiction\\\\\" and \\\\\"non-fiction\\\\\" categories. \\\\\"Fiction\\\\\" category has categories like \\\\\"History\\\\\", \\\\\"Detective\\\\\", etc.\",\"type\":\"bigint\"},{\"name\":\"created_at\",\"description\":\"When a category was added.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"discount_codes\",\"description\":\"Thsi table contains all discount codes that could be redeemed by a user when making a purchase. Note that discount codes could save a fixed amount or a percentage of the final price.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a discount code.\",\"type\":\"bigint\"},{\"name\":\"amount_off\",\"description\":\"Amount in USD that will be subtracted from a total cart\\'s price if a user redeems this discount code.\",\"type\":\"bigint\"},{\"name\":\"percent_off\",\"description\":\"Percentage of a total cart\\'s price that will be removed if a user redeems this discount code.\",\"type\":\"bigint\"},{\"name\":\"code\",\"description\":\"Unique code of a discount code. Codes are shared with customers, not ID-s :warning:.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"When discount code was created.\",\"type\":\"timestamp\"},{\"name\":\"valid_until\",\"description\":\"The latest timestamp when customers are able to redeem a discount code.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"items\",\"description\":\"This table contains all items that could be purchased by users. Note that only published items are available to website visitors (have value in the `published_at` column).\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an item.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Item\\'s name.\",\"type\":\"text\"},{\"name\":\"category_id\",\"description\":\"ID of item\\'s category.\",\"type\":\"bigint\"},{\"name\":\"vendor_id\",\"description\":\"ID of a vendor who produces or sells this item in our E-commerce store.\",\"type\":\"bigint\"},{\"name\":\"price_usd\",\"description\":\"Item\\'s price in USD.\",\"type\":\"numeric\"},{\"name\":\"created_at\",\"description\":\"Timestamp when an item was first added to our E-commerce store.\",\"type\":\"timestamp\"},{\"name\":\"published_at\",\"description\":\"Timestamp when an item was first available for purchasing.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"purchases\",\"description\":\"This table contains all cart purchases.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a return.\",\"type\":\"bigint\"},{\"name\":\"discount_code\",\"description\":\"Discount code that was used by a user. It\\'s a foreign key for the `discount_codes` table.\",\"type\":\"text\"},{\"name\":\"country\",\"description\":\"Country of a user who made a purchase (IP based).\",\"type\":\"text\"},{\"name\":\"city\",\"description\":\"City of a user who made a purchase (IP based).\",\"type\":\"text\"},{\"name\":\"payment_method\",\"description\":\"Payment method that was used for a purchase. Could be **cc** (credit card) or **paypal**.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp of a purchase.\",\"type\":\"timestamp\"},{\"name\":\"cart_id\",\"description\":\"ID of a cart that was purchased.\",\"type\":\"bigint\"}]}'),JSON.parse('{\"name\":\"returns\",\"description\":\"This table contains all returns (full carts or partial item returns).\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a return.\",\"type\":\"bigint\"},{\"name\":\"cart_id\",\"description\":\"ID of a cart that a retuned item belongs to. In our E-commerce store users add items to a cart, then purchase the whole cart. Users are allowed to return as many items from a purchased cart as they want.\",\"type\":\"bigint\"},{\"name\":\"item_id\",\"description\":\"ID of an item that was returned.\",\"type\":\"bigint\"},{\"name\":\"quantity\",\"description\":\"How many items were returned.\",\"type\":\"integer\"},{\"name\":\"created_at\",\"description\":\"Timestamp when a return was processed.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"reviews\",\"description\":\"This table contains all user reviews for individual items.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a review.\",\"type\":\"bigint\"},{\"name\":\"item_id\",\"description\":\"ID of an item that was reviewed.\",\"type\":\"bigint\"},{\"name\":\"user_id\",\"description\":\"ID of a user who left a review.\",\"type\":\"bigint\"},{\"name\":\"rating\",\"description\":\"Star rating that a user selected in a review form.\",\"type\":\"integer\"},{\"name\":\"created_at\",\"description\":\"Timestamp when a user left a review.\",\"type\":\"timestamp\"},{\"name\":\"feedback\",\"description\":\"Text feedback that a user types in a review form.\",\"type\":\"text\"}]}'),JSON.parse('{\"name\":\"users\",\"description\":\"This table contains all user records (accounts).\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a user.\",\"type\":\"bigint\"},{\"name\":\"email\",\"description\":\"User\\'s email.\",\"type\":\"text\"},{\"name\":\"first_name\",\"description\":\"User\\'s first name.\",\"type\":\"text\"},{\"name\":\"last_name\",\"description\":\"User\\'s last name.\",\"type\":\"text\"},{\"name\":\"country\",\"description\":\"User\\'s country (IP based).\",\"type\":\"text\"},{\"name\":\"city\",\"description\":\"User\\'s city (IP based).\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp when a user created an account.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"vendors\",\"description\":\"This table contains all vendors (people or companies that sell items on our E-commerce platform).\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a vendor.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Vendor\\'s name (person or company name).\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp when a vendor started working with our E-commerce store.\",\"type\":\"timestamp\"}]}')]}}]);\n//# sourceMappingURL=ecommerce-tables.f5264437.chunk.js.map"
  },
  {
    "path": "build/static/js/finance-edges-json.cc1c201e.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[575],{5490:function(e){e.exports=JSON.parse('[{\"source\":\"vendors\",\"sourceKey\":\"id\",\"target\":\"transactions\",\"targetKey\":\"vendor_id\",\"relation\":\"hasMany\"}]')}}]);"
  },
  {
    "path": "build/static/js/finance-schemaColors-json.e0d3a5af.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[988],{5881:function(s){s.exports=JSON.parse('{\"DEFAULT\":\"#91C4F2\",\"public\":\"#91C4F2\"}')}}]);"
  },
  {
    "path": "build/static/js/finance-tablePositions-json.9ab03387.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[342],{514:function(s){s.exports=JSON.parse('{\"public.transactions\":{\"x\":192,\"y\":176},\"public.vendors\":{\"x\":-64,\"y\":240}}')}}]);"
  },
  {
    "path": "build/static/js/finance-tables.eac6da84.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[990],{8986:function(e,n,a){a.r(n),a.d(n,{default:function(){return i}});var i=[JSON.parse('{\"name\":\"transactions\",\"description\":\"This table contains transactions of all vendors.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a transaction.\",\"type\":\"bigint\"},{\"name\":\"vendor_id\",\"description\":\"ID of a vendor from the `vendors` table.\",\"type\":\"bigint\"},{\"name\":\"amount_usd\",\"description\":\"Transaction\\'s amount in USD. Positive value indicates a **credit** transaction, negative indicates **debit** transaction.\",\"type\":\"numeric\"},{\"name\":\"created_at\",\"description\":\"Timestamp of a transaction.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"vendors\",\"description\":\"This table contains all vendors.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of a vendor. A vendor can have **credit** transactions with us (pay us money) and **debit** transactions (we pay money to a vendor).\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Vendor\\'s name (could be a person or a company).\",\"type\":\"text\"}]}')]}}]);\n//# sourceMappingURL=finance-tables.eac6da84.chunk.js.map"
  },
  {
    "path": "build/static/js/live-edges-json.849f23e8.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[961],{8140:function(e){e.exports=JSON.parse('[{\"source\":\"products\",\"sourceKey\":\"id\",\"target\":\"purchases\",\"targetKey\":\"product_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"purchases\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"trials\",\"targetKey\":\"user_id\",\"relation\":\"hasOne\"},{\"source\":\"products\",\"sourceKey\":\"id\",\"target\":\"trials\",\"targetKey\":\"product_id\",\"relation\":\"hasMany\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"users\",\"targetKey\":\"referrer_id\",\"relation\":\"hasMany\",\"sourcePosition\":\"right\",\"targetPosition\":\"right\"},{\"source\":\"users\",\"sourceKey\":\"id\",\"target\":\"mobile_analytics.events\",\"targetKey\":\"user_id\",\"relation\":\"hasMany\"}]')}}]);"
  },
  {
    "path": "build/static/js/live-schemaColors-json.3efe2122.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[418],{8669:function(s){s.exports=JSON.parse('{\"DEFAULT\":\"#91C4F2\",\"public\":\"#91C4F2\",\"mobile_analytics\":\"#FFD791\"}')}}]);"
  },
  {
    "path": "build/static/js/live-tablePositions-json.88001c8e.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[583],{6431:function(s){s.exports=JSON.parse('{\"mobile_analytics.events\":{\"x\":784,\"y\":-128},\"public.products\":{\"x\":0,\"y\":96},\"public.purchases\":{\"x\":256,\"y\":-128},\"public.trials\":{\"x\":256,\"y\":224},\"public.users\":{\"x\":560,\"y\":80}}')}}]);"
  },
  {
    "path": "build/static/js/live-tables.5a699030.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[752],{3456:function(e,t,i){i.r(t),i.d(t,{default:function(){return a}});var a=[JSON.parse('{\"name\":\"products\",\"description\":\"All available products (available via subscriptions or one-time payments) users can buy.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a product.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Product\\'s name.\",\"type\":\"text\"},{\"name\":\"price\",\"description\":\"Product\\'s price in USD.\",\"type\":\"numeric\"},{\"name\":\"trial_days\",\"description\":\"T[he number of free trial days.\",\"type\":\"integer\"},{\"name\":\"renewal_period\",\"description\":\"Renewal period of a subscription product: 1 for monthly, 12 for yearly.\",\"type\":\"integer\"}]}'),JSON.parse('{\"name\":\"purchases\",\"description\":\"This table contains all purchase records.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a purchase.\",\"type\":\"bigint\"},{\"name\":\"user_id\",\"description\":\"ID of a user who made this purchase.\",\"type\":\"bigint\"},{\"name\":\"product_id\",\"description\":\"ID of a purchased product.\",\"type\":\"bigint\"},{\"name\":\"trial_id\",\"description\":\"ID of an associated trial for a subscription product.\",\"type\":\"bigint\"},{\"name\":\"amount\",\"description\":\"Amount paid in USD.\",\"type\":\"numeric\"},{\"name\":\"created_at\",\"description\":\"Timestamp of a purchase.\",\"type\":\"timestamp\"},{\"name\":\"refunded_at\",\"description\":\"Timestamp of a full refund in case a user asked for it.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"trials\",\"description\":\"This table contains all started trials (trials are available only for subscription products).\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a trial.\",\"type\":\"bigint\"},{\"name\":\"user_id\",\"description\":\"ID of a user who started a trial.\",\"type\":\"bigint\"},{\"name\":\"product_id\",\"description\":\"ID of a subscription product.\",\"type\":\"bigint\"},{\"name\":\"started_at\",\"description\":\"Timestamp when a user started a trial.\",\"type\":\"timestamp\"},{\"name\":\"cancelled_at\",\"description\":\"Timestamp when a user cancelled a trial.\",\"type\":\"timestamp\"},{\"name\":\"finished_at\",\"description\":\"Timestamp when a trial was finished and a purchase was made (user was automatically charged the product\\'s price).\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"name\":\"users\",\"description\":\"This table contains all user records (accounts).\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a user.\",\"type\":\"bigint\"},{\"name\":\"referrer_id\",\"description\":\"id of another user who invited this user.\",\"type\":\"bigint\"},{\"name\":\"first_name\",\"description\":\"User\\'s first name.\",\"type\":\"text\"},{\"name\":\"last_name\",\"description\":\"User\\'s last name.\",\"type\":\"text\"},{\"name\":\"email\",\"description\":\"User\\'s email.\",\"type\":\"text\"},{\"name\":\"country\",\"description\":\"User\\'s country (IP based).\",\"type\":\"text\"},{\"name\":\"city\",\"description\":\"User\\'s city (IP based).\",\"type\":\"text\"},{\"name\":\"age\",\"description\":\"User\\'s age.\",\"type\":\"integer\"},{\"name\":\"timezone\",\"description\":\"User\\'s timezone. Don\\'t forget that all timestamps are in UTC.\",\"type\":\"text\"},{\"name\":\"utc_offset\",\"description\":\"User\\'s timezone offset from UTC.\",\"type\":\"integer\"},{\"name\":\"created_at\",\"description\":\"Timestamp when a user created an account.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"schema\":\"mobile_analytics\",\"name\":\"events\",\"description\":\"This analytics table contains all events tracked in the Meditation iOS app.\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier of an event.\",\"type\":\"bigint\",\"key\":true},{\"name\":\"category\",\"description\":\"Category parameter of an event, for example onboarding.\",\"type\":\"text\"},{\"name\":\"action\",\"description\":\"Action parameter of an event, for example screenview.\",\"type\":\"text\"},{\"name\":\"name\",\"description\":\"Name parameter of an event, for example bindle-content.\",\"type\":\"text\"},{\"name\":\"screen_resolution\",\"description\":\"Resolution of a user\\u2019s smartphone, for example 375x812.\",\"type\":\"text\"},{\"name\":\"device_type\",\"description\":\"Model of a user\\u2019s smartphone and the version of the OS, for example iPhone 15 Pro,17.0\",\"type\":\"text\"},{\"name\":\"user_id\",\"description\":\"ID of a user in the users table.\",\"type\":\"integer\"},{\"name\":\"country\",\"description\":\"Country derived from user\\u2019s IP address.\",\"type\":\"text\"},{\"name\":\"custom_parameters\",\"description\":\"All custom parameters of an even in a key-value format.\",\"type\":\"JSON\"},{\"name\":\"created_at\",\"description\":\"Timestamp of an event.\",\"type\":\"datetime\"}]}')]}}]);\n//# sourceMappingURL=live-tables.5a699030.chunk.js.map"
  },
  {
    "path": "build/static/js/main.33dfc6b0.js",
    "content": "/*! For license information please see main.33dfc6b0.js.LICENSE.txt */\n!function(){var e={6927:function(e,t,n){\"use strict\";function r(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){t&&Object.keys(t).forEach((function(n){e[n]=t[n]}))})),e}function o(e){return Object.prototype.toString.call(e)}function i(e){return\"[object Function]\"===o(e)}function a(e){return e.replace(/[.?*+^$[\\]\\\\(){}|-]/g,\"\\\\$&\")}var l={fuzzyLink:!0,fuzzyEmail:!0,fuzzyIP:!1};var s={\"http:\":{validate:function(e,t,n){var r=e.slice(t);return n.re.http||(n.re.http=new RegExp(\"^\\\\/\\\\/\"+n.re.src_auth+n.re.src_host_port_strict+n.re.src_path,\"i\")),n.re.http.test(r)?r.match(n.re.http)[0].length:0}},\"https:\":\"http:\",\"ftp:\":\"http:\",\"//\":{validate:function(e,t,n){var r=e.slice(t);return n.re.no_http||(n.re.no_http=new RegExp(\"^\"+n.re.src_auth+\"(?:localhost|(?:(?:\"+n.re.src_domain+\")\\\\.)+\"+n.re.src_domain_root+\")\"+n.re.src_port+n.re.src_host_terminator+n.re.src_path,\"i\")),n.re.no_http.test(r)?t>=3&&\":\"===e[t-3]||t>=3&&\"/\"===e[t-3]?0:r.match(n.re.no_http)[0].length:0}},\"mailto:\":{validate:function(e,t,n){var r=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp(\"^\"+n.re.src_email_name+\"@\"+n.re.src_host_strict,\"i\")),n.re.mailto.test(r)?r.match(n.re.mailto)[0].length:0}}},u=\"biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\\u0440\\u0444\".split(\"|\");function c(e){var t=e.re=n(1875)(e.__opts__),r=e.__tlds__.slice();function l(e){return e.replace(\"%TLDS%\",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||r.push(\"a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]\"),r.push(t.src_xn),t.src_tlds=r.join(\"|\"),t.email_fuzzy=RegExp(l(t.tpl_email_fuzzy),\"i\"),t.link_fuzzy=RegExp(l(t.tpl_link_fuzzy),\"i\"),t.link_no_ip_fuzzy=RegExp(l(t.tpl_link_no_ip_fuzzy),\"i\"),t.host_fuzzy_test=RegExp(l(t.tpl_host_fuzzy_test),\"i\");var s=[];function u(e,t){throw new Error('(LinkifyIt) Invalid schema \"'+e+'\": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){var n=e.__schemas__[t];if(null!==n){var r={validate:null,link:null};if(e.__compiled__[t]=r,\"[object Object]\"===o(n))return!function(e){return\"[object RegExp]\"===o(e)}(n.validate)?i(n.validate)?r.validate=n.validate:u(t,n):r.validate=function(e){return function(t,n){var r=t.slice(n);return e.test(r)?r.match(e)[0].length:0}}(n.validate),void(i(n.normalize)?r.normalize=n.normalize:n.normalize?u(t,n):r.normalize=function(e,t){t.normalize(e)});!function(e){return\"[object String]\"===o(e)}(n)?u(t,n):s.push(t)}})),s.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[\"\"]={validate:null,normalize:function(e,t){t.normalize(e)}};var c=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(a).join(\"|\");e.re.schema_test=RegExp(\"(^|(?!_)(?:[><\\uff5c]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"i\"),e.re.schema_search=RegExp(\"(^|(?!_)(?:[><\\uff5c]|\"+t.src_ZPCc+\"))(\"+c+\")\",\"ig\"),e.re.schema_at_start=RegExp(\"^\"+e.re.schema_search.source,\"i\"),e.re.pretest=RegExp(\"(\"+e.re.schema_test.source+\")|(\"+e.re.host_fuzzy_test.source+\")|@\",\"i\"),function(e){e.__index__=-1,e.__text_cache__=\"\"}(e)}function d(e,t){var n=e.__index__,r=e.__last_index__,o=e.__text_cache__.slice(n,r);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=r+t,this.raw=o,this.text=o,this.url=o}function f(e,t){var n=new d(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function h(e,t){if(!(this instanceof h))return new h(e,t);var n;t||(n=e,Object.keys(n||{}).reduce((function(e,t){return e||l.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=r({},l,t),this.__index__=-1,this.__last_index__=-1,this.__schema__=\"\",this.__text_cache__=\"\",this.__schemas__=r({},s,e),this.__compiled__={},this.__tlds__=u,this.__tlds_replaced__=!1,this.re={},c(this)}h.prototype.add=function(e,t){return this.__schemas__[e]=t,c(this),this},h.prototype.set=function(e){return this.__opts__=r(this.__opts__,e),this},h.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,n,r,o,i,a,l,s;if(this.re.schema_test.test(e))for((l=this.re.schema_search).lastIndex=0;null!==(t=l.exec(e));)if(o=this.testSchemaAt(e,t[2],l.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+o;break}return this.__opts__.fuzzyLink&&this.__compiled__[\"http:\"]&&(s=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||s<this.__index__)&&null!==(n=e.match(this.__opts__.fuzzyIP?this.re.link_fuzzy:this.re.link_no_ip_fuzzy))&&(i=n.index+n[1].length,(this.__index__<0||i<this.__index__)&&(this.__schema__=\"\",this.__index__=i,this.__last_index__=n.index+n[0].length)),this.__opts__.fuzzyEmail&&this.__compiled__[\"mailto:\"]&&e.indexOf(\"@\")>=0&&null!==(r=e.match(this.re.email_fuzzy))&&(i=r.index+r[1].length,a=r.index+r[0].length,(this.__index__<0||i<this.__index__||i===this.__index__&&a>this.__last_index__)&&(this.__schema__=\"mailto:\",this.__index__=i,this.__last_index__=a)),this.__index__>=0},h.prototype.pretest=function(e){return this.re.pretest.test(e)},h.prototype.testSchemaAt=function(e,t,n){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,n,this):0},h.prototype.match=function(e){var t=0,n=[];this.__index__>=0&&this.__text_cache__===e&&(n.push(f(this,t)),t=this.__last_index__);for(var r=t?e.slice(t):e;this.test(r);)n.push(f(this,t)),r=r.slice(this.__last_index__),t+=this.__last_index__;return n.length?n:null},h.prototype.matchAtStart=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return null;var t=this.re.schema_at_start.exec(e);if(!t)return null;var n=this.testSchemaAt(e,t[2],t[0].length);return n?(this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+n,f(this,0)):null},h.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,n){return e!==n[t-1]})).reverse(),c(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,c(this),this)},h.prototype.normalize=function(e){e.schema||(e.url=\"http://\"+e.url),\"mailto:\"!==e.schema||/^mailto:/i.test(e.url)||(e.url=\"mailto:\"+e.url)},h.prototype.onCompile=function(){},e.exports=h},1875:function(e,t,n){\"use strict\";e.exports=function(e){var t={};e=e||{},t.src_Any=n(5510).source,t.src_Cc=n(538).source,t.src_Z=n(2426).source,t.src_P=n(3741).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join(\"|\"),t.src_ZCc=[t.src_Z,t.src_Cc].join(\"|\");var r=\"[><\\uff5c]\";return t.src_pseudo_letter=\"(?:(?![><\\uff5c]|\"+t.src_ZPCc+\")\"+t.src_Any+\")\",t.src_ip4=\"(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\",t.src_auth=\"(?:(?:(?!\"+t.src_ZCc+\"|[@/\\\\[\\\\]()]).)+@)?\",t.src_port=\"(?::(?:6(?:[0-4]\\\\d{3}|5(?:[0-4]\\\\d{2}|5(?:[0-2]\\\\d|3[0-5])))|[1-5]?\\\\d{1,4}))?\",t.src_host_terminator=\"(?=$|[><\\uff5c]|\"+t.src_ZPCc+\")(?!\"+(e[\"---\"]?\"-(?!--)|\":\"-|\")+\"_|:\\\\d|\\\\.-|\\\\.(?!$|\"+t.src_ZPCc+\"))\",t.src_path=\"(?:[/?#](?:(?!\"+t.src_ZCc+\"|\"+r+\"|[()[\\\\]{}.,\\\"'?!\\\\-;]).|\\\\[(?:(?!\"+t.src_ZCc+\"|\\\\]).)*\\\\]|\\\\((?:(?!\"+t.src_ZCc+\"|[)]).)*\\\\)|\\\\{(?:(?!\"+t.src_ZCc+'|[}]).)*\\\\}|\\\\\"(?:(?!'+t.src_ZCc+'|[\"]).)+\\\\\"|\\\\\\'(?:(?!'+t.src_ZCc+\"|[']).)+\\\\'|\\\\'(?=\"+t.src_pseudo_letter+\"|[-])|\\\\.{2,}[a-zA-Z0-9%/&]|\\\\.(?!\"+t.src_ZCc+\"|[.]|$)|\"+(e[\"---\"]?\"\\\\-(?!--(?:[^-]|$))(?:-*)|\":\"\\\\-+|\")+\",(?!\"+t.src_ZCc+\"|$)|;(?!\"+t.src_ZCc+\"|$)|\\\\!+(?!\"+t.src_ZCc+\"|[!]|$)|\\\\?(?!\"+t.src_ZCc+\"|[?]|$))+|\\\\/)?\",t.src_email_name='[\\\\-;:&=\\\\+\\\\$,\\\\.a-zA-Z0-9_][\\\\-;:&=\\\\+\\\\$,\\\\\"\\\\.a-zA-Z0-9_]*',t.src_xn=\"xn--[a-z0-9\\\\-]{1,59}\",t.src_domain_root=\"(?:\"+t.src_xn+\"|\"+t.src_pseudo_letter+\"{1,63})\",t.src_domain=\"(?:\"+t.src_xn+\"|(?:\"+t.src_pseudo_letter+\")|(?:\"+t.src_pseudo_letter+\"(?:-|\"+t.src_pseudo_letter+\"){0,61}\"+t.src_pseudo_letter+\"))\",t.src_host=\"(?:(?:(?:(?:\"+t.src_domain+\")\\\\.)*\"+t.src_domain+\"))\",t.tpl_host_fuzzy=\"(?:\"+t.src_ip4+\"|(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%)))\",t.tpl_host_no_ip_fuzzy=\"(?:(?:(?:\"+t.src_domain+\")\\\\.)+(?:%TLDS%))\",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test=\"localhost|www\\\\.|\\\\.\\\\d{1,3}\\\\.|(?:\\\\.(?:%TLDS%)(?:\"+t.src_ZPCc+\"|>|$))\",t.tpl_email_fuzzy='(^|[><\\uff5c]|\"|\\\\(|'+t.src_ZCc+\")(\"+t.src_email_name+\"@\"+t.tpl_host_fuzzy_strict+\")\",t.tpl_link_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|\"+t.src_ZPCc+\"))((?![$+<=>^`|\\uff5c])\"+t.tpl_host_port_fuzzy_strict+t.src_path+\")\",t.tpl_link_no_ip_fuzzy=\"(^|(?![.:/\\\\-_@])(?:[$+<=>^`|\\uff5c]|\"+t.src_ZPCc+\"))((?![$+<=>^`|\\uff5c])\"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+\")\",t}},3534:function(e,t,n){\"use strict\";e.exports=n(9890)},1285:function(e,t,n){\"use strict\";e.exports=n(9323)},1437:function(e){\"use strict\";e.exports=[\"address\",\"article\",\"aside\",\"base\",\"basefont\",\"blockquote\",\"body\",\"caption\",\"center\",\"col\",\"colgroup\",\"dd\",\"details\",\"dialog\",\"dir\",\"div\",\"dl\",\"dt\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"frame\",\"frameset\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hr\",\"html\",\"iframe\",\"legend\",\"li\",\"link\",\"main\",\"menu\",\"menuitem\",\"nav\",\"noframes\",\"ol\",\"optgroup\",\"option\",\"p\",\"param\",\"section\",\"source\",\"summary\",\"table\",\"tbody\",\"td\",\"tfoot\",\"th\",\"thead\",\"title\",\"tr\",\"track\",\"ul\"]},5850:function(e){\"use strict\";var t=\"<[A-Za-z][A-Za-z0-9\\\\-]*(?:\\\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\\\s*=\\\\s*(?:[^\\\"'=<>`\\\\x00-\\\\x20]+|'[^']*'|\\\"[^\\\"]*\\\"))?)*\\\\s*\\\\/?>\",n=\"<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>\",r=new RegExp(\"^(?:\"+t+\"|\"+n+\"|\\x3c!----\\x3e|\\x3c!--(?:-?[^>-])(?:-?[^-])*--\\x3e|<[?][\\\\s\\\\S]*?[?]>|<![A-Z]+\\\\s+[^>]*>|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>)\"),o=new RegExp(\"^(?:\"+t+\"|\"+n+\")\");e.exports.n=r,e.exports.q=o},786:function(e,t,n){\"use strict\";var r=Object.prototype.hasOwnProperty;function o(e,t){return r.call(e,t)}function i(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!==(65535&e)&&65534!==(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var l=/\\\\([!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~])/g,s=new RegExp(l.source+\"|\"+/&([a-z#][a-z0-9]{1,31});/gi.source,\"gi\"),u=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,c=n(1285);var d=/[&<>\"]/,f=/[&<>\"]/g,h={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"};function p(e){return h[e]}var m=/[.?*+^$[\\]\\\\(){}|-]/g;var g=n(3741);t.lib={},t.lib.mdurl=n(3461),t.lib.ucmicro=n(6937),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if(\"object\"!==typeof t)throw new TypeError(t+\"must be object\");Object.keys(t).forEach((function(n){e[n]=t[n]}))}})),e},t.isString=function(e){return\"[object String]\"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=o,t.unescapeMd=function(e){return e.indexOf(\"\\\\\")<0?e:e.replace(l,\"$1\")},t.unescapeAll=function(e){return e.indexOf(\"\\\\\")<0&&e.indexOf(\"&\")<0?e:e.replace(s,(function(e,t,n){return t||function(e,t){var n=0;return o(c,t)?c[t]:35===t.charCodeAt(0)&&u.test(t)&&i(n=\"x\"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(n):e}(e,n)}))},t.isValidEntityCode=i,t.fromCodePoint=a,t.escapeHtml=function(e){return d.test(e)?e.replace(f,p):e},t.arrayReplaceAt=function(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return g.test(e)},t.escapeRE=function(e){return e.replace(m,\"\\\\$&\")},t.normalizeReference=function(e){return e=e.trim().replace(/\\s+/g,\" \"),\"\\u1e7e\"===\"\\u1e9e\".toLowerCase()&&(e=e.replace(/\\u1e9e/g,\"\\xdf\")),e.toLowerCase().toUpperCase()}},4937:function(e,t,n){\"use strict\";t.parseLinkLabel=n(9162),t.parseLinkDestination=n(9738),t.parseLinkTitle=n(4890)},9738:function(e,t,n){\"use strict\";var r=n(786).unescapeAll;e.exports=function(e,t,n){var o,i,a=t,l={ok:!1,pos:0,lines:0,str:\"\"};if(60===e.charCodeAt(t)){for(t++;t<n;){if(10===(o=e.charCodeAt(t)))return l;if(60===o)return l;if(62===o)return l.pos=t+1,l.str=r(e.slice(a+1,t)),l.ok=!0,l;92===o&&t+1<n?t+=2:t++}return l}for(i=0;t<n&&32!==(o=e.charCodeAt(t))&&!(o<32||127===o);)if(92===o&&t+1<n){if(32===e.charCodeAt(t+1))break;t+=2}else{if(40===o&&++i>32)return l;if(41===o){if(0===i)break;i--}t++}return a===t||0!==i||(l.str=r(e.slice(a,t)),l.lines=0,l.pos=t,l.ok=!0),l}},9162:function(e){\"use strict\";e.exports=function(e,t,n){var r,o,i,a,l=-1,s=e.posMax,u=e.pos;for(e.pos=t+1,r=1;e.pos<s;){if(93===(i=e.src.charCodeAt(e.pos))&&0===--r){o=!0;break}if(a=e.pos,e.md.inline.skipToken(e),91===i)if(a===e.pos-1)r++;else if(n)return e.pos=u,-1}return o&&(l=e.pos),e.pos=u,l}},4890:function(e,t,n){\"use strict\";var r=n(786).unescapeAll;e.exports=function(e,t,n){var o,i,a=0,l=t,s={ok:!1,pos:0,lines:0,str:\"\"};if(t>=n)return s;if(34!==(i=e.charCodeAt(t))&&39!==i&&40!==i)return s;for(t++,40===i&&(i=41);t<n;){if((o=e.charCodeAt(t))===i)return s.pos=t+1,s.lines=a,s.str=r(e.slice(l+1,t)),s.ok=!0,s;if(40===o&&41===i)return s;10===o?a++:92===o&&t+1<n&&(t++,10===e.charCodeAt(t)&&a++),t++}return s}},9890:function(e,t,n){\"use strict\";var r=n(786),o=n(4937),i=n(6843),a=n(2205),l=n(7782),s=n(4871),u=n(6927),c=n(3461),d=n(6293),f={default:n(1349),zero:n(7578),commonmark:n(6389)},h=/^(vbscript|javascript|file|data):/,p=/^data:image\\/(gif|png|jpeg|webp);/;function m(e){var t=e.trim().toLowerCase();return!h.test(t)||!!p.test(t)}var g=[\"http:\",\"https:\",\"mailto:\"];function v(e){var t=c.parse(e,!0);if(t.hostname&&(!t.protocol||g.indexOf(t.protocol)>=0))try{t.hostname=d.toASCII(t.hostname)}catch(n){}return c.encode(c.format(t))}function y(e){var t=c.parse(e,!0);if(t.hostname&&(!t.protocol||g.indexOf(t.protocol)>=0))try{t.hostname=d.toUnicode(t.hostname)}catch(n){}return c.decode(c.format(t),c.decode.defaultChars+\"%\")}function b(e,t){if(!(this instanceof b))return new b(e,t);t||r.isString(e)||(t=e||{},e=\"default\"),this.inline=new s,this.block=new l,this.core=new a,this.renderer=new i,this.linkify=new u,this.validateLink=m,this.normalizeLink=v,this.normalizeLinkText=y,this.utils=r,this.helpers=r.assign({},o),this.options={},this.configure(e),t&&this.set(t)}b.prototype.set=function(e){return r.assign(this.options,e),this},b.prototype.configure=function(e){var t,n=this;if(r.isString(e)&&!(e=f[t=e]))throw new Error('Wrong `markdown-it` preset \"'+t+'\", check name');if(!e)throw new Error(\"Wrong `markdown-it` preset, can't be empty\");return e.options&&n.set(e.options),e.components&&Object.keys(e.components).forEach((function(t){e.components[t].rules&&n[t].ruler.enableOnly(e.components[t].rules),e.components[t].rules2&&n[t].ruler2.enableOnly(e.components[t].rules2)})),this},b.prototype.enable=function(e,t){var n=[];Array.isArray(e)||(e=[e]),[\"core\",\"block\",\"inline\"].forEach((function(t){n=n.concat(this[t].ruler.enable(e,!0))}),this),n=n.concat(this.inline.ruler2.enable(e,!0));var r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error(\"MarkdownIt. Failed to enable unknown rule(s): \"+r);return this},b.prototype.disable=function(e,t){var n=[];Array.isArray(e)||(e=[e]),[\"core\",\"block\",\"inline\"].forEach((function(t){n=n.concat(this[t].ruler.disable(e,!0))}),this),n=n.concat(this.inline.ruler2.disable(e,!0));var r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error(\"MarkdownIt. Failed to disable unknown rule(s): \"+r);return this},b.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},b.prototype.parse=function(e,t){if(\"string\"!==typeof e)throw new Error(\"Input data should be a String\");var n=new this.core.State(e,this,t);return this.core.process(n),n.tokens},b.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},b.prototype.parseInline=function(e,t){var n=new this.core.State(e,this,t);return n.inlineMode=!0,this.core.process(n),n.tokens},b.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)},e.exports=b},7782:function(e,t,n){\"use strict\";var r=n(8674),o=[[\"table\",n(9399),[\"paragraph\",\"reference\"]],[\"code\",n(5078)],[\"fence\",n(1077),[\"paragraph\",\"reference\",\"blockquote\",\"list\"]],[\"blockquote\",n(9224),[\"paragraph\",\"reference\",\"blockquote\",\"list\"]],[\"hr\",n(7542),[\"paragraph\",\"reference\",\"blockquote\",\"list\"]],[\"list\",n(7168),[\"paragraph\",\"reference\",\"blockquote\"]],[\"reference\",n(9277)],[\"html_block\",n(5672),[\"paragraph\",\"reference\",\"blockquote\"]],[\"heading\",n(969),[\"paragraph\",\"reference\",\"blockquote\"]],[\"lheading\",n(7671)],[\"paragraph\",n(6572)]];function i(){this.ruler=new r;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1],{alt:(o[e][2]||[]).slice()})}i.prototype.tokenize=function(e,t,n){for(var r,o=this.ruler.getRules(\"\"),i=o.length,a=t,l=!1,s=e.md.options.maxNesting;a<n&&(e.line=a=e.skipEmptyLines(a),!(a>=n))&&!(e.sCount[a]<e.blkIndent);){if(e.level>=s){e.line=n;break}for(r=0;r<i&&!o[r](e,a,n,!1);r++);e.tight=!l,e.isEmpty(e.line-1)&&(l=!0),(a=e.line)<n&&e.isEmpty(a)&&(l=!0,a++,e.line=a)}},i.prototype.parse=function(e,t,n,r){var o;e&&(o=new this.State(e,t,n,r),this.tokenize(o,o.line,o.lineMax))},i.prototype.State=n(2007),e.exports=i},2205:function(e,t,n){\"use strict\";var r=n(8674),o=[[\"normalize\",n(710)],[\"block\",n(2486)],[\"inline\",n(7557)],[\"linkify\",n(6716)],[\"replacements\",n(904)],[\"smartquotes\",n(6991)],[\"text_join\",n(9528)]];function i(){this.ruler=new r;for(var e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1])}i.prototype.process=function(e){var t,n,r;for(t=0,n=(r=this.ruler.getRules(\"\")).length;t<n;t++)r[t](e)},i.prototype.State=n(3311),e.exports=i},4871:function(e,t,n){\"use strict\";var r=n(8674),o=[[\"text\",n(6537)],[\"linkify\",n(7697)],[\"newline\",n(6179)],[\"escape\",n(4072)],[\"backticks\",n(7860)],[\"strikethrough\",n(333).w],[\"emphasis\",n(3650).w],[\"link\",n(9384)],[\"image\",n(1677)],[\"autolink\",n(3657)],[\"html_inline\",n(8286)],[\"entity\",n(4514)]],i=[[\"balance_pairs\",n(5381)],[\"strikethrough\",n(333).g],[\"emphasis\",n(3650).g],[\"fragments_join\",n(1783)]];function a(){var e;for(this.ruler=new r,e=0;e<o.length;e++)this.ruler.push(o[e][0],o[e][1]);for(this.ruler2=new r,e=0;e<i.length;e++)this.ruler2.push(i[e][0],i[e][1])}a.prototype.skipToken=function(e){var t,n,r=e.pos,o=this.ruler.getRules(\"\"),i=o.length,a=e.md.options.maxNesting,l=e.cache;if(\"undefined\"===typeof l[r]){if(e.level<a)for(n=0;n<i&&(e.level++,t=o[n](e,!0),e.level--,!t);n++);else e.pos=e.posMax;t||e.pos++,l[r]=e.pos}else e.pos=l[r]},a.prototype.tokenize=function(e){for(var t,n,r=this.ruler.getRules(\"\"),o=r.length,i=e.posMax,a=e.md.options.maxNesting;e.pos<i;){if(e.level<a)for(n=0;n<o&&!(t=r[n](e,!1));n++);if(t){if(e.pos>=i)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},a.prototype.parse=function(e,t,n,r){var o,i,a,l=new this.State(e,t,n,r);for(this.tokenize(l),a=(i=this.ruler2.getRules(\"\")).length,o=0;o<a;o++)i[o](l)},a.prototype.State=n(9402),e.exports=a},6389:function(e){\"use strict\";e.exports={options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:\"language-\",linkify:!1,typographer:!1,quotes:\"\\u201c\\u201d\\u2018\\u2019\",highlight:null,maxNesting:20},components:{core:{rules:[\"normalize\",\"block\",\"inline\",\"text_join\"]},block:{rules:[\"blockquote\",\"code\",\"fence\",\"heading\",\"hr\",\"html_block\",\"lheading\",\"list\",\"reference\",\"paragraph\"]},inline:{rules:[\"autolink\",\"backticks\",\"emphasis\",\"entity\",\"escape\",\"html_inline\",\"image\",\"link\",\"newline\",\"text\"],rules2:[\"balance_pairs\",\"emphasis\",\"fragments_join\"]}}}},1349:function(e){\"use strict\";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkify:!1,typographer:!1,quotes:\"\\u201c\\u201d\\u2018\\u2019\",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}}},7578:function(e){\"use strict\";e.exports={options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkify:!1,typographer:!1,quotes:\"\\u201c\\u201d\\u2018\\u2019\",highlight:null,maxNesting:20},components:{core:{rules:[\"normalize\",\"block\",\"inline\",\"text_join\"]},block:{rules:[\"paragraph\"]},inline:{rules:[\"text\"],rules2:[\"balance_pairs\",\"fragments_join\"]}}}},6843:function(e,t,n){\"use strict\";var r=n(786).assign,o=n(786).unescapeAll,i=n(786).escapeHtml,a={};function l(){this.rules=r({},a)}a.code_inline=function(e,t,n,r,o){var a=e[t];return\"<code\"+o.renderAttrs(a)+\">\"+i(e[t].content)+\"</code>\"},a.code_block=function(e,t,n,r,o){var a=e[t];return\"<pre\"+o.renderAttrs(a)+\"><code>\"+i(e[t].content)+\"</code></pre>\\n\"},a.fence=function(e,t,n,r,a){var l,s,u,c,d,f=e[t],h=f.info?o(f.info).trim():\"\",p=\"\",m=\"\";return h&&(p=(u=h.split(/(\\s+)/g))[0],m=u.slice(2).join(\"\")),0===(l=n.highlight&&n.highlight(f.content,p,m)||i(f.content)).indexOf(\"<pre\")?l+\"\\n\":h?(s=f.attrIndex(\"class\"),c=f.attrs?f.attrs.slice():[],s<0?c.push([\"class\",n.langPrefix+p]):(c[s]=c[s].slice(),c[s][1]+=\" \"+n.langPrefix+p),d={attrs:c},\"<pre><code\"+a.renderAttrs(d)+\">\"+l+\"</code></pre>\\n\"):\"<pre><code\"+a.renderAttrs(f)+\">\"+l+\"</code></pre>\\n\"},a.image=function(e,t,n,r,o){var i=e[t];return i.attrs[i.attrIndex(\"alt\")][1]=o.renderInlineAsText(i.children,n,r),o.renderToken(e,t,n)},a.hardbreak=function(e,t,n){return n.xhtmlOut?\"<br />\\n\":\"<br>\\n\"},a.softbreak=function(e,t,n){return n.breaks?n.xhtmlOut?\"<br />\\n\":\"<br>\\n\":\"\\n\"},a.text=function(e,t){return i(e[t].content)},a.html_block=function(e,t){return e[t].content},a.html_inline=function(e,t){return e[t].content},l.prototype.renderAttrs=function(e){var t,n,r;if(!e.attrs)return\"\";for(r=\"\",t=0,n=e.attrs.length;t<n;t++)r+=\" \"+i(e.attrs[t][0])+'=\"'+i(e.attrs[t][1])+'\"';return r},l.prototype.renderToken=function(e,t,n){var r,o=\"\",i=!1,a=e[t];return a.hidden?\"\":(a.block&&-1!==a.nesting&&t&&e[t-1].hidden&&(o+=\"\\n\"),o+=(-1===a.nesting?\"</\":\"<\")+a.tag,o+=this.renderAttrs(a),0===a.nesting&&n.xhtmlOut&&(o+=\" /\"),a.block&&(i=!0,1===a.nesting&&t+1<e.length&&(\"inline\"===(r=e[t+1]).type||r.hidden||-1===r.nesting&&r.tag===a.tag)&&(i=!1)),o+=i?\">\\n\":\">\")},l.prototype.renderInline=function(e,t,n){for(var r,o=\"\",i=this.rules,a=0,l=e.length;a<l;a++)\"undefined\"!==typeof i[r=e[a].type]?o+=i[r](e,a,t,n,this):o+=this.renderToken(e,a,t);return o},l.prototype.renderInlineAsText=function(e,t,n){for(var r=\"\",o=0,i=e.length;o<i;o++)\"text\"===e[o].type?r+=e[o].content:\"image\"===e[o].type?r+=this.renderInlineAsText(e[o].children,t,n):\"softbreak\"===e[o].type&&(r+=\"\\n\");return r},l.prototype.render=function(e,t,n){var r,o,i,a=\"\",l=this.rules;for(r=0,o=e.length;r<o;r++)\"inline\"===(i=e[r].type)?a+=this.renderInline(e[r].children,t,n):\"undefined\"!==typeof l[i]?a+=l[e[r].type](e,r,t,n,this):a+=this.renderToken(e,r,t,n);return a},e.exports=l},8674:function(e){\"use strict\";function t(){this.__rules__=[],this.__cache__=null}t.prototype.__find__=function(e){for(var t=0;t<this.__rules__.length;t++)if(this.__rules__[t].name===e)return t;return-1},t.prototype.__compile__=function(){var e=this,t=[\"\"];e.__rules__.forEach((function(e){e.enabled&&e.alt.forEach((function(e){t.indexOf(e)<0&&t.push(e)}))})),e.__cache__={},t.forEach((function(t){e.__cache__[t]=[],e.__rules__.forEach((function(n){n.enabled&&(t&&n.alt.indexOf(t)<0||e.__cache__[t].push(n.fn))}))}))},t.prototype.at=function(e,t,n){var r=this.__find__(e),o=n||{};if(-1===r)throw new Error(\"Parser rule not found: \"+e);this.__rules__[r].fn=t,this.__rules__[r].alt=o.alt||[],this.__cache__=null},t.prototype.before=function(e,t,n,r){var o=this.__find__(e),i=r||{};if(-1===o)throw new Error(\"Parser rule not found: \"+e);this.__rules__.splice(o,0,{name:t,enabled:!0,fn:n,alt:i.alt||[]}),this.__cache__=null},t.prototype.after=function(e,t,n,r){var o=this.__find__(e),i=r||{};if(-1===o)throw new Error(\"Parser rule not found: \"+e);this.__rules__.splice(o+1,0,{name:t,enabled:!0,fn:n,alt:i.alt||[]}),this.__cache__=null},t.prototype.push=function(e,t,n){var r=n||{};this.__rules__.push({name:e,enabled:!0,fn:t,alt:r.alt||[]}),this.__cache__=null},t.prototype.enable=function(e,t){Array.isArray(e)||(e=[e]);var n=[];return e.forEach((function(e){var r=this.__find__(e);if(r<0){if(t)return;throw new Error(\"Rules manager: invalid rule name \"+e)}this.__rules__[r].enabled=!0,n.push(e)}),this),this.__cache__=null,n},t.prototype.enableOnly=function(e,t){Array.isArray(e)||(e=[e]),this.__rules__.forEach((function(e){e.enabled=!1})),this.enable(e,t)},t.prototype.disable=function(e,t){Array.isArray(e)||(e=[e]);var n=[];return e.forEach((function(e){var r=this.__find__(e);if(r<0){if(t)return;throw new Error(\"Rules manager: invalid rule name \"+e)}this.__rules__[r].enabled=!1,n.push(e)}),this),this.__cache__=null,n},t.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},e.exports=t},9224:function(e,t,n){\"use strict\";var r=n(786).isSpace;e.exports=function(e,t,n,o){var i,a,l,s,u,c,d,f,h,p,m,g,v,y,b,w,x,k,_,S,C=e.lineMax,E=e.bMarks[t]+e.tShift[t],N=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(62!==e.src.charCodeAt(E++))return!1;if(o)return!0;for(s=h=e.sCount[t]+1,32===e.src.charCodeAt(E)?(E++,s++,h++,i=!1,w=!0):9===e.src.charCodeAt(E)?(w=!0,(e.bsCount[t]+h)%4===3?(E++,s++,h++,i=!1):i=!0):w=!1,p=[e.bMarks[t]],e.bMarks[t]=E;E<N&&(a=e.src.charCodeAt(E),r(a));)9===a?h+=4-(h+e.bsCount[t]+(i?1:0))%4:h++,E++;for(m=[e.bsCount[t]],e.bsCount[t]=e.sCount[t]+1+(w?1:0),c=E>=N,y=[e.sCount[t]],e.sCount[t]=h-s,b=[e.tShift[t]],e.tShift[t]=E-e.bMarks[t],k=e.md.block.ruler.getRules(\"blockquote\"),v=e.parentType,e.parentType=\"blockquote\",f=t+1;f<n&&(S=e.sCount[f]<e.blkIndent,!((E=e.bMarks[f]+e.tShift[f])>=(N=e.eMarks[f])));f++)if(62!==e.src.charCodeAt(E++)||S){if(c)break;for(x=!1,l=0,u=k.length;l<u;l++)if(k[l](e,f,n,!0)){x=!0;break}if(x){e.lineMax=f,0!==e.blkIndent&&(p.push(e.bMarks[f]),m.push(e.bsCount[f]),b.push(e.tShift[f]),y.push(e.sCount[f]),e.sCount[f]-=e.blkIndent);break}p.push(e.bMarks[f]),m.push(e.bsCount[f]),b.push(e.tShift[f]),y.push(e.sCount[f]),e.sCount[f]=-1}else{for(s=h=e.sCount[f]+1,32===e.src.charCodeAt(E)?(E++,s++,h++,i=!1,w=!0):9===e.src.charCodeAt(E)?(w=!0,(e.bsCount[f]+h)%4===3?(E++,s++,h++,i=!1):i=!0):w=!1,p.push(e.bMarks[f]),e.bMarks[f]=E;E<N&&(a=e.src.charCodeAt(E),r(a));)9===a?h+=4-(h+e.bsCount[f]+(i?1:0))%4:h++,E++;c=E>=N,m.push(e.bsCount[f]),e.bsCount[f]=e.sCount[f]+1+(w?1:0),y.push(e.sCount[f]),e.sCount[f]=h-s,b.push(e.tShift[f]),e.tShift[f]=E-e.bMarks[f]}for(g=e.blkIndent,e.blkIndent=0,(_=e.push(\"blockquote_open\",\"blockquote\",1)).markup=\">\",_.map=d=[t,0],e.md.block.tokenize(e,t,f),(_=e.push(\"blockquote_close\",\"blockquote\",-1)).markup=\">\",e.lineMax=C,e.parentType=v,d[1]=e.line,l=0;l<b.length;l++)e.bMarks[l+t]=p[l],e.tShift[l+t]=b[l],e.sCount[l+t]=y[l],e.bsCount[l+t]=m[l];return e.blkIndent=g,!0}},5078:function(e){\"use strict\";e.exports=function(e,t,n){var r,o,i;if(e.sCount[t]-e.blkIndent<4)return!1;for(o=r=t+1;r<n;)if(e.isEmpty(r))r++;else{if(!(e.sCount[r]-e.blkIndent>=4))break;o=++r}return e.line=o,(i=e.push(\"code_block\",\"code\",0)).content=e.getLines(t,o,4+e.blkIndent,!1)+\"\\n\",i.map=[t,e.line],!0}},1077:function(e){\"use strict\";e.exports=function(e,t,n,r){var o,i,a,l,s,u,c,d=!1,f=e.bMarks[t]+e.tShift[t],h=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(f+3>h)return!1;if(126!==(o=e.src.charCodeAt(f))&&96!==o)return!1;if(s=f,(i=(f=e.skipChars(f,o))-s)<3)return!1;if(c=e.src.slice(s,f),a=e.src.slice(f,h),96===o&&a.indexOf(String.fromCharCode(o))>=0)return!1;if(r)return!0;for(l=t;!(++l>=n)&&!((f=s=e.bMarks[l]+e.tShift[l])<(h=e.eMarks[l])&&e.sCount[l]<e.blkIndent);)if(e.src.charCodeAt(f)===o&&!(e.sCount[l]-e.blkIndent>=4)&&!((f=e.skipChars(f,o))-s<i)&&!((f=e.skipSpaces(f))<h)){d=!0;break}return i=e.sCount[t],e.line=l+(d?1:0),(u=e.push(\"fence\",\"code\",0)).info=a,u.content=e.getLines(t+1,l,i,!0),u.markup=c,u.map=[t,e.line],!0}},969:function(e,t,n){\"use strict\";var r=n(786).isSpace;e.exports=function(e,t,n,o){var i,a,l,s,u=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(35!==(i=e.src.charCodeAt(u))||u>=c)return!1;for(a=1,i=e.src.charCodeAt(++u);35===i&&u<c&&a<=6;)a++,i=e.src.charCodeAt(++u);return!(a>6||u<c&&!r(i))&&(o||(c=e.skipSpacesBack(c,u),(l=e.skipCharsBack(c,35,u))>u&&r(e.src.charCodeAt(l-1))&&(c=l),e.line=t+1,(s=e.push(\"heading_open\",\"h\"+String(a),1)).markup=\"########\".slice(0,a),s.map=[t,e.line],(s=e.push(\"inline\",\"\",0)).content=e.src.slice(u,c).trim(),s.map=[t,e.line],s.children=[],(s=e.push(\"heading_close\",\"h\"+String(a),-1)).markup=\"########\".slice(0,a)),!0)}},7542:function(e,t,n){\"use strict\";var r=n(786).isSpace;e.exports=function(e,t,n,o){var i,a,l,s,u=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(42!==(i=e.src.charCodeAt(u++))&&45!==i&&95!==i)return!1;for(a=1;u<c;){if((l=e.src.charCodeAt(u++))!==i&&!r(l))return!1;l===i&&a++}return!(a<3)&&(o||(e.line=t+1,(s=e.push(\"hr\",\"hr\",0)).map=[t,e.line],s.markup=Array(a+1).join(String.fromCharCode(i))),!0)}},5672:function(e,t,n){\"use strict\";var r=n(1437),o=n(5850).q,i=[[/^<(script|pre|style|textarea)(?=(\\s|>|$))/i,/<\\/(script|pre|style|textarea)>/i,!0],[/^<!--/,/-->/,!0],[/^<\\?/,/\\?>/,!0],[/^<![A-Z]/,/>/,!0],[/^<!\\[CDATA\\[/,/\\]\\]>/,!0],[new RegExp(\"^</?(\"+r.join(\"|\")+\")(?=(\\\\s|/?>|$))\",\"i\"),/^$/,!0],[new RegExp(o.source+\"\\\\s*$\"),/^$/,!1]];e.exports=function(e,t,n,r){var o,a,l,s,u=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(u))return!1;for(s=e.src.slice(u,c),o=0;o<i.length&&!i[o][0].test(s);o++);if(o===i.length)return!1;if(r)return i[o][2];if(a=t+1,!i[o][1].test(s))for(;a<n&&!(e.sCount[a]<e.blkIndent);a++)if(u=e.bMarks[a]+e.tShift[a],c=e.eMarks[a],s=e.src.slice(u,c),i[o][1].test(s)){0!==s.length&&a++;break}return e.line=a,(l=e.push(\"html_block\",\"\",0)).map=[t,a],l.content=e.getLines(t,a,e.blkIndent,!0),!0}},7671:function(e){\"use strict\";e.exports=function(e,t,n){var r,o,i,a,l,s,u,c,d,f,h=t+1,p=e.md.block.ruler.getRules(\"paragraph\");if(e.sCount[t]-e.blkIndent>=4)return!1;for(f=e.parentType,e.parentType=\"paragraph\";h<n&&!e.isEmpty(h);h++)if(!(e.sCount[h]-e.blkIndent>3)){if(e.sCount[h]>=e.blkIndent&&(s=e.bMarks[h]+e.tShift[h])<(u=e.eMarks[h])&&(45===(d=e.src.charCodeAt(s))||61===d)&&(s=e.skipChars(s,d),(s=e.skipSpaces(s))>=u)){c=61===d?1:2;break}if(!(e.sCount[h]<0)){for(o=!1,i=0,a=p.length;i<a;i++)if(p[i](e,h,n,!0)){o=!0;break}if(o)break}}return!!c&&(r=e.getLines(t,h,e.blkIndent,!1).trim(),e.line=h+1,(l=e.push(\"heading_open\",\"h\"+String(c),1)).markup=String.fromCharCode(d),l.map=[t,e.line],(l=e.push(\"inline\",\"\",0)).content=r,l.map=[t,e.line-1],l.children=[],(l=e.push(\"heading_close\",\"h\"+String(c),-1)).markup=String.fromCharCode(d),e.parentType=f,!0)}},7168:function(e,t,n){\"use strict\";var r=n(786).isSpace;function o(e,t){var n,o,i,a;return o=e.bMarks[t]+e.tShift[t],i=e.eMarks[t],42!==(n=e.src.charCodeAt(o++))&&45!==n&&43!==n||o<i&&(a=e.src.charCodeAt(o),!r(a))?-1:o}function i(e,t){var n,o=e.bMarks[t]+e.tShift[t],i=o,a=e.eMarks[t];if(i+1>=a)return-1;if((n=e.src.charCodeAt(i++))<48||n>57)return-1;for(;;){if(i>=a)return-1;if(!((n=e.src.charCodeAt(i++))>=48&&n<=57)){if(41===n||46===n)break;return-1}if(i-o>=10)return-1}return i<a&&(n=e.src.charCodeAt(i),!r(n))?-1:i}e.exports=function(e,t,n,r){var a,l,s,u,c,d,f,h,p,m,g,v,y,b,w,x,k,_,S,C,E,N,M,A,D,P,L,z,j=!1,O=!0;if(e.sCount[t]-e.blkIndent>=4)return!1;if(e.listIndent>=0&&e.sCount[t]-e.listIndent>=4&&e.sCount[t]<e.blkIndent)return!1;if(r&&\"paragraph\"===e.parentType&&e.sCount[t]>=e.blkIndent&&(j=!0),(M=i(e,t))>=0){if(f=!0,D=e.bMarks[t]+e.tShift[t],y=Number(e.src.slice(D,M-1)),j&&1!==y)return!1}else{if(!((M=o(e,t))>=0))return!1;f=!1}if(j&&e.skipSpaces(M)>=e.eMarks[t])return!1;if(v=e.src.charCodeAt(M-1),r)return!0;for(g=e.tokens.length,f?(z=e.push(\"ordered_list_open\",\"ol\",1),1!==y&&(z.attrs=[[\"start\",y]])):z=e.push(\"bullet_list_open\",\"ul\",1),z.map=m=[t,0],z.markup=String.fromCharCode(v),w=t,A=!1,L=e.md.block.ruler.getRules(\"list\"),_=e.parentType,e.parentType=\"list\";w<n;){for(N=M,b=e.eMarks[w],d=x=e.sCount[w]+M-(e.bMarks[t]+e.tShift[t]);N<b;){if(9===(a=e.src.charCodeAt(N)))x+=4-(x+e.bsCount[w])%4;else{if(32!==a)break;x++}N++}if((c=(l=N)>=b?1:x-d)>4&&(c=1),u=d+c,(z=e.push(\"list_item_open\",\"li\",1)).markup=String.fromCharCode(v),z.map=h=[t,0],f&&(z.info=e.src.slice(D,M-1)),E=e.tight,C=e.tShift[t],S=e.sCount[t],k=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=u,e.tight=!0,e.tShift[t]=l-e.bMarks[t],e.sCount[t]=x,l>=b&&e.isEmpty(t+1)?e.line=Math.min(e.line+2,n):e.md.block.tokenize(e,t,n,!0),e.tight&&!A||(O=!1),A=e.line-t>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=k,e.tShift[t]=C,e.sCount[t]=S,e.tight=E,(z=e.push(\"list_item_close\",\"li\",-1)).markup=String.fromCharCode(v),w=t=e.line,h[1]=w,l=e.bMarks[t],w>=n)break;if(e.sCount[w]<e.blkIndent)break;if(e.sCount[t]-e.blkIndent>=4)break;for(P=!1,s=0,p=L.length;s<p;s++)if(L[s](e,w,n,!0)){P=!0;break}if(P)break;if(f){if((M=i(e,w))<0)break;D=e.bMarks[w]+e.tShift[w]}else if((M=o(e,w))<0)break;if(v!==e.src.charCodeAt(M-1))break}return(z=f?e.push(\"ordered_list_close\",\"ol\",-1):e.push(\"bullet_list_close\",\"ul\",-1)).markup=String.fromCharCode(v),m[1]=w,e.line=w,e.parentType=_,O&&function(e,t){var n,r,o=e.level+2;for(n=t+2,r=e.tokens.length-2;n<r;n++)e.tokens[n].level===o&&\"paragraph_open\"===e.tokens[n].type&&(e.tokens[n+2].hidden=!0,e.tokens[n].hidden=!0,n+=2)}(e,g),!0}},6572:function(e){\"use strict\";e.exports=function(e,t){var n,r,o,i,a,l,s=t+1,u=e.md.block.ruler.getRules(\"paragraph\"),c=e.lineMax;for(l=e.parentType,e.parentType=\"paragraph\";s<c&&!e.isEmpty(s);s++)if(!(e.sCount[s]-e.blkIndent>3)&&!(e.sCount[s]<0)){for(r=!1,o=0,i=u.length;o<i;o++)if(u[o](e,s,c,!0)){r=!0;break}if(r)break}return n=e.getLines(t,s,e.blkIndent,!1).trim(),e.line=s,(a=e.push(\"paragraph_open\",\"p\",1)).map=[t,e.line],(a=e.push(\"inline\",\"\",0)).content=n,a.map=[t,e.line],a.children=[],a=e.push(\"paragraph_close\",\"p\",-1),e.parentType=l,!0}},9277:function(e,t,n){\"use strict\";var r=n(786).normalizeReference,o=n(786).isSpace;e.exports=function(e,t,n,i){var a,l,s,u,c,d,f,h,p,m,g,v,y,b,w,x,k=0,_=e.bMarks[t]+e.tShift[t],S=e.eMarks[t],C=t+1;if(e.sCount[t]-e.blkIndent>=4)return!1;if(91!==e.src.charCodeAt(_))return!1;for(;++_<S;)if(93===e.src.charCodeAt(_)&&92!==e.src.charCodeAt(_-1)){if(_+1===S)return!1;if(58!==e.src.charCodeAt(_+1))return!1;break}for(u=e.lineMax,w=e.md.block.ruler.getRules(\"reference\"),m=e.parentType,e.parentType=\"reference\";C<u&&!e.isEmpty(C);C++)if(!(e.sCount[C]-e.blkIndent>3)&&!(e.sCount[C]<0)){for(b=!1,d=0,f=w.length;d<f;d++)if(w[d](e,C,u,!0)){b=!0;break}if(b)break}for(S=(y=e.getLines(t,C,e.blkIndent,!1).trim()).length,_=1;_<S;_++){if(91===(a=y.charCodeAt(_)))return!1;if(93===a){p=_;break}(10===a||92===a&&++_<S&&10===y.charCodeAt(_))&&k++}if(p<0||58!==y.charCodeAt(p+1))return!1;for(_=p+2;_<S;_++)if(10===(a=y.charCodeAt(_)))k++;else if(!o(a))break;if(!(g=e.md.helpers.parseLinkDestination(y,_,S)).ok)return!1;if(c=e.md.normalizeLink(g.str),!e.md.validateLink(c))return!1;for(l=_=g.pos,s=k+=g.lines,v=_;_<S;_++)if(10===(a=y.charCodeAt(_)))k++;else if(!o(a))break;for(g=e.md.helpers.parseLinkTitle(y,_,S),_<S&&v!==_&&g.ok?(x=g.str,_=g.pos,k+=g.lines):(x=\"\",_=l,k=s);_<S&&(a=y.charCodeAt(_),o(a));)_++;if(_<S&&10!==y.charCodeAt(_)&&x)for(x=\"\",_=l,k=s;_<S&&(a=y.charCodeAt(_),o(a));)_++;return!(_<S&&10!==y.charCodeAt(_))&&(!!(h=r(y.slice(1,p)))&&(i||(\"undefined\"===typeof e.env.references&&(e.env.references={}),\"undefined\"===typeof e.env.references[h]&&(e.env.references[h]={title:x,href:c}),e.parentType=m,e.line=t+k+1),!0))}},2007:function(e,t,n){\"use strict\";var r=n(596),o=n(786).isSpace;function i(e,t,n,r){var i,a,l,s,u,c,d,f;for(this.src=e,this.md=t,this.env=n,this.tokens=r,this.bMarks=[],this.eMarks=[],this.tShift=[],this.sCount=[],this.bsCount=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.ddIndent=-1,this.listIndent=-1,this.parentType=\"root\",this.level=0,this.result=\"\",f=!1,l=s=c=d=0,u=(a=this.src).length;s<u;s++){if(i=a.charCodeAt(s),!f){if(o(i)){c++,9===i?d+=4-d%4:d++;continue}f=!0}10!==i&&s!==u-1||(10!==i&&s++,this.bMarks.push(l),this.eMarks.push(s),this.tShift.push(c),this.sCount.push(d),this.bsCount.push(0),f=!1,c=0,d=0,l=s+1)}this.bMarks.push(a.length),this.eMarks.push(a.length),this.tShift.push(0),this.sCount.push(0),this.bsCount.push(0),this.lineMax=this.bMarks.length-1}i.prototype.push=function(e,t,n){var o=new r(e,t,n);return o.block=!0,n<0&&this.level--,o.level=this.level,n>0&&this.level++,this.tokens.push(o),o},i.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},i.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e<t&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},i.prototype.skipSpaces=function(e){for(var t,n=this.src.length;e<n&&(t=this.src.charCodeAt(e),o(t));e++);return e},i.prototype.skipSpacesBack=function(e,t){if(e<=t)return e;for(;e>t;)if(!o(this.src.charCodeAt(--e)))return e+1;return e},i.prototype.skipChars=function(e,t){for(var n=this.src.length;e<n&&this.src.charCodeAt(e)===t;e++);return e},i.prototype.skipCharsBack=function(e,t,n){if(e<=n)return e;for(;e>n;)if(t!==this.src.charCodeAt(--e))return e+1;return e},i.prototype.getLines=function(e,t,n,r){var i,a,l,s,u,c,d,f=e;if(e>=t)return\"\";for(c=new Array(t-e),i=0;f<t;f++,i++){for(a=0,d=s=this.bMarks[f],u=f+1<t||r?this.eMarks[f]+1:this.eMarks[f];s<u&&a<n;){if(l=this.src.charCodeAt(s),o(l))9===l?a+=4-(a+this.bsCount[f])%4:a++;else{if(!(s-d<this.tShift[f]))break;a++}s++}c[i]=a>n?new Array(a-n+1).join(\" \")+this.src.slice(s,u):this.src.slice(s,u)}return c.join(\"\")},i.prototype.Token=r,e.exports=i},9399:function(e,t,n){\"use strict\";var r=n(786).isSpace;function o(e,t){var n=e.bMarks[t]+e.tShift[t],r=e.eMarks[t];return e.src.slice(n,r)}function i(e){var t,n=[],r=0,o=e.length,i=!1,a=0,l=\"\";for(t=e.charCodeAt(r);r<o;)124===t&&(i?(l+=e.substring(a,r-1),a=r):(n.push(l+e.substring(a,r)),l=\"\",a=r+1)),i=92===t,r++,t=e.charCodeAt(r);return n.push(l+e.substring(a)),n}e.exports=function(e,t,n,a){var l,s,u,c,d,f,h,p,m,g,v,y,b,w,x,k,_,S;if(t+2>n)return!1;if(f=t+1,e.sCount[f]<e.blkIndent)return!1;if(e.sCount[f]-e.blkIndent>=4)return!1;if((u=e.bMarks[f]+e.tShift[f])>=e.eMarks[f])return!1;if(124!==(_=e.src.charCodeAt(u++))&&45!==_&&58!==_)return!1;if(u>=e.eMarks[f])return!1;if(124!==(S=e.src.charCodeAt(u++))&&45!==S&&58!==S&&!r(S))return!1;if(45===_&&r(S))return!1;for(;u<e.eMarks[f];){if(124!==(l=e.src.charCodeAt(u))&&45!==l&&58!==l&&!r(l))return!1;u++}for(h=(s=o(e,t+1)).split(\"|\"),g=[],c=0;c<h.length;c++){if(!(v=h[c].trim())){if(0===c||c===h.length-1)continue;return!1}if(!/^:?-+:?$/.test(v))return!1;58===v.charCodeAt(v.length-1)?g.push(58===v.charCodeAt(0)?\"center\":\"right\"):58===v.charCodeAt(0)?g.push(\"left\"):g.push(\"\")}if(-1===(s=o(e,t).trim()).indexOf(\"|\"))return!1;if(e.sCount[t]-e.blkIndent>=4)return!1;if((h=i(s)).length&&\"\"===h[0]&&h.shift(),h.length&&\"\"===h[h.length-1]&&h.pop(),0===(p=h.length)||p!==g.length)return!1;if(a)return!0;for(w=e.parentType,e.parentType=\"table\",k=e.md.block.ruler.getRules(\"blockquote\"),(m=e.push(\"table_open\",\"table\",1)).map=y=[t,0],(m=e.push(\"thead_open\",\"thead\",1)).map=[t,t+1],(m=e.push(\"tr_open\",\"tr\",1)).map=[t,t+1],c=0;c<h.length;c++)m=e.push(\"th_open\",\"th\",1),g[c]&&(m.attrs=[[\"style\",\"text-align:\"+g[c]]]),(m=e.push(\"inline\",\"\",0)).content=h[c].trim(),m.children=[],m=e.push(\"th_close\",\"th\",-1);for(m=e.push(\"tr_close\",\"tr\",-1),m=e.push(\"thead_close\",\"thead\",-1),f=t+2;f<n&&!(e.sCount[f]<e.blkIndent);f++){for(x=!1,c=0,d=k.length;c<d;c++)if(k[c](e,f,n,!0)){x=!0;break}if(x)break;if(!(s=o(e,f).trim()))break;if(e.sCount[f]-e.blkIndent>=4)break;for((h=i(s)).length&&\"\"===h[0]&&h.shift(),h.length&&\"\"===h[h.length-1]&&h.pop(),f===t+2&&((m=e.push(\"tbody_open\",\"tbody\",1)).map=b=[t+2,0]),(m=e.push(\"tr_open\",\"tr\",1)).map=[f,f+1],c=0;c<p;c++)m=e.push(\"td_open\",\"td\",1),g[c]&&(m.attrs=[[\"style\",\"text-align:\"+g[c]]]),(m=e.push(\"inline\",\"\",0)).content=h[c]?h[c].trim():\"\",m.children=[],m=e.push(\"td_close\",\"td\",-1);m=e.push(\"tr_close\",\"tr\",-1)}return b&&(m=e.push(\"tbody_close\",\"tbody\",-1),b[1]=f),m=e.push(\"table_close\",\"table\",-1),y[1]=f,e.parentType=w,e.line=f,!0}},2486:function(e){\"use strict\";e.exports=function(e){var t;e.inlineMode?((t=new e.Token(\"inline\",\"\",0)).content=e.src,t.map=[0,1],t.children=[],e.tokens.push(t)):e.md.block.parse(e.src,e.md,e.env,e.tokens)}},7557:function(e){\"use strict\";e.exports=function(e){var t,n,r,o=e.tokens;for(n=0,r=o.length;n<r;n++)\"inline\"===(t=o[n]).type&&e.md.inline.parse(t.content,e.md,e.env,t.children)}},6716:function(e,t,n){\"use strict\";var r=n(786).arrayReplaceAt;function o(e){return/^<\\/a\\s*>/i.test(e)}e.exports=function(e){var t,n,i,a,l,s,u,c,d,f,h,p,m,g,v,y,b,w,x=e.tokens;if(e.md.options.linkify)for(n=0,i=x.length;n<i;n++)if(\"inline\"===x[n].type&&e.md.linkify.pretest(x[n].content))for(m=0,t=(a=x[n].children).length-1;t>=0;t--)if(\"link_close\"!==(s=a[t]).type){if(\"html_inline\"===s.type&&(w=s.content,/^<a[>\\s]/i.test(w)&&m>0&&m--,o(s.content)&&m++),!(m>0)&&\"text\"===s.type&&e.md.linkify.test(s.content)){for(d=s.content,b=e.md.linkify.match(d),u=[],p=s.level,h=0,b.length>0&&0===b[0].index&&t>0&&\"text_special\"===a[t-1].type&&(b=b.slice(1)),c=0;c<b.length;c++)g=b[c].url,v=e.md.normalizeLink(g),e.md.validateLink(v)&&(y=b[c].text,y=b[c].schema?\"mailto:\"!==b[c].schema||/^mailto:/i.test(y)?e.md.normalizeLinkText(y):e.md.normalizeLinkText(\"mailto:\"+y).replace(/^mailto:/,\"\"):e.md.normalizeLinkText(\"http://\"+y).replace(/^http:\\/\\//,\"\"),(f=b[c].index)>h&&((l=new e.Token(\"text\",\"\",0)).content=d.slice(h,f),l.level=p,u.push(l)),(l=new e.Token(\"link_open\",\"a\",1)).attrs=[[\"href\",v]],l.level=p++,l.markup=\"linkify\",l.info=\"auto\",u.push(l),(l=new e.Token(\"text\",\"\",0)).content=y,l.level=p,u.push(l),(l=new e.Token(\"link_close\",\"a\",-1)).level=--p,l.markup=\"linkify\",l.info=\"auto\",u.push(l),h=b[c].lastIndex);h<d.length&&((l=new e.Token(\"text\",\"\",0)).content=d.slice(h),l.level=p,u.push(l)),x[n].children=a=r(a,t,u)}}else for(t--;a[t].level!==s.level&&\"link_open\"!==a[t].type;)t--}},710:function(e){\"use strict\";var t=/\\r\\n?|\\n/g,n=/\\0/g;e.exports=function(e){var r;r=(r=e.src.replace(t,\"\\n\")).replace(n,\"\\ufffd\"),e.src=r}},904:function(e){\"use strict\";var t=/\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/,n=/\\((c|tm|r)\\)/i,r=/\\((c|tm|r)\\)/gi,o={c:\"\\xa9\",r:\"\\xae\",tm:\"\\u2122\"};function i(e,t){return o[t.toLowerCase()]}function a(e){var t,n,o=0;for(t=e.length-1;t>=0;t--)\"text\"!==(n=e[t]).type||o||(n.content=n.content.replace(r,i)),\"link_open\"===n.type&&\"auto\"===n.info&&o--,\"link_close\"===n.type&&\"auto\"===n.info&&o++}function l(e){var n,r,o=0;for(n=e.length-1;n>=0;n--)\"text\"!==(r=e[n]).type||o||t.test(r.content)&&(r.content=r.content.replace(/\\+-/g,\"\\xb1\").replace(/\\.{2,}/g,\"\\u2026\").replace(/([?!])\\u2026/g,\"$1..\").replace(/([?!]){4,}/g,\"$1$1$1\").replace(/,{2,}/g,\",\").replace(/(^|[^-])---(?=[^-]|$)/gm,\"$1\\u2014\").replace(/(^|\\s)--(?=\\s|$)/gm,\"$1\\u2013\").replace(/(^|[^-\\s])--(?=[^-\\s]|$)/gm,\"$1\\u2013\")),\"link_open\"===r.type&&\"auto\"===r.info&&o--,\"link_close\"===r.type&&\"auto\"===r.info&&o++}e.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)\"inline\"===e.tokens[r].type&&(n.test(e.tokens[r].content)&&a(e.tokens[r].children),t.test(e.tokens[r].content)&&l(e.tokens[r].children))}},6991:function(e,t,n){\"use strict\";var r=n(786).isWhiteSpace,o=n(786).isPunctChar,i=n(786).isMdAsciiPunct,a=/['\"]/,l=/['\"]/g;function s(e,t,n){return e.slice(0,t)+n+e.slice(t+1)}function u(e,t){var n,a,u,c,d,f,h,p,m,g,v,y,b,w,x,k,_,S,C,E,N;for(C=[],n=0;n<e.length;n++){for(a=e[n],h=e[n].level,_=C.length-1;_>=0&&!(C[_].level<=h);_--);if(C.length=_+1,\"text\"===a.type){d=0,f=(u=a.content).length;e:for(;d<f&&(l.lastIndex=d,c=l.exec(u));){if(x=k=!0,d=c.index+1,S=\"'\"===c[0],m=32,c.index-1>=0)m=u.charCodeAt(c.index-1);else for(_=n-1;_>=0&&(\"softbreak\"!==e[_].type&&\"hardbreak\"!==e[_].type);_--)if(e[_].content){m=e[_].content.charCodeAt(e[_].content.length-1);break}if(g=32,d<f)g=u.charCodeAt(d);else for(_=n+1;_<e.length&&(\"softbreak\"!==e[_].type&&\"hardbreak\"!==e[_].type);_++)if(e[_].content){g=e[_].content.charCodeAt(0);break}if(v=i(m)||o(String.fromCharCode(m)),y=i(g)||o(String.fromCharCode(g)),b=r(m),(w=r(g))?x=!1:y&&(b||v||(x=!1)),b?k=!1:v&&(w||y||(k=!1)),34===g&&'\"'===c[0]&&m>=48&&m<=57&&(k=x=!1),x&&k&&(x=v,k=y),x||k){if(k)for(_=C.length-1;_>=0&&(p=C[_],!(C[_].level<h));_--)if(p.single===S&&C[_].level===h){p=C[_],S?(E=t.md.options.quotes[2],N=t.md.options.quotes[3]):(E=t.md.options.quotes[0],N=t.md.options.quotes[1]),a.content=s(a.content,c.index,N),e[p.token].content=s(e[p.token].content,p.pos,E),d+=N.length-1,p.token===n&&(d+=E.length-1),f=(u=a.content).length,C.length=_;continue e}x?C.push({token:n,pos:c.index,single:S,level:h}):k&&S&&(a.content=s(a.content,c.index,\"\\u2019\"))}else S&&(a.content=s(a.content,c.index,\"\\u2019\"))}}}}e.exports=function(e){var t;if(e.md.options.typographer)for(t=e.tokens.length-1;t>=0;t--)\"inline\"===e.tokens[t].type&&a.test(e.tokens[t].content)&&u(e.tokens[t].children,e)}},3311:function(e,t,n){\"use strict\";var r=n(596);function o(e,t,n){this.src=e,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=t}o.prototype.Token=r,e.exports=o},9528:function(e){\"use strict\";e.exports=function(e){var t,n,r,o,i,a,l=e.tokens;for(t=0,n=l.length;t<n;t++)if(\"inline\"===l[t].type){for(i=(r=l[t].children).length,o=0;o<i;o++)\"text_special\"===r[o].type&&(r[o].type=\"text\");for(o=a=0;o<i;o++)\"text\"===r[o].type&&o+1<i&&\"text\"===r[o+1].type?r[o+1].content=r[o].content+r[o+1].content:(o!==a&&(r[a]=r[o]),a++);o!==a&&(r.length=a)}}},3657:function(e){\"use strict\";var t=/^([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,n=/^([a-zA-Z][a-zA-Z0-9+.\\-]{1,31}):([^<>\\x00-\\x20]*)$/;e.exports=function(e,r){var o,i,a,l,s,u,c=e.pos;if(60!==e.src.charCodeAt(c))return!1;for(s=e.pos,u=e.posMax;;){if(++c>=u)return!1;if(60===(l=e.src.charCodeAt(c)))return!1;if(62===l)break}return o=e.src.slice(s+1,c),n.test(o)?(i=e.md.normalizeLink(o),!!e.md.validateLink(i)&&(r||((a=e.push(\"link_open\",\"a\",1)).attrs=[[\"href\",i]],a.markup=\"autolink\",a.info=\"auto\",(a=e.push(\"text\",\"\",0)).content=e.md.normalizeLinkText(o),(a=e.push(\"link_close\",\"a\",-1)).markup=\"autolink\",a.info=\"auto\"),e.pos+=o.length+2,!0)):!!t.test(o)&&(i=e.md.normalizeLink(\"mailto:\"+o),!!e.md.validateLink(i)&&(r||((a=e.push(\"link_open\",\"a\",1)).attrs=[[\"href\",i]],a.markup=\"autolink\",a.info=\"auto\",(a=e.push(\"text\",\"\",0)).content=e.md.normalizeLinkText(o),(a=e.push(\"link_close\",\"a\",-1)).markup=\"autolink\",a.info=\"auto\"),e.pos+=o.length+2,!0))}},7860:function(e){\"use strict\";e.exports=function(e,t){var n,r,o,i,a,l,s,u,c=e.pos;if(96!==e.src.charCodeAt(c))return!1;for(n=c,c++,r=e.posMax;c<r&&96===e.src.charCodeAt(c);)c++;if(s=(o=e.src.slice(n,c)).length,e.backticksScanned&&(e.backticks[s]||0)<=n)return t||(e.pending+=o),e.pos+=s,!0;for(a=l=c;-1!==(a=e.src.indexOf(\"`\",l));){for(l=a+1;l<r&&96===e.src.charCodeAt(l);)l++;if((u=l-a)===s)return t||((i=e.push(\"code_inline\",\"code\",0)).markup=o,i.content=e.src.slice(c,a).replace(/\\n/g,\" \").replace(/^ (.+) $/,\"$1\")),e.pos=l,!0;e.backticks[u]=a}return e.backticksScanned=!0,t||(e.pending+=o),e.pos+=s,!0}},5381:function(e){\"use strict\";function t(e,t){var n,r,o,i,a,l,s,u,c={},d=t.length;if(d){var f=0,h=-2,p=[];for(n=0;n<d;n++)if(o=t[n],p.push(0),t[f].marker===o.marker&&h===o.token-1||(f=n),h=o.token,o.length=o.length||0,o.close){for(c.hasOwnProperty(o.marker)||(c[o.marker]=[-1,-1,-1,-1,-1,-1]),a=c[o.marker][(o.open?3:0)+o.length%3],l=r=f-p[f]-1;r>a;r-=p[r]+1)if((i=t[r]).marker===o.marker&&i.open&&i.end<0&&(s=!1,(i.close||o.open)&&(i.length+o.length)%3===0&&(i.length%3===0&&o.length%3===0||(s=!0)),!s)){u=r>0&&!t[r-1].open?p[r-1]+1:0,p[n]=n-r+u,p[r]=u,o.open=!1,i.end=n,i.close=!1,l=-1,h=-2;break}-1!==l&&(c[o.marker][(o.open?3:0)+(o.length||0)%3]=l)}}}e.exports=function(e){var n,r=e.tokens_meta,o=e.tokens_meta.length;for(t(0,e.delimiters),n=0;n<o;n++)r[n]&&r[n].delimiters&&t(0,r[n].delimiters)}},3650:function(e){\"use strict\";function t(e,t){var n,r,o,i,a,l;for(n=t.length-1;n>=0;n--)95!==(r=t[n]).marker&&42!==r.marker||-1!==r.end&&(o=t[r.end],l=n>0&&t[n-1].end===r.end+1&&t[n-1].marker===r.marker&&t[n-1].token===r.token-1&&t[r.end+1].token===o.token+1,a=String.fromCharCode(r.marker),(i=e.tokens[r.token]).type=l?\"strong_open\":\"em_open\",i.tag=l?\"strong\":\"em\",i.nesting=1,i.markup=l?a+a:a,i.content=\"\",(i=e.tokens[o.token]).type=l?\"strong_close\":\"em_close\",i.tag=l?\"strong\":\"em\",i.nesting=-1,i.markup=l?a+a:a,i.content=\"\",l&&(e.tokens[t[n-1].token].content=\"\",e.tokens[t[r.end+1].token].content=\"\",n--))}e.exports.w=function(e,t){var n,r,o=e.pos,i=e.src.charCodeAt(o);if(t)return!1;if(95!==i&&42!==i)return!1;for(r=e.scanDelims(e.pos,42===i),n=0;n<r.length;n++)e.push(\"text\",\"\",0).content=String.fromCharCode(i),e.delimiters.push({marker:i,length:r.length,token:e.tokens.length-1,end:-1,open:r.can_open,close:r.can_close});return e.pos+=r.length,!0},e.exports.g=function(e){var n,r=e.tokens_meta,o=e.tokens_meta.length;for(t(e,e.delimiters),n=0;n<o;n++)r[n]&&r[n].delimiters&&t(e,r[n].delimiters)}},4514:function(e,t,n){\"use strict\";var r=n(1285),o=n(786).has,i=n(786).isValidEntityCode,a=n(786).fromCodePoint,l=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,s=/^&([a-z][a-z0-9]{1,31});/i;e.exports=function(e,t){var n,u,c,d=e.pos,f=e.posMax;if(38!==e.src.charCodeAt(d))return!1;if(d+1>=f)return!1;if(35===e.src.charCodeAt(d+1)){if(u=e.src.slice(d).match(l))return t||(n=\"x\"===u[1][0].toLowerCase()?parseInt(u[1].slice(1),16):parseInt(u[1],10),(c=e.push(\"text_special\",\"\",0)).content=i(n)?a(n):a(65533),c.markup=u[0],c.info=\"entity\"),e.pos+=u[0].length,!0}else if((u=e.src.slice(d).match(s))&&o(r,u[1]))return t||((c=e.push(\"text_special\",\"\",0)).content=r[u[1]],c.markup=u[0],c.info=\"entity\"),e.pos+=u[0].length,!0;return!1}},4072:function(e,t,n){\"use strict\";for(var r=n(786).isSpace,o=[],i=0;i<256;i++)o.push(0);\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach((function(e){o[e.charCodeAt(0)]=1})),e.exports=function(e,t){var n,i,a,l,s,u=e.pos,c=e.posMax;if(92!==e.src.charCodeAt(u))return!1;if(++u>=c)return!1;if(10===(n=e.src.charCodeAt(u))){for(t||e.push(\"hardbreak\",\"br\",0),u++;u<c&&(n=e.src.charCodeAt(u),r(n));)u++;return e.pos=u,!0}return l=e.src[u],n>=55296&&n<=56319&&u+1<c&&(i=e.src.charCodeAt(u+1))>=56320&&i<=57343&&(l+=e.src[u+1],u++),a=\"\\\\\"+l,t||(s=e.push(\"text_special\",\"\",0),n<256&&0!==o[n]?s.content=l:s.content=a,s.markup=a,s.info=\"escape\"),e.pos=u+1,!0}},1783:function(e){\"use strict\";e.exports=function(e){var t,n,r=0,o=e.tokens,i=e.tokens.length;for(t=n=0;t<i;t++)o[t].nesting<0&&r--,o[t].level=r,o[t].nesting>0&&r++,\"text\"===o[t].type&&t+1<i&&\"text\"===o[t+1].type?o[t+1].content=o[t].content+o[t+1].content:(t!==n&&(o[n]=o[t]),n++);t!==n&&(o.length=n)}},8286:function(e,t,n){\"use strict\";var r=n(5850).n;e.exports=function(e,t){var n,o,i,a,l,s=e.pos;return!!e.md.options.html&&(i=e.posMax,!(60!==e.src.charCodeAt(s)||s+2>=i)&&(!(33!==(n=e.src.charCodeAt(s+1))&&63!==n&&47!==n&&!function(e){var t=32|e;return t>=97&&t<=122}(n))&&(!!(o=e.src.slice(s).match(r))&&(t||((a=e.push(\"html_inline\",\"\",0)).content=e.src.slice(s,s+o[0].length),l=a.content,/^<a[>\\s]/i.test(l)&&e.linkLevel++,function(e){return/^<\\/a\\s*>/i.test(e)}(a.content)&&e.linkLevel--),e.pos+=o[0].length,!0))))}},1677:function(e,t,n){\"use strict\";var r=n(786).normalizeReference,o=n(786).isSpace;e.exports=function(e,t){var n,i,a,l,s,u,c,d,f,h,p,m,g,v=\"\",y=e.pos,b=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(u=e.pos+2,(s=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((c=s+1)<b&&40===e.src.charCodeAt(c)){for(c++;c<b&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);if(c>=b)return!1;for(g=c,(f=e.md.helpers.parseLinkDestination(e.src,c,e.posMax)).ok&&(v=e.md.normalizeLink(f.str),e.md.validateLink(v)?c=f.pos:v=\"\"),g=c;c<b&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);if(f=e.md.helpers.parseLinkTitle(e.src,c,e.posMax),c<b&&g!==c&&f.ok)for(h=f.str,c=f.pos;c<b&&(i=e.src.charCodeAt(c),o(i)||10===i);c++);else h=\"\";if(c>=b||41!==e.src.charCodeAt(c))return e.pos=y,!1;c++}else{if(\"undefined\"===typeof e.env.references)return!1;if(c<b&&91===e.src.charCodeAt(c)?(g=c+1,(c=e.md.helpers.parseLinkLabel(e,c))>=0?l=e.src.slice(g,c++):c=s+1):c=s+1,l||(l=e.src.slice(u,s)),!(d=e.env.references[r(l)]))return e.pos=y,!1;v=d.href,h=d.title}return t||(a=e.src.slice(u,s),e.md.inline.parse(a,e.md,e.env,m=[]),(p=e.push(\"image\",\"img\",0)).attrs=n=[[\"src\",v],[\"alt\",\"\"]],p.children=m,p.content=a,h&&n.push([\"title\",h])),e.pos=c,e.posMax=b,!0}},9384:function(e,t,n){\"use strict\";var r=n(786).normalizeReference,o=n(786).isSpace;e.exports=function(e,t){var n,i,a,l,s,u,c,d,f=\"\",h=\"\",p=e.pos,m=e.posMax,g=e.pos,v=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(s=e.pos+1,(l=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((u=l+1)<m&&40===e.src.charCodeAt(u)){for(v=!1,u++;u<m&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);if(u>=m)return!1;if(g=u,(c=e.md.helpers.parseLinkDestination(e.src,u,e.posMax)).ok){for(f=e.md.normalizeLink(c.str),e.md.validateLink(f)?u=c.pos:f=\"\",g=u;u<m&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);if(c=e.md.helpers.parseLinkTitle(e.src,u,e.posMax),u<m&&g!==u&&c.ok)for(h=c.str,u=c.pos;u<m&&(i=e.src.charCodeAt(u),o(i)||10===i);u++);}(u>=m||41!==e.src.charCodeAt(u))&&(v=!0),u++}if(v){if(\"undefined\"===typeof e.env.references)return!1;if(u<m&&91===e.src.charCodeAt(u)?(g=u+1,(u=e.md.helpers.parseLinkLabel(e,u))>=0?a=e.src.slice(g,u++):u=l+1):u=l+1,a||(a=e.src.slice(s,l)),!(d=e.env.references[r(a)]))return e.pos=p,!1;f=d.href,h=d.title}return t||(e.pos=s,e.posMax=l,e.push(\"link_open\",\"a\",1).attrs=n=[[\"href\",f]],h&&n.push([\"title\",h]),e.linkLevel++,e.md.inline.tokenize(e),e.linkLevel--,e.push(\"link_close\",\"a\",-1)),e.pos=u,e.posMax=m,!0}},7697:function(e){\"use strict\";var t=/(?:^|[^a-z0-9.+-])([a-z][a-z0-9.+-]*)$/i;e.exports=function(e,n){var r,o,i,a,l,s,u;return!!e.md.options.linkify&&(!(e.linkLevel>0)&&(!((r=e.pos)+3>e.posMax)&&(58===e.src.charCodeAt(r)&&(47===e.src.charCodeAt(r+1)&&(47===e.src.charCodeAt(r+2)&&(!!(o=e.pending.match(t))&&(i=o[1],!!(a=e.md.linkify.matchAtStart(e.src.slice(r-i.length)))&&(l=(l=a.url).replace(/\\*+$/,\"\"),s=e.md.normalizeLink(l),!!e.md.validateLink(s)&&(n||(e.pending=e.pending.slice(0,-i.length),(u=e.push(\"link_open\",\"a\",1)).attrs=[[\"href\",s]],u.markup=\"linkify\",u.info=\"auto\",(u=e.push(\"text\",\"\",0)).content=e.md.normalizeLinkText(l),(u=e.push(\"link_close\",\"a\",-1)).markup=\"linkify\",u.info=\"auto\"),e.pos+=l.length-i.length,!0)))))))))}},6179:function(e,t,n){\"use strict\";var r=n(786).isSpace;e.exports=function(e,t){var n,o,i,a=e.pos;if(10!==e.src.charCodeAt(a))return!1;if(n=e.pending.length-1,o=e.posMax,!t)if(n>=0&&32===e.pending.charCodeAt(n))if(n>=1&&32===e.pending.charCodeAt(n-1)){for(i=n-1;i>=1&&32===e.pending.charCodeAt(i-1);)i--;e.pending=e.pending.slice(0,i),e.push(\"hardbreak\",\"br\",0)}else e.pending=e.pending.slice(0,-1),e.push(\"softbreak\",\"br\",0);else e.push(\"softbreak\",\"br\",0);for(a++;a<o&&r(e.src.charCodeAt(a));)a++;return e.pos=a,!0}},9402:function(e,t,n){\"use strict\";var r=n(596),o=n(786).isWhiteSpace,i=n(786).isPunctChar,a=n(786).isMdAsciiPunct;function l(e,t,n,r){this.src=e,this.env=n,this.md=t,this.tokens=r,this.tokens_meta=Array(r.length),this.pos=0,this.posMax=this.src.length,this.level=0,this.pending=\"\",this.pendingLevel=0,this.cache={},this.delimiters=[],this._prev_delimiters=[],this.backticks={},this.backticksScanned=!1,this.linkLevel=0}l.prototype.pushPending=function(){var e=new r(\"text\",\"\",0);return e.content=this.pending,e.level=this.pendingLevel,this.tokens.push(e),this.pending=\"\",e},l.prototype.push=function(e,t,n){this.pending&&this.pushPending();var o=new r(e,t,n),i=null;return n<0&&(this.level--,this.delimiters=this._prev_delimiters.pop()),o.level=this.level,n>0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],i={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(o),this.tokens_meta.push(i),o},l.prototype.scanDelims=function(e,t){var n,r,l,s,u,c,d,f,h,p=e,m=!0,g=!0,v=this.posMax,y=this.src.charCodeAt(e);for(n=e>0?this.src.charCodeAt(e-1):32;p<v&&this.src.charCodeAt(p)===y;)p++;return l=p-e,r=p<v?this.src.charCodeAt(p):32,d=a(n)||i(String.fromCharCode(n)),h=a(r)||i(String.fromCharCode(r)),c=o(n),(f=o(r))?m=!1:h&&(c||d||(m=!1)),c?g=!1:d&&(f||h||(g=!1)),t?(s=m,u=g):(s=m&&(!g||d),u=g&&(!m||h)),{can_open:s,can_close:u,length:l}},l.prototype.Token=r,e.exports=l},333:function(e){\"use strict\";function t(e,t){var n,r,o,i,a,l=[],s=t.length;for(n=0;n<s;n++)126===(o=t[n]).marker&&-1!==o.end&&(i=t[o.end],(a=e.tokens[o.token]).type=\"s_open\",a.tag=\"s\",a.nesting=1,a.markup=\"~~\",a.content=\"\",(a=e.tokens[i.token]).type=\"s_close\",a.tag=\"s\",a.nesting=-1,a.markup=\"~~\",a.content=\"\",\"text\"===e.tokens[i.token-1].type&&\"~\"===e.tokens[i.token-1].content&&l.push(i.token-1));for(;l.length;){for(r=(n=l.pop())+1;r<e.tokens.length&&\"s_close\"===e.tokens[r].type;)r++;n!==--r&&(a=e.tokens[r],e.tokens[r]=e.tokens[n],e.tokens[n]=a)}}e.exports.w=function(e,t){var n,r,o,i,a=e.pos,l=e.src.charCodeAt(a);if(t)return!1;if(126!==l)return!1;if(o=(r=e.scanDelims(e.pos,!0)).length,i=String.fromCharCode(l),o<2)return!1;for(o%2&&(e.push(\"text\",\"\",0).content=i,o--),n=0;n<o;n+=2)e.push(\"text\",\"\",0).content=i+i,e.delimiters.push({marker:l,length:0,token:e.tokens.length-1,end:-1,open:r.can_open,close:r.can_close});return e.pos+=r.length,!0},e.exports.g=function(e){var n,r=e.tokens_meta,o=e.tokens_meta.length;for(t(e,e.delimiters),n=0;n<o;n++)r[n]&&r[n].delimiters&&t(e,r[n].delimiters)}},6537:function(e){\"use strict\";function t(e){switch(e){case 10:case 33:case 35:case 36:case 37:case 38:case 42:case 43:case 45:case 58:case 60:case 61:case 62:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 125:case 126:return!0;default:return!1}}e.exports=function(e,n){for(var r=e.pos;r<e.posMax&&!t(e.src.charCodeAt(r));)r++;return r!==e.pos&&(n||(e.pending+=e.src.slice(e.pos,r)),e.pos=r,!0)}},596:function(e){\"use strict\";function t(e,t,n){this.type=e,this.tag=t,this.attrs=null,this.map=null,this.nesting=n,this.level=0,this.children=null,this.content=\"\",this.markup=\"\",this.info=\"\",this.meta=null,this.block=!1,this.hidden=!1}t.prototype.attrIndex=function(e){var t,n,r;if(!this.attrs)return-1;for(n=0,r=(t=this.attrs).length;n<r;n++)if(t[n][0]===e)return n;return-1},t.prototype.attrPush=function(e){this.attrs?this.attrs.push(e):this.attrs=[e]},t.prototype.attrSet=function(e,t){var n=this.attrIndex(e),r=[e,t];n<0?this.attrPush(r):this.attrs[n]=r},t.prototype.attrGet=function(e){var t=this.attrIndex(e),n=null;return t>=0&&(n=this.attrs[t][1]),n},t.prototype.attrJoin=function(e,t){var n=this.attrIndex(e);n<0?this.attrPush([e,t]):this.attrs[n][1]=this.attrs[n][1]+\" \"+t},e.exports=t},6762:function(e){\"use strict\";var t={};function n(e,r){var o;return\"string\"!==typeof r&&(r=n.defaultChars),o=function(e){var n,r,o=t[e];if(o)return o;for(o=t[e]=[],n=0;n<128;n++)r=String.fromCharCode(n),o.push(r);for(n=0;n<e.length;n++)o[r=e.charCodeAt(n)]=\"%\"+(\"0\"+r.toString(16).toUpperCase()).slice(-2);return o}(r),e.replace(/(%[a-f0-9]{2})+/gi,(function(e){var t,n,r,i,a,l,s,u=\"\";for(t=0,n=e.length;t<n;t+=3)(r=parseInt(e.slice(t+1,t+3),16))<128?u+=o[r]:192===(224&r)&&t+3<n&&128===(192&(i=parseInt(e.slice(t+4,t+6),16)))?(u+=(s=r<<6&1984|63&i)<128?\"\\ufffd\\ufffd\":String.fromCharCode(s),t+=3):224===(240&r)&&t+6<n&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),128===(192&i)&&128===(192&a))?(u+=(s=r<<12&61440|i<<6&4032|63&a)<2048||s>=55296&&s<=57343?\"\\ufffd\\ufffd\\ufffd\":String.fromCharCode(s),t+=6):240===(248&r)&&t+9<n&&(i=parseInt(e.slice(t+4,t+6),16),a=parseInt(e.slice(t+7,t+9),16),l=parseInt(e.slice(t+10,t+12),16),128===(192&i)&&128===(192&a)&&128===(192&l))?((s=r<<18&1835008|i<<12&258048|a<<6&4032|63&l)<65536||s>1114111?u+=\"\\ufffd\\ufffd\\ufffd\\ufffd\":(s-=65536,u+=String.fromCharCode(55296+(s>>10),56320+(1023&s))),t+=9):u+=\"\\ufffd\";return u}))}n.defaultChars=\";/?:@&=+$,#\",n.componentChars=\"\",e.exports=n},2366:function(e){\"use strict\";var t={};function n(e,r,o){var i,a,l,s,u,c=\"\";for(\"string\"!==typeof r&&(o=r,r=n.defaultChars),\"undefined\"===typeof o&&(o=!0),u=function(e){var n,r,o=t[e];if(o)return o;for(o=t[e]=[],n=0;n<128;n++)r=String.fromCharCode(n),/^[0-9a-z]$/i.test(r)?o.push(r):o.push(\"%\"+(\"0\"+n.toString(16).toUpperCase()).slice(-2));for(n=0;n<e.length;n++)o[e.charCodeAt(n)]=e[n];return o}(r),i=0,a=e.length;i<a;i++)if(l=e.charCodeAt(i),o&&37===l&&i+2<a&&/^[0-9a-f]{2}$/i.test(e.slice(i+1,i+3)))c+=e.slice(i,i+3),i+=2;else if(l<128)c+=u[l];else if(l>=55296&&l<=57343){if(l>=55296&&l<=56319&&i+1<a&&(s=e.charCodeAt(i+1))>=56320&&s<=57343){c+=encodeURIComponent(e[i]+e[i+1]),i++;continue}c+=\"%EF%BF%BD\"}else c+=encodeURIComponent(e[i]);return c}n.defaultChars=\";/?:@&=+$,-_.!~*'()#\",n.componentChars=\"-_.!~*'()\",e.exports=n},835:function(e){\"use strict\";e.exports=function(e){var t=\"\";return t+=e.protocol||\"\",t+=e.slashes?\"//\":\"\",t+=e.auth?e.auth+\"@\":\"\",e.hostname&&-1!==e.hostname.indexOf(\":\")?t+=\"[\"+e.hostname+\"]\":t+=e.hostname||\"\",t+=e.port?\":\"+e.port:\"\",t+=e.pathname||\"\",t+=e.search||\"\",t+=e.hash||\"\"}},3461:function(e,t,n){\"use strict\";e.exports.encode=n(2366),e.exports.decode=n(6762),e.exports.format=n(835),e.exports.parse=n(9944)},9944:function(e){\"use strict\";function t(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var n=/^([a-z0-9.+-]+:)/i,r=/:[0-9]*$/,o=/^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,i=[\"{\",\"}\",\"|\",\"\\\\\",\"^\",\"`\"].concat([\"<\",\">\",'\"',\"`\",\" \",\"\\r\",\"\\n\",\"\\t\"]),a=[\"'\"].concat(i),l=[\"%\",\"/\",\"?\",\";\",\"#\"].concat(a),s=[\"/\",\"?\",\"#\"],u=/^[+a-z0-9A-Z_-]{0,63}$/,c=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,\"javascript:\":!0},f={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,\"http:\":!0,\"https:\":!0,\"ftp:\":!0,\"gopher:\":!0,\"file:\":!0};t.prototype.parse=function(e,t){var r,i,a,h,p,m=e;if(m=m.trim(),!t&&1===e.split(\"#\").length){var g=o.exec(m);if(g)return this.pathname=g[1],g[2]&&(this.search=g[2]),this}var v=n.exec(m);if(v&&(a=(v=v[0]).toLowerCase(),this.protocol=v,m=m.substr(v.length)),(t||v||m.match(/^\\/\\/[^@\\/]+@[^@\\/]+/))&&(!(p=\"//\"===m.substr(0,2))||v&&d[v]||(m=m.substr(2),this.slashes=!0)),!d[v]&&(p||v&&!f[v])){var y,b,w=-1;for(r=0;r<s.length;r++)-1!==(h=m.indexOf(s[r]))&&(-1===w||h<w)&&(w=h);for(-1!==(b=-1===w?m.lastIndexOf(\"@\"):m.lastIndexOf(\"@\",w))&&(y=m.slice(0,b),m=m.slice(b+1),this.auth=y),w=-1,r=0;r<l.length;r++)-1!==(h=m.indexOf(l[r]))&&(-1===w||h<w)&&(w=h);-1===w&&(w=m.length),\":\"===m[w-1]&&w--;var x=m.slice(0,w);m=m.slice(w),this.parseHost(x),this.hostname=this.hostname||\"\";var k=\"[\"===this.hostname[0]&&\"]\"===this.hostname[this.hostname.length-1];if(!k){var _=this.hostname.split(/\\./);for(r=0,i=_.length;r<i;r++){var S=_[r];if(S&&!S.match(u)){for(var C=\"\",E=0,N=S.length;E<N;E++)S.charCodeAt(E)>127?C+=\"x\":C+=S[E];if(!C.match(u)){var M=_.slice(0,r),A=_.slice(r+1),D=S.match(c);D&&(M.push(D[1]),A.unshift(D[2])),A.length&&(m=A.join(\".\")+m),this.hostname=M.join(\".\");break}}}}this.hostname.length>255&&(this.hostname=\"\"),k&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var P=m.indexOf(\"#\");-1!==P&&(this.hash=m.substr(P),m=m.slice(0,P));var L=m.indexOf(\"?\");return-1!==L&&(this.search=m.substr(L),m=m.slice(0,L)),m&&(this.pathname=m),f[a]&&this.hostname&&!this.pathname&&(this.pathname=\"\"),this},t.prototype.parseHost=function(e){var t=r.exec(e);t&&(\":\"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},e.exports=function(e,n){if(e&&e instanceof t)return e;var r=new t;return r.parse(e,n),r}},6293:function(e,t,n){\"use strict\";n.r(t),n.d(t,{decode:function(){return b},encode:function(){return w},toASCII:function(){return k},toUnicode:function(){return x},ucs2decode:function(){return m},ucs2encode:function(){return g}});var r=n(7762),o=n(3433),i=2147483647,a=36,l=/^xn--/,s=/[^\\0-\\x7F]/,u=/[\\x2E\\u3002\\uFF0E\\uFF61]/g,c={overflow:\"Overflow: input needs wider integers to process\",\"not-basic\":\"Illegal input >= 0x80 (not a basic code point)\",\"invalid-input\":\"Invalid input\"},d=Math.floor,f=String.fromCharCode;function h(e){throw new RangeError(c[e])}function p(e,t){var n=e.split(\"@\"),r=\"\";n.length>1&&(r=n[0]+\"@\",e=n[1]);var o=function(e,t){for(var n=[],r=e.length;r--;)n[r]=t(e[r]);return n}((e=e.replace(u,\".\")).split(\".\"),t).join(\".\");return r+o}function m(e){for(var t=[],n=0,r=e.length;n<r;){var o=e.charCodeAt(n++);if(o>=55296&&o<=56319&&n<r){var i=e.charCodeAt(n++);56320==(64512&i)?t.push(((1023&o)<<10)+(1023&i)+65536):(t.push(o),n--)}else t.push(o)}return t}var g=function(e){return String.fromCodePoint.apply(String,(0,o.Z)(e))},v=function(e,t){return e+22+75*(e<26)-((0!=t)<<5)},y=function(e,t,n){var r=0;for(e=n?d(e/700):e>>1,e+=d(e/t);e>455;r+=a)e=d(e/35);return d(r+36*e/(e+38))},b=function(e){var t,n=[],r=e.length,o=0,l=128,s=72,u=e.lastIndexOf(\"-\");u<0&&(u=0);for(var c=0;c<u;++c)e.charCodeAt(c)>=128&&h(\"not-basic\"),n.push(e.charCodeAt(c));for(var f=u>0?u+1:0;f<r;){for(var p=o,m=1,g=a;;g+=a){f>=r&&h(\"invalid-input\");var v=(t=e.charCodeAt(f++))>=48&&t<58?t-48+26:t>=65&&t<91?t-65:t>=97&&t<123?t-97:a;v>=a&&h(\"invalid-input\"),v>d((i-o)/m)&&h(\"overflow\"),o+=v*m;var b=g<=s?1:g>=s+26?26:g-s;if(v<b)break;var w=a-b;m>d(i/w)&&h(\"overflow\"),m*=w}var x=n.length+1;s=y(o-p,x,0==p),d(o/x)>i-l&&h(\"overflow\"),l+=d(o/x),o%=x,n.splice(o++,0,l)}return String.fromCodePoint.apply(String,n)},w=function(e){var t,n=[],o=(e=m(e)).length,l=128,s=0,u=72,c=(0,r.Z)(e);try{for(c.s();!(t=c.n()).done;){var p=t.value;p<128&&n.push(f(p))}}catch(z){c.e(z)}finally{c.f()}var g=n.length,b=g;for(g&&n.push(\"-\");b<o;){var w,x=i,k=(0,r.Z)(e);try{for(k.s();!(w=k.n()).done;){var _=w.value;_>=l&&_<x&&(x=_)}}catch(z){k.e(z)}finally{k.f()}var S=b+1;x-l>d((i-s)/S)&&h(\"overflow\"),s+=(x-l)*S,l=x;var C,E=(0,r.Z)(e);try{for(E.s();!(C=E.n()).done;){var N=C.value;if(N<l&&++s>i&&h(\"overflow\"),N===l){for(var M=s,A=a;;A+=a){var D=A<=u?1:A>=u+26?26:A-u;if(M<D)break;var P=M-D,L=a-D;n.push(f(v(D+P%L,0))),M=d(P/L)}n.push(f(v(M,0))),u=y(s,S,b===g),s=0,++b}}}catch(z){E.e(z)}finally{E.f()}++s,++l}return n.join(\"\")},x=function(e){return p(e,(function(e){return l.test(e)?b(e.slice(4).toLowerCase()):e}))},k=function(e){return p(e,(function(e){return s.test(e)?\"xn--\"+w(e):e}))},_={version:\"2.1.0\",ucs2:{decode:m,encode:g},decode:b,encode:w,toASCII:k,toUnicode:x};t.default=_},4463:function(e,t,n){\"use strict\";var r=n(2791),o=n(5296);function i(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,n=1;n<arguments.length;n++)t+=\"&args[]=\"+encodeURIComponent(arguments[n]);return\"Minified React error #\"+e+\"; visit \"+t+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var a=new Set,l={};function s(e,t){u(e,t),u(e+\"Capture\",t)}function u(e,t){for(l[e]=t,e=0;e<t.length;e++)a.add(t[e])}var c=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),d=Object.prototype.hasOwnProperty,f=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,h={},p={};function m(e,t,n,r,o,i,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var g={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(e){g[e]=new m(e,0,!1,e,null,!1,!1)})),[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(e){var t=e[0];g[t]=new m(t,1,!1,e[1],null,!1,!1)})),[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(e){g[e]=new m(e,2,!1,e.toLowerCase(),null,!1,!1)})),[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(e){g[e]=new m(e,2,!1,e,null,!1,!1)})),\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(e){g[e]=new m(e,3,!1,e.toLowerCase(),null,!1,!1)})),[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(e){g[e]=new m(e,3,!0,e,null,!1,!1)})),[\"capture\",\"download\"].forEach((function(e){g[e]=new m(e,4,!1,e,null,!1,!1)})),[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(e){g[e]=new m(e,6,!1,e,null,!1,!1)})),[\"rowSpan\",\"start\"].forEach((function(e){g[e]=new m(e,5,!1,e.toLowerCase(),null,!1,!1)}));var v=/[\\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function b(e,t,n,r){var o=g.hasOwnProperty(t)?g[t]:null;(null!==o?0!==o.type:r||!(2<t.length)||\"o\"!==t[0]&&\"O\"!==t[0]||\"n\"!==t[1]&&\"N\"!==t[1])&&(function(e,t,n,r){if(null===t||\"undefined\"===typeof t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case\"function\":case\"symbol\":return!0;case\"boolean\":return!r&&(null!==n?!n.acceptsBooleans:\"data-\"!==(e=e.toLowerCase().slice(0,5))&&\"aria-\"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!d.call(p,e)||!d.call(h,e)&&(f.test(e)?p[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,\"\"+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&\"\":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?\"\":\"\"+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,null,!1,!1)})),\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)})),[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(e){var t=e.replace(v,y);g[t]=new m(t,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)})),[\"tabIndex\",\"crossOrigin\"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!1,!1)})),g.xlinkHref=new m(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1),[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(e){g[e]=new m(e,1,!1,e.toLowerCase(),null,!0,!0)}));var w=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,x=Symbol.for(\"react.element\"),k=Symbol.for(\"react.portal\"),_=Symbol.for(\"react.fragment\"),S=Symbol.for(\"react.strict_mode\"),C=Symbol.for(\"react.profiler\"),E=Symbol.for(\"react.provider\"),N=Symbol.for(\"react.context\"),M=Symbol.for(\"react.forward_ref\"),A=Symbol.for(\"react.suspense\"),D=Symbol.for(\"react.suspense_list\"),P=Symbol.for(\"react.memo\"),L=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\"),Symbol.for(\"react.debug_trace_mode\");var z=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\"),Symbol.for(\"react.cache\"),Symbol.for(\"react.tracing_marker\");var j=Symbol.iterator;function O(e){return null===e||\"object\"!==typeof e?null:\"function\"===typeof(e=j&&e[j]||e[\"@@iterator\"])?e:null}var T,I=Object.assign;function R(e){if(void 0===T)try{throw Error()}catch(n){var t=n.stack.trim().match(/\\n( *(at )?)/);T=t&&t[1]||\"\"}return\"\\n\"+T+e}var F=!1;function B(e,t){if(!e||F)return\"\";F=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,\"props\",{set:function(){throw Error()}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(u){var r=u}Reflect.construct(e,[],t)}else{try{t.call()}catch(u){r=u}e.call(t.prototype)}else{try{throw Error()}catch(u){r=u}e()}}catch(u){if(u&&r&&\"string\"===typeof u.stack){for(var o=u.stack.split(\"\\n\"),i=r.stack.split(\"\\n\"),a=o.length-1,l=i.length-1;1<=a&&0<=l&&o[a]!==i[l];)l--;for(;1<=a&&0<=l;a--,l--)if(o[a]!==i[l]){if(1!==a||1!==l)do{if(a--,0>--l||o[a]!==i[l]){var s=\"\\n\"+o[a].replace(\" at new \",\" at \");return e.displayName&&s.includes(\"<anonymous>\")&&(s=s.replace(\"<anonymous>\",e.displayName)),s}}while(1<=a&&0<=l);break}}}finally{F=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:\"\")?R(e):\"\"}function q(e){switch(e.tag){case 5:return R(e.type);case 16:return R(\"Lazy\");case 13:return R(\"Suspense\");case 19:return R(\"SuspenseList\");case 0:case 2:case 15:return e=B(e.type,!1);case 11:return e=B(e.type.render,!1);case 1:return e=B(e.type,!0);default:return\"\"}}function U(e){if(null==e)return null;if(\"function\"===typeof e)return e.displayName||e.name||null;if(\"string\"===typeof e)return e;switch(e){case _:return\"Fragment\";case k:return\"Portal\";case C:return\"Profiler\";case S:return\"StrictMode\";case A:return\"Suspense\";case D:return\"SuspenseList\"}if(\"object\"===typeof e)switch(e.$$typeof){case N:return(e.displayName||\"Context\")+\".Consumer\";case E:return(e._context.displayName||\"Context\")+\".Provider\";case M:var t=e.render;return(e=e.displayName)||(e=\"\"!==(e=t.displayName||t.name||\"\")?\"ForwardRef(\"+e+\")\":\"ForwardRef\"),e;case P:return null!==(t=e.displayName||null)?t:U(e.type)||\"Memo\";case L:t=e._payload,e=e._init;try{return U(e(t))}catch(n){}}return null}function H(e){var t=e.type;switch(e.tag){case 24:return\"Cache\";case 9:return(t.displayName||\"Context\")+\".Consumer\";case 10:return(t._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return e=(e=t.render).displayName||e.name||\"\",t.displayName||(\"\"!==e?\"ForwardRef(\"+e+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return t;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return U(t);case 8:return t===S?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";case 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof t)return t.displayName||t.name||null;if(\"string\"===typeof t)return t}return null}function V(e){switch(typeof e){case\"boolean\":case\"number\":case\"string\":case\"undefined\":case\"object\":return e;default:return\"\"}}function W(e){var t=e.type;return(e=e.nodeName)&&\"input\"===e.toLowerCase()&&(\"checkbox\"===t||\"radio\"===t)}function Z(e){e._valueTracker||(e._valueTracker=function(e){var t=W(e)?\"checked\":\"value\",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=\"\"+e[t];if(!e.hasOwnProperty(t)&&\"undefined\"!==typeof n&&\"function\"===typeof n.get&&\"function\"===typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=\"\"+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=\"\"+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function $(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=\"\";return e&&(r=W(e)?e.checked?\"true\":\"false\":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Y(e){if(\"undefined\"===typeof(e=e||(\"undefined\"!==typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function X(e,t){var n=t.checked;return I({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function K(e,t){var n=null==t.defaultValue?\"\":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=V(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:\"checkbox\"===t.type||\"radio\"===t.type?null!=t.checked:null!=t.value}}function G(e,t){null!=(t=t.checked)&&b(e,\"checked\",t,!1)}function Q(e,t){G(e,t);var n=V(t.value),r=t.type;if(null!=n)\"number\"===r?(0===n&&\"\"===e.value||e.value!=n)&&(e.value=\"\"+n):e.value!==\"\"+n&&(e.value=\"\"+n);else if(\"submit\"===r||\"reset\"===r)return void e.removeAttribute(\"value\");t.hasOwnProperty(\"value\")?ee(e,t.type,n):t.hasOwnProperty(\"defaultValue\")&&ee(e,t.type,V(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function J(e,t,n){if(t.hasOwnProperty(\"value\")||t.hasOwnProperty(\"defaultValue\")){var r=t.type;if(!(\"submit\"!==r&&\"reset\"!==r||void 0!==t.value&&null!==t.value))return;t=\"\"+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}\"\"!==(n=e.name)&&(e.name=\"\"),e.defaultChecked=!!e._wrapperState.initialChecked,\"\"!==n&&(e.name=n)}function ee(e,t,n){\"number\"===t&&Y(e.ownerDocument)===e||(null==n?e.defaultValue=\"\"+e._wrapperState.initialValue:e.defaultValue!==\"\"+n&&(e.defaultValue=\"\"+n))}var te=Array.isArray;function ne(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t[\"$\"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty(\"$\"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=\"\"+V(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function re(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(i(91));return I({},t,{value:void 0,defaultValue:void 0,children:\"\"+e._wrapperState.initialValue})}function oe(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(i(92));if(te(n)){if(1<n.length)throw Error(i(93));n=n[0]}t=n}null==t&&(t=\"\"),n=t}e._wrapperState={initialValue:V(n)}}function ie(e,t){var n=V(t.value),r=V(t.defaultValue);null!=n&&((n=\"\"+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=\"\"+r)}function ae(e){var t=e.textContent;t===e._wrapperState.initialValue&&\"\"!==t&&null!==t&&(e.value=t)}function le(e){switch(e){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function se(e,t){return null==e||\"http://www.w3.org/1999/xhtml\"===e?le(t):\"http://www.w3.org/2000/svg\"===e&&\"foreignObject\"===t?\"http://www.w3.org/1999/xhtml\":e}var ue,ce,de=(ce=function(e,t){if(\"http://www.w3.org/2000/svg\"!==e.namespaceURI||\"innerHTML\"in e)e.innerHTML=t;else{for((ue=ue||document.createElement(\"div\")).innerHTML=\"<svg>\"+t.valueOf().toString()+\"</svg>\",t=ue.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ce(e,t)}))}:ce);function fe(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var he={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},pe=[\"Webkit\",\"ms\",\"Moz\",\"O\"];function me(e,t,n){return null==t||\"boolean\"===typeof t||\"\"===t?\"\":n||\"number\"!==typeof t||0===t||he.hasOwnProperty(e)&&he[e]?(\"\"+t).trim():t+\"px\"}function ge(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf(\"--\"),o=me(n,t[n],r);\"float\"===n&&(n=\"cssFloat\"),r?e.setProperty(n,o):e[n]=o}}Object.keys(he).forEach((function(e){pe.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),he[t]=he[e]}))}));var ve=I({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function ye(e,t){if(t){if(ve[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(i(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(i(60));if(\"object\"!==typeof t.dangerouslySetInnerHTML||!(\"__html\"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(null!=t.style&&\"object\"!==typeof t.style)throw Error(i(62))}}function be(e,t){if(-1===e.indexOf(\"-\"))return\"string\"===typeof t.is;switch(e){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}var we=null;function xe(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var ke=null,_e=null,Se=null;function Ce(e){if(e=wo(e)){if(\"function\"!==typeof ke)throw Error(i(280));var t=e.stateNode;t&&(t=ko(t),ke(e.stateNode,e.type,t))}}function Ee(e){_e?Se?Se.push(e):Se=[e]:_e=e}function Ne(){if(_e){var e=_e,t=Se;if(Se=_e=null,Ce(e),t)for(e=0;e<t.length;e++)Ce(t[e])}}function Me(e,t){return e(t)}function Ae(){}var De=!1;function Pe(e,t,n){if(De)return e(t,n);De=!0;try{return Me(e,t,n)}finally{De=!1,(null!==_e||null!==Se)&&(Ae(),Ne())}}function Le(e,t){var n=e.stateNode;if(null===n)return null;var r=ko(n);if(null===r)return null;n=r[t];e:switch(t){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(r=!r.disabled)||(r=!(\"button\"===(e=e.type)||\"input\"===e||\"select\"===e||\"textarea\"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&\"function\"!==typeof n)throw Error(i(231,t,typeof n));return n}var ze=!1;if(c)try{var je={};Object.defineProperty(je,\"passive\",{get:function(){ze=!0}}),window.addEventListener(\"test\",je,je),window.removeEventListener(\"test\",je,je)}catch(ce){ze=!1}function Oe(e,t,n,r,o,i,a,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var Te=!1,Ie=null,Re=!1,Fe=null,Be={onError:function(e){Te=!0,Ie=e}};function qe(e,t,n,r,o,i,a,l,s){Te=!1,Ie=null,Oe.apply(Be,arguments)}function Ue(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!==(4098&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function He(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ve(e){if(Ue(e)!==e)throw Error(i(188))}function We(e){return null!==(e=function(e){var t=e.alternate;if(!t){if(null===(t=Ue(e)))throw Error(i(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var a=o.alternate;if(null===a){if(null!==(r=o.return)){n=r;continue}break}if(o.child===a.child){for(a=o.child;a;){if(a===n)return Ve(o),e;if(a===r)return Ve(o),t;a=a.sibling}throw Error(i(188))}if(n.return!==r.return)n=o,r=a;else{for(var l=!1,s=o.child;s;){if(s===n){l=!0,n=o,r=a;break}if(s===r){l=!0,r=o,n=a;break}s=s.sibling}if(!l){for(s=a.child;s;){if(s===n){l=!0,n=a,r=o;break}if(s===r){l=!0,r=a,n=o;break}s=s.sibling}if(!l)throw Error(i(189))}}if(n.alternate!==r)throw Error(i(190))}if(3!==n.tag)throw Error(i(188));return n.stateNode.current===n?e:t}(e))?Ze(e):null}function Ze(e){if(5===e.tag||6===e.tag)return e;for(e=e.child;null!==e;){var t=Ze(e);if(null!==t)return t;e=e.sibling}return null}var $e=o.unstable_scheduleCallback,Ye=o.unstable_cancelCallback,Xe=o.unstable_shouldYield,Ke=o.unstable_requestPaint,Ge=o.unstable_now,Qe=o.unstable_getCurrentPriorityLevel,Je=o.unstable_ImmediatePriority,et=o.unstable_UserBlockingPriority,tt=o.unstable_NormalPriority,nt=o.unstable_LowPriority,rt=o.unstable_IdlePriority,ot=null,it=null;var at=Math.clz32?Math.clz32:function(e){return e>>>=0,0===e?32:31-(lt(e)/st|0)|0},lt=Math.log,st=Math.LN2;var ut=64,ct=4194304;function dt(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function ft(e,t){var n=e.pendingLanes;if(0===n)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=268435455&n;if(0!==a){var l=a&~o;0!==l?r=dt(l):0!==(i&=a)&&(r=dt(i))}else 0!==(a=n&~o)?r=dt(a):0!==i&&(r=dt(i));if(0===r)return 0;if(0!==t&&t!==r&&0===(t&o)&&((o=r&-r)>=(i=t&-t)||16===o&&0!==(4194240&i)))return t;if(0!==(4&r)&&(r|=16&n),0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-at(t)),r|=e[n],t&=~o;return r}function ht(e,t){switch(e){case 1:case 2:case 4:return t+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;default:return-1}}function pt(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function mt(){var e=ut;return 0===(4194240&(ut<<=1))&&(ut=64),e}function gt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function vt(e,t,n){e.pendingLanes|=t,536870912!==t&&(e.suspendedLanes=0,e.pingedLanes=0),(e=e.eventTimes)[t=31-at(t)]=n}function yt(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-at(n),o=1<<r;o&t|e[r]&t&&(e[r]|=t),n&=~o}}var bt=0;function wt(e){return 1<(e&=-e)?4<e?0!==(268435455&e)?16:536870912:4:1}var xt,kt,_t,St,Ct,Et=!1,Nt=[],Mt=null,At=null,Dt=null,Pt=new Map,Lt=new Map,zt=[],jt=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function Ot(e,t){switch(e){case\"focusin\":case\"focusout\":Mt=null;break;case\"dragenter\":case\"dragleave\":At=null;break;case\"mouseover\":case\"mouseout\":Dt=null;break;case\"pointerover\":case\"pointerout\":Pt.delete(t.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":Lt.delete(t.pointerId)}}function Tt(e,t,n,r,o,i){return null===e||e.nativeEvent!==i?(e={blockedOn:t,domEventName:n,eventSystemFlags:r,nativeEvent:i,targetContainers:[o]},null!==t&&(null!==(t=wo(t))&&kt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function It(e){var t=bo(e.target);if(null!==t){var n=Ue(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=He(n)))return e.blockedOn=t,void Ct(e.priority,(function(){_t(n)}))}else if(3===t&&n.stateNode.current.memoizedState.isDehydrated)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function Rt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Xt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=wo(n))&&kt(t),e.blockedOn=n,!1;var r=new(n=e.nativeEvent).constructor(n.type,n);we=r,n.target.dispatchEvent(r),we=null,t.shift()}return!0}function Ft(e,t,n){Rt(e)&&n.delete(t)}function Bt(){Et=!1,null!==Mt&&Rt(Mt)&&(Mt=null),null!==At&&Rt(At)&&(At=null),null!==Dt&&Rt(Dt)&&(Dt=null),Pt.forEach(Ft),Lt.forEach(Ft)}function qt(e,t){e.blockedOn===t&&(e.blockedOn=null,Et||(Et=!0,o.unstable_scheduleCallback(o.unstable_NormalPriority,Bt)))}function Ut(e){function t(t){return qt(t,e)}if(0<Nt.length){qt(Nt[0],e);for(var n=1;n<Nt.length;n++){var r=Nt[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==Mt&&qt(Mt,e),null!==At&&qt(At,e),null!==Dt&&qt(Dt,e),Pt.forEach(t),Lt.forEach(t),n=0;n<zt.length;n++)(r=zt[n]).blockedOn===e&&(r.blockedOn=null);for(;0<zt.length&&null===(n=zt[0]).blockedOn;)It(n),null===n.blockedOn&&zt.shift()}var Ht=w.ReactCurrentBatchConfig,Vt=!0;function Wt(e,t,n,r){var o=bt,i=Ht.transition;Ht.transition=null;try{bt=1,$t(e,t,n,r)}finally{bt=o,Ht.transition=i}}function Zt(e,t,n,r){var o=bt,i=Ht.transition;Ht.transition=null;try{bt=4,$t(e,t,n,r)}finally{bt=o,Ht.transition=i}}function $t(e,t,n,r){if(Vt){var o=Xt(e,t,n,r);if(null===o)Vr(e,t,r,Yt,n),Ot(e,r);else if(function(e,t,n,r,o){switch(t){case\"focusin\":return Mt=Tt(Mt,e,t,n,r,o),!0;case\"dragenter\":return At=Tt(At,e,t,n,r,o),!0;case\"mouseover\":return Dt=Tt(Dt,e,t,n,r,o),!0;case\"pointerover\":var i=o.pointerId;return Pt.set(i,Tt(Pt.get(i)||null,e,t,n,r,o)),!0;case\"gotpointercapture\":return i=o.pointerId,Lt.set(i,Tt(Lt.get(i)||null,e,t,n,r,o)),!0}return!1}(o,e,t,n,r))r.stopPropagation();else if(Ot(e,r),4&t&&-1<jt.indexOf(e)){for(;null!==o;){var i=wo(o);if(null!==i&&xt(i),null===(i=Xt(e,t,n,r))&&Vr(e,t,r,Yt,n),i===o)break;o=i}null!==o&&r.stopPropagation()}else Vr(e,t,r,null,n)}}var Yt=null;function Xt(e,t,n,r){if(Yt=null,null!==(e=bo(e=xe(r))))if(null===(t=Ue(e)))e=null;else if(13===(n=t.tag)){if(null!==(e=He(t)))return e;e=null}else if(3===n){if(t.stateNode.current.memoizedState.isDehydrated)return 3===t.tag?t.stateNode.containerInfo:null;e=null}else t!==e&&(e=null);return Yt=e,null}function Kt(e){switch(e){case\"cancel\":case\"click\":case\"close\":case\"contextmenu\":case\"copy\":case\"cut\":case\"auxclick\":case\"dblclick\":case\"dragend\":case\"dragstart\":case\"drop\":case\"focusin\":case\"focusout\":case\"input\":case\"invalid\":case\"keydown\":case\"keypress\":case\"keyup\":case\"mousedown\":case\"mouseup\":case\"paste\":case\"pause\":case\"play\":case\"pointercancel\":case\"pointerdown\":case\"pointerup\":case\"ratechange\":case\"reset\":case\"resize\":case\"seeked\":case\"submit\":case\"touchcancel\":case\"touchend\":case\"touchstart\":case\"volumechange\":case\"change\":case\"selectionchange\":case\"textInput\":case\"compositionstart\":case\"compositionend\":case\"compositionupdate\":case\"beforeblur\":case\"afterblur\":case\"beforeinput\":case\"blur\":case\"fullscreenchange\":case\"focus\":case\"hashchange\":case\"popstate\":case\"select\":case\"selectstart\":return 1;case\"drag\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"mousemove\":case\"mouseout\":case\"mouseover\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"scroll\":case\"toggle\":case\"touchmove\":case\"wheel\":case\"mouseenter\":case\"mouseleave\":case\"pointerenter\":case\"pointerleave\":return 4;case\"message\":switch(Qe()){case Je:return 1;case et:return 4;case tt:case nt:return 16;case rt:return 536870912;default:return 16}default:return 16}}var Gt=null,Qt=null,Jt=null;function en(){if(Jt)return Jt;var e,t,n=Qt,r=n.length,o=\"value\"in Gt?Gt.value:Gt.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return Jt=o.slice(e,1<t?1-t:void 0)}function tn(e){var t=e.keyCode;return\"charCode\"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function nn(){return!0}function rn(){return!1}function on(e){function t(t,n,r,o,i){for(var a in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=i,this.currentTarget=null,e)e.hasOwnProperty(a)&&(t=e[a],this[a]=t?t(o):o[a]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?nn:rn,this.isPropagationStopped=rn,this}return I(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():\"unknown\"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=nn)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():\"unknown\"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=nn)},persist:function(){},isPersistent:nn}),t}var an,ln,sn,un={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},cn=on(un),dn=I({},un,{view:0,detail:0}),fn=on(dn),hn=I({},dn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return\"movementX\"in e?e.movementX:(e!==sn&&(sn&&\"mousemove\"===e.type?(an=e.screenX-sn.screenX,ln=e.screenY-sn.screenY):ln=an=0,sn=e),an)},movementY:function(e){return\"movementY\"in e?e.movementY:ln}}),pn=on(hn),mn=on(I({},hn,{dataTransfer:0})),gn=on(I({},dn,{relatedTarget:0})),vn=on(I({},un,{animationName:0,elapsedTime:0,pseudoElement:0})),yn=I({},un,{clipboardData:function(e){return\"clipboardData\"in e?e.clipboardData:window.clipboardData}}),bn=on(yn),wn=on(I({},un,{data:0})),xn={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},kn={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},_n={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Sn(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=_n[e])&&!!t[e]}function Cn(){return Sn}var En=I({},dn,{key:function(e){if(e.key){var t=xn[e.key]||e.key;if(\"Unidentified\"!==t)return t}return\"keypress\"===e.type?13===(e=tn(e))?\"Enter\":String.fromCharCode(e):\"keydown\"===e.type||\"keyup\"===e.type?kn[e.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return\"keypress\"===e.type?tn(e):0},keyCode:function(e){return\"keydown\"===e.type||\"keyup\"===e.type?e.keyCode:0},which:function(e){return\"keypress\"===e.type?tn(e):\"keydown\"===e.type||\"keyup\"===e.type?e.keyCode:0}}),Nn=on(En),Mn=on(I({},hn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),An=on(I({},dn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Dn=on(I({},un,{propertyName:0,elapsedTime:0,pseudoElement:0})),Pn=I({},hn,{deltaX:function(e){return\"deltaX\"in e?e.deltaX:\"wheelDeltaX\"in e?-e.wheelDeltaX:0},deltaY:function(e){return\"deltaY\"in e?e.deltaY:\"wheelDeltaY\"in e?-e.wheelDeltaY:\"wheelDelta\"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0}),Ln=on(Pn),zn=[9,13,27,32],jn=c&&\"CompositionEvent\"in window,On=null;c&&\"documentMode\"in document&&(On=document.documentMode);var Tn=c&&\"TextEvent\"in window&&!On,In=c&&(!jn||On&&8<On&&11>=On),Rn=String.fromCharCode(32),Fn=!1;function Bn(e,t){switch(e){case\"keyup\":return-1!==zn.indexOf(t.keyCode);case\"keydown\":return 229!==t.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function qn(e){return\"object\"===typeof(e=e.detail)&&\"data\"in e?e.data:null}var Un=!1;var Hn={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Vn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return\"input\"===t?!!Hn[e.type]:\"textarea\"===t}function Wn(e,t,n,r){Ee(r),0<(t=Zr(t,\"onChange\")).length&&(n=new cn(\"onChange\",\"change\",null,n,r),e.push({event:n,listeners:t}))}var Zn=null,$n=null;function Yn(e){Rr(e,0)}function Xn(e){if($(xo(e)))return e}function Kn(e,t){if(\"change\"===e)return t}var Gn=!1;if(c){var Qn;if(c){var Jn=\"oninput\"in document;if(!Jn){var er=document.createElement(\"div\");er.setAttribute(\"oninput\",\"return;\"),Jn=\"function\"===typeof er.oninput}Qn=Jn}else Qn=!1;Gn=Qn&&(!document.documentMode||9<document.documentMode)}function tr(){Zn&&(Zn.detachEvent(\"onpropertychange\",nr),$n=Zn=null)}function nr(e){if(\"value\"===e.propertyName&&Xn($n)){var t=[];Wn(t,$n,e,xe(e)),Pe(Yn,t)}}function rr(e,t,n){\"focusin\"===e?(tr(),$n=n,(Zn=t).attachEvent(\"onpropertychange\",nr)):\"focusout\"===e&&tr()}function or(e){if(\"selectionchange\"===e||\"keyup\"===e||\"keydown\"===e)return Xn($n)}function ir(e,t){if(\"click\"===e)return Xn(t)}function ar(e,t){if(\"input\"===e||\"change\"===e)return Xn(t)}var lr=\"function\"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t};function sr(e,t){if(lr(e,t))return!0;if(\"object\"!==typeof e||null===e||\"object\"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++){var o=n[r];if(!d.call(t,o)||!lr(e[o],t[o]))return!1}return!0}function ur(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function cr(e,t){var n,r=ur(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=ur(r)}}function dr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?dr(e,t.parentNode):\"contains\"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function fr(){for(var e=window,t=Y();t instanceof e.HTMLIFrameElement;){try{var n=\"string\"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Y((e=t.contentWindow).document)}return t}function hr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(\"input\"===t&&(\"text\"===e.type||\"search\"===e.type||\"tel\"===e.type||\"url\"===e.type||\"password\"===e.type)||\"textarea\"===t||\"true\"===e.contentEditable)}function pr(e){var t=fr(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&dr(n.ownerDocument.documentElement,n)){if(null!==r&&hr(n))if(t=r.start,void 0===(e=r.end)&&(e=t),\"selectionStart\"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if((e=(t=n.ownerDocument||document)&&t.defaultView||window).getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=void 0===r.end?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=cr(n,i);var a=cr(n,r);o&&a&&(1!==e.rangeCount||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&((t=t.createRange()).setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}for(t=[],e=n;e=e.parentNode;)1===e.nodeType&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(\"function\"===typeof n.focus&&n.focus(),n=0;n<t.length;n++)(e=t[n]).element.scrollLeft=e.left,e.element.scrollTop=e.top}}var mr=c&&\"documentMode\"in document&&11>=document.documentMode,gr=null,vr=null,yr=null,br=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;br||null==gr||gr!==Y(r)||(\"selectionStart\"in(r=gr)&&hr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},yr&&sr(yr,r)||(yr=r,0<(r=Zr(vr,\"onSelect\")).length&&(t=new cn(\"onSelect\",\"select\",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}function xr(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[\"Webkit\"+e]=\"webkit\"+t,n[\"Moz\"+e]=\"moz\"+t,n}var kr={animationend:xr(\"Animation\",\"AnimationEnd\"),animationiteration:xr(\"Animation\",\"AnimationIteration\"),animationstart:xr(\"Animation\",\"AnimationStart\"),transitionend:xr(\"Transition\",\"TransitionEnd\")},_r={},Sr={};function Cr(e){if(_r[e])return _r[e];if(!kr[e])return e;var t,n=kr[e];for(t in n)if(n.hasOwnProperty(t)&&t in Sr)return _r[e]=n[t];return e}c&&(Sr=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete kr.animationend.animation,delete kr.animationiteration.animation,delete kr.animationstart.animation),\"TransitionEvent\"in window||delete kr.transitionend.transition);var Er=Cr(\"animationend\"),Nr=Cr(\"animationiteration\"),Mr=Cr(\"animationstart\"),Ar=Cr(\"transitionend\"),Dr=new Map,Pr=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");function Lr(e,t){Dr.set(e,t),s(t,[e])}for(var zr=0;zr<Pr.length;zr++){var jr=Pr[zr];Lr(jr.toLowerCase(),\"on\"+(jr[0].toUpperCase()+jr.slice(1)))}Lr(Er,\"onAnimationEnd\"),Lr(Nr,\"onAnimationIteration\"),Lr(Mr,\"onAnimationStart\"),Lr(\"dblclick\",\"onDoubleClick\"),Lr(\"focusin\",\"onFocus\"),Lr(\"focusout\",\"onBlur\"),Lr(Ar,\"onTransitionEnd\"),u(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]),u(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]),u(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]),u(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]),s(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \")),s(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \")),s(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]),s(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \")),s(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")),s(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var Or=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),Tr=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(Or));function Ir(e,t,n){var r=e.type||\"unknown-event\";e.currentTarget=n,function(e,t,n,r,o,a,l,s,u){if(qe.apply(this,arguments),Te){if(!Te)throw Error(i(198));var c=Ie;Te=!1,Ie=null,Re||(Re=!0,Fe=c)}}(r,t,void 0,e),e.currentTarget=null}function Rr(e,t){t=0!==(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var i=void 0;if(t)for(var a=r.length-1;0<=a;a--){var l=r[a],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==i&&o.isPropagationStopped())break e;Ir(o,l,u),i=s}else for(a=0;a<r.length;a++){if(s=(l=r[a]).instance,u=l.currentTarget,l=l.listener,s!==i&&o.isPropagationStopped())break e;Ir(o,l,u),i=s}}}if(Re)throw e=Fe,Re=!1,Fe=null,e}function Fr(e,t){var n=t[go];void 0===n&&(n=t[go]=new Set);var r=e+\"__bubble\";n.has(r)||(Hr(t,e,2,!1),n.add(r))}function Br(e,t,n){var r=0;t&&(r|=4),Hr(n,e,r,t)}var qr=\"_reactListening\"+Math.random().toString(36).slice(2);function Ur(e){if(!e[qr]){e[qr]=!0,a.forEach((function(t){\"selectionchange\"!==t&&(Tr.has(t)||Br(t,!1,e),Br(t,!0,e))}));var t=9===e.nodeType?e:e.ownerDocument;null===t||t[qr]||(t[qr]=!0,Br(\"selectionchange\",!1,t))}}function Hr(e,t,n,r){switch(Kt(t)){case 1:var o=Wt;break;case 4:o=Zt;break;default:o=$t}n=o.bind(null,t,n,e),o=void 0,!ze||\"touchstart\"!==t&&\"touchmove\"!==t&&\"wheel\"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Vr(e,t,n,r,o){var i=r;if(0===(1&t)&&0===(2&t)&&null!==r)e:for(;;){if(null===r)return;var a=r.tag;if(3===a||4===a){var l=r.stateNode.containerInfo;if(l===o||8===l.nodeType&&l.parentNode===o)break;if(4===a)for(a=r.return;null!==a;){var s=a.tag;if((3===s||4===s)&&((s=a.stateNode.containerInfo)===o||8===s.nodeType&&s.parentNode===o))return;a=a.return}for(;null!==l;){if(null===(a=bo(l)))return;if(5===(s=a.tag)||6===s){r=i=a;continue e}l=l.parentNode}}r=r.return}Pe((function(){var r=i,o=xe(n),a=[];e:{var l=Dr.get(e);if(void 0!==l){var s=cn,u=e;switch(e){case\"keypress\":if(0===tn(n))break e;case\"keydown\":case\"keyup\":s=Nn;break;case\"focusin\":u=\"focus\",s=gn;break;case\"focusout\":u=\"blur\",s=gn;break;case\"beforeblur\":case\"afterblur\":s=gn;break;case\"click\":if(2===n.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":s=pn;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":s=mn;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":s=An;break;case Er:case Nr:case Mr:s=vn;break;case Ar:s=Dn;break;case\"scroll\":s=fn;break;case\"wheel\":s=Ln;break;case\"copy\":case\"cut\":case\"paste\":s=bn;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":s=Mn}var c=0!==(4&t),d=!c&&\"scroll\"===e,f=c?null!==l?l+\"Capture\":null:l;c=[];for(var h,p=r;null!==p;){var m=(h=p).stateNode;if(5===h.tag&&null!==m&&(h=m,null!==f&&(null!=(m=Le(p,f))&&c.push(Wr(p,m,h)))),d)break;p=p.return}0<c.length&&(l=new s(l,u,null,n,o),a.push({event:l,listeners:c}))}}if(0===(7&t)){if(s=\"mouseout\"===e||\"pointerout\"===e,(!(l=\"mouseover\"===e||\"pointerover\"===e)||n===we||!(u=n.relatedTarget||n.fromElement)||!bo(u)&&!u[mo])&&(s||l)&&(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?bo(u):null)&&(u!==(d=Ue(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=pn,m=\"onMouseLeave\",f=\"onMouseEnter\",p=\"mouse\",\"pointerout\"!==e&&\"pointerover\"!==e||(c=Mn,m=\"onPointerLeave\",f=\"onPointerEnter\",p=\"pointer\"),d=null==s?l:xo(s),h=null==u?l:xo(u),(l=new c(m,p+\"leave\",s,n,o)).target=d,l.relatedTarget=h,m=null,bo(o)===r&&((c=new c(f,p+\"enter\",u,n,o)).target=h,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(f=u,p=0,h=c=s;h;h=$r(h))p++;for(h=0,m=f;m;m=$r(m))h++;for(;0<p-h;)c=$r(c),p--;for(;0<h-p;)f=$r(f),h--;for(;p--;){if(c===f||null!==f&&c===f.alternate)break e;c=$r(c),f=$r(f)}c=null}else c=null;null!==s&&Yr(a,l,s,c,!1),null!==u&&null!==d&&Yr(a,d,u,c,!0)}if(\"select\"===(s=(l=r?xo(r):window).nodeName&&l.nodeName.toLowerCase())||\"input\"===s&&\"file\"===l.type)var g=Kn;else if(Vn(l))if(Gn)g=ar;else{g=or;var v=rr}else(s=l.nodeName)&&\"input\"===s.toLowerCase()&&(\"checkbox\"===l.type||\"radio\"===l.type)&&(g=ir);switch(g&&(g=g(e,r))?Wn(a,g,n,o):(v&&v(e,l,r),\"focusout\"===e&&(v=l._wrapperState)&&v.controlled&&\"number\"===l.type&&ee(l,\"number\",l.value)),v=r?xo(r):window,e){case\"focusin\":(Vn(v)||\"true\"===v.contentEditable)&&(gr=v,vr=r,yr=null);break;case\"focusout\":yr=vr=gr=null;break;case\"mousedown\":br=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":br=!1,wr(a,n,o);break;case\"selectionchange\":if(mr)break;case\"keydown\":case\"keyup\":wr(a,n,o)}var y;if(jn)e:{switch(e){case\"compositionstart\":var b=\"onCompositionStart\";break e;case\"compositionend\":b=\"onCompositionEnd\";break e;case\"compositionupdate\":b=\"onCompositionUpdate\";break e}b=void 0}else Un?Bn(e,n)&&(b=\"onCompositionEnd\"):\"keydown\"===e&&229===n.keyCode&&(b=\"onCompositionStart\");b&&(In&&\"ko\"!==n.locale&&(Un||\"onCompositionStart\"!==b?\"onCompositionEnd\"===b&&Un&&(y=en()):(Qt=\"value\"in(Gt=o)?Gt.value:Gt.textContent,Un=!0)),0<(v=Zr(r,b)).length&&(b=new wn(b,e,null,n,o),a.push({event:b,listeners:v}),y?b.data=y:null!==(y=qn(n))&&(b.data=y))),(y=Tn?function(e,t){switch(e){case\"compositionend\":return qn(t);case\"keypress\":return 32!==t.which?null:(Fn=!0,Rn);case\"textInput\":return(e=t.data)===Rn&&Fn?null:e;default:return null}}(e,n):function(e,t){if(Un)return\"compositionend\"===e||!jn&&Bn(e,t)?(e=en(),Jt=Qt=Gt=null,Un=!1,e):null;switch(e){case\"paste\":default:return null;case\"keypress\":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case\"compositionend\":return In&&\"ko\"!==t.locale?null:t.data}}(e,n))&&(0<(r=Zr(r,\"onBeforeInput\")).length&&(o=new wn(\"onBeforeInput\",\"beforeinput\",null,n,o),a.push({event:o,listeners:r}),o.data=y))}Rr(a,t)}))}function Wr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Zr(e,t){for(var n=t+\"Capture\",r=[];null!==e;){var o=e,i=o.stateNode;5===o.tag&&null!==i&&(o=i,null!=(i=Le(e,n))&&r.unshift(Wr(e,i,o)),null!=(i=Le(e,t))&&r.push(Wr(e,i,o))),e=e.return}return r}function $r(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Yr(e,t,n,r,o){for(var i=t._reactName,a=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,o?null!=(s=Le(n,i))&&a.unshift(Wr(n,s,l)):o||null!=(s=Le(n,i))&&a.push(Wr(n,s,l))),n=n.return}0!==a.length&&e.push({event:t,listeners:a})}var Xr=/\\r\\n?/g,Kr=/\\u0000|\\uFFFD/g;function Gr(e){return(\"string\"===typeof e?e:\"\"+e).replace(Xr,\"\\n\").replace(Kr,\"\")}function Qr(e,t,n){if(t=Gr(t),Gr(e)!==t&&n)throw Error(i(425))}function Jr(){}var eo=null,to=null;function no(e,t){return\"textarea\"===e||\"noscript\"===e||\"string\"===typeof t.children||\"number\"===typeof t.children||\"object\"===typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var ro=\"function\"===typeof setTimeout?setTimeout:void 0,oo=\"function\"===typeof clearTimeout?clearTimeout:void 0,io=\"function\"===typeof Promise?Promise:void 0,ao=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof io?function(e){return io.resolve(null).then(e).catch(lo)}:ro;function lo(e){setTimeout((function(){throw e}))}function so(e,t){var n=t,r=0;do{var o=n.nextSibling;if(e.removeChild(n),o&&8===o.nodeType)if(\"/$\"===(n=o.data)){if(0===r)return e.removeChild(o),void Ut(t);r--}else\"$\"!==n&&\"$?\"!==n&&\"$!\"!==n||r++;n=o}while(n);Ut(t)}function uo(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if(\"$\"===(t=e.data)||\"$!\"===t||\"$?\"===t)break;if(\"/$\"===t)return null}}return e}function co(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if(\"$\"===n||\"$!\"===n||\"$?\"===n){if(0===t)return e;t--}else\"/$\"===n&&t++}e=e.previousSibling}return null}var fo=Math.random().toString(36).slice(2),ho=\"__reactFiber$\"+fo,po=\"__reactProps$\"+fo,mo=\"__reactContainer$\"+fo,go=\"__reactEvents$\"+fo,vo=\"__reactListeners$\"+fo,yo=\"__reactHandles$\"+fo;function bo(e){var t=e[ho];if(t)return t;for(var n=e.parentNode;n;){if(t=n[mo]||n[ho]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=co(e);null!==e;){if(n=e[ho])return n;e=co(e)}return t}n=(e=n).parentNode}return null}function wo(e){return!(e=e[ho]||e[mo])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function xo(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(i(33))}function ko(e){return e[po]||null}var _o=[],So=-1;function Co(e){return{current:e}}function Eo(e){0>So||(e.current=_o[So],_o[So]=null,So--)}function No(e,t){So++,_o[So]=e.current,e.current=t}var Mo={},Ao=Co(Mo),Do=Co(!1),Po=Mo;function Lo(e,t){var n=e.type.contextTypes;if(!n)return Mo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function zo(e){return null!==(e=e.childContextTypes)&&void 0!==e}function jo(){Eo(Do),Eo(Ao)}function Oo(e,t,n){if(Ao.current!==Mo)throw Error(i(168));No(Ao,t),No(Do,n)}function To(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,\"function\"!==typeof r.getChildContext)return n;for(var o in r=r.getChildContext())if(!(o in t))throw Error(i(108,H(e)||\"Unknown\",o));return I({},n,r)}function Io(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Mo,Po=Ao.current,No(Ao,e),No(Do,Do.current),!0}function Ro(e,t,n){var r=e.stateNode;if(!r)throw Error(i(169));n?(e=To(e,t,Po),r.__reactInternalMemoizedMergedChildContext=e,Eo(Do),Eo(Ao),No(Ao,e)):Eo(Do),No(Do,n)}var Fo=null,Bo=!1,qo=!1;function Uo(e){null===Fo?Fo=[e]:Fo.push(e)}function Ho(){if(!qo&&null!==Fo){qo=!0;var e=0,t=bt;try{var n=Fo;for(bt=1;e<n.length;e++){var r=n[e];do{r=r(!0)}while(null!==r)}Fo=null,Bo=!1}catch(o){throw null!==Fo&&(Fo=Fo.slice(e+1)),$e(Je,Ho),o}finally{bt=t,qo=!1}}return null}var Vo=[],Wo=0,Zo=null,$o=0,Yo=[],Xo=0,Ko=null,Go=1,Qo=\"\";function Jo(e,t){Vo[Wo++]=$o,Vo[Wo++]=Zo,Zo=e,$o=t}function ei(e,t,n){Yo[Xo++]=Go,Yo[Xo++]=Qo,Yo[Xo++]=Ko,Ko=e;var r=Go;e=Qo;var o=32-at(r)-1;r&=~(1<<o),n+=1;var i=32-at(t)+o;if(30<i){var a=o-o%5;i=(r&(1<<a)-1).toString(32),r>>=a,o-=a,Go=1<<32-at(t)+o|n<<o|r,Qo=i+e}else Go=1<<i|n<<o|r,Qo=e}function ti(e){null!==e.return&&(Jo(e,1),ei(e,1,0))}function ni(e){for(;e===Zo;)Zo=Vo[--Wo],Vo[Wo]=null,$o=Vo[--Wo],Vo[Wo]=null;for(;e===Ko;)Ko=Yo[--Xo],Yo[Xo]=null,Qo=Yo[--Xo],Yo[Xo]=null,Go=Yo[--Xo],Yo[Xo]=null}var ri=null,oi=null,ii=!1,ai=null;function li(e,t){var n=Pu(5,null,null,0);n.elementType=\"DELETED\",n.stateNode=t,n.return=e,null===(t=e.deletions)?(e.deletions=[n],e.flags|=16):t.push(n)}function si(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,ri=e,oi=uo(t.firstChild),!0);case 6:return null!==(t=\"\"===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,ri=e,oi=null,!0);case 13:return null!==(t=8!==t.nodeType?null:t)&&(n=null!==Ko?{id:Go,overflow:Qo}:null,e.memoizedState={dehydrated:t,treeContext:n,retryLane:1073741824},(n=Pu(18,null,null,0)).stateNode=t,n.return=e,e.child=n,ri=e,oi=null,!0);default:return!1}}function ui(e){return 0!==(1&e.mode)&&0===(128&e.flags)}function ci(e){if(ii){var t=oi;if(t){var n=t;if(!si(e,t)){if(ui(e))throw Error(i(418));t=uo(n.nextSibling);var r=ri;t&&si(e,t)?li(r,n):(e.flags=-4097&e.flags|2,ii=!1,ri=e)}}else{if(ui(e))throw Error(i(418));e.flags=-4097&e.flags|2,ii=!1,ri=e}}}function di(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;ri=e}function fi(e){if(e!==ri)return!1;if(!ii)return di(e),ii=!0,!1;var t;if((t=3!==e.tag)&&!(t=5!==e.tag)&&(t=\"head\"!==(t=e.type)&&\"body\"!==t&&!no(e.type,e.memoizedProps)),t&&(t=oi)){if(ui(e))throw hi(),Error(i(418));for(;t;)li(e,t),t=uo(t.nextSibling)}if(di(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(i(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if(\"/$\"===n){if(0===t){oi=uo(e.nextSibling);break e}t--}else\"$\"!==n&&\"$!\"!==n&&\"$?\"!==n||t++}e=e.nextSibling}oi=null}}else oi=ri?uo(e.stateNode.nextSibling):null;return!0}function hi(){for(var e=oi;e;)e=uo(e.nextSibling)}function pi(){oi=ri=null,ii=!1}function mi(e){null===ai?ai=[e]:ai.push(e)}var gi=w.ReactCurrentBatchConfig;function vi(e,t){if(e&&e.defaultProps){for(var n in t=I({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var yi=Co(null),bi=null,wi=null,xi=null;function ki(){xi=wi=bi=null}function _i(e){var t=yi.current;Eo(yi),e._currentValue=t}function Si(e,t,n){for(;null!==e;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,null!==r&&(r.childLanes|=t)):null!==r&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Ci(e,t){bi=e,xi=wi=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!==(e.lanes&t)&&(wl=!0),e.firstContext=null)}function Ei(e){var t=e._currentValue;if(xi!==e)if(e={context:e,memoizedValue:t,next:null},null===wi){if(null===bi)throw Error(i(308));wi=e,bi.dependencies={lanes:0,firstContext:e}}else wi=wi.next=e;return t}var Ni=null;function Mi(e){null===Ni?Ni=[e]:Ni.push(e)}function Ai(e,t,n,r){var o=t.interleaved;return null===o?(n.next=n,Mi(t)):(n.next=o.next,o.next=n),t.interleaved=n,Di(e,r)}function Di(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}var Pi=!1;function Li(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function zi(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function ji(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Oi(e,t,n){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!==(2&Ms)){var o=r.pending;return null===o?t.next=t:(t.next=o.next,o.next=t),r.pending=t,Di(e,n)}return null===(o=r.interleaved)?(t.next=t,Mi(r)):(t.next=o.next,o.next=t),r.interleaved=t,Di(e,n)}function Ti(e,t,n){if(null!==(t=t.updateQueue)&&(t=t.shared,0!==(4194240&n))){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,yt(e,n)}}function Ii(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,i=null;if(null!==(n=n.firstBaseUpdate)){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===i?o=i=a:i=i.next=a,n=n.next}while(null!==n);null===i?o=i=t:i=i.next=t}else o=i=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Ri(e,t,n,r){var o=e.updateQueue;Pi=!1;var i=o.firstBaseUpdate,a=o.lastBaseUpdate,l=o.shared.pending;if(null!==l){o.shared.pending=null;var s=l,u=s.next;s.next=null,null===a?i=u:a.next=u,a=s;var c=e.alternate;null!==c&&((l=(c=c.updateQueue).lastBaseUpdate)!==a&&(null===l?c.firstBaseUpdate=u:l.next=u,c.lastBaseUpdate=s))}if(null!==i){var d=o.baseState;for(a=0,c=u=s=null,l=i;;){var f=l.lane,h=l.eventTime;if((r&f)===f){null!==c&&(c=c.next={eventTime:h,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var p=e,m=l;switch(f=t,h=n,m.tag){case 1:if(\"function\"===typeof(p=m.payload)){d=p.call(h,d,f);break e}d=p;break e;case 3:p.flags=-65537&p.flags|128;case 0:if(null===(f=\"function\"===typeof(p=m.payload)?p.call(h,d,f):p)||void 0===f)break e;d=I({},d,f);break e;case 2:Pi=!0}}null!==l.callback&&0!==l.lane&&(e.flags|=64,null===(f=o.effects)?o.effects=[l]:f.push(l))}else h={eventTime:h,lane:f,tag:l.tag,payload:l.payload,callback:l.callback,next:null},null===c?(u=c=h,s=d):c=c.next=h,a|=f;if(null===(l=l.next)){if(null===(l=o.shared.pending))break;l=(f=l).next,f.next=null,o.lastBaseUpdate=f,o.shared.pending=null}}if(null===c&&(s=d),o.baseState=s,o.firstBaseUpdate=u,o.lastBaseUpdate=c,null!==(t=o.shared.interleaved)){o=t;do{a|=o.lane,o=o.next}while(o!==t)}else null===i&&(o.shared.lanes=0);Ts|=a,e.lanes=a,e.memoizedState=d}}function Fi(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,\"function\"!==typeof o)throw Error(i(191,o));o.call(r)}}}var Bi=(new r.Component).refs;function qi(e,t,n,r){n=null===(n=n(r,t=e.memoizedState))||void 0===n?t:I({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var Ui={isMounted:function(e){return!!(e=e._reactInternals)&&Ue(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=eu(),o=tu(e),i=ji(r,o);i.payload=t,void 0!==n&&null!==n&&(i.callback=n),null!==(t=Oi(e,i,o))&&(nu(t,e,o,r),Ti(t,e,o))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=eu(),o=tu(e),i=ji(r,o);i.tag=1,i.payload=t,void 0!==n&&null!==n&&(i.callback=n),null!==(t=Oi(e,i,o))&&(nu(t,e,o,r),Ti(t,e,o))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=eu(),r=tu(e),o=ji(n,r);o.tag=2,void 0!==t&&null!==t&&(o.callback=t),null!==(t=Oi(e,o,r))&&(nu(t,e,r,n),Ti(t,e,r))}};function Hi(e,t,n,r,o,i,a){return\"function\"===typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!sr(n,r)||!sr(o,i))}function Vi(e,t,n){var r=!1,o=Mo,i=t.contextType;return\"object\"===typeof i&&null!==i?i=Ei(i):(o=zo(t)?Po:Ao.current,i=(r=null!==(r=t.contextTypes)&&void 0!==r)?Lo(e,o):Mo),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=Ui,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=i),t}function Wi(e,t,n,r){e=t.state,\"function\"===typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),\"function\"===typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&Ui.enqueueReplaceState(t,t.state,null)}function Zi(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=Bi,Li(e);var i=t.contextType;\"object\"===typeof i&&null!==i?o.context=Ei(i):(i=zo(t)?Po:Ao.current,o.context=Lo(e,i)),o.state=e.memoizedState,\"function\"===typeof(i=t.getDerivedStateFromProps)&&(qi(e,t,i,n),o.state=e.memoizedState),\"function\"===typeof t.getDerivedStateFromProps||\"function\"===typeof o.getSnapshotBeforeUpdate||\"function\"!==typeof o.UNSAFE_componentWillMount&&\"function\"!==typeof o.componentWillMount||(t=o.state,\"function\"===typeof o.componentWillMount&&o.componentWillMount(),\"function\"===typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&Ui.enqueueReplaceState(o,o.state,null),Ri(e,n,o,r),o.state=e.memoizedState),\"function\"===typeof o.componentDidMount&&(e.flags|=4194308)}function $i(e,t,n){if(null!==(e=n.ref)&&\"function\"!==typeof e&&\"object\"!==typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(i(309));var r=n.stateNode}if(!r)throw Error(i(147,e));var o=r,a=\"\"+e;return null!==t&&null!==t.ref&&\"function\"===typeof t.ref&&t.ref._stringRef===a?t.ref:(t=function(e){var t=o.refs;t===Bi&&(t=o.refs={}),null===e?delete t[a]:t[a]=e},t._stringRef=a,t)}if(\"string\"!==typeof e)throw Error(i(284));if(!n._owner)throw Error(i(290,e))}return e}function Yi(e,t){throw e=Object.prototype.toString.call(t),Error(i(31,\"[object Object]\"===e?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":e))}function Xi(e){return(0,e._init)(e._payload)}function Ki(e){function t(t,n){if(e){var r=t.deletions;null===r?(t.deletions=[n],t.flags|=16):r.push(n)}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=zu(e,t)).index=0,e.sibling=null,e}function a(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags|=2,n):r:(t.flags|=2,n):(t.flags|=1048576,n)}function l(t){return e&&null===t.alternate&&(t.flags|=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=Iu(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){var i=n.type;return i===_?d(e,t,n.props.children,r,n.key):null!==t&&(t.elementType===i||\"object\"===typeof i&&null!==i&&i.$$typeof===L&&Xi(i)===t.type)?((r=o(t,n.props)).ref=$i(e,t,n),r.return=e,r):((r=ju(n.type,n.key,n.props,null,e.mode,r)).ref=$i(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ru(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,i){return null===t||7!==t.tag?((t=Ou(n,e.mode,r,i)).return=e,t):((t=o(t,n)).return=e,t)}function f(e,t,n){if(\"string\"===typeof t&&\"\"!==t||\"number\"===typeof t)return(t=Iu(\"\"+t,e.mode,n)).return=e,t;if(\"object\"===typeof t&&null!==t){switch(t.$$typeof){case x:return(n=ju(t.type,t.key,t.props,null,e.mode,n)).ref=$i(e,null,t),n.return=e,n;case k:return(t=Ru(t,e.mode,n)).return=e,t;case L:return f(e,(0,t._init)(t._payload),n)}if(te(t)||O(t))return(t=Ou(t,e.mode,n,null)).return=e,t;Yi(e,t)}return null}function h(e,t,n,r){var o=null!==t?t.key:null;if(\"string\"===typeof n&&\"\"!==n||\"number\"===typeof n)return null!==o?null:s(e,t,\"\"+n,r);if(\"object\"===typeof n&&null!==n){switch(n.$$typeof){case x:return n.key===o?u(e,t,n,r):null;case k:return n.key===o?c(e,t,n,r):null;case L:return h(e,t,(o=n._init)(n._payload),r)}if(te(n)||O(n))return null!==o?null:d(e,t,n,r,null);Yi(e,n)}return null}function p(e,t,n,r,o){if(\"string\"===typeof r&&\"\"!==r||\"number\"===typeof r)return s(t,e=e.get(n)||null,\"\"+r,o);if(\"object\"===typeof r&&null!==r){switch(r.$$typeof){case x:return u(t,e=e.get(null===r.key?n:r.key)||null,r,o);case k:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o);case L:return p(e,t,n,(0,r._init)(r._payload),o)}if(te(r)||O(r))return d(t,e=e.get(n)||null,r,o,null);Yi(t,r)}return null}function m(o,i,l,s){for(var u=null,c=null,d=i,m=i=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=h(o,d,l[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(o,d),i=a(v,i,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===l.length)return n(o,d),ii&&Jo(o,m),u;if(null===d){for(;m<l.length;m++)null!==(d=f(o,l[m],s))&&(i=a(d,i,m),null===c?u=d:c.sibling=d,c=d);return ii&&Jo(o,m),u}for(d=r(o,d);m<l.length;m++)null!==(g=p(d,o,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),i=a(g,i,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(o,e)})),ii&&Jo(o,m),u}function g(o,l,s,u){var c=O(s);if(\"function\"!==typeof c)throw Error(i(150));if(null==(s=c.call(s)))throw Error(i(151));for(var d=c=null,m=l,g=l=0,v=null,y=s.next();null!==m&&!y.done;g++,y=s.next()){m.index>g?(v=m,m=null):v=m.sibling;var b=h(o,m,y.value,u);if(null===b){null===m&&(m=v);break}e&&m&&null===b.alternate&&t(o,m),l=a(b,l,g),null===d?c=b:d.sibling=b,d=b,m=v}if(y.done)return n(o,m),ii&&Jo(o,g),c;if(null===m){for(;!y.done;g++,y=s.next())null!==(y=f(o,y.value,u))&&(l=a(y,l,g),null===d?c=y:d.sibling=y,d=y);return ii&&Jo(o,g),c}for(m=r(o,m);!y.done;g++,y=s.next())null!==(y=p(m,o,g,y.value,u))&&(e&&null!==y.alternate&&m.delete(null===y.key?g:y.key),l=a(y,l,g),null===d?c=y:d.sibling=y,d=y);return e&&m.forEach((function(e){return t(o,e)})),ii&&Jo(o,g),c}return function e(r,i,a,s){if(\"object\"===typeof a&&null!==a&&a.type===_&&null===a.key&&(a=a.props.children),\"object\"===typeof a&&null!==a){switch(a.$$typeof){case x:e:{for(var u=a.key,c=i;null!==c;){if(c.key===u){if((u=a.type)===_){if(7===c.tag){n(r,c.sibling),(i=o(c,a.props.children)).return=r,r=i;break e}}else if(c.elementType===u||\"object\"===typeof u&&null!==u&&u.$$typeof===L&&Xi(u)===c.type){n(r,c.sibling),(i=o(c,a.props)).ref=$i(r,c,a),i.return=r,r=i;break e}n(r,c);break}t(r,c),c=c.sibling}a.type===_?((i=Ou(a.props.children,r.mode,s,a.key)).return=r,r=i):((s=ju(a.type,a.key,a.props,null,r.mode,s)).ref=$i(r,i,a),s.return=r,r=s)}return l(r);case k:e:{for(c=a.key;null!==i;){if(i.key===c){if(4===i.tag&&i.stateNode.containerInfo===a.containerInfo&&i.stateNode.implementation===a.implementation){n(r,i.sibling),(i=o(i,a.children||[])).return=r,r=i;break e}n(r,i);break}t(r,i),i=i.sibling}(i=Ru(a,r.mode,s)).return=r,r=i}return l(r);case L:return e(r,i,(c=a._init)(a._payload),s)}if(te(a))return m(r,i,a,s);if(O(a))return g(r,i,a,s);Yi(r,a)}return\"string\"===typeof a&&\"\"!==a||\"number\"===typeof a?(a=\"\"+a,null!==i&&6===i.tag?(n(r,i.sibling),(i=o(i,a)).return=r,r=i):(n(r,i),(i=Iu(a,r.mode,s)).return=r,r=i),l(r)):n(r,i)}}var Gi=Ki(!0),Qi=Ki(!1),Ji={},ea=Co(Ji),ta=Co(Ji),na=Co(Ji);function ra(e){if(e===Ji)throw Error(i(174));return e}function oa(e,t){switch(No(na,t),No(ta,e),No(ea,Ji),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:se(null,\"\");break;default:t=se(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}Eo(ea),No(ea,t)}function ia(){Eo(ea),Eo(ta),Eo(na)}function aa(e){ra(na.current);var t=ra(ea.current),n=se(t,e.type);t!==n&&(No(ta,e),No(ea,n))}function la(e){ta.current===e&&(Eo(ea),Eo(ta))}var sa=Co(0);function ua(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||\"$?\"===n.data||\"$!\"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var ca=[];function da(){for(var e=0;e<ca.length;e++)ca[e]._workInProgressVersionPrimary=null;ca.length=0}var fa=w.ReactCurrentDispatcher,ha=w.ReactCurrentBatchConfig,pa=0,ma=null,ga=null,va=null,ya=!1,ba=!1,wa=0,xa=0;function ka(){throw Error(i(321))}function _a(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function Sa(e,t,n,r,o,a){if(pa=a,ma=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,fa.current=null===e||null===e.memoizedState?ll:sl,e=n(r,o),ba){a=0;do{if(ba=!1,wa=0,25<=a)throw Error(i(301));a+=1,va=ga=null,t.updateQueue=null,fa.current=ul,e=n(r,o)}while(ba)}if(fa.current=al,t=null!==ga&&null!==ga.next,pa=0,va=ga=ma=null,ya=!1,t)throw Error(i(300));return e}function Ca(){var e=0!==wa;return wa=0,e}function Ea(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===va?ma.memoizedState=va=e:va=va.next=e,va}function Na(){if(null===ga){var e=ma.alternate;e=null!==e?e.memoizedState:null}else e=ga.next;var t=null===va?ma.memoizedState:va.next;if(null!==t)va=t,ga=e;else{if(null===e)throw Error(i(310));e={memoizedState:(ga=e).memoizedState,baseState:ga.baseState,baseQueue:ga.baseQueue,queue:ga.queue,next:null},null===va?ma.memoizedState=va=e:va=va.next=e}return va}function Ma(e,t){return\"function\"===typeof t?t(e):t}function Aa(e){var t=Na(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=ga,o=r.baseQueue,a=n.pending;if(null!==a){if(null!==o){var l=o.next;o.next=a.next,a.next=l}r.baseQueue=o=a,n.pending=null}if(null!==o){a=o.next,r=r.baseState;var s=l=null,u=null,c=a;do{var d=c.lane;if((pa&d)===d)null!==u&&(u=u.next={lane:0,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null}),r=c.hasEagerState?c.eagerState:e(r,c.action);else{var f={lane:d,action:c.action,hasEagerState:c.hasEagerState,eagerState:c.eagerState,next:null};null===u?(s=u=f,l=r):u=u.next=f,ma.lanes|=d,Ts|=d}c=c.next}while(null!==c&&c!==a);null===u?l=r:u.next=s,lr(r,t.memoizedState)||(wl=!0),t.memoizedState=r,t.baseState=l,t.baseQueue=u,n.lastRenderedState=r}if(null!==(e=n.interleaved)){o=e;do{a=o.lane,ma.lanes|=a,Ts|=a,o=o.next}while(o!==e)}else null===o&&(n.lanes=0);return[t.memoizedState,n.dispatch]}function Da(e){var t=Na(),n=t.queue;if(null===n)throw Error(i(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,a=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{a=e(a,l.action),l=l.next}while(l!==o);lr(a,t.memoizedState)||(wl=!0),t.memoizedState=a,null===t.baseQueue&&(t.baseState=a),n.lastRenderedState=a}return[a,r]}function Pa(){}function La(e,t){var n=ma,r=Na(),o=t(),a=!lr(r.memoizedState,o);if(a&&(r.memoizedState=o,wl=!0),r=r.queue,Va(Oa.bind(null,n,r,e),[e]),r.getSnapshot!==t||a||null!==va&&1&va.memoizedState.tag){if(n.flags|=2048,Fa(9,ja.bind(null,n,r,o,t),void 0,null),null===As)throw Error(i(349));0!==(30&pa)||za(n,t,o)}return o}function za(e,t,n){e.flags|=16384,e={getSnapshot:t,value:n},null===(t=ma.updateQueue)?(t={lastEffect:null,stores:null},ma.updateQueue=t,t.stores=[e]):null===(n=t.stores)?t.stores=[e]:n.push(e)}function ja(e,t,n,r){t.value=n,t.getSnapshot=r,Ta(t)&&Ia(e)}function Oa(e,t,n){return n((function(){Ta(t)&&Ia(e)}))}function Ta(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!lr(e,n)}catch(r){return!0}}function Ia(e){var t=Di(e,1);null!==t&&nu(t,e,1,-1)}function Ra(e){var t=Ea();return\"function\"===typeof e&&(e=e()),t.memoizedState=t.baseState=e,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Ma,lastRenderedState:e},t.queue=e,e=e.dispatch=nl.bind(null,ma,e),[t.memoizedState,e]}function Fa(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=ma.updateQueue)?(t={lastEffect:null,stores:null},ma.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function Ba(){return Na().memoizedState}function qa(e,t,n,r){var o=Ea();ma.flags|=e,o.memoizedState=Fa(1|t,n,void 0,void 0===r?null:r)}function Ua(e,t,n,r){var o=Na();r=void 0===r?null:r;var i=void 0;if(null!==ga){var a=ga.memoizedState;if(i=a.destroy,null!==r&&_a(r,a.deps))return void(o.memoizedState=Fa(t,n,i,r))}ma.flags|=e,o.memoizedState=Fa(1|t,n,i,r)}function Ha(e,t){return qa(8390656,8,e,t)}function Va(e,t){return Ua(2048,8,e,t)}function Wa(e,t){return Ua(4,2,e,t)}function Za(e,t){return Ua(4,4,e,t)}function $a(e,t){return\"function\"===typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function Ya(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,Ua(4,4,$a.bind(null,t,e),n)}function Xa(){}function Ka(e,t){var n=Na();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&_a(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ga(e,t){var n=Na();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&_a(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Qa(e,t,n){return 0===(21&pa)?(e.baseState&&(e.baseState=!1,wl=!0),e.memoizedState=n):(lr(n,t)||(n=mt(),ma.lanes|=n,Ts|=n,e.baseState=!0),t)}function Ja(e,t){var n=bt;bt=0!==n&&4>n?n:4,e(!0);var r=ha.transition;ha.transition={};try{e(!1),t()}finally{bt=n,ha.transition=r}}function el(){return Na().memoizedState}function tl(e,t,n){var r=tu(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},rl(e))ol(t,n);else if(null!==(n=Ai(e,t,n,r))){nu(n,e,r,eu()),il(n,t,r)}}function nl(e,t,n){var r=tu(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(rl(e))ol(t,o);else{var i=e.alternate;if(0===e.lanes&&(null===i||0===i.lanes)&&null!==(i=t.lastRenderedReducer))try{var a=t.lastRenderedState,l=i(a,n);if(o.hasEagerState=!0,o.eagerState=l,lr(l,a)){var s=t.interleaved;return null===s?(o.next=o,Mi(t)):(o.next=s.next,s.next=o),void(t.interleaved=o)}}catch(u){}null!==(n=Ai(e,t,o,r))&&(nu(n,e,r,o=eu()),il(n,t,r))}}function rl(e){var t=e.alternate;return e===ma||null!==t&&t===ma}function ol(e,t){ba=ya=!0;var n=e.pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function il(e,t,n){if(0!==(4194240&n)){var r=t.lanes;n|=r&=e.pendingLanes,t.lanes=n,yt(e,n)}}var al={readContext:Ei,useCallback:ka,useContext:ka,useEffect:ka,useImperativeHandle:ka,useInsertionEffect:ka,useLayoutEffect:ka,useMemo:ka,useReducer:ka,useRef:ka,useState:ka,useDebugValue:ka,useDeferredValue:ka,useTransition:ka,useMutableSource:ka,useSyncExternalStore:ka,useId:ka,unstable_isNewReconciler:!1},ll={readContext:Ei,useCallback:function(e,t){return Ea().memoizedState=[e,void 0===t?null:t],e},useContext:Ei,useEffect:Ha,useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,qa(4194308,4,$a.bind(null,t,e),n)},useLayoutEffect:function(e,t){return qa(4194308,4,e,t)},useInsertionEffect:function(e,t){return qa(4,2,e,t)},useMemo:function(e,t){var n=Ea();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Ea();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=tl.bind(null,ma,e),[r.memoizedState,e]},useRef:function(e){return e={current:e},Ea().memoizedState=e},useState:Ra,useDebugValue:Xa,useDeferredValue:function(e){return Ea().memoizedState=e},useTransition:function(){var e=Ra(!1),t=e[0];return e=Ja.bind(null,e[1]),Ea().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=ma,o=Ea();if(ii){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===As)throw Error(i(349));0!==(30&pa)||za(r,t,n)}o.memoizedState=n;var a={value:n,getSnapshot:t};return o.queue=a,Ha(Oa.bind(null,r,a,e),[e]),r.flags|=2048,Fa(9,ja.bind(null,r,a,n,t),void 0,null),n},useId:function(){var e=Ea(),t=As.identifierPrefix;if(ii){var n=Qo;t=\":\"+t+\"R\"+(n=(Go&~(1<<32-at(Go)-1)).toString(32)+n),0<(n=wa++)&&(t+=\"H\"+n.toString(32)),t+=\":\"}else t=\":\"+t+\"r\"+(n=xa++).toString(32)+\":\";return e.memoizedState=t},unstable_isNewReconciler:!1},sl={readContext:Ei,useCallback:Ka,useContext:Ei,useEffect:Va,useImperativeHandle:Ya,useInsertionEffect:Wa,useLayoutEffect:Za,useMemo:Ga,useReducer:Aa,useRef:Ba,useState:function(){return Aa(Ma)},useDebugValue:Xa,useDeferredValue:function(e){return Qa(Na(),ga.memoizedState,e)},useTransition:function(){return[Aa(Ma)[0],Na().memoizedState]},useMutableSource:Pa,useSyncExternalStore:La,useId:el,unstable_isNewReconciler:!1},ul={readContext:Ei,useCallback:Ka,useContext:Ei,useEffect:Va,useImperativeHandle:Ya,useInsertionEffect:Wa,useLayoutEffect:Za,useMemo:Ga,useReducer:Da,useRef:Ba,useState:function(){return Da(Ma)},useDebugValue:Xa,useDeferredValue:function(e){var t=Na();return null===ga?t.memoizedState=e:Qa(t,ga.memoizedState,e)},useTransition:function(){return[Da(Ma)[0],Na().memoizedState]},useMutableSource:Pa,useSyncExternalStore:La,useId:el,unstable_isNewReconciler:!1};function cl(e,t){try{var n=\"\",r=t;do{n+=q(r),r=r.return}while(r);var o=n}catch(i){o=\"\\nError generating stack: \"+i.message+\"\\n\"+i.stack}return{value:e,source:t,stack:o,digest:null}}function dl(e,t,n){return{value:e,source:null,stack:null!=n?n:null,digest:null!=t?t:null}}function fl(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}var hl=\"function\"===typeof WeakMap?WeakMap:Map;function pl(e,t,n){(n=ji(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){Vs||(Vs=!0,Ws=r),fl(0,t)},n}function ml(e,t,n){(n=ji(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if(\"function\"===typeof r){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){fl(0,t)}}var i=e.stateNode;return null!==i&&\"function\"===typeof i.componentDidCatch&&(n.callback=function(){fl(0,t),\"function\"!==typeof r&&(null===Zs?Zs=new Set([this]):Zs.add(this));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:\"\"})}),n}function gl(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new hl;var o=new Set;r.set(t,o)}else void 0===(o=r.get(t))&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=Cu.bind(null,e,t,n),t.then(e,e))}function vl(e){do{var t;if((t=13===e.tag)&&(t=null===(t=e.memoizedState)||null!==t.dehydrated),t)return e;e=e.return}while(null!==e);return null}function yl(e,t,n,r,o){return 0===(1&e.mode)?(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,1===n.tag&&(null===n.alternate?n.tag=17:((t=ji(-1,1)).tag=2,Oi(n,t,1))),n.lanes|=1),e):(e.flags|=65536,e.lanes=o,e)}var bl=w.ReactCurrentOwner,wl=!1;function xl(e,t,n,r){t.child=null===e?Qi(t,null,n,r):Gi(t,e.child,n,r)}function kl(e,t,n,r,o){n=n.render;var i=t.ref;return Ci(t,o),r=Sa(e,t,n,r,i,o),n=Ca(),null===e||wl?(ii&&n&&ti(t),t.flags|=1,xl(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Vl(e,t,o))}function _l(e,t,n,r,o){if(null===e){var i=n.type;return\"function\"!==typeof i||Lu(i)||void 0!==i.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=ju(n.type,null,r,t,t.mode,o)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=i,Sl(e,t,i,r,o))}if(i=e.child,0===(e.lanes&o)){var a=i.memoizedProps;if((n=null!==(n=n.compare)?n:sr)(a,r)&&e.ref===t.ref)return Vl(e,t,o)}return t.flags|=1,(e=zu(i,r)).ref=t.ref,e.return=t,t.child=e}function Sl(e,t,n,r,o){if(null!==e){var i=e.memoizedProps;if(sr(i,r)&&e.ref===t.ref){if(wl=!1,t.pendingProps=r=i,0===(e.lanes&o))return t.lanes=e.lanes,Vl(e,t,o);0!==(131072&e.flags)&&(wl=!0)}}return Nl(e,t,n,r,o)}function Cl(e,t,n){var r=t.pendingProps,o=r.children,i=null!==e?e.memoizedState:null;if(\"hidden\"===r.mode)if(0===(1&t.mode))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},No(zs,Ls),Ls|=n;else{if(0===(1073741824&n))return e=null!==i?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,No(zs,Ls),Ls|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=null!==i?i.baseLanes:n,No(zs,Ls),Ls|=r}else null!==i?(r=i.baseLanes|n,t.memoizedState=null):r=n,No(zs,Ls),Ls|=r;return xl(e,t,o,n),t.child}function El(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Nl(e,t,n,r,o){var i=zo(n)?Po:Ao.current;return i=Lo(t,i),Ci(t,o),n=Sa(e,t,n,r,i,o),r=Ca(),null===e||wl?(ii&&r&&ti(t),t.flags|=1,xl(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,Vl(e,t,o))}function Ml(e,t,n,r,o){if(zo(n)){var i=!0;Io(t)}else i=!1;if(Ci(t,o),null===t.stateNode)Hl(e,t),Vi(t,n,r),Zi(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,l=t.memoizedProps;a.props=l;var s=a.context,u=n.contextType;\"object\"===typeof u&&null!==u?u=Ei(u):u=Lo(t,u=zo(n)?Po:Ao.current);var c=n.getDerivedStateFromProps,d=\"function\"===typeof c||\"function\"===typeof a.getSnapshotBeforeUpdate;d||\"function\"!==typeof a.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof a.componentWillReceiveProps||(l!==r||s!==u)&&Wi(t,a,r,u),Pi=!1;var f=t.memoizedState;a.state=f,Ri(t,r,a,o),s=t.memoizedState,l!==r||f!==s||Do.current||Pi?(\"function\"===typeof c&&(qi(t,n,c,r),s=t.memoizedState),(l=Pi||Hi(t,n,l,r,f,s,u))?(d||\"function\"!==typeof a.UNSAFE_componentWillMount&&\"function\"!==typeof a.componentWillMount||(\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),\"function\"===typeof a.componentDidMount&&(t.flags|=4194308)):(\"function\"===typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),a.props=r,a.state=s,a.context=u,r=l):(\"function\"===typeof a.componentDidMount&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,zi(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:vi(t.type,l),a.props=u,d=t.pendingProps,f=a.context,\"object\"===typeof(s=n.contextType)&&null!==s?s=Ei(s):s=Lo(t,s=zo(n)?Po:Ao.current);var h=n.getDerivedStateFromProps;(c=\"function\"===typeof h||\"function\"===typeof a.getSnapshotBeforeUpdate)||\"function\"!==typeof a.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof a.componentWillReceiveProps||(l!==d||f!==s)&&Wi(t,a,r,s),Pi=!1,f=t.memoizedState,a.state=f,Ri(t,r,a,o);var p=t.memoizedState;l!==d||f!==p||Do.current||Pi?(\"function\"===typeof h&&(qi(t,n,h,r),p=t.memoizedState),(u=Pi||Hi(t,n,u,r,f,p,s)||!1)?(c||\"function\"!==typeof a.UNSAFE_componentWillUpdate&&\"function\"!==typeof a.componentWillUpdate||(\"function\"===typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,s),\"function\"===typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,s)),\"function\"===typeof a.componentDidUpdate&&(t.flags|=4),\"function\"===typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):(\"function\"!==typeof a.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),\"function\"!==typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=s,r=u):(\"function\"!==typeof a.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),\"function\"!==typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return Al(e,t,n,r,i,o)}function Al(e,t,n,r,o,i){El(e,t);var a=0!==(128&t.flags);if(!r&&!a)return o&&Ro(t,n,!1),Vl(e,t,i);r=t.stateNode,bl.current=t;var l=a&&\"function\"!==typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&a?(t.child=Gi(t,e.child,null,i),t.child=Gi(t,null,l,i)):xl(e,t,l,i),t.memoizedState=r.state,o&&Ro(t,n,!0),t.child}function Dl(e){var t=e.stateNode;t.pendingContext?Oo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&Oo(0,t.context,!1),oa(e,t.containerInfo)}function Pl(e,t,n,r,o){return pi(),mi(o),t.flags|=256,xl(e,t,n,r),t.child}var Ll,zl,jl,Ol={dehydrated:null,treeContext:null,retryLane:0};function Tl(e){return{baseLanes:e,cachePool:null,transitions:null}}function Il(e,t,n){var r,o=t.pendingProps,a=sa.current,l=!1,s=0!==(128&t.flags);if((r=s)||(r=(null===e||null!==e.memoizedState)&&0!==(2&a)),r?(l=!0,t.flags&=-129):null!==e&&null===e.memoizedState||(a|=1),No(sa,1&a),null===e)return ci(t),null!==(e=t.memoizedState)&&null!==(e=e.dehydrated)?(0===(1&t.mode)?t.lanes=1:\"$!\"===e.data?t.lanes=8:t.lanes=1073741824,null):(s=o.children,e=o.fallback,l?(o=t.mode,l=t.child,s={mode:\"hidden\",children:s},0===(1&o)&&null!==l?(l.childLanes=0,l.pendingProps=s):l=Tu(s,o,0,null),e=Ou(e,o,n,null),l.return=t,e.return=t,l.sibling=e,t.child=l,t.child.memoizedState=Tl(n),t.memoizedState=Ol,e):Rl(t,s));if(null!==(a=e.memoizedState)&&null!==(r=a.dehydrated))return function(e,t,n,r,o,a,l){if(n)return 256&t.flags?(t.flags&=-257,Fl(e,t,l,r=dl(Error(i(422))))):null!==t.memoizedState?(t.child=e.child,t.flags|=128,null):(a=r.fallback,o=t.mode,r=Tu({mode:\"visible\",children:r.children},o,0,null),(a=Ou(a,o,l,null)).flags|=2,r.return=t,a.return=t,r.sibling=a,t.child=r,0!==(1&t.mode)&&Gi(t,e.child,null,l),t.child.memoizedState=Tl(l),t.memoizedState=Ol,a);if(0===(1&t.mode))return Fl(e,t,l,null);if(\"$!\"===o.data){if(r=o.nextSibling&&o.nextSibling.dataset)var s=r.dgst;return r=s,Fl(e,t,l,r=dl(a=Error(i(419)),r,void 0))}if(s=0!==(l&e.childLanes),wl||s){if(null!==(r=As)){switch(l&-l){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}0!==(o=0!==(o&(r.suspendedLanes|l))?0:o)&&o!==a.retryLane&&(a.retryLane=o,Di(e,o),nu(r,e,o,-1))}return mu(),Fl(e,t,l,r=dl(Error(i(421))))}return\"$?\"===o.data?(t.flags|=128,t.child=e.child,t=Nu.bind(null,e),o._reactRetry=t,null):(e=a.treeContext,oi=uo(o.nextSibling),ri=t,ii=!0,ai=null,null!==e&&(Yo[Xo++]=Go,Yo[Xo++]=Qo,Yo[Xo++]=Ko,Go=e.id,Qo=e.overflow,Ko=t),t=Rl(t,r.children),t.flags|=4096,t)}(e,t,s,o,r,a,n);if(l){l=o.fallback,s=t.mode,r=(a=e.child).sibling;var u={mode:\"hidden\",children:o.children};return 0===(1&s)&&t.child!==a?((o=t.child).childLanes=0,o.pendingProps=u,t.deletions=null):(o=zu(a,u)).subtreeFlags=14680064&a.subtreeFlags,null!==r?l=zu(r,l):(l=Ou(l,s,n,null)).flags|=2,l.return=t,o.return=t,o.sibling=l,t.child=o,o=l,l=t.child,s=null===(s=e.child.memoizedState)?Tl(n):{baseLanes:s.baseLanes|n,cachePool:null,transitions:s.transitions},l.memoizedState=s,l.childLanes=e.childLanes&~n,t.memoizedState=Ol,o}return e=(l=e.child).sibling,o=zu(l,{mode:\"visible\",children:o.children}),0===(1&t.mode)&&(o.lanes=n),o.return=t,o.sibling=null,null!==e&&(null===(n=t.deletions)?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=o,t.memoizedState=null,o}function Rl(e,t){return(t=Tu({mode:\"visible\",children:t},e.mode,0,null)).return=e,e.child=t}function Fl(e,t,n,r){return null!==r&&mi(r),Gi(t,e.child,null,n),(e=Rl(t,t.pendingProps.children)).flags|=2,t.memoizedState=null,e}function Bl(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),Si(e.return,t,n)}function ql(e,t,n,r,o){var i=e.memoizedState;null===i?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o)}function Ul(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(xl(e,t,r.children,n),0!==(2&(r=sa.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!==(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Bl(e,n,t);else if(19===e.tag)Bl(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(No(sa,r),0===(1&t.mode))t.memoizedState=null;else switch(o){case\"forwards\":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===ua(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),ql(t,!1,o,n,i);break;case\"backwards\":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===ua(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}ql(t,!0,n,null,i);break;case\"together\":ql(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Hl(e,t){0===(1&t.mode)&&null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2)}function Vl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),Ts|=t.lanes,0===(n&t.childLanes))return null;if(null!==e&&t.child!==e.child)throw Error(i(153));if(null!==t.child){for(n=zu(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=zu(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function Wl(e,t){if(!ii)switch(e.tailMode){case\"hidden\":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case\"collapsed\":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function Zl(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=14680064&o.subtreeFlags,r|=14680064&o.flags,o.return=e,o=o.sibling;else for(o=e.child;null!==o;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function $l(e,t,n){var r=t.pendingProps;switch(ni(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Zl(t),null;case 1:case 17:return zo(t.type)&&jo(),Zl(t),null;case 3:return r=t.stateNode,ia(),Eo(Do),Eo(Ao),da(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(fi(t)?t.flags|=4:null===e||e.memoizedState.isDehydrated&&0===(256&t.flags)||(t.flags|=1024,null!==ai&&(au(ai),ai=null))),Zl(t),null;case 5:la(t);var o=ra(na.current);if(n=t.type,null!==e&&null!=t.stateNode)zl(e,t,n,r),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(null===t.stateNode)throw Error(i(166));return Zl(t),null}if(e=ra(ea.current),fi(t)){r=t.stateNode,n=t.type;var a=t.memoizedProps;switch(r[ho]=t,r[po]=a,e=0!==(1&t.mode),n){case\"dialog\":Fr(\"cancel\",r),Fr(\"close\",r);break;case\"iframe\":case\"object\":case\"embed\":Fr(\"load\",r);break;case\"video\":case\"audio\":for(o=0;o<Or.length;o++)Fr(Or[o],r);break;case\"source\":Fr(\"error\",r);break;case\"img\":case\"image\":case\"link\":Fr(\"error\",r),Fr(\"load\",r);break;case\"details\":Fr(\"toggle\",r);break;case\"input\":K(r,a),Fr(\"invalid\",r);break;case\"select\":r._wrapperState={wasMultiple:!!a.multiple},Fr(\"invalid\",r);break;case\"textarea\":oe(r,a),Fr(\"invalid\",r)}for(var s in ye(n,a),o=null,a)if(a.hasOwnProperty(s)){var u=a[s];\"children\"===s?\"string\"===typeof u?r.textContent!==u&&(!0!==a.suppressHydrationWarning&&Qr(r.textContent,u,e),o=[\"children\",u]):\"number\"===typeof u&&r.textContent!==\"\"+u&&(!0!==a.suppressHydrationWarning&&Qr(r.textContent,u,e),o=[\"children\",\"\"+u]):l.hasOwnProperty(s)&&null!=u&&\"onScroll\"===s&&Fr(\"scroll\",r)}switch(n){case\"input\":Z(r),J(r,a,!0);break;case\"textarea\":Z(r),ae(r);break;case\"select\":case\"option\":break;default:\"function\"===typeof a.onClick&&(r.onclick=Jr)}r=o,t.updateQueue=r,null!==r&&(t.flags|=4)}else{s=9===o.nodeType?o:o.ownerDocument,\"http://www.w3.org/1999/xhtml\"===e&&(e=le(n)),\"http://www.w3.org/1999/xhtml\"===e?\"script\"===n?((e=s.createElement(\"div\")).innerHTML=\"<script><\\/script>\",e=e.removeChild(e.firstChild)):\"string\"===typeof r.is?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),\"select\"===n&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[ho]=t,e[po]=r,Ll(e,t),t.stateNode=e;e:{switch(s=be(n,r),n){case\"dialog\":Fr(\"cancel\",e),Fr(\"close\",e),o=r;break;case\"iframe\":case\"object\":case\"embed\":Fr(\"load\",e),o=r;break;case\"video\":case\"audio\":for(o=0;o<Or.length;o++)Fr(Or[o],e);o=r;break;case\"source\":Fr(\"error\",e),o=r;break;case\"img\":case\"image\":case\"link\":Fr(\"error\",e),Fr(\"load\",e),o=r;break;case\"details\":Fr(\"toggle\",e),o=r;break;case\"input\":K(e,r),o=X(e,r),Fr(\"invalid\",e);break;case\"option\":default:o=r;break;case\"select\":e._wrapperState={wasMultiple:!!r.multiple},o=I({},r,{value:void 0}),Fr(\"invalid\",e);break;case\"textarea\":oe(e,r),o=re(e,r),Fr(\"invalid\",e)}for(a in ye(n,o),u=o)if(u.hasOwnProperty(a)){var c=u[a];\"style\"===a?ge(e,c):\"dangerouslySetInnerHTML\"===a?null!=(c=c?c.__html:void 0)&&de(e,c):\"children\"===a?\"string\"===typeof c?(\"textarea\"!==n||\"\"!==c)&&fe(e,c):\"number\"===typeof c&&fe(e,\"\"+c):\"suppressContentEditableWarning\"!==a&&\"suppressHydrationWarning\"!==a&&\"autoFocus\"!==a&&(l.hasOwnProperty(a)?null!=c&&\"onScroll\"===a&&Fr(\"scroll\",e):null!=c&&b(e,a,c,s))}switch(n){case\"input\":Z(e),J(e,r,!1);break;case\"textarea\":Z(e),ae(e);break;case\"option\":null!=r.value&&e.setAttribute(\"value\",\"\"+V(r.value));break;case\"select\":e.multiple=!!r.multiple,null!=(a=r.value)?ne(e,!!r.multiple,a,!1):null!=r.defaultValue&&ne(e,!!r.multiple,r.defaultValue,!0);break;default:\"function\"===typeof o.onClick&&(e.onclick=Jr)}switch(n){case\"button\":case\"input\":case\"select\":case\"textarea\":r=!!r.autoFocus;break e;case\"img\":r=!0;break e;default:r=!1}}r&&(t.flags|=4)}null!==t.ref&&(t.flags|=512,t.flags|=2097152)}return Zl(t),null;case 6:if(e&&null!=t.stateNode)jl(0,t,e.memoizedProps,r);else{if(\"string\"!==typeof r&&null===t.stateNode)throw Error(i(166));if(n=ra(na.current),ra(ea.current),fi(t)){if(r=t.stateNode,n=t.memoizedProps,r[ho]=t,(a=r.nodeValue!==n)&&null!==(e=ri))switch(e.tag){case 3:Qr(r.nodeValue,n,0!==(1&e.mode));break;case 5:!0!==e.memoizedProps.suppressHydrationWarning&&Qr(r.nodeValue,n,0!==(1&e.mode))}a&&(t.flags|=4)}else(r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[ho]=t,t.stateNode=r}return Zl(t),null;case 13:if(Eo(sa),r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(ii&&null!==oi&&0!==(1&t.mode)&&0===(128&t.flags))hi(),pi(),t.flags|=98560,a=!1;else if(a=fi(t),null!==r&&null!==r.dehydrated){if(null===e){if(!a)throw Error(i(318));if(!(a=null!==(a=t.memoizedState)?a.dehydrated:null))throw Error(i(317));a[ho]=t}else pi(),0===(128&t.flags)&&(t.memoizedState=null),t.flags|=4;Zl(t),a=!1}else null!==ai&&(au(ai),ai=null),a=!0;if(!a)return 65536&t.flags?t:null}return 0!==(128&t.flags)?(t.lanes=n,t):((r=null!==r)!==(null!==e&&null!==e.memoizedState)&&r&&(t.child.flags|=8192,0!==(1&t.mode)&&(null===e||0!==(1&sa.current)?0===js&&(js=3):mu())),null!==t.updateQueue&&(t.flags|=4),Zl(t),null);case 4:return ia(),null===e&&Ur(t.stateNode.containerInfo),Zl(t),null;case 10:return _i(t.type._context),Zl(t),null;case 19:if(Eo(sa),null===(a=t.memoizedState))return Zl(t),null;if(r=0!==(128&t.flags),null===(s=a.rendering))if(r)Wl(a,!1);else{if(0!==js||null!==e&&0!==(128&e.flags))for(e=t.child;null!==e;){if(null!==(s=ua(e))){for(t.flags|=128,Wl(a,!1),null!==(r=s.updateQueue)&&(t.updateQueue=r,t.flags|=4),t.subtreeFlags=0,r=n,n=t.child;null!==n;)e=r,(a=n).flags&=14680066,null===(s=a.alternate)?(a.childLanes=0,a.lanes=e,a.child=null,a.subtreeFlags=0,a.memoizedProps=null,a.memoizedState=null,a.updateQueue=null,a.dependencies=null,a.stateNode=null):(a.childLanes=s.childLanes,a.lanes=s.lanes,a.child=s.child,a.subtreeFlags=0,a.deletions=null,a.memoizedProps=s.memoizedProps,a.memoizedState=s.memoizedState,a.updateQueue=s.updateQueue,a.type=s.type,e=s.dependencies,a.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return No(sa,1&sa.current|2),t.child}e=e.sibling}null!==a.tail&&Ge()>Us&&(t.flags|=128,r=!0,Wl(a,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=ua(s))){if(t.flags|=128,r=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),Wl(a,!0),null===a.tail&&\"hidden\"===a.tailMode&&!s.alternate&&!ii)return Zl(t),null}else 2*Ge()-a.renderingStartTime>Us&&1073741824!==n&&(t.flags|=128,r=!0,Wl(a,!1),t.lanes=4194304);a.isBackwards?(s.sibling=t.child,t.child=s):(null!==(n=a.last)?n.sibling=s:t.child=s,a.last=s)}return null!==a.tail?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Ge(),t.sibling=null,n=sa.current,No(sa,r?1&n|2:1&n),t):(Zl(t),null);case 22:case 23:return du(),r=null!==t.memoizedState,null!==e&&null!==e.memoizedState!==r&&(t.flags|=8192),r&&0!==(1&t.mode)?0!==(1073741824&Ls)&&(Zl(t),6&t.subtreeFlags&&(t.flags|=8192)):Zl(t),null;case 24:case 25:return null}throw Error(i(156,t.tag))}function Yl(e,t){switch(ni(t),t.tag){case 1:return zo(t.type)&&jo(),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return ia(),Eo(Do),Eo(Ao),da(),0!==(65536&(e=t.flags))&&0===(128&e)?(t.flags=-65537&e|128,t):null;case 5:return la(t),null;case 13:if(Eo(sa),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));pi()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return Eo(sa),null;case 4:return ia(),null;case 10:return _i(t.type._context),null;case 22:case 23:return du(),null;default:return null}}Ll=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},zl=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,ra(ea.current);var i,a=null;switch(n){case\"input\":o=X(e,o),r=X(e,r),a=[];break;case\"select\":o=I({},o,{value:void 0}),r=I({},r,{value:void 0}),a=[];break;case\"textarea\":o=re(e,o),r=re(e,r),a=[];break;default:\"function\"!==typeof o.onClick&&\"function\"===typeof r.onClick&&(e.onclick=Jr)}for(c in ye(n,r),n=null,o)if(!r.hasOwnProperty(c)&&o.hasOwnProperty(c)&&null!=o[c])if(\"style\"===c){var s=o[c];for(i in s)s.hasOwnProperty(i)&&(n||(n={}),n[i]=\"\")}else\"dangerouslySetInnerHTML\"!==c&&\"children\"!==c&&\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&\"autoFocus\"!==c&&(l.hasOwnProperty(c)?a||(a=[]):(a=a||[]).push(c,null));for(c in r){var u=r[c];if(s=null!=o?o[c]:void 0,r.hasOwnProperty(c)&&u!==s&&(null!=u||null!=s))if(\"style\"===c)if(s){for(i in s)!s.hasOwnProperty(i)||u&&u.hasOwnProperty(i)||(n||(n={}),n[i]=\"\");for(i in u)u.hasOwnProperty(i)&&s[i]!==u[i]&&(n||(n={}),n[i]=u[i])}else n||(a||(a=[]),a.push(c,n)),n=u;else\"dangerouslySetInnerHTML\"===c?(u=u?u.__html:void 0,s=s?s.__html:void 0,null!=u&&s!==u&&(a=a||[]).push(c,u)):\"children\"===c?\"string\"!==typeof u&&\"number\"!==typeof u||(a=a||[]).push(c,\"\"+u):\"suppressContentEditableWarning\"!==c&&\"suppressHydrationWarning\"!==c&&(l.hasOwnProperty(c)?(null!=u&&\"onScroll\"===c&&Fr(\"scroll\",e),a||s===u||(a=[])):(a=a||[]).push(c,u))}n&&(a=a||[]).push(\"style\",n);var c=a;(t.updateQueue=c)&&(t.flags|=4)}},jl=function(e,t,n,r){n!==r&&(t.flags|=4)};var Xl=!1,Kl=!1,Gl=\"function\"===typeof WeakSet?WeakSet:Set,Ql=null;function Jl(e,t){var n=e.ref;if(null!==n)if(\"function\"===typeof n)try{n(null)}catch(r){Su(e,t,r)}else n.current=null}function es(e,t,n){try{n()}catch(r){Su(e,t,r)}}var ts=!1;function ns(e,t,n){var r=t.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,void 0!==i&&es(t,n,i)}o=o.next}while(o!==r)}}function rs(e,t){if(null!==(t=null!==(t=t.updateQueue)?t.lastEffect:null)){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function os(e){var t=e.ref;if(null!==t){var n=e.stateNode;e.tag,e=n,\"function\"===typeof t?t(e):t.current=e}}function is(e){var t=e.alternate;null!==t&&(e.alternate=null,is(t)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&(null!==(t=e.stateNode)&&(delete t[ho],delete t[po],delete t[go],delete t[vo],delete t[yo])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function as(e){return 5===e.tag||3===e.tag||4===e.tag}function ls(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||as(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function ss(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!==(n=n._reactRootContainer)&&void 0!==n||null!==t.onclick||(t.onclick=Jr));else if(4!==r&&null!==(e=e.child))for(ss(e,t,n),e=e.sibling;null!==e;)ss(e,t,n),e=e.sibling}function us(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(us(e,t,n),e=e.sibling;null!==e;)us(e,t,n),e=e.sibling}var cs=null,ds=!1;function fs(e,t,n){for(n=n.child;null!==n;)hs(e,t,n),n=n.sibling}function hs(e,t,n){if(it&&\"function\"===typeof it.onCommitFiberUnmount)try{it.onCommitFiberUnmount(ot,n)}catch(l){}switch(n.tag){case 5:Kl||Jl(n,t);case 6:var r=cs,o=ds;cs=null,fs(e,t,n),ds=o,null!==(cs=r)&&(ds?(e=cs,n=n.stateNode,8===e.nodeType?e.parentNode.removeChild(n):e.removeChild(n)):cs.removeChild(n.stateNode));break;case 18:null!==cs&&(ds?(e=cs,n=n.stateNode,8===e.nodeType?so(e.parentNode,n):1===e.nodeType&&so(e,n),Ut(e)):so(cs,n.stateNode));break;case 4:r=cs,o=ds,cs=n.stateNode.containerInfo,ds=!0,fs(e,t,n),cs=r,ds=o;break;case 0:case 11:case 14:case 15:if(!Kl&&(null!==(r=n.updateQueue)&&null!==(r=r.lastEffect))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,void 0!==a&&(0!==(2&i)||0!==(4&i))&&es(n,t,a),o=o.next}while(o!==r)}fs(e,t,n);break;case 1:if(!Kl&&(Jl(n,t),\"function\"===typeof(r=n.stateNode).componentWillUnmount))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Su(n,t,l)}fs(e,t,n);break;case 21:fs(e,t,n);break;case 22:1&n.mode?(Kl=(r=Kl)||null!==n.memoizedState,fs(e,t,n),Kl=r):fs(e,t,n);break;default:fs(e,t,n)}}function ps(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new Gl),t.forEach((function(t){var r=Mu.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function ms(e,t){var n=t.deletions;if(null!==n)for(var r=0;r<n.length;r++){var o=n[r];try{var a=e,l=t,s=l;e:for(;null!==s;){switch(s.tag){case 5:cs=s.stateNode,ds=!1;break e;case 3:case 4:cs=s.stateNode.containerInfo,ds=!0;break e}s=s.return}if(null===cs)throw Error(i(160));hs(a,l,o),cs=null,ds=!1;var u=o.alternate;null!==u&&(u.return=null),o.return=null}catch(c){Su(o,t,c)}}if(12854&t.subtreeFlags)for(t=t.child;null!==t;)gs(t,e),t=t.sibling}function gs(e,t){var n=e.alternate,r=e.flags;switch(e.tag){case 0:case 11:case 14:case 15:if(ms(t,e),vs(e),4&r){try{ns(3,e,e.return),rs(3,e)}catch(g){Su(e,e.return,g)}try{ns(5,e,e.return)}catch(g){Su(e,e.return,g)}}break;case 1:ms(t,e),vs(e),512&r&&null!==n&&Jl(n,n.return);break;case 5:if(ms(t,e),vs(e),512&r&&null!==n&&Jl(n,n.return),32&e.flags){var o=e.stateNode;try{fe(o,\"\")}catch(g){Su(e,e.return,g)}}if(4&r&&null!=(o=e.stateNode)){var a=e.memoizedProps,l=null!==n?n.memoizedProps:a,s=e.type,u=e.updateQueue;if(e.updateQueue=null,null!==u)try{\"input\"===s&&\"radio\"===a.type&&null!=a.name&&G(o,a),be(s,l);var c=be(s,a);for(l=0;l<u.length;l+=2){var d=u[l],f=u[l+1];\"style\"===d?ge(o,f):\"dangerouslySetInnerHTML\"===d?de(o,f):\"children\"===d?fe(o,f):b(o,d,f,c)}switch(s){case\"input\":Q(o,a);break;case\"textarea\":ie(o,a);break;case\"select\":var h=o._wrapperState.wasMultiple;o._wrapperState.wasMultiple=!!a.multiple;var p=a.value;null!=p?ne(o,!!a.multiple,p,!1):h!==!!a.multiple&&(null!=a.defaultValue?ne(o,!!a.multiple,a.defaultValue,!0):ne(o,!!a.multiple,a.multiple?[]:\"\",!1))}o[po]=a}catch(g){Su(e,e.return,g)}}break;case 6:if(ms(t,e),vs(e),4&r){if(null===e.stateNode)throw Error(i(162));o=e.stateNode,a=e.memoizedProps;try{o.nodeValue=a}catch(g){Su(e,e.return,g)}}break;case 3:if(ms(t,e),vs(e),4&r&&null!==n&&n.memoizedState.isDehydrated)try{Ut(t.containerInfo)}catch(g){Su(e,e.return,g)}break;case 4:default:ms(t,e),vs(e);break;case 13:ms(t,e),vs(e),8192&(o=e.child).flags&&(a=null!==o.memoizedState,o.stateNode.isHidden=a,!a||null!==o.alternate&&null!==o.alternate.memoizedState||(qs=Ge())),4&r&&ps(e);break;case 22:if(d=null!==n&&null!==n.memoizedState,1&e.mode?(Kl=(c=Kl)||d,ms(t,e),Kl=c):ms(t,e),vs(e),8192&r){if(c=null!==e.memoizedState,(e.stateNode.isHidden=c)&&!d&&0!==(1&e.mode))for(Ql=e,d=e.child;null!==d;){for(f=Ql=d;null!==Ql;){switch(p=(h=Ql).child,h.tag){case 0:case 11:case 14:case 15:ns(4,h,h.return);break;case 1:Jl(h,h.return);var m=h.stateNode;if(\"function\"===typeof m.componentWillUnmount){r=h,n=h.return;try{t=r,m.props=t.memoizedProps,m.state=t.memoizedState,m.componentWillUnmount()}catch(g){Su(r,n,g)}}break;case 5:Jl(h,h.return);break;case 22:if(null!==h.memoizedState){xs(f);continue}}null!==p?(p.return=h,Ql=p):xs(f)}d=d.sibling}e:for(d=null,f=e;;){if(5===f.tag){if(null===d){d=f;try{o=f.stateNode,c?\"function\"===typeof(a=o.style).setProperty?a.setProperty(\"display\",\"none\",\"important\"):a.display=\"none\":(s=f.stateNode,l=void 0!==(u=f.memoizedProps.style)&&null!==u&&u.hasOwnProperty(\"display\")?u.display:null,s.style.display=me(\"display\",l))}catch(g){Su(e,e.return,g)}}}else if(6===f.tag){if(null===d)try{f.stateNode.nodeValue=c?\"\":f.memoizedProps}catch(g){Su(e,e.return,g)}}else if((22!==f.tag&&23!==f.tag||null===f.memoizedState||f===e)&&null!==f.child){f.child.return=f,f=f.child;continue}if(f===e)break e;for(;null===f.sibling;){if(null===f.return||f.return===e)break e;d===f&&(d=null),f=f.return}d===f&&(d=null),f.sibling.return=f.return,f=f.sibling}}break;case 19:ms(t,e),vs(e),4&r&&ps(e);case 21:}}function vs(e){var t=e.flags;if(2&t){try{e:{for(var n=e.return;null!==n;){if(as(n)){var r=n;break e}n=n.return}throw Error(i(160))}switch(r.tag){case 5:var o=r.stateNode;32&r.flags&&(fe(o,\"\"),r.flags&=-33),us(e,ls(e),o);break;case 3:case 4:var a=r.stateNode.containerInfo;ss(e,ls(e),a);break;default:throw Error(i(161))}}catch(l){Su(e,e.return,l)}e.flags&=-3}4096&t&&(e.flags&=-4097)}function ys(e,t,n){Ql=e,bs(e,t,n)}function bs(e,t,n){for(var r=0!==(1&e.mode);null!==Ql;){var o=Ql,i=o.child;if(22===o.tag&&r){var a=null!==o.memoizedState||Xl;if(!a){var l=o.alternate,s=null!==l&&null!==l.memoizedState||Kl;l=Xl;var u=Kl;if(Xl=a,(Kl=s)&&!u)for(Ql=o;null!==Ql;)s=(a=Ql).child,22===a.tag&&null!==a.memoizedState?ks(o):null!==s?(s.return=a,Ql=s):ks(o);for(;null!==i;)Ql=i,bs(i,t,n),i=i.sibling;Ql=o,Xl=l,Kl=u}ws(e)}else 0!==(8772&o.subtreeFlags)&&null!==i?(i.return=o,Ql=i):ws(e)}}function ws(e){for(;null!==Ql;){var t=Ql;if(0!==(8772&t.flags)){var n=t.alternate;try{if(0!==(8772&t.flags))switch(t.tag){case 0:case 11:case 15:Kl||rs(5,t);break;case 1:var r=t.stateNode;if(4&t.flags&&!Kl)if(null===n)r.componentDidMount();else{var o=t.elementType===t.type?n.memoizedProps:vi(t.type,n.memoizedProps);r.componentDidUpdate(o,n.memoizedState,r.__reactInternalSnapshotBeforeUpdate)}var a=t.updateQueue;null!==a&&Fi(t,a,r);break;case 3:var l=t.updateQueue;if(null!==l){if(n=null,null!==t.child)switch(t.child.tag){case 5:case 1:n=t.child.stateNode}Fi(t,l,n)}break;case 5:var s=t.stateNode;if(null===n&&4&t.flags){n=s;var u=t.memoizedProps;switch(t.type){case\"button\":case\"input\":case\"select\":case\"textarea\":u.autoFocus&&n.focus();break;case\"img\":u.src&&(n.src=u.src)}}break;case 6:case 4:case 12:case 19:case 17:case 21:case 22:case 23:case 25:break;case 13:if(null===t.memoizedState){var c=t.alternate;if(null!==c){var d=c.memoizedState;if(null!==d){var f=d.dehydrated;null!==f&&Ut(f)}}}break;default:throw Error(i(163))}Kl||512&t.flags&&os(t)}catch(h){Su(t,t.return,h)}}if(t===e){Ql=null;break}if(null!==(n=t.sibling)){n.return=t.return,Ql=n;break}Ql=t.return}}function xs(e){for(;null!==Ql;){var t=Ql;if(t===e){Ql=null;break}var n=t.sibling;if(null!==n){n.return=t.return,Ql=n;break}Ql=t.return}}function ks(e){for(;null!==Ql;){var t=Ql;try{switch(t.tag){case 0:case 11:case 15:var n=t.return;try{rs(4,t)}catch(s){Su(t,n,s)}break;case 1:var r=t.stateNode;if(\"function\"===typeof r.componentDidMount){var o=t.return;try{r.componentDidMount()}catch(s){Su(t,o,s)}}var i=t.return;try{os(t)}catch(s){Su(t,i,s)}break;case 5:var a=t.return;try{os(t)}catch(s){Su(t,a,s)}}}catch(s){Su(t,t.return,s)}if(t===e){Ql=null;break}var l=t.sibling;if(null!==l){l.return=t.return,Ql=l;break}Ql=t.return}}var _s,Ss=Math.ceil,Cs=w.ReactCurrentDispatcher,Es=w.ReactCurrentOwner,Ns=w.ReactCurrentBatchConfig,Ms=0,As=null,Ds=null,Ps=0,Ls=0,zs=Co(0),js=0,Os=null,Ts=0,Is=0,Rs=0,Fs=null,Bs=null,qs=0,Us=1/0,Hs=null,Vs=!1,Ws=null,Zs=null,$s=!1,Ys=null,Xs=0,Ks=0,Gs=null,Qs=-1,Js=0;function eu(){return 0!==(6&Ms)?Ge():-1!==Qs?Qs:Qs=Ge()}function tu(e){return 0===(1&e.mode)?1:0!==(2&Ms)&&0!==Ps?Ps&-Ps:null!==gi.transition?(0===Js&&(Js=mt()),Js):0!==(e=bt)?e:e=void 0===(e=window.event)?16:Kt(e.type)}function nu(e,t,n,r){if(50<Ks)throw Ks=0,Gs=null,Error(i(185));vt(e,n,r),0!==(2&Ms)&&e===As||(e===As&&(0===(2&Ms)&&(Is|=n),4===js&&lu(e,Ps)),ru(e,r),1===n&&0===Ms&&0===(1&t.mode)&&(Us=Ge()+500,Bo&&Ho()))}function ru(e,t){var n=e.callbackNode;!function(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,o=e.expirationTimes,i=e.pendingLanes;0<i;){var a=31-at(i),l=1<<a,s=o[a];-1===s?0!==(l&n)&&0===(l&r)||(o[a]=ht(l,t)):s<=t&&(e.expiredLanes|=l),i&=~l}}(e,t);var r=ft(e,e===As?Ps:0);if(0===r)null!==n&&Ye(n),e.callbackNode=null,e.callbackPriority=0;else if(t=r&-r,e.callbackPriority!==t){if(null!=n&&Ye(n),1===t)0===e.tag?function(e){Bo=!0,Uo(e)}(su.bind(null,e)):Uo(su.bind(null,e)),ao((function(){0===(6&Ms)&&Ho()})),n=null;else{switch(wt(r)){case 1:n=Je;break;case 4:n=et;break;case 16:default:n=tt;break;case 536870912:n=rt}n=Au(n,ou.bind(null,e))}e.callbackPriority=t,e.callbackNode=n}}function ou(e,t){if(Qs=-1,Js=0,0!==(6&Ms))throw Error(i(327));var n=e.callbackNode;if(ku()&&e.callbackNode!==n)return null;var r=ft(e,e===As?Ps:0);if(0===r)return null;if(0!==(30&r)||0!==(r&e.expiredLanes)||t)t=gu(e,r);else{t=r;var o=Ms;Ms|=2;var a=pu();for(As===e&&Ps===t||(Hs=null,Us=Ge()+500,fu(e,t));;)try{yu();break}catch(s){hu(e,s)}ki(),Cs.current=a,Ms=o,null!==Ds?t=0:(As=null,Ps=0,t=js)}if(0!==t){if(2===t&&(0!==(o=pt(e))&&(r=o,t=iu(e,o))),1===t)throw n=Os,fu(e,0),lu(e,r),ru(e,Ge()),n;if(6===t)lu(e,r);else{if(o=e.current.alternate,0===(30&r)&&!function(e){for(var t=e;;){if(16384&t.flags){var n=t.updateQueue;if(null!==n&&null!==(n=n.stores))for(var r=0;r<n.length;r++){var o=n[r],i=o.getSnapshot;o=o.value;try{if(!lr(i(),o))return!1}catch(l){return!1}}}if(n=t.child,16384&t.subtreeFlags&&null!==n)n.return=t,t=n;else{if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}(o)&&(2===(t=gu(e,r))&&(0!==(a=pt(e))&&(r=a,t=iu(e,a))),1===t))throw n=Os,fu(e,0),lu(e,r),ru(e,Ge()),n;switch(e.finishedWork=o,e.finishedLanes=r,t){case 0:case 1:throw Error(i(345));case 2:case 5:xu(e,Bs,Hs);break;case 3:if(lu(e,r),(130023424&r)===r&&10<(t=qs+500-Ge())){if(0!==ft(e,0))break;if(((o=e.suspendedLanes)&r)!==r){eu(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=ro(xu.bind(null,e,Bs,Hs),t);break}xu(e,Bs,Hs);break;case 4:if(lu(e,r),(4194240&r)===r)break;for(t=e.eventTimes,o=-1;0<r;){var l=31-at(r);a=1<<l,(l=t[l])>o&&(o=l),r&=~a}if(r=o,10<(r=(120>(r=Ge()-r)?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*Ss(r/1960))-r)){e.timeoutHandle=ro(xu.bind(null,e,Bs,Hs),r);break}xu(e,Bs,Hs);break;default:throw Error(i(329))}}}return ru(e,Ge()),e.callbackNode===n?ou.bind(null,e):null}function iu(e,t){var n=Fs;return e.current.memoizedState.isDehydrated&&(fu(e,t).flags|=256),2!==(e=gu(e,t))&&(t=Bs,Bs=n,null!==t&&au(t)),e}function au(e){null===Bs?Bs=e:Bs.push.apply(Bs,e)}function lu(e,t){for(t&=~Rs,t&=~Is,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-at(t),r=1<<n;e[n]=-1,t&=~r}}function su(e){if(0!==(6&Ms))throw Error(i(327));ku();var t=ft(e,0);if(0===(1&t))return ru(e,Ge()),null;var n=gu(e,t);if(0!==e.tag&&2===n){var r=pt(e);0!==r&&(t=r,n=iu(e,r))}if(1===n)throw n=Os,fu(e,0),lu(e,t),ru(e,Ge()),n;if(6===n)throw Error(i(345));return e.finishedWork=e.current.alternate,e.finishedLanes=t,xu(e,Bs,Hs),ru(e,Ge()),null}function uu(e,t){var n=Ms;Ms|=1;try{return e(t)}finally{0===(Ms=n)&&(Us=Ge()+500,Bo&&Ho())}}function cu(e){null!==Ys&&0===Ys.tag&&0===(6&Ms)&&ku();var t=Ms;Ms|=1;var n=Ns.transition,r=bt;try{if(Ns.transition=null,bt=1,e)return e()}finally{bt=r,Ns.transition=n,0===(6&(Ms=t))&&Ho()}}function du(){Ls=zs.current,Eo(zs)}function fu(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,oo(n)),null!==Ds)for(n=Ds.return;null!==n;){var r=n;switch(ni(r),r.tag){case 1:null!==(r=r.type.childContextTypes)&&void 0!==r&&jo();break;case 3:ia(),Eo(Do),Eo(Ao),da();break;case 5:la(r);break;case 4:ia();break;case 13:case 19:Eo(sa);break;case 10:_i(r.type._context);break;case 22:case 23:du()}n=n.return}if(As=e,Ds=e=zu(e.current,null),Ps=Ls=t,js=0,Os=null,Rs=Is=Ts=0,Bs=Fs=null,null!==Ni){for(t=0;t<Ni.length;t++)if(null!==(r=(n=Ni[t]).interleaved)){n.interleaved=null;var o=r.next,i=n.pending;if(null!==i){var a=i.next;i.next=o,r.next=a}n.pending=r}Ni=null}return e}function hu(e,t){for(;;){var n=Ds;try{if(ki(),fa.current=al,ya){for(var r=ma.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ya=!1}if(pa=0,va=ga=ma=null,ba=!1,wa=0,Es.current=null,null===n||null===n.return){js=1,Os=t,Ds=null;break}e:{var a=e,l=n.return,s=n,u=t;if(t=Ps,s.flags|=32768,null!==u&&\"object\"===typeof u&&\"function\"===typeof u.then){var c=u,d=s,f=d.tag;if(0===(1&d.mode)&&(0===f||11===f||15===f)){var h=d.alternate;h?(d.updateQueue=h.updateQueue,d.memoizedState=h.memoizedState,d.lanes=h.lanes):(d.updateQueue=null,d.memoizedState=null)}var p=vl(l);if(null!==p){p.flags&=-257,yl(p,l,s,0,t),1&p.mode&&gl(a,c,t),u=c;var m=(t=p).updateQueue;if(null===m){var g=new Set;g.add(u),t.updateQueue=g}else m.add(u);break e}if(0===(1&t)){gl(a,c,t),mu();break e}u=Error(i(426))}else if(ii&&1&s.mode){var v=vl(l);if(null!==v){0===(65536&v.flags)&&(v.flags|=256),yl(v,l,s,0,t),mi(cl(u,s));break e}}a=u=cl(u,s),4!==js&&(js=2),null===Fs?Fs=[a]:Fs.push(a),a=l;do{switch(a.tag){case 3:a.flags|=65536,t&=-t,a.lanes|=t,Ii(a,pl(0,u,t));break e;case 1:s=u;var y=a.type,b=a.stateNode;if(0===(128&a.flags)&&(\"function\"===typeof y.getDerivedStateFromError||null!==b&&\"function\"===typeof b.componentDidCatch&&(null===Zs||!Zs.has(b)))){a.flags|=65536,t&=-t,a.lanes|=t,Ii(a,ml(a,s,t));break e}}a=a.return}while(null!==a)}wu(n)}catch(w){t=w,Ds===n&&null!==n&&(Ds=n=n.return);continue}break}}function pu(){var e=Cs.current;return Cs.current=al,null===e?al:e}function mu(){0!==js&&3!==js&&2!==js||(js=4),null===As||0===(268435455&Ts)&&0===(268435455&Is)||lu(As,Ps)}function gu(e,t){var n=Ms;Ms|=2;var r=pu();for(As===e&&Ps===t||(Hs=null,fu(e,t));;)try{vu();break}catch(o){hu(e,o)}if(ki(),Ms=n,Cs.current=r,null!==Ds)throw Error(i(261));return As=null,Ps=0,js}function vu(){for(;null!==Ds;)bu(Ds)}function yu(){for(;null!==Ds&&!Xe();)bu(Ds)}function bu(e){var t=_s(e.alternate,e,Ls);e.memoizedProps=e.pendingProps,null===t?wu(e):Ds=t,Es.current=null}function wu(e){var t=e;do{var n=t.alternate;if(e=t.return,0===(32768&t.flags)){if(null!==(n=$l(n,t,Ls)))return void(Ds=n)}else{if(null!==(n=Yl(n,t)))return n.flags&=32767,void(Ds=n);if(null===e)return js=6,void(Ds=null);e.flags|=32768,e.subtreeFlags=0,e.deletions=null}if(null!==(t=t.sibling))return void(Ds=t);Ds=t=e}while(null!==t);0===js&&(js=5)}function xu(e,t,n){var r=bt,o=Ns.transition;try{Ns.transition=null,bt=1,function(e,t,n,r){do{ku()}while(null!==Ys);if(0!==(6&Ms))throw Error(i(327));n=e.finishedWork;var o=e.finishedLanes;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(i(177));e.callbackNode=null,e.callbackPriority=0;var a=n.lanes|n.childLanes;if(function(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0<n;){var o=31-at(n),i=1<<o;t[o]=0,r[o]=-1,e[o]=-1,n&=~i}}(e,a),e===As&&(Ds=As=null,Ps=0),0===(2064&n.subtreeFlags)&&0===(2064&n.flags)||$s||($s=!0,Au(tt,(function(){return ku(),null}))),a=0!==(15990&n.flags),0!==(15990&n.subtreeFlags)||a){a=Ns.transition,Ns.transition=null;var l=bt;bt=1;var s=Ms;Ms|=4,Es.current=null,function(e,t){if(eo=Vt,hr(e=fr())){if(\"selectionStart\"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{var r=(n=(n=e.ownerDocument)&&n.defaultView||window).getSelection&&n.getSelection();if(r&&0!==r.rangeCount){n=r.anchorNode;var o=r.anchorOffset,a=r.focusNode;r=r.focusOffset;try{n.nodeType,a.nodeType}catch(x){n=null;break e}var l=0,s=-1,u=-1,c=0,d=0,f=e,h=null;t:for(;;){for(var p;f!==n||0!==o&&3!==f.nodeType||(s=l+o),f!==a||0!==r&&3!==f.nodeType||(u=l+r),3===f.nodeType&&(l+=f.nodeValue.length),null!==(p=f.firstChild);)h=f,f=p;for(;;){if(f===e)break t;if(h===n&&++c===o&&(s=l),h===a&&++d===r&&(u=l),null!==(p=f.nextSibling))break;h=(f=h).parentNode}f=p}n=-1===s||-1===u?null:{start:s,end:u}}else n=null}n=n||{start:0,end:0}}else n=null;for(to={focusedElem:e,selectionRange:n},Vt=!1,Ql=t;null!==Ql;)if(e=(t=Ql).child,0!==(1028&t.subtreeFlags)&&null!==e)e.return=t,Ql=e;else for(;null!==Ql;){t=Ql;try{var m=t.alternate;if(0!==(1024&t.flags))switch(t.tag){case 0:case 11:case 15:case 5:case 6:case 4:case 17:break;case 1:if(null!==m){var g=m.memoizedProps,v=m.memoizedState,y=t.stateNode,b=y.getSnapshotBeforeUpdate(t.elementType===t.type?g:vi(t.type,g),v);y.__reactInternalSnapshotBeforeUpdate=b}break;case 3:var w=t.stateNode.containerInfo;1===w.nodeType?w.textContent=\"\":9===w.nodeType&&w.documentElement&&w.removeChild(w.documentElement);break;default:throw Error(i(163))}}catch(x){Su(t,t.return,x)}if(null!==(e=t.sibling)){e.return=t.return,Ql=e;break}Ql=t.return}m=ts,ts=!1}(e,n),gs(n,e),pr(to),Vt=!!eo,to=eo=null,e.current=n,ys(n,e,o),Ke(),Ms=s,bt=l,Ns.transition=a}else e.current=n;if($s&&($s=!1,Ys=e,Xs=o),a=e.pendingLanes,0===a&&(Zs=null),function(e){if(it&&\"function\"===typeof it.onCommitFiberRoot)try{it.onCommitFiberRoot(ot,e,void 0,128===(128&e.current.flags))}catch(t){}}(n.stateNode),ru(e,Ge()),null!==t)for(r=e.onRecoverableError,n=0;n<t.length;n++)o=t[n],r(o.value,{componentStack:o.stack,digest:o.digest});if(Vs)throw Vs=!1,e=Ws,Ws=null,e;0!==(1&Xs)&&0!==e.tag&&ku(),a=e.pendingLanes,0!==(1&a)?e===Gs?Ks++:(Ks=0,Gs=e):Ks=0,Ho()}(e,t,n,r)}finally{Ns.transition=o,bt=r}return null}function ku(){if(null!==Ys){var e=wt(Xs),t=Ns.transition,n=bt;try{if(Ns.transition=null,bt=16>e?16:e,null===Ys)var r=!1;else{if(e=Ys,Ys=null,Xs=0,0!==(6&Ms))throw Error(i(331));var o=Ms;for(Ms|=4,Ql=e.current;null!==Ql;){var a=Ql,l=a.child;if(0!==(16&Ql.flags)){var s=a.deletions;if(null!==s){for(var u=0;u<s.length;u++){var c=s[u];for(Ql=c;null!==Ql;){var d=Ql;switch(d.tag){case 0:case 11:case 15:ns(8,d,a)}var f=d.child;if(null!==f)f.return=d,Ql=f;else for(;null!==Ql;){var h=(d=Ql).sibling,p=d.return;if(is(d),d===c){Ql=null;break}if(null!==h){h.return=p,Ql=h;break}Ql=p}}}var m=a.alternate;if(null!==m){var g=m.child;if(null!==g){m.child=null;do{var v=g.sibling;g.sibling=null,g=v}while(null!==g)}}Ql=a}}if(0!==(2064&a.subtreeFlags)&&null!==l)l.return=a,Ql=l;else e:for(;null!==Ql;){if(0!==(2048&(a=Ql).flags))switch(a.tag){case 0:case 11:case 15:ns(9,a,a.return)}var y=a.sibling;if(null!==y){y.return=a.return,Ql=y;break e}Ql=a.return}}var b=e.current;for(Ql=b;null!==Ql;){var w=(l=Ql).child;if(0!==(2064&l.subtreeFlags)&&null!==w)w.return=l,Ql=w;else e:for(l=b;null!==Ql;){if(0!==(2048&(s=Ql).flags))try{switch(s.tag){case 0:case 11:case 15:rs(9,s)}}catch(k){Su(s,s.return,k)}if(s===l){Ql=null;break e}var x=s.sibling;if(null!==x){x.return=s.return,Ql=x;break e}Ql=s.return}}if(Ms=o,Ho(),it&&\"function\"===typeof it.onPostCommitFiberRoot)try{it.onPostCommitFiberRoot(ot,e)}catch(k){}r=!0}return r}finally{bt=n,Ns.transition=t}}return!1}function _u(e,t,n){e=Oi(e,t=pl(0,t=cl(n,t),1),1),t=eu(),null!==e&&(vt(e,1,t),ru(e,t))}function Su(e,t,n){if(3===e.tag)_u(e,e,n);else for(;null!==t;){if(3===t.tag){_u(t,e,n);break}if(1===t.tag){var r=t.stateNode;if(\"function\"===typeof t.type.getDerivedStateFromError||\"function\"===typeof r.componentDidCatch&&(null===Zs||!Zs.has(r))){t=Oi(t,e=ml(t,e=cl(n,e),1),1),e=eu(),null!==t&&(vt(t,1,e),ru(t,e));break}}t=t.return}}function Cu(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=eu(),e.pingedLanes|=e.suspendedLanes&n,As===e&&(Ps&n)===n&&(4===js||3===js&&(130023424&Ps)===Ps&&500>Ge()-qs?fu(e,0):Rs|=n),ru(e,t)}function Eu(e,t){0===t&&(0===(1&e.mode)?t=1:(t=ct,0===(130023424&(ct<<=1))&&(ct=4194304)));var n=eu();null!==(e=Di(e,t))&&(vt(e,t,n),ru(e,n))}function Nu(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),Eu(e,n)}function Mu(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;null!==o&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(i(314))}null!==r&&r.delete(t),Eu(e,n)}function Au(e,t){return $e(e,t)}function Du(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Pu(e,t,n,r){return new Du(e,t,n,r)}function Lu(e){return!(!(e=e.prototype)||!e.isReactComponent)}function zu(e,t){var n=e.alternate;return null===n?((n=Pu(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=14680064&e.flags,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ju(e,t,n,r,o,a){var l=2;if(r=e,\"function\"===typeof e)Lu(e)&&(l=1);else if(\"string\"===typeof e)l=5;else e:switch(e){case _:return Ou(n.children,o,a,t);case S:l=8,o|=8;break;case C:return(e=Pu(12,n,t,2|o)).elementType=C,e.lanes=a,e;case A:return(e=Pu(13,n,t,o)).elementType=A,e.lanes=a,e;case D:return(e=Pu(19,n,t,o)).elementType=D,e.lanes=a,e;case z:return Tu(n,o,a,t);default:if(\"object\"===typeof e&&null!==e)switch(e.$$typeof){case E:l=10;break e;case N:l=9;break e;case M:l=11;break e;case P:l=14;break e;case L:l=16,r=null;break e}throw Error(i(130,null==e?e:typeof e,\"\"))}return(t=Pu(l,n,t,o)).elementType=e,t.type=r,t.lanes=a,t}function Ou(e,t,n,r){return(e=Pu(7,e,r,t)).lanes=n,e}function Tu(e,t,n,r){return(e=Pu(22,e,r,t)).elementType=z,e.lanes=n,e.stateNode={isHidden:!1},e}function Iu(e,t,n){return(e=Pu(6,e,null,t)).lanes=n,e}function Ru(e,t,n){return(t=Pu(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Fu(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=gt(0),this.expirationTimes=gt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=gt(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Bu(e,t,n,r,o,i,a,l,s){return e=new Fu(e,t,n,l,s),1===t?(t=1,!0===i&&(t|=8)):t=0,i=Pu(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Li(i),e}function qu(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:k,key:null==r?null:\"\"+r,children:e,containerInfo:t,implementation:n}}function Uu(e){if(!e)return Mo;e:{if(Ue(e=e._reactInternals)!==e||1!==e.tag)throw Error(i(170));var t=e;do{switch(t.tag){case 3:t=t.stateNode.context;break e;case 1:if(zo(t.type)){t=t.stateNode.__reactInternalMemoizedMergedChildContext;break e}}t=t.return}while(null!==t);throw Error(i(171))}if(1===e.tag){var n=e.type;if(zo(n))return To(e,n,t)}return t}function Hu(e,t,n,r,o,i,a,l,s){return(e=Bu(n,r,!0,e,0,i,0,l,s)).context=Uu(null),n=e.current,(i=ji(r=eu(),o=tu(n))).callback=void 0!==t&&null!==t?t:null,Oi(n,i,o),e.current.lanes=o,vt(e,o,r),ru(e,r),e}function Vu(e,t,n,r){var o=t.current,i=eu(),a=tu(o);return n=Uu(n),null===t.context?t.context=n:t.pendingContext=n,(t=ji(i,a)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),null!==(e=Oi(o,t,a))&&(nu(e,o,a,i),Ti(e,o,a)),a}function Wu(e){return(e=e.current).child?(e.child.tag,e.child.stateNode):null}function Zu(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function $u(e,t){Zu(e,t),(e=e.alternate)&&Zu(e,t)}_s=function(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps||Do.current)wl=!0;else{if(0===(e.lanes&n)&&0===(128&t.flags))return wl=!1,function(e,t,n){switch(t.tag){case 3:Dl(t),pi();break;case 5:aa(t);break;case 1:zo(t.type)&&Io(t);break;case 4:oa(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;No(yi,r._currentValue),r._currentValue=o;break;case 13:if(null!==(r=t.memoizedState))return null!==r.dehydrated?(No(sa,1&sa.current),t.flags|=128,null):0!==(n&t.child.childLanes)?Il(e,t,n):(No(sa,1&sa.current),null!==(e=Vl(e,t,n))?e.sibling:null);No(sa,1&sa.current);break;case 19:if(r=0!==(n&t.childLanes),0!==(128&e.flags)){if(r)return Ul(e,t,n);t.flags|=128}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),No(sa,sa.current),r)break;return null;case 22:case 23:return t.lanes=0,Cl(e,t,n)}return Vl(e,t,n)}(e,t,n);wl=0!==(131072&e.flags)}else wl=!1,ii&&0!==(1048576&t.flags)&&ei(t,$o,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Hl(e,t),e=t.pendingProps;var o=Lo(t,Ao.current);Ci(t,n),o=Sa(null,t,r,e,o,n);var a=Ca();return t.flags|=1,\"object\"===typeof o&&null!==o&&\"function\"===typeof o.render&&void 0===o.$$typeof?(t.tag=1,t.memoizedState=null,t.updateQueue=null,zo(r)?(a=!0,Io(t)):a=!1,t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,Li(t),o.updater=Ui,t.stateNode=o,o._reactInternals=t,Zi(t,r,e,n),t=Al(null,t,r,!0,a,n)):(t.tag=0,ii&&a&&ti(t),xl(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Hl(e,t),e=t.pendingProps,r=(o=r._init)(r._payload),t.type=r,o=t.tag=function(e){if(\"function\"===typeof e)return Lu(e)?1:0;if(void 0!==e&&null!==e){if((e=e.$$typeof)===M)return 11;if(e===P)return 14}return 2}(r),e=vi(r,e),o){case 0:t=Nl(null,t,r,e,n);break e;case 1:t=Ml(null,t,r,e,n);break e;case 11:t=kl(null,t,r,e,n);break e;case 14:t=_l(null,t,r,vi(r.type,e),n);break e}throw Error(i(306,r,\"\"))}return t;case 0:return r=t.type,o=t.pendingProps,Nl(e,t,r,o=t.elementType===r?o:vi(r,o),n);case 1:return r=t.type,o=t.pendingProps,Ml(e,t,r,o=t.elementType===r?o:vi(r,o),n);case 3:e:{if(Dl(t),null===e)throw Error(i(387));r=t.pendingProps,o=(a=t.memoizedState).element,zi(e,t),Ri(t,r,null,n);var l=t.memoizedState;if(r=l.element,a.isDehydrated){if(a={element:r,isDehydrated:!1,cache:l.cache,pendingSuspenseBoundaries:l.pendingSuspenseBoundaries,transitions:l.transitions},t.updateQueue.baseState=a,t.memoizedState=a,256&t.flags){t=Pl(e,t,r,n,o=cl(Error(i(423)),t));break e}if(r!==o){t=Pl(e,t,r,n,o=cl(Error(i(424)),t));break e}for(oi=uo(t.stateNode.containerInfo.firstChild),ri=t,ii=!0,ai=null,n=Qi(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling}else{if(pi(),r===o){t=Vl(e,t,n);break e}xl(e,t,r,n)}t=t.child}return t;case 5:return aa(t),null===e&&ci(t),r=t.type,o=t.pendingProps,a=null!==e?e.memoizedProps:null,l=o.children,no(r,o)?l=null:null!==a&&no(r,a)&&(t.flags|=32),El(e,t),xl(e,t,l,n),t.child;case 6:return null===e&&ci(t),null;case 13:return Il(e,t,n);case 4:return oa(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=Gi(t,null,r,n):xl(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,kl(e,t,r,o=t.elementType===r?o:vi(r,o),n);case 7:return xl(e,t,t.pendingProps,n),t.child;case 8:case 12:return xl(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,a=t.memoizedProps,l=o.value,No(yi,r._currentValue),r._currentValue=l,null!==a)if(lr(a.value,l)){if(a.children===o.children&&!Do.current){t=Vl(e,t,n);break e}}else for(null!==(a=t.child)&&(a.return=t);null!==a;){var s=a.dependencies;if(null!==s){l=a.child;for(var u=s.firstContext;null!==u;){if(u.context===r){if(1===a.tag){(u=ji(-1,n&-n)).tag=2;var c=a.updateQueue;if(null!==c){var d=(c=c.shared).pending;null===d?u.next=u:(u.next=d.next,d.next=u),c.pending=u}}a.lanes|=n,null!==(u=a.alternate)&&(u.lanes|=n),Si(a.return,n,t),s.lanes|=n;break}u=u.next}}else if(10===a.tag)l=a.type===t.type?null:a.child;else if(18===a.tag){if(null===(l=a.return))throw Error(i(341));l.lanes|=n,null!==(s=l.alternate)&&(s.lanes|=n),Si(l,n,t),l=a.sibling}else l=a.child;if(null!==l)l.return=a;else for(l=a;null!==l;){if(l===t){l=null;break}if(null!==(a=l.sibling)){a.return=l.return,l=a;break}l=l.return}a=l}xl(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,Ci(t,n),r=r(o=Ei(o)),t.flags|=1,xl(e,t,r,n),t.child;case 14:return o=vi(r=t.type,t.pendingProps),_l(e,t,r,o=vi(r.type,o),n);case 15:return Sl(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:vi(r,o),Hl(e,t),t.tag=1,zo(r)?(e=!0,Io(t)):e=!1,Ci(t,n),Vi(t,r,o),Zi(t,r,o,n),Al(null,t,r,!0,e,n);case 19:return Ul(e,t,n);case 22:return Cl(e,t,n)}throw Error(i(156,t.tag))};var Yu=\"function\"===typeof reportError?reportError:function(e){console.error(e)};function Xu(e){this._internalRoot=e}function Ku(e){this._internalRoot=e}function Gu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType)}function Qu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||\" react-mount-point-unstable \"!==e.nodeValue))}function Ju(){}function ec(e,t,n,r,o){var i=n._reactRootContainer;if(i){var a=i;if(\"function\"===typeof o){var l=o;o=function(){var e=Wu(a);l.call(e)}}Vu(t,a,e,o)}else a=function(e,t,n,r,o){if(o){if(\"function\"===typeof r){var i=r;r=function(){var e=Wu(a);i.call(e)}}var a=Hu(t,r,e,0,null,!1,0,\"\",Ju);return e._reactRootContainer=a,e[mo]=a.current,Ur(8===e.nodeType?e.parentNode:e),cu(),a}for(;o=e.lastChild;)e.removeChild(o);if(\"function\"===typeof r){var l=r;r=function(){var e=Wu(s);l.call(e)}}var s=Bu(e,0,!1,null,0,!1,0,\"\",Ju);return e._reactRootContainer=s,e[mo]=s.current,Ur(8===e.nodeType?e.parentNode:e),cu((function(){Vu(t,s,n,r)})),s}(n,t,e,o,r);return Wu(a)}Ku.prototype.render=Xu.prototype.render=function(e){var t=this._internalRoot;if(null===t)throw Error(i(409));Vu(e,t,null,null)},Ku.prototype.unmount=Xu.prototype.unmount=function(){var e=this._internalRoot;if(null!==e){this._internalRoot=null;var t=e.containerInfo;cu((function(){Vu(null,e,null,null)})),t[mo]=null}},Ku.prototype.unstable_scheduleHydration=function(e){if(e){var t=St();e={blockedOn:null,target:e,priority:t};for(var n=0;n<zt.length&&0!==t&&t<zt[n].priority;n++);zt.splice(n,0,e),0===n&&It(e)}},xt=function(e){switch(e.tag){case 3:var t=e.stateNode;if(t.current.memoizedState.isDehydrated){var n=dt(t.pendingLanes);0!==n&&(yt(t,1|n),ru(t,Ge()),0===(6&Ms)&&(Us=Ge()+500,Ho()))}break;case 13:cu((function(){var t=Di(e,1);if(null!==t){var n=eu();nu(t,e,1,n)}})),$u(e,1)}},kt=function(e){if(13===e.tag){var t=Di(e,134217728);if(null!==t)nu(t,e,134217728,eu());$u(e,134217728)}},_t=function(e){if(13===e.tag){var t=tu(e),n=Di(e,t);if(null!==n)nu(n,e,t,eu());$u(e,t)}},St=function(){return bt},Ct=function(e,t){var n=bt;try{return bt=e,t()}finally{bt=n}},ke=function(e,t,n){switch(t){case\"input\":if(Q(e,n),t=n.name,\"radio\"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+t)+'][type=\"radio\"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=ko(r);if(!o)throw Error(i(90));$(r),Q(r,o)}}}break;case\"textarea\":ie(e,n);break;case\"select\":null!=(t=n.value)&&ne(e,!!n.multiple,t,!1)}},Me=uu,Ae=cu;var tc={usingClientEntryPoint:!1,Events:[wo,xo,ko,Ee,Ne,uu]},nc={findFiberByHostInstance:bo,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"},rc={bundleType:nc.bundleType,version:nc.version,rendererPackageName:nc.rendererPackageName,rendererConfig:nc.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:w.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=We(e))?null:e.stateNode},findFiberByHostInstance:nc.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var oc=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!oc.isDisabled&&oc.supportsFiber)try{ot=oc.inject(rc),it=oc}catch(ce){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tc,t.createPortal=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!Gu(t))throw Error(i(200));return qu(e,t,null,n)},t.createRoot=function(e,t){if(!Gu(e))throw Error(i(299));var n=!1,r=\"\",o=Yu;return null!==t&&void 0!==t&&(!0===t.unstable_strictMode&&(n=!0),void 0!==t.identifierPrefix&&(r=t.identifierPrefix),void 0!==t.onRecoverableError&&(o=t.onRecoverableError)),t=Bu(e,1,!1,null,0,n,0,r,o),e[mo]=t.current,Ur(8===e.nodeType?e.parentNode:e),new Xu(t)},t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if(\"function\"===typeof e.render)throw Error(i(188));throw e=Object.keys(e).join(\",\"),Error(i(268,e))}return e=null===(e=We(t))?null:e.stateNode},t.flushSync=function(e){return cu(e)},t.hydrate=function(e,t,n){if(!Qu(t))throw Error(i(200));return ec(null,e,t,!0,n)},t.hydrateRoot=function(e,t,n){if(!Gu(e))throw Error(i(405));var r=null!=n&&n.hydratedSources||null,o=!1,a=\"\",l=Yu;if(null!==n&&void 0!==n&&(!0===n.unstable_strictMode&&(o=!0),void 0!==n.identifierPrefix&&(a=n.identifierPrefix),void 0!==n.onRecoverableError&&(l=n.onRecoverableError)),t=Hu(t,null,e,1,null!=n?n:null,o,0,a,l),e[mo]=t.current,Ur(e),r)for(e=0;e<r.length;e++)o=(o=(n=r[e])._getVersion)(n._source),null==t.mutableSourceEagerHydrationData?t.mutableSourceEagerHydrationData=[n,o]:t.mutableSourceEagerHydrationData.push(n,o);return new Ku(t)},t.render=function(e,t,n){if(!Qu(t))throw Error(i(200));return ec(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!Qu(e))throw Error(i(40));return!!e._reactRootContainer&&(cu((function(){ec(null,null,e,!1,(function(){e._reactRootContainer=null,e[mo]=null}))})),!0)},t.unstable_batchedUpdates=uu,t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!Qu(n))throw Error(i(200));if(null==e||void 0===e._reactInternals)throw Error(i(38));return ec(e,t,n,!1,r)},t.version=\"18.2.0-next-9e3b772b8-20220608\"},1250:function(e,t,n){\"use strict\";var r=n(4164);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},4164:function(e,t,n){\"use strict\";!function e(){if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(4463)},6374:function(e,t,n){\"use strict\";var r=n(2791),o=Symbol.for(\"react.element\"),i=Symbol.for(\"react.fragment\"),a=Object.prototype.hasOwnProperty,l=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,s={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,i={},u=null,c=null;for(r in void 0!==n&&(u=\"\"+n),void 0!==t.key&&(u=\"\"+t.key),void 0!==t.ref&&(c=t.ref),t)a.call(t,r)&&!s.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===i[r]&&(i[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:c,props:i,_owner:l.current}}t.Fragment=i,t.jsx=u,t.jsxs=u},9117:function(e,t){\"use strict\";var n=Symbol.for(\"react.element\"),r=Symbol.for(\"react.portal\"),o=Symbol.for(\"react.fragment\"),i=Symbol.for(\"react.strict_mode\"),a=Symbol.for(\"react.profiler\"),l=Symbol.for(\"react.provider\"),s=Symbol.for(\"react.context\"),u=Symbol.for(\"react.forward_ref\"),c=Symbol.for(\"react.suspense\"),d=Symbol.for(\"react.memo\"),f=Symbol.for(\"react.lazy\"),h=Symbol.iterator;var p={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||p}function y(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||p}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(\"object\"!==typeof e&&\"function\"!==typeof e&&null!=e)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,e,t,\"setState\")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")},y.prototype=v.prototype;var w=b.prototype=new y;w.constructor=b,m(w,v.prototype),w.isPureReactComponent=!0;var x=Array.isArray,k=Object.prototype.hasOwnProperty,_={current:null},S={key:!0,ref:!0,__self:!0,__source:!0};function C(e,t,r){var o,i={},a=null,l=null;if(null!=t)for(o in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(a=\"\"+t.key),t)k.call(t,o)&&!S.hasOwnProperty(o)&&(i[o]=t[o]);var s=arguments.length-2;if(1===s)i.children=r;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];i.children=u}if(e&&e.defaultProps)for(o in s=e.defaultProps)void 0===i[o]&&(i[o]=s[o]);return{$$typeof:n,type:e,key:a,ref:l,props:i,_owner:_.current}}function E(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===n}var N=/\\/+/g;function M(e,t){return\"object\"===typeof e&&null!==e&&null!=e.key?function(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+e.replace(/[=:]/g,(function(e){return t[e]}))}(\"\"+e.key):t.toString(36)}function A(e,t,o,i,a){var l=typeof e;\"undefined\"!==l&&\"boolean\"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case\"string\":case\"number\":s=!0;break;case\"object\":switch(e.$$typeof){case n:case r:s=!0}}if(s)return a=a(s=e),e=\"\"===i?\".\"+M(s,0):i,x(a)?(o=\"\",null!=e&&(o=e.replace(N,\"$&/\")+\"/\"),A(a,t,o,\"\",(function(e){return e}))):null!=a&&(E(a)&&(a=function(e,t){return{$$typeof:n,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(a,o+(!a.key||s&&s.key===a.key?\"\":(\"\"+a.key).replace(N,\"$&/\")+\"/\")+e)),t.push(a)),1;if(s=0,i=\"\"===i?\".\":i+\":\",x(e))for(var u=0;u<e.length;u++){var c=i+M(l=e[u],u);s+=A(l,t,o,c,a)}else if(c=function(e){return null===e||\"object\"!==typeof e?null:\"function\"===typeof(e=h&&e[h]||e[\"@@iterator\"])?e:null}(e),\"function\"===typeof c)for(e=c.call(e),u=0;!(l=e.next()).done;)s+=A(l=l.value,t,o,c=i+M(l,u++),a);else if(\"object\"===l)throw t=String(e),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===t?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":t)+\"). If you meant to render a collection of children, use an array instead.\");return s}function D(e,t,n){if(null==e)return e;var r=[],o=0;return A(e,r,\"\",\"\",(function(e){return t.call(n,e,o++)})),r}function P(e){if(-1===e._status){var t=e._result;(t=t()).then((function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)}),(function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)})),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var L={current:null},z={transition:null},j={ReactCurrentDispatcher:L,ReactCurrentBatchConfig:z,ReactCurrentOwner:_};t.Children={map:D,forEach:function(e,t,n){D(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return D(e,(function(){t++})),t},toArray:function(e){return D(e,(function(e){return e}))||[]},only:function(e){if(!E(e))throw Error(\"React.Children.only expected to receive a single React element child.\");return e}},t.Component=v,t.Fragment=o,t.Profiler=a,t.PureComponent=b,t.StrictMode=i,t.Suspense=c,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=j,t.cloneElement=function(e,t,r){if(null===e||void 0===e)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+e+\".\");var o=m({},e.props),i=e.key,a=e.ref,l=e._owner;if(null!=t){if(void 0!==t.ref&&(a=t.ref,l=_.current),void 0!==t.key&&(i=\"\"+t.key),e.type&&e.type.defaultProps)var s=e.type.defaultProps;for(u in t)k.call(t,u)&&!S.hasOwnProperty(u)&&(o[u]=void 0===t[u]&&void 0!==s?s[u]:t[u])}var u=arguments.length-2;if(1===u)o.children=r;else if(1<u){s=Array(u);for(var c=0;c<u;c++)s[c]=arguments[c+2];o.children=s}return{$$typeof:n,type:e.type,key:i,ref:a,props:o,_owner:l}},t.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null}).Provider={$$typeof:l,_context:e},e.Consumer=e},t.createElement=C,t.createFactory=function(e){var t=C.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:u,render:e}},t.isValidElement=E,t.lazy=function(e){return{$$typeof:f,_payload:{_status:-1,_result:e},_init:P}},t.memo=function(e,t){return{$$typeof:d,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=z.transition;z.transition={};try{e()}finally{z.transition=t}},t.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\")},t.useCallback=function(e,t){return L.current.useCallback(e,t)},t.useContext=function(e){return L.current.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e){return L.current.useDeferredValue(e)},t.useEffect=function(e,t){return L.current.useEffect(e,t)},t.useId=function(){return L.current.useId()},t.useImperativeHandle=function(e,t,n){return L.current.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return L.current.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return L.current.useLayoutEffect(e,t)},t.useMemo=function(e,t){return L.current.useMemo(e,t)},t.useReducer=function(e,t,n){return L.current.useReducer(e,t,n)},t.useRef=function(e){return L.current.useRef(e)},t.useState=function(e){return L.current.useState(e)},t.useSyncExternalStore=function(e,t,n){return L.current.useSyncExternalStore(e,t,n)},t.useTransition=function(){return L.current.useTransition()},t.version=\"18.2.0\"},2791:function(e,t,n){\"use strict\";e.exports=n(9117)},184:function(e,t,n){\"use strict\";e.exports=n(6374)},6813:function(e,t){\"use strict\";function n(e,t){var n=e.length;e.push(t);e:for(;0<n;){var r=n-1>>>1,o=e[r];if(!(0<i(o,t)))break e;e[r]=t,e[n]=o,n=r}}function r(e){return 0===e.length?null:e[0]}function o(e){if(0===e.length)return null;var t=e[0],n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length,a=o>>>1;r<a;){var l=2*(r+1)-1,s=e[l],u=l+1,c=e[u];if(0>i(s,n))u<o&&0>i(c,s)?(e[r]=c,e[u]=n,r=u):(e[r]=s,e[l]=n,r=l);else{if(!(u<o&&0>i(c,n)))break e;e[r]=c,e[u]=n,r=u}}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var a=performance;t.unstable_now=function(){return a.now()}}else{var l=Date,s=l.now();t.unstable_now=function(){return l.now()-s}}var u=[],c=[],d=1,f=null,h=3,p=!1,m=!1,g=!1,v=\"function\"===typeof setTimeout?setTimeout:null,y=\"function\"===typeof clearTimeout?clearTimeout:null,b=\"undefined\"!==typeof setImmediate?setImmediate:null;function w(e){for(var t=r(c);null!==t;){if(null===t.callback)o(c);else{if(!(t.startTime<=e))break;o(c),t.sortIndex=t.expirationTime,n(u,t)}t=r(c)}}function x(e){if(g=!1,w(e),!m)if(null!==r(u))m=!0,z(k);else{var t=r(c);null!==t&&j(x,t.startTime-e)}}function k(e,n){m=!1,g&&(g=!1,y(E),E=-1),p=!0;var i=h;try{for(w(n),f=r(u);null!==f&&(!(f.expirationTime>n)||e&&!A());){var a=f.callback;if(\"function\"===typeof a){f.callback=null,h=f.priorityLevel;var l=a(f.expirationTime<=n);n=t.unstable_now(),\"function\"===typeof l?f.callback=l:f===r(u)&&o(u),w(n)}else o(u);f=r(u)}if(null!==f)var s=!0;else{var d=r(c);null!==d&&j(x,d.startTime-n),s=!1}return s}finally{f=null,h=i,p=!1}}\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var _,S=!1,C=null,E=-1,N=5,M=-1;function A(){return!(t.unstable_now()-M<N)}function D(){if(null!==C){var e=t.unstable_now();M=e;var n=!0;try{n=C(!0,e)}finally{n?_():(S=!1,C=null)}}else S=!1}if(\"function\"===typeof b)_=function(){b(D)};else if(\"undefined\"!==typeof MessageChannel){var P=new MessageChannel,L=P.port2;P.port1.onmessage=D,_=function(){L.postMessage(null)}}else _=function(){v(D,0)};function z(e){C=e,S||(S=!0,_())}function j(e,n){E=v((function(){e(t.unstable_now())}),n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){m||p||(m=!0,z(k))},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):N=0<e?Math.floor(1e3/e):5},t.unstable_getCurrentPriorityLevel=function(){return h},t.unstable_getFirstCallbackNode=function(){return r(u)},t.unstable_next=function(e){switch(h){case 1:case 2:case 3:var t=3;break;default:t=h}var n=h;h=t;try{return e()}finally{h=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=function(){},t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=h;h=e;try{return t()}finally{h=n}},t.unstable_scheduleCallback=function(e,o,i){var a=t.unstable_now();switch(\"object\"===typeof i&&null!==i?i=\"number\"===typeof(i=i.delay)&&0<i?a+i:a:i=a,e){case 1:var l=-1;break;case 2:l=250;break;case 5:l=1073741823;break;case 4:l=1e4;break;default:l=5e3}return e={id:d++,callback:o,priorityLevel:e,startTime:i,expirationTime:l=i+l,sortIndex:-1},i>a?(e.sortIndex=i,n(c,e),null===r(u)&&e===r(c)&&(g?(y(E),E=-1):g=!0,j(x,i-a))):(e.sortIndex=l,n(u,e),m||p||(m=!0,z(k))),e},t.unstable_shouldYield=A,t.unstable_wrapCallback=function(e){var t=h;return function(){var n=h;h=t;try{return e.apply(this,arguments)}finally{h=n}}}},5296:function(e,t,n){\"use strict\";e.exports=n(6813)},538:function(e){e.exports=/[\\0-\\x1F\\x7F-\\x9F]/},7319:function(e){e.exports=/[\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB]|\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]/},3741:function(e){e.exports=/[!-#%-\\*,-\\/:;\\?@\\[-\\]_\\{\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/},2426:function(e){e.exports=/[ \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/},6937:function(e,t,n){\"use strict\";t.Any=n(5510),t.Cc=n(538),t.Cf=n(7319),t.P=n(3741),t.Z=n(2426)},5510:function(e){e.exports=/[\\0-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/},1561:function(e,t,n){\"use strict\";var r=n(2791);var o=\"function\"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},i=r.useState,a=r.useEffect,l=r.useLayoutEffect,s=r.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!o(e,n)}catch(r){return!0}}var c=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),o=r[0].inst,c=r[1];return l((function(){o.value=n,o.getSnapshot=t,u(o)&&c({inst:o})}),[e,n,t]),a((function(){return u(o)&&c({inst:o}),e((function(){u(o)&&c({inst:o})}))}),[e]),s(n),n};t.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:c},7595:function(e,t,n){\"use strict\";var r=n(2791),o=n(7248);var i=\"function\"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},a=o.useSyncExternalStore,l=r.useRef,s=r.useEffect,u=r.useMemo,c=r.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,r,o){var d=l(null);if(null===d.current){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=u((function(){function e(e){if(!s){if(s=!0,a=e,e=r(e),void 0!==o&&f.hasValue){var t=f.value;if(o(t,e))return l=t}return l=e}if(t=l,i(a,e))return t;var n=r(e);return void 0!==o&&o(t,n)?t:(a=e,l=n)}var a,l,s=!1,u=void 0===n?null:n;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]}),[t,n,r,o]);var h=a(e,d[0],d[1]);return s((function(){f.hasValue=!0,f.value=h}),[h]),c(h),h}},7248:function(e,t,n){\"use strict\";e.exports=n(1561)},327:function(e,t,n){\"use strict\";e.exports=n(7595)},7748:function(e,t,n){var r={\"./bindle/edges.json\":[8866,691],\"./ecommerce/edges.json\":[5336,547],\"./finance/edges.json\":[5490,575],\"./live/edges.json\":[8140,961],\"./movies/edges.json\":[8997,127],\"./nba/edges.json\":[6469,87],\"./the-bank-job/edges.json\":[4879,335]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error(\"Cannot find module '\"+e+\"'\");throw t.code=\"MODULE_NOT_FOUND\",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n.t(o,19)}))}o.keys=function(){return Object.keys(r)},o.id=7748,e.exports=o},7594:function(e,t,n){var r={\"./bindle/schemaColors.json\":[1737,480],\"./ecommerce/schemaColors.json\":[1090,415],\"./finance/schemaColors.json\":[5881,988],\"./live/schemaColors.json\":[8669,418],\"./movies/schemaColors.json\":[5544,822],\"./nba/schemaColors.json\":[1873,741],\"./the-bank-job/schemaColors.json\":[4189,906]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error(\"Cannot find module '\"+e+\"'\");throw t.code=\"MODULE_NOT_FOUND\",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n.t(o,19)}))}o.keys=function(){return Object.keys(r)},o.id=7594,e.exports=o},9052:function(e,t,n){var r={\"./bindle/tablePositions.json\":[3366,356],\"./ecommerce/tablePositions.json\":[9543,743],\"./finance/tablePositions.json\":[514,342],\"./live/tablePositions.json\":[6431,583],\"./movies/tablePositions.json\":[8863,250],\"./nba/tablePositions.json\":[4139,869],\"./the-bank-job/tablePositions.json\":[3388,972]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error(\"Cannot find module '\"+e+\"'\");throw t.code=\"MODULE_NOT_FOUND\",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n.t(o,19)}))}o.keys=function(){return Object.keys(r)},o.id=9052,e.exports=o},3322:function(e,t,n){var r={\"./bindle/tables\":[2905,112],\"./ecommerce/tables\":[4213,679],\"./finance/tables\":[8986,990],\"./live/tables\":[3456,752],\"./movies/tables\":[1233,281],\"./nba/tables\":[4156,63],\"./the-bank-job/tables\":[2865,449]};function o(e){if(!n.o(r,e))return Promise.resolve().then((function(){var t=new Error(\"Cannot find module '\"+e+\"'\");throw t.code=\"MODULE_NOT_FOUND\",t}));var t=r[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(r)},o.id=3322,e.exports=o},907:function(e,t,n){\"use strict\";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Z:function(){return r}})},7762:function(e,t,n){\"use strict\";n.d(t,{Z:function(){return o}});var r=n(181);function o(e,t){var n=\"undefined\"!==typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!n){if(Array.isArray(e)||(n=(0,r.Z)(e))||t&&e&&\"number\"===typeof e.length){n&&(e=n);var o=0,i=function(){};return{s:i,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,l=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){s=!0,a=e},f:function(){try{l||null==n.return||n.return()}finally{if(s)throw a}}}}},9199:function(e,t,n){\"use strict\";function r(e){if(\"undefined\"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}n.d(t,{Z:function(){return r}})},3433:function(e,t,n){\"use strict\";n.d(t,{Z:function(){return a}});var r=n(907);var o=n(9199),i=n(181);function a(e){return function(e){if(Array.isArray(e))return(0,r.Z)(e)}(e)||(0,o.Z)(e)||(0,i.Z)(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}},181:function(e,t,n){\"use strict\";n.d(t,{Z:function(){return o}});var r=n(907);function o(e,t){if(e){if(\"string\"===typeof e)return(0,r.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===n&&e.constructor&&(n=e.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(e):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?(0,r.Z)(e,t):void 0}}},9323:function(e){\"use strict\";e.exports=JSON.parse('{\"Aacute\":\"\\xc1\",\"aacute\":\"\\xe1\",\"Abreve\":\"\\u0102\",\"abreve\":\"\\u0103\",\"ac\":\"\\u223e\",\"acd\":\"\\u223f\",\"acE\":\"\\u223e\\u0333\",\"Acirc\":\"\\xc2\",\"acirc\":\"\\xe2\",\"acute\":\"\\xb4\",\"Acy\":\"\\u0410\",\"acy\":\"\\u0430\",\"AElig\":\"\\xc6\",\"aelig\":\"\\xe6\",\"af\":\"\\u2061\",\"Afr\":\"\\ud835\\udd04\",\"afr\":\"\\ud835\\udd1e\",\"Agrave\":\"\\xc0\",\"agrave\":\"\\xe0\",\"alefsym\":\"\\u2135\",\"aleph\":\"\\u2135\",\"Alpha\":\"\\u0391\",\"alpha\":\"\\u03b1\",\"Amacr\":\"\\u0100\",\"amacr\":\"\\u0101\",\"amalg\":\"\\u2a3f\",\"amp\":\"&\",\"AMP\":\"&\",\"andand\":\"\\u2a55\",\"And\":\"\\u2a53\",\"and\":\"\\u2227\",\"andd\":\"\\u2a5c\",\"andslope\":\"\\u2a58\",\"andv\":\"\\u2a5a\",\"ang\":\"\\u2220\",\"ange\":\"\\u29a4\",\"angle\":\"\\u2220\",\"angmsdaa\":\"\\u29a8\",\"angmsdab\":\"\\u29a9\",\"angmsdac\":\"\\u29aa\",\"angmsdad\":\"\\u29ab\",\"angmsdae\":\"\\u29ac\",\"angmsdaf\":\"\\u29ad\",\"angmsdag\":\"\\u29ae\",\"angmsdah\":\"\\u29af\",\"angmsd\":\"\\u2221\",\"angrt\":\"\\u221f\",\"angrtvb\":\"\\u22be\",\"angrtvbd\":\"\\u299d\",\"angsph\":\"\\u2222\",\"angst\":\"\\xc5\",\"angzarr\":\"\\u237c\",\"Aogon\":\"\\u0104\",\"aogon\":\"\\u0105\",\"Aopf\":\"\\ud835\\udd38\",\"aopf\":\"\\ud835\\udd52\",\"apacir\":\"\\u2a6f\",\"ap\":\"\\u2248\",\"apE\":\"\\u2a70\",\"ape\":\"\\u224a\",\"apid\":\"\\u224b\",\"apos\":\"\\'\",\"ApplyFunction\":\"\\u2061\",\"approx\":\"\\u2248\",\"approxeq\":\"\\u224a\",\"Aring\":\"\\xc5\",\"aring\":\"\\xe5\",\"Ascr\":\"\\ud835\\udc9c\",\"ascr\":\"\\ud835\\udcb6\",\"Assign\":\"\\u2254\",\"ast\":\"*\",\"asymp\":\"\\u2248\",\"asympeq\":\"\\u224d\",\"Atilde\":\"\\xc3\",\"atilde\":\"\\xe3\",\"Auml\":\"\\xc4\",\"auml\":\"\\xe4\",\"awconint\":\"\\u2233\",\"awint\":\"\\u2a11\",\"backcong\":\"\\u224c\",\"backepsilon\":\"\\u03f6\",\"backprime\":\"\\u2035\",\"backsim\":\"\\u223d\",\"backsimeq\":\"\\u22cd\",\"Backslash\":\"\\u2216\",\"Barv\":\"\\u2ae7\",\"barvee\":\"\\u22bd\",\"barwed\":\"\\u2305\",\"Barwed\":\"\\u2306\",\"barwedge\":\"\\u2305\",\"bbrk\":\"\\u23b5\",\"bbrktbrk\":\"\\u23b6\",\"bcong\":\"\\u224c\",\"Bcy\":\"\\u0411\",\"bcy\":\"\\u0431\",\"bdquo\":\"\\u201e\",\"becaus\":\"\\u2235\",\"because\":\"\\u2235\",\"Because\":\"\\u2235\",\"bemptyv\":\"\\u29b0\",\"bepsi\":\"\\u03f6\",\"bernou\":\"\\u212c\",\"Bernoullis\":\"\\u212c\",\"Beta\":\"\\u0392\",\"beta\":\"\\u03b2\",\"beth\":\"\\u2136\",\"between\":\"\\u226c\",\"Bfr\":\"\\ud835\\udd05\",\"bfr\":\"\\ud835\\udd1f\",\"bigcap\":\"\\u22c2\",\"bigcirc\":\"\\u25ef\",\"bigcup\":\"\\u22c3\",\"bigodot\":\"\\u2a00\",\"bigoplus\":\"\\u2a01\",\"bigotimes\":\"\\u2a02\",\"bigsqcup\":\"\\u2a06\",\"bigstar\":\"\\u2605\",\"bigtriangledown\":\"\\u25bd\",\"bigtriangleup\":\"\\u25b3\",\"biguplus\":\"\\u2a04\",\"bigvee\":\"\\u22c1\",\"bigwedge\":\"\\u22c0\",\"bkarow\":\"\\u290d\",\"blacklozenge\":\"\\u29eb\",\"blacksquare\":\"\\u25aa\",\"blacktriangle\":\"\\u25b4\",\"blacktriangledown\":\"\\u25be\",\"blacktriangleleft\":\"\\u25c2\",\"blacktriangleright\":\"\\u25b8\",\"blank\":\"\\u2423\",\"blk12\":\"\\u2592\",\"blk14\":\"\\u2591\",\"blk34\":\"\\u2593\",\"block\":\"\\u2588\",\"bne\":\"=\\u20e5\",\"bnequiv\":\"\\u2261\\u20e5\",\"bNot\":\"\\u2aed\",\"bnot\":\"\\u2310\",\"Bopf\":\"\\ud835\\udd39\",\"bopf\":\"\\ud835\\udd53\",\"bot\":\"\\u22a5\",\"bottom\":\"\\u22a5\",\"bowtie\":\"\\u22c8\",\"boxbox\":\"\\u29c9\",\"boxdl\":\"\\u2510\",\"boxdL\":\"\\u2555\",\"boxDl\":\"\\u2556\",\"boxDL\":\"\\u2557\",\"boxdr\":\"\\u250c\",\"boxdR\":\"\\u2552\",\"boxDr\":\"\\u2553\",\"boxDR\":\"\\u2554\",\"boxh\":\"\\u2500\",\"boxH\":\"\\u2550\",\"boxhd\":\"\\u252c\",\"boxHd\":\"\\u2564\",\"boxhD\":\"\\u2565\",\"boxHD\":\"\\u2566\",\"boxhu\":\"\\u2534\",\"boxHu\":\"\\u2567\",\"boxhU\":\"\\u2568\",\"boxHU\":\"\\u2569\",\"boxminus\":\"\\u229f\",\"boxplus\":\"\\u229e\",\"boxtimes\":\"\\u22a0\",\"boxul\":\"\\u2518\",\"boxuL\":\"\\u255b\",\"boxUl\":\"\\u255c\",\"boxUL\":\"\\u255d\",\"boxur\":\"\\u2514\",\"boxuR\":\"\\u2558\",\"boxUr\":\"\\u2559\",\"boxUR\":\"\\u255a\",\"boxv\":\"\\u2502\",\"boxV\":\"\\u2551\",\"boxvh\":\"\\u253c\",\"boxvH\":\"\\u256a\",\"boxVh\":\"\\u256b\",\"boxVH\":\"\\u256c\",\"boxvl\":\"\\u2524\",\"boxvL\":\"\\u2561\",\"boxVl\":\"\\u2562\",\"boxVL\":\"\\u2563\",\"boxvr\":\"\\u251c\",\"boxvR\":\"\\u255e\",\"boxVr\":\"\\u255f\",\"boxVR\":\"\\u2560\",\"bprime\":\"\\u2035\",\"breve\":\"\\u02d8\",\"Breve\":\"\\u02d8\",\"brvbar\":\"\\xa6\",\"bscr\":\"\\ud835\\udcb7\",\"Bscr\":\"\\u212c\",\"bsemi\":\"\\u204f\",\"bsim\":\"\\u223d\",\"bsime\":\"\\u22cd\",\"bsolb\":\"\\u29c5\",\"bsol\":\"\\\\\\\\\",\"bsolhsub\":\"\\u27c8\",\"bull\":\"\\u2022\",\"bullet\":\"\\u2022\",\"bump\":\"\\u224e\",\"bumpE\":\"\\u2aae\",\"bumpe\":\"\\u224f\",\"Bumpeq\":\"\\u224e\",\"bumpeq\":\"\\u224f\",\"Cacute\":\"\\u0106\",\"cacute\":\"\\u0107\",\"capand\":\"\\u2a44\",\"capbrcup\":\"\\u2a49\",\"capcap\":\"\\u2a4b\",\"cap\":\"\\u2229\",\"Cap\":\"\\u22d2\",\"capcup\":\"\\u2a47\",\"capdot\":\"\\u2a40\",\"CapitalDifferentialD\":\"\\u2145\",\"caps\":\"\\u2229\\ufe00\",\"caret\":\"\\u2041\",\"caron\":\"\\u02c7\",\"Cayleys\":\"\\u212d\",\"ccaps\":\"\\u2a4d\",\"Ccaron\":\"\\u010c\",\"ccaron\":\"\\u010d\",\"Ccedil\":\"\\xc7\",\"ccedil\":\"\\xe7\",\"Ccirc\":\"\\u0108\",\"ccirc\":\"\\u0109\",\"Cconint\":\"\\u2230\",\"ccups\":\"\\u2a4c\",\"ccupssm\":\"\\u2a50\",\"Cdot\":\"\\u010a\",\"cdot\":\"\\u010b\",\"cedil\":\"\\xb8\",\"Cedilla\":\"\\xb8\",\"cemptyv\":\"\\u29b2\",\"cent\":\"\\xa2\",\"centerdot\":\"\\xb7\",\"CenterDot\":\"\\xb7\",\"cfr\":\"\\ud835\\udd20\",\"Cfr\":\"\\u212d\",\"CHcy\":\"\\u0427\",\"chcy\":\"\\u0447\",\"check\":\"\\u2713\",\"checkmark\":\"\\u2713\",\"Chi\":\"\\u03a7\",\"chi\":\"\\u03c7\",\"circ\":\"\\u02c6\",\"circeq\":\"\\u2257\",\"circlearrowleft\":\"\\u21ba\",\"circlearrowright\":\"\\u21bb\",\"circledast\":\"\\u229b\",\"circledcirc\":\"\\u229a\",\"circleddash\":\"\\u229d\",\"CircleDot\":\"\\u2299\",\"circledR\":\"\\xae\",\"circledS\":\"\\u24c8\",\"CircleMinus\":\"\\u2296\",\"CirclePlus\":\"\\u2295\",\"CircleTimes\":\"\\u2297\",\"cir\":\"\\u25cb\",\"cirE\":\"\\u29c3\",\"cire\":\"\\u2257\",\"cirfnint\":\"\\u2a10\",\"cirmid\":\"\\u2aef\",\"cirscir\":\"\\u29c2\",\"ClockwiseContourIntegral\":\"\\u2232\",\"CloseCurlyDoubleQuote\":\"\\u201d\",\"CloseCurlyQuote\":\"\\u2019\",\"clubs\":\"\\u2663\",\"clubsuit\":\"\\u2663\",\"colon\":\":\",\"Colon\":\"\\u2237\",\"Colone\":\"\\u2a74\",\"colone\":\"\\u2254\",\"coloneq\":\"\\u2254\",\"comma\":\",\",\"commat\":\"@\",\"comp\":\"\\u2201\",\"compfn\":\"\\u2218\",\"complement\":\"\\u2201\",\"complexes\":\"\\u2102\",\"cong\":\"\\u2245\",\"congdot\":\"\\u2a6d\",\"Congruent\":\"\\u2261\",\"conint\":\"\\u222e\",\"Conint\":\"\\u222f\",\"ContourIntegral\":\"\\u222e\",\"copf\":\"\\ud835\\udd54\",\"Copf\":\"\\u2102\",\"coprod\":\"\\u2210\",\"Coproduct\":\"\\u2210\",\"copy\":\"\\xa9\",\"COPY\":\"\\xa9\",\"copysr\":\"\\u2117\",\"CounterClockwiseContourIntegral\":\"\\u2233\",\"crarr\":\"\\u21b5\",\"cross\":\"\\u2717\",\"Cross\":\"\\u2a2f\",\"Cscr\":\"\\ud835\\udc9e\",\"cscr\":\"\\ud835\\udcb8\",\"csub\":\"\\u2acf\",\"csube\":\"\\u2ad1\",\"csup\":\"\\u2ad0\",\"csupe\":\"\\u2ad2\",\"ctdot\":\"\\u22ef\",\"cudarrl\":\"\\u2938\",\"cudarrr\":\"\\u2935\",\"cuepr\":\"\\u22de\",\"cuesc\":\"\\u22df\",\"cularr\":\"\\u21b6\",\"cularrp\":\"\\u293d\",\"cupbrcap\":\"\\u2a48\",\"cupcap\":\"\\u2a46\",\"CupCap\":\"\\u224d\",\"cup\":\"\\u222a\",\"Cup\":\"\\u22d3\",\"cupcup\":\"\\u2a4a\",\"cupdot\":\"\\u228d\",\"cupor\":\"\\u2a45\",\"cups\":\"\\u222a\\ufe00\",\"curarr\":\"\\u21b7\",\"curarrm\":\"\\u293c\",\"curlyeqprec\":\"\\u22de\",\"curlyeqsucc\":\"\\u22df\",\"curlyvee\":\"\\u22ce\",\"curlywedge\":\"\\u22cf\",\"curren\":\"\\xa4\",\"curvearrowleft\":\"\\u21b6\",\"curvearrowright\":\"\\u21b7\",\"cuvee\":\"\\u22ce\",\"cuwed\":\"\\u22cf\",\"cwconint\":\"\\u2232\",\"cwint\":\"\\u2231\",\"cylcty\":\"\\u232d\",\"dagger\":\"\\u2020\",\"Dagger\":\"\\u2021\",\"daleth\":\"\\u2138\",\"darr\":\"\\u2193\",\"Darr\":\"\\u21a1\",\"dArr\":\"\\u21d3\",\"dash\":\"\\u2010\",\"Dashv\":\"\\u2ae4\",\"dashv\":\"\\u22a3\",\"dbkarow\":\"\\u290f\",\"dblac\":\"\\u02dd\",\"Dcaron\":\"\\u010e\",\"dcaron\":\"\\u010f\",\"Dcy\":\"\\u0414\",\"dcy\":\"\\u0434\",\"ddagger\":\"\\u2021\",\"ddarr\":\"\\u21ca\",\"DD\":\"\\u2145\",\"dd\":\"\\u2146\",\"DDotrahd\":\"\\u2911\",\"ddotseq\":\"\\u2a77\",\"deg\":\"\\xb0\",\"Del\":\"\\u2207\",\"Delta\":\"\\u0394\",\"delta\":\"\\u03b4\",\"demptyv\":\"\\u29b1\",\"dfisht\":\"\\u297f\",\"Dfr\":\"\\ud835\\udd07\",\"dfr\":\"\\ud835\\udd21\",\"dHar\":\"\\u2965\",\"dharl\":\"\\u21c3\",\"dharr\":\"\\u21c2\",\"DiacriticalAcute\":\"\\xb4\",\"DiacriticalDot\":\"\\u02d9\",\"DiacriticalDoubleAcute\":\"\\u02dd\",\"DiacriticalGrave\":\"`\",\"DiacriticalTilde\":\"\\u02dc\",\"diam\":\"\\u22c4\",\"diamond\":\"\\u22c4\",\"Diamond\":\"\\u22c4\",\"diamondsuit\":\"\\u2666\",\"diams\":\"\\u2666\",\"die\":\"\\xa8\",\"DifferentialD\":\"\\u2146\",\"digamma\":\"\\u03dd\",\"disin\":\"\\u22f2\",\"div\":\"\\xf7\",\"divide\":\"\\xf7\",\"divideontimes\":\"\\u22c7\",\"divonx\":\"\\u22c7\",\"DJcy\":\"\\u0402\",\"djcy\":\"\\u0452\",\"dlcorn\":\"\\u231e\",\"dlcrop\":\"\\u230d\",\"dollar\":\"$\",\"Dopf\":\"\\ud835\\udd3b\",\"dopf\":\"\\ud835\\udd55\",\"Dot\":\"\\xa8\",\"dot\":\"\\u02d9\",\"DotDot\":\"\\u20dc\",\"doteq\":\"\\u2250\",\"doteqdot\":\"\\u2251\",\"DotEqual\":\"\\u2250\",\"dotminus\":\"\\u2238\",\"dotplus\":\"\\u2214\",\"dotsquare\":\"\\u22a1\",\"doublebarwedge\":\"\\u2306\",\"DoubleContourIntegral\":\"\\u222f\",\"DoubleDot\":\"\\xa8\",\"DoubleDownArrow\":\"\\u21d3\",\"DoubleLeftArrow\":\"\\u21d0\",\"DoubleLeftRightArrow\":\"\\u21d4\",\"DoubleLeftTee\":\"\\u2ae4\",\"DoubleLongLeftArrow\":\"\\u27f8\",\"DoubleLongLeftRightArrow\":\"\\u27fa\",\"DoubleLongRightArrow\":\"\\u27f9\",\"DoubleRightArrow\":\"\\u21d2\",\"DoubleRightTee\":\"\\u22a8\",\"DoubleUpArrow\":\"\\u21d1\",\"DoubleUpDownArrow\":\"\\u21d5\",\"DoubleVerticalBar\":\"\\u2225\",\"DownArrowBar\":\"\\u2913\",\"downarrow\":\"\\u2193\",\"DownArrow\":\"\\u2193\",\"Downarrow\":\"\\u21d3\",\"DownArrowUpArrow\":\"\\u21f5\",\"DownBreve\":\"\\u0311\",\"downdownarrows\":\"\\u21ca\",\"downharpoonleft\":\"\\u21c3\",\"downharpoonright\":\"\\u21c2\",\"DownLeftRightVector\":\"\\u2950\",\"DownLeftTeeVector\":\"\\u295e\",\"DownLeftVectorBar\":\"\\u2956\",\"DownLeftVector\":\"\\u21bd\",\"DownRightTeeVector\":\"\\u295f\",\"DownRightVectorBar\":\"\\u2957\",\"DownRightVector\":\"\\u21c1\",\"DownTeeArrow\":\"\\u21a7\",\"DownTee\":\"\\u22a4\",\"drbkarow\":\"\\u2910\",\"drcorn\":\"\\u231f\",\"drcrop\":\"\\u230c\",\"Dscr\":\"\\ud835\\udc9f\",\"dscr\":\"\\ud835\\udcb9\",\"DScy\":\"\\u0405\",\"dscy\":\"\\u0455\",\"dsol\":\"\\u29f6\",\"Dstrok\":\"\\u0110\",\"dstrok\":\"\\u0111\",\"dtdot\":\"\\u22f1\",\"dtri\":\"\\u25bf\",\"dtrif\":\"\\u25be\",\"duarr\":\"\\u21f5\",\"duhar\":\"\\u296f\",\"dwangle\":\"\\u29a6\",\"DZcy\":\"\\u040f\",\"dzcy\":\"\\u045f\",\"dzigrarr\":\"\\u27ff\",\"Eacute\":\"\\xc9\",\"eacute\":\"\\xe9\",\"easter\":\"\\u2a6e\",\"Ecaron\":\"\\u011a\",\"ecaron\":\"\\u011b\",\"Ecirc\":\"\\xca\",\"ecirc\":\"\\xea\",\"ecir\":\"\\u2256\",\"ecolon\":\"\\u2255\",\"Ecy\":\"\\u042d\",\"ecy\":\"\\u044d\",\"eDDot\":\"\\u2a77\",\"Edot\":\"\\u0116\",\"edot\":\"\\u0117\",\"eDot\":\"\\u2251\",\"ee\":\"\\u2147\",\"efDot\":\"\\u2252\",\"Efr\":\"\\ud835\\udd08\",\"efr\":\"\\ud835\\udd22\",\"eg\":\"\\u2a9a\",\"Egrave\":\"\\xc8\",\"egrave\":\"\\xe8\",\"egs\":\"\\u2a96\",\"egsdot\":\"\\u2a98\",\"el\":\"\\u2a99\",\"Element\":\"\\u2208\",\"elinters\":\"\\u23e7\",\"ell\":\"\\u2113\",\"els\":\"\\u2a95\",\"elsdot\":\"\\u2a97\",\"Emacr\":\"\\u0112\",\"emacr\":\"\\u0113\",\"empty\":\"\\u2205\",\"emptyset\":\"\\u2205\",\"EmptySmallSquare\":\"\\u25fb\",\"emptyv\":\"\\u2205\",\"EmptyVerySmallSquare\":\"\\u25ab\",\"emsp13\":\"\\u2004\",\"emsp14\":\"\\u2005\",\"emsp\":\"\\u2003\",\"ENG\":\"\\u014a\",\"eng\":\"\\u014b\",\"ensp\":\"\\u2002\",\"Eogon\":\"\\u0118\",\"eogon\":\"\\u0119\",\"Eopf\":\"\\ud835\\udd3c\",\"eopf\":\"\\ud835\\udd56\",\"epar\":\"\\u22d5\",\"eparsl\":\"\\u29e3\",\"eplus\":\"\\u2a71\",\"epsi\":\"\\u03b5\",\"Epsilon\":\"\\u0395\",\"epsilon\":\"\\u03b5\",\"epsiv\":\"\\u03f5\",\"eqcirc\":\"\\u2256\",\"eqcolon\":\"\\u2255\",\"eqsim\":\"\\u2242\",\"eqslantgtr\":\"\\u2a96\",\"eqslantless\":\"\\u2a95\",\"Equal\":\"\\u2a75\",\"equals\":\"=\",\"EqualTilde\":\"\\u2242\",\"equest\":\"\\u225f\",\"Equilibrium\":\"\\u21cc\",\"equiv\":\"\\u2261\",\"equivDD\":\"\\u2a78\",\"eqvparsl\":\"\\u29e5\",\"erarr\":\"\\u2971\",\"erDot\":\"\\u2253\",\"escr\":\"\\u212f\",\"Escr\":\"\\u2130\",\"esdot\":\"\\u2250\",\"Esim\":\"\\u2a73\",\"esim\":\"\\u2242\",\"Eta\":\"\\u0397\",\"eta\":\"\\u03b7\",\"ETH\":\"\\xd0\",\"eth\":\"\\xf0\",\"Euml\":\"\\xcb\",\"euml\":\"\\xeb\",\"euro\":\"\\u20ac\",\"excl\":\"!\",\"exist\":\"\\u2203\",\"Exists\":\"\\u2203\",\"expectation\":\"\\u2130\",\"exponentiale\":\"\\u2147\",\"ExponentialE\":\"\\u2147\",\"fallingdotseq\":\"\\u2252\",\"Fcy\":\"\\u0424\",\"fcy\":\"\\u0444\",\"female\":\"\\u2640\",\"ffilig\":\"\\ufb03\",\"fflig\":\"\\ufb00\",\"ffllig\":\"\\ufb04\",\"Ffr\":\"\\ud835\\udd09\",\"ffr\":\"\\ud835\\udd23\",\"filig\":\"\\ufb01\",\"FilledSmallSquare\":\"\\u25fc\",\"FilledVerySmallSquare\":\"\\u25aa\",\"fjlig\":\"fj\",\"flat\":\"\\u266d\",\"fllig\":\"\\ufb02\",\"fltns\":\"\\u25b1\",\"fnof\":\"\\u0192\",\"Fopf\":\"\\ud835\\udd3d\",\"fopf\":\"\\ud835\\udd57\",\"forall\":\"\\u2200\",\"ForAll\":\"\\u2200\",\"fork\":\"\\u22d4\",\"forkv\":\"\\u2ad9\",\"Fouriertrf\":\"\\u2131\",\"fpartint\":\"\\u2a0d\",\"frac12\":\"\\xbd\",\"frac13\":\"\\u2153\",\"frac14\":\"\\xbc\",\"frac15\":\"\\u2155\",\"frac16\":\"\\u2159\",\"frac18\":\"\\u215b\",\"frac23\":\"\\u2154\",\"frac25\":\"\\u2156\",\"frac34\":\"\\xbe\",\"frac35\":\"\\u2157\",\"frac38\":\"\\u215c\",\"frac45\":\"\\u2158\",\"frac56\":\"\\u215a\",\"frac58\":\"\\u215d\",\"frac78\":\"\\u215e\",\"frasl\":\"\\u2044\",\"frown\":\"\\u2322\",\"fscr\":\"\\ud835\\udcbb\",\"Fscr\":\"\\u2131\",\"gacute\":\"\\u01f5\",\"Gamma\":\"\\u0393\",\"gamma\":\"\\u03b3\",\"Gammad\":\"\\u03dc\",\"gammad\":\"\\u03dd\",\"gap\":\"\\u2a86\",\"Gbreve\":\"\\u011e\",\"gbreve\":\"\\u011f\",\"Gcedil\":\"\\u0122\",\"Gcirc\":\"\\u011c\",\"gcirc\":\"\\u011d\",\"Gcy\":\"\\u0413\",\"gcy\":\"\\u0433\",\"Gdot\":\"\\u0120\",\"gdot\":\"\\u0121\",\"ge\":\"\\u2265\",\"gE\":\"\\u2267\",\"gEl\":\"\\u2a8c\",\"gel\":\"\\u22db\",\"geq\":\"\\u2265\",\"geqq\":\"\\u2267\",\"geqslant\":\"\\u2a7e\",\"gescc\":\"\\u2aa9\",\"ges\":\"\\u2a7e\",\"gesdot\":\"\\u2a80\",\"gesdoto\":\"\\u2a82\",\"gesdotol\":\"\\u2a84\",\"gesl\":\"\\u22db\\ufe00\",\"gesles\":\"\\u2a94\",\"Gfr\":\"\\ud835\\udd0a\",\"gfr\":\"\\ud835\\udd24\",\"gg\":\"\\u226b\",\"Gg\":\"\\u22d9\",\"ggg\":\"\\u22d9\",\"gimel\":\"\\u2137\",\"GJcy\":\"\\u0403\",\"gjcy\":\"\\u0453\",\"gla\":\"\\u2aa5\",\"gl\":\"\\u2277\",\"glE\":\"\\u2a92\",\"glj\":\"\\u2aa4\",\"gnap\":\"\\u2a8a\",\"gnapprox\":\"\\u2a8a\",\"gne\":\"\\u2a88\",\"gnE\":\"\\u2269\",\"gneq\":\"\\u2a88\",\"gneqq\":\"\\u2269\",\"gnsim\":\"\\u22e7\",\"Gopf\":\"\\ud835\\udd3e\",\"gopf\":\"\\ud835\\udd58\",\"grave\":\"`\",\"GreaterEqual\":\"\\u2265\",\"GreaterEqualLess\":\"\\u22db\",\"GreaterFullEqual\":\"\\u2267\",\"GreaterGreater\":\"\\u2aa2\",\"GreaterLess\":\"\\u2277\",\"GreaterSlantEqual\":\"\\u2a7e\",\"GreaterTilde\":\"\\u2273\",\"Gscr\":\"\\ud835\\udca2\",\"gscr\":\"\\u210a\",\"gsim\":\"\\u2273\",\"gsime\":\"\\u2a8e\",\"gsiml\":\"\\u2a90\",\"gtcc\":\"\\u2aa7\",\"gtcir\":\"\\u2a7a\",\"gt\":\">\",\"GT\":\">\",\"Gt\":\"\\u226b\",\"gtdot\":\"\\u22d7\",\"gtlPar\":\"\\u2995\",\"gtquest\":\"\\u2a7c\",\"gtrapprox\":\"\\u2a86\",\"gtrarr\":\"\\u2978\",\"gtrdot\":\"\\u22d7\",\"gtreqless\":\"\\u22db\",\"gtreqqless\":\"\\u2a8c\",\"gtrless\":\"\\u2277\",\"gtrsim\":\"\\u2273\",\"gvertneqq\":\"\\u2269\\ufe00\",\"gvnE\":\"\\u2269\\ufe00\",\"Hacek\":\"\\u02c7\",\"hairsp\":\"\\u200a\",\"half\":\"\\xbd\",\"hamilt\":\"\\u210b\",\"HARDcy\":\"\\u042a\",\"hardcy\":\"\\u044a\",\"harrcir\":\"\\u2948\",\"harr\":\"\\u2194\",\"hArr\":\"\\u21d4\",\"harrw\":\"\\u21ad\",\"Hat\":\"^\",\"hbar\":\"\\u210f\",\"Hcirc\":\"\\u0124\",\"hcirc\":\"\\u0125\",\"hearts\":\"\\u2665\",\"heartsuit\":\"\\u2665\",\"hellip\":\"\\u2026\",\"hercon\":\"\\u22b9\",\"hfr\":\"\\ud835\\udd25\",\"Hfr\":\"\\u210c\",\"HilbertSpace\":\"\\u210b\",\"hksearow\":\"\\u2925\",\"hkswarow\":\"\\u2926\",\"hoarr\":\"\\u21ff\",\"homtht\":\"\\u223b\",\"hookleftarrow\":\"\\u21a9\",\"hookrightarrow\":\"\\u21aa\",\"hopf\":\"\\ud835\\udd59\",\"Hopf\":\"\\u210d\",\"horbar\":\"\\u2015\",\"HorizontalLine\":\"\\u2500\",\"hscr\":\"\\ud835\\udcbd\",\"Hscr\":\"\\u210b\",\"hslash\":\"\\u210f\",\"Hstrok\":\"\\u0126\",\"hstrok\":\"\\u0127\",\"HumpDownHump\":\"\\u224e\",\"HumpEqual\":\"\\u224f\",\"hybull\":\"\\u2043\",\"hyphen\":\"\\u2010\",\"Iacute\":\"\\xcd\",\"iacute\":\"\\xed\",\"ic\":\"\\u2063\",\"Icirc\":\"\\xce\",\"icirc\":\"\\xee\",\"Icy\":\"\\u0418\",\"icy\":\"\\u0438\",\"Idot\":\"\\u0130\",\"IEcy\":\"\\u0415\",\"iecy\":\"\\u0435\",\"iexcl\":\"\\xa1\",\"iff\":\"\\u21d4\",\"ifr\":\"\\ud835\\udd26\",\"Ifr\":\"\\u2111\",\"Igrave\":\"\\xcc\",\"igrave\":\"\\xec\",\"ii\":\"\\u2148\",\"iiiint\":\"\\u2a0c\",\"iiint\":\"\\u222d\",\"iinfin\":\"\\u29dc\",\"iiota\":\"\\u2129\",\"IJlig\":\"\\u0132\",\"ijlig\":\"\\u0133\",\"Imacr\":\"\\u012a\",\"imacr\":\"\\u012b\",\"image\":\"\\u2111\",\"ImaginaryI\":\"\\u2148\",\"imagline\":\"\\u2110\",\"imagpart\":\"\\u2111\",\"imath\":\"\\u0131\",\"Im\":\"\\u2111\",\"imof\":\"\\u22b7\",\"imped\":\"\\u01b5\",\"Implies\":\"\\u21d2\",\"incare\":\"\\u2105\",\"in\":\"\\u2208\",\"infin\":\"\\u221e\",\"infintie\":\"\\u29dd\",\"inodot\":\"\\u0131\",\"intcal\":\"\\u22ba\",\"int\":\"\\u222b\",\"Int\":\"\\u222c\",\"integers\":\"\\u2124\",\"Integral\":\"\\u222b\",\"intercal\":\"\\u22ba\",\"Intersection\":\"\\u22c2\",\"intlarhk\":\"\\u2a17\",\"intprod\":\"\\u2a3c\",\"InvisibleComma\":\"\\u2063\",\"InvisibleTimes\":\"\\u2062\",\"IOcy\":\"\\u0401\",\"iocy\":\"\\u0451\",\"Iogon\":\"\\u012e\",\"iogon\":\"\\u012f\",\"Iopf\":\"\\ud835\\udd40\",\"iopf\":\"\\ud835\\udd5a\",\"Iota\":\"\\u0399\",\"iota\":\"\\u03b9\",\"iprod\":\"\\u2a3c\",\"iquest\":\"\\xbf\",\"iscr\":\"\\ud835\\udcbe\",\"Iscr\":\"\\u2110\",\"isin\":\"\\u2208\",\"isindot\":\"\\u22f5\",\"isinE\":\"\\u22f9\",\"isins\":\"\\u22f4\",\"isinsv\":\"\\u22f3\",\"isinv\":\"\\u2208\",\"it\":\"\\u2062\",\"Itilde\":\"\\u0128\",\"itilde\":\"\\u0129\",\"Iukcy\":\"\\u0406\",\"iukcy\":\"\\u0456\",\"Iuml\":\"\\xcf\",\"iuml\":\"\\xef\",\"Jcirc\":\"\\u0134\",\"jcirc\":\"\\u0135\",\"Jcy\":\"\\u0419\",\"jcy\":\"\\u0439\",\"Jfr\":\"\\ud835\\udd0d\",\"jfr\":\"\\ud835\\udd27\",\"jmath\":\"\\u0237\",\"Jopf\":\"\\ud835\\udd41\",\"jopf\":\"\\ud835\\udd5b\",\"Jscr\":\"\\ud835\\udca5\",\"jscr\":\"\\ud835\\udcbf\",\"Jsercy\":\"\\u0408\",\"jsercy\":\"\\u0458\",\"Jukcy\":\"\\u0404\",\"jukcy\":\"\\u0454\",\"Kappa\":\"\\u039a\",\"kappa\":\"\\u03ba\",\"kappav\":\"\\u03f0\",\"Kcedil\":\"\\u0136\",\"kcedil\":\"\\u0137\",\"Kcy\":\"\\u041a\",\"kcy\":\"\\u043a\",\"Kfr\":\"\\ud835\\udd0e\",\"kfr\":\"\\ud835\\udd28\",\"kgreen\":\"\\u0138\",\"KHcy\":\"\\u0425\",\"khcy\":\"\\u0445\",\"KJcy\":\"\\u040c\",\"kjcy\":\"\\u045c\",\"Kopf\":\"\\ud835\\udd42\",\"kopf\":\"\\ud835\\udd5c\",\"Kscr\":\"\\ud835\\udca6\",\"kscr\":\"\\ud835\\udcc0\",\"lAarr\":\"\\u21da\",\"Lacute\":\"\\u0139\",\"lacute\":\"\\u013a\",\"laemptyv\":\"\\u29b4\",\"lagran\":\"\\u2112\",\"Lambda\":\"\\u039b\",\"lambda\":\"\\u03bb\",\"lang\":\"\\u27e8\",\"Lang\":\"\\u27ea\",\"langd\":\"\\u2991\",\"langle\":\"\\u27e8\",\"lap\":\"\\u2a85\",\"Laplacetrf\":\"\\u2112\",\"laquo\":\"\\xab\",\"larrb\":\"\\u21e4\",\"larrbfs\":\"\\u291f\",\"larr\":\"\\u2190\",\"Larr\":\"\\u219e\",\"lArr\":\"\\u21d0\",\"larrfs\":\"\\u291d\",\"larrhk\":\"\\u21a9\",\"larrlp\":\"\\u21ab\",\"larrpl\":\"\\u2939\",\"larrsim\":\"\\u2973\",\"larrtl\":\"\\u21a2\",\"latail\":\"\\u2919\",\"lAtail\":\"\\u291b\",\"lat\":\"\\u2aab\",\"late\":\"\\u2aad\",\"lates\":\"\\u2aad\\ufe00\",\"lbarr\":\"\\u290c\",\"lBarr\":\"\\u290e\",\"lbbrk\":\"\\u2772\",\"lbrace\":\"{\",\"lbrack\":\"[\",\"lbrke\":\"\\u298b\",\"lbrksld\":\"\\u298f\",\"lbrkslu\":\"\\u298d\",\"Lcaron\":\"\\u013d\",\"lcaron\":\"\\u013e\",\"Lcedil\":\"\\u013b\",\"lcedil\":\"\\u013c\",\"lceil\":\"\\u2308\",\"lcub\":\"{\",\"Lcy\":\"\\u041b\",\"lcy\":\"\\u043b\",\"ldca\":\"\\u2936\",\"ldquo\":\"\\u201c\",\"ldquor\":\"\\u201e\",\"ldrdhar\":\"\\u2967\",\"ldrushar\":\"\\u294b\",\"ldsh\":\"\\u21b2\",\"le\":\"\\u2264\",\"lE\":\"\\u2266\",\"LeftAngleBracket\":\"\\u27e8\",\"LeftArrowBar\":\"\\u21e4\",\"leftarrow\":\"\\u2190\",\"LeftArrow\":\"\\u2190\",\"Leftarrow\":\"\\u21d0\",\"LeftArrowRightArrow\":\"\\u21c6\",\"leftarrowtail\":\"\\u21a2\",\"LeftCeiling\":\"\\u2308\",\"LeftDoubleBracket\":\"\\u27e6\",\"LeftDownTeeVector\":\"\\u2961\",\"LeftDownVectorBar\":\"\\u2959\",\"LeftDownVector\":\"\\u21c3\",\"LeftFloor\":\"\\u230a\",\"leftharpoondown\":\"\\u21bd\",\"leftharpoonup\":\"\\u21bc\",\"leftleftarrows\":\"\\u21c7\",\"leftrightarrow\":\"\\u2194\",\"LeftRightArrow\":\"\\u2194\",\"Leftrightarrow\":\"\\u21d4\",\"leftrightarrows\":\"\\u21c6\",\"leftrightharpoons\":\"\\u21cb\",\"leftrightsquigarrow\":\"\\u21ad\",\"LeftRightVector\":\"\\u294e\",\"LeftTeeArrow\":\"\\u21a4\",\"LeftTee\":\"\\u22a3\",\"LeftTeeVector\":\"\\u295a\",\"leftthreetimes\":\"\\u22cb\",\"LeftTriangleBar\":\"\\u29cf\",\"LeftTriangle\":\"\\u22b2\",\"LeftTriangleEqual\":\"\\u22b4\",\"LeftUpDownVector\":\"\\u2951\",\"LeftUpTeeVector\":\"\\u2960\",\"LeftUpVectorBar\":\"\\u2958\",\"LeftUpVector\":\"\\u21bf\",\"LeftVectorBar\":\"\\u2952\",\"LeftVector\":\"\\u21bc\",\"lEg\":\"\\u2a8b\",\"leg\":\"\\u22da\",\"leq\":\"\\u2264\",\"leqq\":\"\\u2266\",\"leqslant\":\"\\u2a7d\",\"lescc\":\"\\u2aa8\",\"les\":\"\\u2a7d\",\"lesdot\":\"\\u2a7f\",\"lesdoto\":\"\\u2a81\",\"lesdotor\":\"\\u2a83\",\"lesg\":\"\\u22da\\ufe00\",\"lesges\":\"\\u2a93\",\"lessapprox\":\"\\u2a85\",\"lessdot\":\"\\u22d6\",\"lesseqgtr\":\"\\u22da\",\"lesseqqgtr\":\"\\u2a8b\",\"LessEqualGreater\":\"\\u22da\",\"LessFullEqual\":\"\\u2266\",\"LessGreater\":\"\\u2276\",\"lessgtr\":\"\\u2276\",\"LessLess\":\"\\u2aa1\",\"lesssim\":\"\\u2272\",\"LessSlantEqual\":\"\\u2a7d\",\"LessTilde\":\"\\u2272\",\"lfisht\":\"\\u297c\",\"lfloor\":\"\\u230a\",\"Lfr\":\"\\ud835\\udd0f\",\"lfr\":\"\\ud835\\udd29\",\"lg\":\"\\u2276\",\"lgE\":\"\\u2a91\",\"lHar\":\"\\u2962\",\"lhard\":\"\\u21bd\",\"lharu\":\"\\u21bc\",\"lharul\":\"\\u296a\",\"lhblk\":\"\\u2584\",\"LJcy\":\"\\u0409\",\"ljcy\":\"\\u0459\",\"llarr\":\"\\u21c7\",\"ll\":\"\\u226a\",\"Ll\":\"\\u22d8\",\"llcorner\":\"\\u231e\",\"Lleftarrow\":\"\\u21da\",\"llhard\":\"\\u296b\",\"lltri\":\"\\u25fa\",\"Lmidot\":\"\\u013f\",\"lmidot\":\"\\u0140\",\"lmoustache\":\"\\u23b0\",\"lmoust\":\"\\u23b0\",\"lnap\":\"\\u2a89\",\"lnapprox\":\"\\u2a89\",\"lne\":\"\\u2a87\",\"lnE\":\"\\u2268\",\"lneq\":\"\\u2a87\",\"lneqq\":\"\\u2268\",\"lnsim\":\"\\u22e6\",\"loang\":\"\\u27ec\",\"loarr\":\"\\u21fd\",\"lobrk\":\"\\u27e6\",\"longleftarrow\":\"\\u27f5\",\"LongLeftArrow\":\"\\u27f5\",\"Longleftarrow\":\"\\u27f8\",\"longleftrightarrow\":\"\\u27f7\",\"LongLeftRightArrow\":\"\\u27f7\",\"Longleftrightarrow\":\"\\u27fa\",\"longmapsto\":\"\\u27fc\",\"longrightarrow\":\"\\u27f6\",\"LongRightArrow\":\"\\u27f6\",\"Longrightarrow\":\"\\u27f9\",\"looparrowleft\":\"\\u21ab\",\"looparrowright\":\"\\u21ac\",\"lopar\":\"\\u2985\",\"Lopf\":\"\\ud835\\udd43\",\"lopf\":\"\\ud835\\udd5d\",\"loplus\":\"\\u2a2d\",\"lotimes\":\"\\u2a34\",\"lowast\":\"\\u2217\",\"lowbar\":\"_\",\"LowerLeftArrow\":\"\\u2199\",\"LowerRightArrow\":\"\\u2198\",\"loz\":\"\\u25ca\",\"lozenge\":\"\\u25ca\",\"lozf\":\"\\u29eb\",\"lpar\":\"(\",\"lparlt\":\"\\u2993\",\"lrarr\":\"\\u21c6\",\"lrcorner\":\"\\u231f\",\"lrhar\":\"\\u21cb\",\"lrhard\":\"\\u296d\",\"lrm\":\"\\u200e\",\"lrtri\":\"\\u22bf\",\"lsaquo\":\"\\u2039\",\"lscr\":\"\\ud835\\udcc1\",\"Lscr\":\"\\u2112\",\"lsh\":\"\\u21b0\",\"Lsh\":\"\\u21b0\",\"lsim\":\"\\u2272\",\"lsime\":\"\\u2a8d\",\"lsimg\":\"\\u2a8f\",\"lsqb\":\"[\",\"lsquo\":\"\\u2018\",\"lsquor\":\"\\u201a\",\"Lstrok\":\"\\u0141\",\"lstrok\":\"\\u0142\",\"ltcc\":\"\\u2aa6\",\"ltcir\":\"\\u2a79\",\"lt\":\"<\",\"LT\":\"<\",\"Lt\":\"\\u226a\",\"ltdot\":\"\\u22d6\",\"lthree\":\"\\u22cb\",\"ltimes\":\"\\u22c9\",\"ltlarr\":\"\\u2976\",\"ltquest\":\"\\u2a7b\",\"ltri\":\"\\u25c3\",\"ltrie\":\"\\u22b4\",\"ltrif\":\"\\u25c2\",\"ltrPar\":\"\\u2996\",\"lurdshar\":\"\\u294a\",\"luruhar\":\"\\u2966\",\"lvertneqq\":\"\\u2268\\ufe00\",\"lvnE\":\"\\u2268\\ufe00\",\"macr\":\"\\xaf\",\"male\":\"\\u2642\",\"malt\":\"\\u2720\",\"maltese\":\"\\u2720\",\"Map\":\"\\u2905\",\"map\":\"\\u21a6\",\"mapsto\":\"\\u21a6\",\"mapstodown\":\"\\u21a7\",\"mapstoleft\":\"\\u21a4\",\"mapstoup\":\"\\u21a5\",\"marker\":\"\\u25ae\",\"mcomma\":\"\\u2a29\",\"Mcy\":\"\\u041c\",\"mcy\":\"\\u043c\",\"mdash\":\"\\u2014\",\"mDDot\":\"\\u223a\",\"measuredangle\":\"\\u2221\",\"MediumSpace\":\"\\u205f\",\"Mellintrf\":\"\\u2133\",\"Mfr\":\"\\ud835\\udd10\",\"mfr\":\"\\ud835\\udd2a\",\"mho\":\"\\u2127\",\"micro\":\"\\xb5\",\"midast\":\"*\",\"midcir\":\"\\u2af0\",\"mid\":\"\\u2223\",\"middot\":\"\\xb7\",\"minusb\":\"\\u229f\",\"minus\":\"\\u2212\",\"minusd\":\"\\u2238\",\"minusdu\":\"\\u2a2a\",\"MinusPlus\":\"\\u2213\",\"mlcp\":\"\\u2adb\",\"mldr\":\"\\u2026\",\"mnplus\":\"\\u2213\",\"models\":\"\\u22a7\",\"Mopf\":\"\\ud835\\udd44\",\"mopf\":\"\\ud835\\udd5e\",\"mp\":\"\\u2213\",\"mscr\":\"\\ud835\\udcc2\",\"Mscr\":\"\\u2133\",\"mstpos\":\"\\u223e\",\"Mu\":\"\\u039c\",\"mu\":\"\\u03bc\",\"multimap\":\"\\u22b8\",\"mumap\":\"\\u22b8\",\"nabla\":\"\\u2207\",\"Nacute\":\"\\u0143\",\"nacute\":\"\\u0144\",\"nang\":\"\\u2220\\u20d2\",\"nap\":\"\\u2249\",\"napE\":\"\\u2a70\\u0338\",\"napid\":\"\\u224b\\u0338\",\"napos\":\"\\u0149\",\"napprox\":\"\\u2249\",\"natural\":\"\\u266e\",\"naturals\":\"\\u2115\",\"natur\":\"\\u266e\",\"nbsp\":\"\\xa0\",\"nbump\":\"\\u224e\\u0338\",\"nbumpe\":\"\\u224f\\u0338\",\"ncap\":\"\\u2a43\",\"Ncaron\":\"\\u0147\",\"ncaron\":\"\\u0148\",\"Ncedil\":\"\\u0145\",\"ncedil\":\"\\u0146\",\"ncong\":\"\\u2247\",\"ncongdot\":\"\\u2a6d\\u0338\",\"ncup\":\"\\u2a42\",\"Ncy\":\"\\u041d\",\"ncy\":\"\\u043d\",\"ndash\":\"\\u2013\",\"nearhk\":\"\\u2924\",\"nearr\":\"\\u2197\",\"neArr\":\"\\u21d7\",\"nearrow\":\"\\u2197\",\"ne\":\"\\u2260\",\"nedot\":\"\\u2250\\u0338\",\"NegativeMediumSpace\":\"\\u200b\",\"NegativeThickSpace\":\"\\u200b\",\"NegativeThinSpace\":\"\\u200b\",\"NegativeVeryThinSpace\":\"\\u200b\",\"nequiv\":\"\\u2262\",\"nesear\":\"\\u2928\",\"nesim\":\"\\u2242\\u0338\",\"NestedGreaterGreater\":\"\\u226b\",\"NestedLessLess\":\"\\u226a\",\"NewLine\":\"\\\\n\",\"nexist\":\"\\u2204\",\"nexists\":\"\\u2204\",\"Nfr\":\"\\ud835\\udd11\",\"nfr\":\"\\ud835\\udd2b\",\"ngE\":\"\\u2267\\u0338\",\"nge\":\"\\u2271\",\"ngeq\":\"\\u2271\",\"ngeqq\":\"\\u2267\\u0338\",\"ngeqslant\":\"\\u2a7e\\u0338\",\"nges\":\"\\u2a7e\\u0338\",\"nGg\":\"\\u22d9\\u0338\",\"ngsim\":\"\\u2275\",\"nGt\":\"\\u226b\\u20d2\",\"ngt\":\"\\u226f\",\"ngtr\":\"\\u226f\",\"nGtv\":\"\\u226b\\u0338\",\"nharr\":\"\\u21ae\",\"nhArr\":\"\\u21ce\",\"nhpar\":\"\\u2af2\",\"ni\":\"\\u220b\",\"nis\":\"\\u22fc\",\"nisd\":\"\\u22fa\",\"niv\":\"\\u220b\",\"NJcy\":\"\\u040a\",\"njcy\":\"\\u045a\",\"nlarr\":\"\\u219a\",\"nlArr\":\"\\u21cd\",\"nldr\":\"\\u2025\",\"nlE\":\"\\u2266\\u0338\",\"nle\":\"\\u2270\",\"nleftarrow\":\"\\u219a\",\"nLeftarrow\":\"\\u21cd\",\"nleftrightarrow\":\"\\u21ae\",\"nLeftrightarrow\":\"\\u21ce\",\"nleq\":\"\\u2270\",\"nleqq\":\"\\u2266\\u0338\",\"nleqslant\":\"\\u2a7d\\u0338\",\"nles\":\"\\u2a7d\\u0338\",\"nless\":\"\\u226e\",\"nLl\":\"\\u22d8\\u0338\",\"nlsim\":\"\\u2274\",\"nLt\":\"\\u226a\\u20d2\",\"nlt\":\"\\u226e\",\"nltri\":\"\\u22ea\",\"nltrie\":\"\\u22ec\",\"nLtv\":\"\\u226a\\u0338\",\"nmid\":\"\\u2224\",\"NoBreak\":\"\\u2060\",\"NonBreakingSpace\":\"\\xa0\",\"nopf\":\"\\ud835\\udd5f\",\"Nopf\":\"\\u2115\",\"Not\":\"\\u2aec\",\"not\":\"\\xac\",\"NotCongruent\":\"\\u2262\",\"NotCupCap\":\"\\u226d\",\"NotDoubleVerticalBar\":\"\\u2226\",\"NotElement\":\"\\u2209\",\"NotEqual\":\"\\u2260\",\"NotEqualTilde\":\"\\u2242\\u0338\",\"NotExists\":\"\\u2204\",\"NotGreater\":\"\\u226f\",\"NotGreaterEqual\":\"\\u2271\",\"NotGreaterFullEqual\":\"\\u2267\\u0338\",\"NotGreaterGreater\":\"\\u226b\\u0338\",\"NotGreaterLess\":\"\\u2279\",\"NotGreaterSlantEqual\":\"\\u2a7e\\u0338\",\"NotGreaterTilde\":\"\\u2275\",\"NotHumpDownHump\":\"\\u224e\\u0338\",\"NotHumpEqual\":\"\\u224f\\u0338\",\"notin\":\"\\u2209\",\"notindot\":\"\\u22f5\\u0338\",\"notinE\":\"\\u22f9\\u0338\",\"notinva\":\"\\u2209\",\"notinvb\":\"\\u22f7\",\"notinvc\":\"\\u22f6\",\"NotLeftTriangleBar\":\"\\u29cf\\u0338\",\"NotLeftTriangle\":\"\\u22ea\",\"NotLeftTriangleEqual\":\"\\u22ec\",\"NotLess\":\"\\u226e\",\"NotLessEqual\":\"\\u2270\",\"NotLessGreater\":\"\\u2278\",\"NotLessLess\":\"\\u226a\\u0338\",\"NotLessSlantEqual\":\"\\u2a7d\\u0338\",\"NotLessTilde\":\"\\u2274\",\"NotNestedGreaterGreater\":\"\\u2aa2\\u0338\",\"NotNestedLessLess\":\"\\u2aa1\\u0338\",\"notni\":\"\\u220c\",\"notniva\":\"\\u220c\",\"notnivb\":\"\\u22fe\",\"notnivc\":\"\\u22fd\",\"NotPrecedes\":\"\\u2280\",\"NotPrecedesEqual\":\"\\u2aaf\\u0338\",\"NotPrecedesSlantEqual\":\"\\u22e0\",\"NotReverseElement\":\"\\u220c\",\"NotRightTriangleBar\":\"\\u29d0\\u0338\",\"NotRightTriangle\":\"\\u22eb\",\"NotRightTriangleEqual\":\"\\u22ed\",\"NotSquareSubset\":\"\\u228f\\u0338\",\"NotSquareSubsetEqual\":\"\\u22e2\",\"NotSquareSuperset\":\"\\u2290\\u0338\",\"NotSquareSupersetEqual\":\"\\u22e3\",\"NotSubset\":\"\\u2282\\u20d2\",\"NotSubsetEqual\":\"\\u2288\",\"NotSucceeds\":\"\\u2281\",\"NotSucceedsEqual\":\"\\u2ab0\\u0338\",\"NotSucceedsSlantEqual\":\"\\u22e1\",\"NotSucceedsTilde\":\"\\u227f\\u0338\",\"NotSuperset\":\"\\u2283\\u20d2\",\"NotSupersetEqual\":\"\\u2289\",\"NotTilde\":\"\\u2241\",\"NotTildeEqual\":\"\\u2244\",\"NotTildeFullEqual\":\"\\u2247\",\"NotTildeTilde\":\"\\u2249\",\"NotVerticalBar\":\"\\u2224\",\"nparallel\":\"\\u2226\",\"npar\":\"\\u2226\",\"nparsl\":\"\\u2afd\\u20e5\",\"npart\":\"\\u2202\\u0338\",\"npolint\":\"\\u2a14\",\"npr\":\"\\u2280\",\"nprcue\":\"\\u22e0\",\"nprec\":\"\\u2280\",\"npreceq\":\"\\u2aaf\\u0338\",\"npre\":\"\\u2aaf\\u0338\",\"nrarrc\":\"\\u2933\\u0338\",\"nrarr\":\"\\u219b\",\"nrArr\":\"\\u21cf\",\"nrarrw\":\"\\u219d\\u0338\",\"nrightarrow\":\"\\u219b\",\"nRightarrow\":\"\\u21cf\",\"nrtri\":\"\\u22eb\",\"nrtrie\":\"\\u22ed\",\"nsc\":\"\\u2281\",\"nsccue\":\"\\u22e1\",\"nsce\":\"\\u2ab0\\u0338\",\"Nscr\":\"\\ud835\\udca9\",\"nscr\":\"\\ud835\\udcc3\",\"nshortmid\":\"\\u2224\",\"nshortparallel\":\"\\u2226\",\"nsim\":\"\\u2241\",\"nsime\":\"\\u2244\",\"nsimeq\":\"\\u2244\",\"nsmid\":\"\\u2224\",\"nspar\":\"\\u2226\",\"nsqsube\":\"\\u22e2\",\"nsqsupe\":\"\\u22e3\",\"nsub\":\"\\u2284\",\"nsubE\":\"\\u2ac5\\u0338\",\"nsube\":\"\\u2288\",\"nsubset\":\"\\u2282\\u20d2\",\"nsubseteq\":\"\\u2288\",\"nsubseteqq\":\"\\u2ac5\\u0338\",\"nsucc\":\"\\u2281\",\"nsucceq\":\"\\u2ab0\\u0338\",\"nsup\":\"\\u2285\",\"nsupE\":\"\\u2ac6\\u0338\",\"nsupe\":\"\\u2289\",\"nsupset\":\"\\u2283\\u20d2\",\"nsupseteq\":\"\\u2289\",\"nsupseteqq\":\"\\u2ac6\\u0338\",\"ntgl\":\"\\u2279\",\"Ntilde\":\"\\xd1\",\"ntilde\":\"\\xf1\",\"ntlg\":\"\\u2278\",\"ntriangleleft\":\"\\u22ea\",\"ntrianglelefteq\":\"\\u22ec\",\"ntriangleright\":\"\\u22eb\",\"ntrianglerighteq\":\"\\u22ed\",\"Nu\":\"\\u039d\",\"nu\":\"\\u03bd\",\"num\":\"#\",\"numero\":\"\\u2116\",\"numsp\":\"\\u2007\",\"nvap\":\"\\u224d\\u20d2\",\"nvdash\":\"\\u22ac\",\"nvDash\":\"\\u22ad\",\"nVdash\":\"\\u22ae\",\"nVDash\":\"\\u22af\",\"nvge\":\"\\u2265\\u20d2\",\"nvgt\":\">\\u20d2\",\"nvHarr\":\"\\u2904\",\"nvinfin\":\"\\u29de\",\"nvlArr\":\"\\u2902\",\"nvle\":\"\\u2264\\u20d2\",\"nvlt\":\"<\\u20d2\",\"nvltrie\":\"\\u22b4\\u20d2\",\"nvrArr\":\"\\u2903\",\"nvrtrie\":\"\\u22b5\\u20d2\",\"nvsim\":\"\\u223c\\u20d2\",\"nwarhk\":\"\\u2923\",\"nwarr\":\"\\u2196\",\"nwArr\":\"\\u21d6\",\"nwarrow\":\"\\u2196\",\"nwnear\":\"\\u2927\",\"Oacute\":\"\\xd3\",\"oacute\":\"\\xf3\",\"oast\":\"\\u229b\",\"Ocirc\":\"\\xd4\",\"ocirc\":\"\\xf4\",\"ocir\":\"\\u229a\",\"Ocy\":\"\\u041e\",\"ocy\":\"\\u043e\",\"odash\":\"\\u229d\",\"Odblac\":\"\\u0150\",\"odblac\":\"\\u0151\",\"odiv\":\"\\u2a38\",\"odot\":\"\\u2299\",\"odsold\":\"\\u29bc\",\"OElig\":\"\\u0152\",\"oelig\":\"\\u0153\",\"ofcir\":\"\\u29bf\",\"Ofr\":\"\\ud835\\udd12\",\"ofr\":\"\\ud835\\udd2c\",\"ogon\":\"\\u02db\",\"Ograve\":\"\\xd2\",\"ograve\":\"\\xf2\",\"ogt\":\"\\u29c1\",\"ohbar\":\"\\u29b5\",\"ohm\":\"\\u03a9\",\"oint\":\"\\u222e\",\"olarr\":\"\\u21ba\",\"olcir\":\"\\u29be\",\"olcross\":\"\\u29bb\",\"oline\":\"\\u203e\",\"olt\":\"\\u29c0\",\"Omacr\":\"\\u014c\",\"omacr\":\"\\u014d\",\"Omega\":\"\\u03a9\",\"omega\":\"\\u03c9\",\"Omicron\":\"\\u039f\",\"omicron\":\"\\u03bf\",\"omid\":\"\\u29b6\",\"ominus\":\"\\u2296\",\"Oopf\":\"\\ud835\\udd46\",\"oopf\":\"\\ud835\\udd60\",\"opar\":\"\\u29b7\",\"OpenCurlyDoubleQuote\":\"\\u201c\",\"OpenCurlyQuote\":\"\\u2018\",\"operp\":\"\\u29b9\",\"oplus\":\"\\u2295\",\"orarr\":\"\\u21bb\",\"Or\":\"\\u2a54\",\"or\":\"\\u2228\",\"ord\":\"\\u2a5d\",\"order\":\"\\u2134\",\"orderof\":\"\\u2134\",\"ordf\":\"\\xaa\",\"ordm\":\"\\xba\",\"origof\":\"\\u22b6\",\"oror\":\"\\u2a56\",\"orslope\":\"\\u2a57\",\"orv\":\"\\u2a5b\",\"oS\":\"\\u24c8\",\"Oscr\":\"\\ud835\\udcaa\",\"oscr\":\"\\u2134\",\"Oslash\":\"\\xd8\",\"oslash\":\"\\xf8\",\"osol\":\"\\u2298\",\"Otilde\":\"\\xd5\",\"otilde\":\"\\xf5\",\"otimesas\":\"\\u2a36\",\"Otimes\":\"\\u2a37\",\"otimes\":\"\\u2297\",\"Ouml\":\"\\xd6\",\"ouml\":\"\\xf6\",\"ovbar\":\"\\u233d\",\"OverBar\":\"\\u203e\",\"OverBrace\":\"\\u23de\",\"OverBracket\":\"\\u23b4\",\"OverParenthesis\":\"\\u23dc\",\"para\":\"\\xb6\",\"parallel\":\"\\u2225\",\"par\":\"\\u2225\",\"parsim\":\"\\u2af3\",\"parsl\":\"\\u2afd\",\"part\":\"\\u2202\",\"PartialD\":\"\\u2202\",\"Pcy\":\"\\u041f\",\"pcy\":\"\\u043f\",\"percnt\":\"%\",\"period\":\".\",\"permil\":\"\\u2030\",\"perp\":\"\\u22a5\",\"pertenk\":\"\\u2031\",\"Pfr\":\"\\ud835\\udd13\",\"pfr\":\"\\ud835\\udd2d\",\"Phi\":\"\\u03a6\",\"phi\":\"\\u03c6\",\"phiv\":\"\\u03d5\",\"phmmat\":\"\\u2133\",\"phone\":\"\\u260e\",\"Pi\":\"\\u03a0\",\"pi\":\"\\u03c0\",\"pitchfork\":\"\\u22d4\",\"piv\":\"\\u03d6\",\"planck\":\"\\u210f\",\"planckh\":\"\\u210e\",\"plankv\":\"\\u210f\",\"plusacir\":\"\\u2a23\",\"plusb\":\"\\u229e\",\"pluscir\":\"\\u2a22\",\"plus\":\"+\",\"plusdo\":\"\\u2214\",\"plusdu\":\"\\u2a25\",\"pluse\":\"\\u2a72\",\"PlusMinus\":\"\\xb1\",\"plusmn\":\"\\xb1\",\"plussim\":\"\\u2a26\",\"plustwo\":\"\\u2a27\",\"pm\":\"\\xb1\",\"Poincareplane\":\"\\u210c\",\"pointint\":\"\\u2a15\",\"popf\":\"\\ud835\\udd61\",\"Popf\":\"\\u2119\",\"pound\":\"\\xa3\",\"prap\":\"\\u2ab7\",\"Pr\":\"\\u2abb\",\"pr\":\"\\u227a\",\"prcue\":\"\\u227c\",\"precapprox\":\"\\u2ab7\",\"prec\":\"\\u227a\",\"preccurlyeq\":\"\\u227c\",\"Precedes\":\"\\u227a\",\"PrecedesEqual\":\"\\u2aaf\",\"PrecedesSlantEqual\":\"\\u227c\",\"PrecedesTilde\":\"\\u227e\",\"preceq\":\"\\u2aaf\",\"precnapprox\":\"\\u2ab9\",\"precneqq\":\"\\u2ab5\",\"precnsim\":\"\\u22e8\",\"pre\":\"\\u2aaf\",\"prE\":\"\\u2ab3\",\"precsim\":\"\\u227e\",\"prime\":\"\\u2032\",\"Prime\":\"\\u2033\",\"primes\":\"\\u2119\",\"prnap\":\"\\u2ab9\",\"prnE\":\"\\u2ab5\",\"prnsim\":\"\\u22e8\",\"prod\":\"\\u220f\",\"Product\":\"\\u220f\",\"profalar\":\"\\u232e\",\"profline\":\"\\u2312\",\"profsurf\":\"\\u2313\",\"prop\":\"\\u221d\",\"Proportional\":\"\\u221d\",\"Proportion\":\"\\u2237\",\"propto\":\"\\u221d\",\"prsim\":\"\\u227e\",\"prurel\":\"\\u22b0\",\"Pscr\":\"\\ud835\\udcab\",\"pscr\":\"\\ud835\\udcc5\",\"Psi\":\"\\u03a8\",\"psi\":\"\\u03c8\",\"puncsp\":\"\\u2008\",\"Qfr\":\"\\ud835\\udd14\",\"qfr\":\"\\ud835\\udd2e\",\"qint\":\"\\u2a0c\",\"qopf\":\"\\ud835\\udd62\",\"Qopf\":\"\\u211a\",\"qprime\":\"\\u2057\",\"Qscr\":\"\\ud835\\udcac\",\"qscr\":\"\\ud835\\udcc6\",\"quaternions\":\"\\u210d\",\"quatint\":\"\\u2a16\",\"quest\":\"?\",\"questeq\":\"\\u225f\",\"quot\":\"\\\\\"\",\"QUOT\":\"\\\\\"\",\"rAarr\":\"\\u21db\",\"race\":\"\\u223d\\u0331\",\"Racute\":\"\\u0154\",\"racute\":\"\\u0155\",\"radic\":\"\\u221a\",\"raemptyv\":\"\\u29b3\",\"rang\":\"\\u27e9\",\"Rang\":\"\\u27eb\",\"rangd\":\"\\u2992\",\"range\":\"\\u29a5\",\"rangle\":\"\\u27e9\",\"raquo\":\"\\xbb\",\"rarrap\":\"\\u2975\",\"rarrb\":\"\\u21e5\",\"rarrbfs\":\"\\u2920\",\"rarrc\":\"\\u2933\",\"rarr\":\"\\u2192\",\"Rarr\":\"\\u21a0\",\"rArr\":\"\\u21d2\",\"rarrfs\":\"\\u291e\",\"rarrhk\":\"\\u21aa\",\"rarrlp\":\"\\u21ac\",\"rarrpl\":\"\\u2945\",\"rarrsim\":\"\\u2974\",\"Rarrtl\":\"\\u2916\",\"rarrtl\":\"\\u21a3\",\"rarrw\":\"\\u219d\",\"ratail\":\"\\u291a\",\"rAtail\":\"\\u291c\",\"ratio\":\"\\u2236\",\"rationals\":\"\\u211a\",\"rbarr\":\"\\u290d\",\"rBarr\":\"\\u290f\",\"RBarr\":\"\\u2910\",\"rbbrk\":\"\\u2773\",\"rbrace\":\"}\",\"rbrack\":\"]\",\"rbrke\":\"\\u298c\",\"rbrksld\":\"\\u298e\",\"rbrkslu\":\"\\u2990\",\"Rcaron\":\"\\u0158\",\"rcaron\":\"\\u0159\",\"Rcedil\":\"\\u0156\",\"rcedil\":\"\\u0157\",\"rceil\":\"\\u2309\",\"rcub\":\"}\",\"Rcy\":\"\\u0420\",\"rcy\":\"\\u0440\",\"rdca\":\"\\u2937\",\"rdldhar\":\"\\u2969\",\"rdquo\":\"\\u201d\",\"rdquor\":\"\\u201d\",\"rdsh\":\"\\u21b3\",\"real\":\"\\u211c\",\"realine\":\"\\u211b\",\"realpart\":\"\\u211c\",\"reals\":\"\\u211d\",\"Re\":\"\\u211c\",\"rect\":\"\\u25ad\",\"reg\":\"\\xae\",\"REG\":\"\\xae\",\"ReverseElement\":\"\\u220b\",\"ReverseEquilibrium\":\"\\u21cb\",\"ReverseUpEquilibrium\":\"\\u296f\",\"rfisht\":\"\\u297d\",\"rfloor\":\"\\u230b\",\"rfr\":\"\\ud835\\udd2f\",\"Rfr\":\"\\u211c\",\"rHar\":\"\\u2964\",\"rhard\":\"\\u21c1\",\"rharu\":\"\\u21c0\",\"rharul\":\"\\u296c\",\"Rho\":\"\\u03a1\",\"rho\":\"\\u03c1\",\"rhov\":\"\\u03f1\",\"RightAngleBracket\":\"\\u27e9\",\"RightArrowBar\":\"\\u21e5\",\"rightarrow\":\"\\u2192\",\"RightArrow\":\"\\u2192\",\"Rightarrow\":\"\\u21d2\",\"RightArrowLeftArrow\":\"\\u21c4\",\"rightarrowtail\":\"\\u21a3\",\"RightCeiling\":\"\\u2309\",\"RightDoubleBracket\":\"\\u27e7\",\"RightDownTeeVector\":\"\\u295d\",\"RightDownVectorBar\":\"\\u2955\",\"RightDownVector\":\"\\u21c2\",\"RightFloor\":\"\\u230b\",\"rightharpoondown\":\"\\u21c1\",\"rightharpoonup\":\"\\u21c0\",\"rightleftarrows\":\"\\u21c4\",\"rightleftharpoons\":\"\\u21cc\",\"rightrightarrows\":\"\\u21c9\",\"rightsquigarrow\":\"\\u219d\",\"RightTeeArrow\":\"\\u21a6\",\"RightTee\":\"\\u22a2\",\"RightTeeVector\":\"\\u295b\",\"rightthreetimes\":\"\\u22cc\",\"RightTriangleBar\":\"\\u29d0\",\"RightTriangle\":\"\\u22b3\",\"RightTriangleEqual\":\"\\u22b5\",\"RightUpDownVector\":\"\\u294f\",\"RightUpTeeVector\":\"\\u295c\",\"RightUpVectorBar\":\"\\u2954\",\"RightUpVector\":\"\\u21be\",\"RightVectorBar\":\"\\u2953\",\"RightVector\":\"\\u21c0\",\"ring\":\"\\u02da\",\"risingdotseq\":\"\\u2253\",\"rlarr\":\"\\u21c4\",\"rlhar\":\"\\u21cc\",\"rlm\":\"\\u200f\",\"rmoustache\":\"\\u23b1\",\"rmoust\":\"\\u23b1\",\"rnmid\":\"\\u2aee\",\"roang\":\"\\u27ed\",\"roarr\":\"\\u21fe\",\"robrk\":\"\\u27e7\",\"ropar\":\"\\u2986\",\"ropf\":\"\\ud835\\udd63\",\"Ropf\":\"\\u211d\",\"roplus\":\"\\u2a2e\",\"rotimes\":\"\\u2a35\",\"RoundImplies\":\"\\u2970\",\"rpar\":\")\",\"rpargt\":\"\\u2994\",\"rppolint\":\"\\u2a12\",\"rrarr\":\"\\u21c9\",\"Rrightarrow\":\"\\u21db\",\"rsaquo\":\"\\u203a\",\"rscr\":\"\\ud835\\udcc7\",\"Rscr\":\"\\u211b\",\"rsh\":\"\\u21b1\",\"Rsh\":\"\\u21b1\",\"rsqb\":\"]\",\"rsquo\":\"\\u2019\",\"rsquor\":\"\\u2019\",\"rthree\":\"\\u22cc\",\"rtimes\":\"\\u22ca\",\"rtri\":\"\\u25b9\",\"rtrie\":\"\\u22b5\",\"rtrif\":\"\\u25b8\",\"rtriltri\":\"\\u29ce\",\"RuleDelayed\":\"\\u29f4\",\"ruluhar\":\"\\u2968\",\"rx\":\"\\u211e\",\"Sacute\":\"\\u015a\",\"sacute\":\"\\u015b\",\"sbquo\":\"\\u201a\",\"scap\":\"\\u2ab8\",\"Scaron\":\"\\u0160\",\"scaron\":\"\\u0161\",\"Sc\":\"\\u2abc\",\"sc\":\"\\u227b\",\"sccue\":\"\\u227d\",\"sce\":\"\\u2ab0\",\"scE\":\"\\u2ab4\",\"Scedil\":\"\\u015e\",\"scedil\":\"\\u015f\",\"Scirc\":\"\\u015c\",\"scirc\":\"\\u015d\",\"scnap\":\"\\u2aba\",\"scnE\":\"\\u2ab6\",\"scnsim\":\"\\u22e9\",\"scpolint\":\"\\u2a13\",\"scsim\":\"\\u227f\",\"Scy\":\"\\u0421\",\"scy\":\"\\u0441\",\"sdotb\":\"\\u22a1\",\"sdot\":\"\\u22c5\",\"sdote\":\"\\u2a66\",\"searhk\":\"\\u2925\",\"searr\":\"\\u2198\",\"seArr\":\"\\u21d8\",\"searrow\":\"\\u2198\",\"sect\":\"\\xa7\",\"semi\":\";\",\"seswar\":\"\\u2929\",\"setminus\":\"\\u2216\",\"setmn\":\"\\u2216\",\"sext\":\"\\u2736\",\"Sfr\":\"\\ud835\\udd16\",\"sfr\":\"\\ud835\\udd30\",\"sfrown\":\"\\u2322\",\"sharp\":\"\\u266f\",\"SHCHcy\":\"\\u0429\",\"shchcy\":\"\\u0449\",\"SHcy\":\"\\u0428\",\"shcy\":\"\\u0448\",\"ShortDownArrow\":\"\\u2193\",\"ShortLeftArrow\":\"\\u2190\",\"shortmid\":\"\\u2223\",\"shortparallel\":\"\\u2225\",\"ShortRightArrow\":\"\\u2192\",\"ShortUpArrow\":\"\\u2191\",\"shy\":\"\\xad\",\"Sigma\":\"\\u03a3\",\"sigma\":\"\\u03c3\",\"sigmaf\":\"\\u03c2\",\"sigmav\":\"\\u03c2\",\"sim\":\"\\u223c\",\"simdot\":\"\\u2a6a\",\"sime\":\"\\u2243\",\"simeq\":\"\\u2243\",\"simg\":\"\\u2a9e\",\"simgE\":\"\\u2aa0\",\"siml\":\"\\u2a9d\",\"simlE\":\"\\u2a9f\",\"simne\":\"\\u2246\",\"simplus\":\"\\u2a24\",\"simrarr\":\"\\u2972\",\"slarr\":\"\\u2190\",\"SmallCircle\":\"\\u2218\",\"smallsetminus\":\"\\u2216\",\"smashp\":\"\\u2a33\",\"smeparsl\":\"\\u29e4\",\"smid\":\"\\u2223\",\"smile\":\"\\u2323\",\"smt\":\"\\u2aaa\",\"smte\":\"\\u2aac\",\"smtes\":\"\\u2aac\\ufe00\",\"SOFTcy\":\"\\u042c\",\"softcy\":\"\\u044c\",\"solbar\":\"\\u233f\",\"solb\":\"\\u29c4\",\"sol\":\"/\",\"Sopf\":\"\\ud835\\udd4a\",\"sopf\":\"\\ud835\\udd64\",\"spades\":\"\\u2660\",\"spadesuit\":\"\\u2660\",\"spar\":\"\\u2225\",\"sqcap\":\"\\u2293\",\"sqcaps\":\"\\u2293\\ufe00\",\"sqcup\":\"\\u2294\",\"sqcups\":\"\\u2294\\ufe00\",\"Sqrt\":\"\\u221a\",\"sqsub\":\"\\u228f\",\"sqsube\":\"\\u2291\",\"sqsubset\":\"\\u228f\",\"sqsubseteq\":\"\\u2291\",\"sqsup\":\"\\u2290\",\"sqsupe\":\"\\u2292\",\"sqsupset\":\"\\u2290\",\"sqsupseteq\":\"\\u2292\",\"square\":\"\\u25a1\",\"Square\":\"\\u25a1\",\"SquareIntersection\":\"\\u2293\",\"SquareSubset\":\"\\u228f\",\"SquareSubsetEqual\":\"\\u2291\",\"SquareSuperset\":\"\\u2290\",\"SquareSupersetEqual\":\"\\u2292\",\"SquareUnion\":\"\\u2294\",\"squarf\":\"\\u25aa\",\"squ\":\"\\u25a1\",\"squf\":\"\\u25aa\",\"srarr\":\"\\u2192\",\"Sscr\":\"\\ud835\\udcae\",\"sscr\":\"\\ud835\\udcc8\",\"ssetmn\":\"\\u2216\",\"ssmile\":\"\\u2323\",\"sstarf\":\"\\u22c6\",\"Star\":\"\\u22c6\",\"star\":\"\\u2606\",\"starf\":\"\\u2605\",\"straightepsilon\":\"\\u03f5\",\"straightphi\":\"\\u03d5\",\"strns\":\"\\xaf\",\"sub\":\"\\u2282\",\"Sub\":\"\\u22d0\",\"subdot\":\"\\u2abd\",\"subE\":\"\\u2ac5\",\"sube\":\"\\u2286\",\"subedot\":\"\\u2ac3\",\"submult\":\"\\u2ac1\",\"subnE\":\"\\u2acb\",\"subne\":\"\\u228a\",\"subplus\":\"\\u2abf\",\"subrarr\":\"\\u2979\",\"subset\":\"\\u2282\",\"Subset\":\"\\u22d0\",\"subseteq\":\"\\u2286\",\"subseteqq\":\"\\u2ac5\",\"SubsetEqual\":\"\\u2286\",\"subsetneq\":\"\\u228a\",\"subsetneqq\":\"\\u2acb\",\"subsim\":\"\\u2ac7\",\"subsub\":\"\\u2ad5\",\"subsup\":\"\\u2ad3\",\"succapprox\":\"\\u2ab8\",\"succ\":\"\\u227b\",\"succcurlyeq\":\"\\u227d\",\"Succeeds\":\"\\u227b\",\"SucceedsEqual\":\"\\u2ab0\",\"SucceedsSlantEqual\":\"\\u227d\",\"SucceedsTilde\":\"\\u227f\",\"succeq\":\"\\u2ab0\",\"succnapprox\":\"\\u2aba\",\"succneqq\":\"\\u2ab6\",\"succnsim\":\"\\u22e9\",\"succsim\":\"\\u227f\",\"SuchThat\":\"\\u220b\",\"sum\":\"\\u2211\",\"Sum\":\"\\u2211\",\"sung\":\"\\u266a\",\"sup1\":\"\\xb9\",\"sup2\":\"\\xb2\",\"sup3\":\"\\xb3\",\"sup\":\"\\u2283\",\"Sup\":\"\\u22d1\",\"supdot\":\"\\u2abe\",\"supdsub\":\"\\u2ad8\",\"supE\":\"\\u2ac6\",\"supe\":\"\\u2287\",\"supedot\":\"\\u2ac4\",\"Superset\":\"\\u2283\",\"SupersetEqual\":\"\\u2287\",\"suphsol\":\"\\u27c9\",\"suphsub\":\"\\u2ad7\",\"suplarr\":\"\\u297b\",\"supmult\":\"\\u2ac2\",\"supnE\":\"\\u2acc\",\"supne\":\"\\u228b\",\"supplus\":\"\\u2ac0\",\"supset\":\"\\u2283\",\"Supset\":\"\\u22d1\",\"supseteq\":\"\\u2287\",\"supseteqq\":\"\\u2ac6\",\"supsetneq\":\"\\u228b\",\"supsetneqq\":\"\\u2acc\",\"supsim\":\"\\u2ac8\",\"supsub\":\"\\u2ad4\",\"supsup\":\"\\u2ad6\",\"swarhk\":\"\\u2926\",\"swarr\":\"\\u2199\",\"swArr\":\"\\u21d9\",\"swarrow\":\"\\u2199\",\"swnwar\":\"\\u292a\",\"szlig\":\"\\xdf\",\"Tab\":\"\\\\t\",\"target\":\"\\u2316\",\"Tau\":\"\\u03a4\",\"tau\":\"\\u03c4\",\"tbrk\":\"\\u23b4\",\"Tcaron\":\"\\u0164\",\"tcaron\":\"\\u0165\",\"Tcedil\":\"\\u0162\",\"tcedil\":\"\\u0163\",\"Tcy\":\"\\u0422\",\"tcy\":\"\\u0442\",\"tdot\":\"\\u20db\",\"telrec\":\"\\u2315\",\"Tfr\":\"\\ud835\\udd17\",\"tfr\":\"\\ud835\\udd31\",\"there4\":\"\\u2234\",\"therefore\":\"\\u2234\",\"Therefore\":\"\\u2234\",\"Theta\":\"\\u0398\",\"theta\":\"\\u03b8\",\"thetasym\":\"\\u03d1\",\"thetav\":\"\\u03d1\",\"thickapprox\":\"\\u2248\",\"thicksim\":\"\\u223c\",\"ThickSpace\":\"\\u205f\\u200a\",\"ThinSpace\":\"\\u2009\",\"thinsp\":\"\\u2009\",\"thkap\":\"\\u2248\",\"thksim\":\"\\u223c\",\"THORN\":\"\\xde\",\"thorn\":\"\\xfe\",\"tilde\":\"\\u02dc\",\"Tilde\":\"\\u223c\",\"TildeEqual\":\"\\u2243\",\"TildeFullEqual\":\"\\u2245\",\"TildeTilde\":\"\\u2248\",\"timesbar\":\"\\u2a31\",\"timesb\":\"\\u22a0\",\"times\":\"\\xd7\",\"timesd\":\"\\u2a30\",\"tint\":\"\\u222d\",\"toea\":\"\\u2928\",\"topbot\":\"\\u2336\",\"topcir\":\"\\u2af1\",\"top\":\"\\u22a4\",\"Topf\":\"\\ud835\\udd4b\",\"topf\":\"\\ud835\\udd65\",\"topfork\":\"\\u2ada\",\"tosa\":\"\\u2929\",\"tprime\":\"\\u2034\",\"trade\":\"\\u2122\",\"TRADE\":\"\\u2122\",\"triangle\":\"\\u25b5\",\"triangledown\":\"\\u25bf\",\"triangleleft\":\"\\u25c3\",\"trianglelefteq\":\"\\u22b4\",\"triangleq\":\"\\u225c\",\"triangleright\":\"\\u25b9\",\"trianglerighteq\":\"\\u22b5\",\"tridot\":\"\\u25ec\",\"trie\":\"\\u225c\",\"triminus\":\"\\u2a3a\",\"TripleDot\":\"\\u20db\",\"triplus\":\"\\u2a39\",\"trisb\":\"\\u29cd\",\"tritime\":\"\\u2a3b\",\"trpezium\":\"\\u23e2\",\"Tscr\":\"\\ud835\\udcaf\",\"tscr\":\"\\ud835\\udcc9\",\"TScy\":\"\\u0426\",\"tscy\":\"\\u0446\",\"TSHcy\":\"\\u040b\",\"tshcy\":\"\\u045b\",\"Tstrok\":\"\\u0166\",\"tstrok\":\"\\u0167\",\"twixt\":\"\\u226c\",\"twoheadleftarrow\":\"\\u219e\",\"twoheadrightarrow\":\"\\u21a0\",\"Uacute\":\"\\xda\",\"uacute\":\"\\xfa\",\"uarr\":\"\\u2191\",\"Uarr\":\"\\u219f\",\"uArr\":\"\\u21d1\",\"Uarrocir\":\"\\u2949\",\"Ubrcy\":\"\\u040e\",\"ubrcy\":\"\\u045e\",\"Ubreve\":\"\\u016c\",\"ubreve\":\"\\u016d\",\"Ucirc\":\"\\xdb\",\"ucirc\":\"\\xfb\",\"Ucy\":\"\\u0423\",\"ucy\":\"\\u0443\",\"udarr\":\"\\u21c5\",\"Udblac\":\"\\u0170\",\"udblac\":\"\\u0171\",\"udhar\":\"\\u296e\",\"ufisht\":\"\\u297e\",\"Ufr\":\"\\ud835\\udd18\",\"ufr\":\"\\ud835\\udd32\",\"Ugrave\":\"\\xd9\",\"ugrave\":\"\\xf9\",\"uHar\":\"\\u2963\",\"uharl\":\"\\u21bf\",\"uharr\":\"\\u21be\",\"uhblk\":\"\\u2580\",\"ulcorn\":\"\\u231c\",\"ulcorner\":\"\\u231c\",\"ulcrop\":\"\\u230f\",\"ultri\":\"\\u25f8\",\"Umacr\":\"\\u016a\",\"umacr\":\"\\u016b\",\"uml\":\"\\xa8\",\"UnderBar\":\"_\",\"UnderBrace\":\"\\u23df\",\"UnderBracket\":\"\\u23b5\",\"UnderParenthesis\":\"\\u23dd\",\"Union\":\"\\u22c3\",\"UnionPlus\":\"\\u228e\",\"Uogon\":\"\\u0172\",\"uogon\":\"\\u0173\",\"Uopf\":\"\\ud835\\udd4c\",\"uopf\":\"\\ud835\\udd66\",\"UpArrowBar\":\"\\u2912\",\"uparrow\":\"\\u2191\",\"UpArrow\":\"\\u2191\",\"Uparrow\":\"\\u21d1\",\"UpArrowDownArrow\":\"\\u21c5\",\"updownarrow\":\"\\u2195\",\"UpDownArrow\":\"\\u2195\",\"Updownarrow\":\"\\u21d5\",\"UpEquilibrium\":\"\\u296e\",\"upharpoonleft\":\"\\u21bf\",\"upharpoonright\":\"\\u21be\",\"uplus\":\"\\u228e\",\"UpperLeftArrow\":\"\\u2196\",\"UpperRightArrow\":\"\\u2197\",\"upsi\":\"\\u03c5\",\"Upsi\":\"\\u03d2\",\"upsih\":\"\\u03d2\",\"Upsilon\":\"\\u03a5\",\"upsilon\":\"\\u03c5\",\"UpTeeArrow\":\"\\u21a5\",\"UpTee\":\"\\u22a5\",\"upuparrows\":\"\\u21c8\",\"urcorn\":\"\\u231d\",\"urcorner\":\"\\u231d\",\"urcrop\":\"\\u230e\",\"Uring\":\"\\u016e\",\"uring\":\"\\u016f\",\"urtri\":\"\\u25f9\",\"Uscr\":\"\\ud835\\udcb0\",\"uscr\":\"\\ud835\\udcca\",\"utdot\":\"\\u22f0\",\"Utilde\":\"\\u0168\",\"utilde\":\"\\u0169\",\"utri\":\"\\u25b5\",\"utrif\":\"\\u25b4\",\"uuarr\":\"\\u21c8\",\"Uuml\":\"\\xdc\",\"uuml\":\"\\xfc\",\"uwangle\":\"\\u29a7\",\"vangrt\":\"\\u299c\",\"varepsilon\":\"\\u03f5\",\"varkappa\":\"\\u03f0\",\"varnothing\":\"\\u2205\",\"varphi\":\"\\u03d5\",\"varpi\":\"\\u03d6\",\"varpropto\":\"\\u221d\",\"varr\":\"\\u2195\",\"vArr\":\"\\u21d5\",\"varrho\":\"\\u03f1\",\"varsigma\":\"\\u03c2\",\"varsubsetneq\":\"\\u228a\\ufe00\",\"varsubsetneqq\":\"\\u2acb\\ufe00\",\"varsupsetneq\":\"\\u228b\\ufe00\",\"varsupsetneqq\":\"\\u2acc\\ufe00\",\"vartheta\":\"\\u03d1\",\"vartriangleleft\":\"\\u22b2\",\"vartriangleright\":\"\\u22b3\",\"vBar\":\"\\u2ae8\",\"Vbar\":\"\\u2aeb\",\"vBarv\":\"\\u2ae9\",\"Vcy\":\"\\u0412\",\"vcy\":\"\\u0432\",\"vdash\":\"\\u22a2\",\"vDash\":\"\\u22a8\",\"Vdash\":\"\\u22a9\",\"VDash\":\"\\u22ab\",\"Vdashl\":\"\\u2ae6\",\"veebar\":\"\\u22bb\",\"vee\":\"\\u2228\",\"Vee\":\"\\u22c1\",\"veeeq\":\"\\u225a\",\"vellip\":\"\\u22ee\",\"verbar\":\"|\",\"Verbar\":\"\\u2016\",\"vert\":\"|\",\"Vert\":\"\\u2016\",\"VerticalBar\":\"\\u2223\",\"VerticalLine\":\"|\",\"VerticalSeparator\":\"\\u2758\",\"VerticalTilde\":\"\\u2240\",\"VeryThinSpace\":\"\\u200a\",\"Vfr\":\"\\ud835\\udd19\",\"vfr\":\"\\ud835\\udd33\",\"vltri\":\"\\u22b2\",\"vnsub\":\"\\u2282\\u20d2\",\"vnsup\":\"\\u2283\\u20d2\",\"Vopf\":\"\\ud835\\udd4d\",\"vopf\":\"\\ud835\\udd67\",\"vprop\":\"\\u221d\",\"vrtri\":\"\\u22b3\",\"Vscr\":\"\\ud835\\udcb1\",\"vscr\":\"\\ud835\\udccb\",\"vsubnE\":\"\\u2acb\\ufe00\",\"vsubne\":\"\\u228a\\ufe00\",\"vsupnE\":\"\\u2acc\\ufe00\",\"vsupne\":\"\\u228b\\ufe00\",\"Vvdash\":\"\\u22aa\",\"vzigzag\":\"\\u299a\",\"Wcirc\":\"\\u0174\",\"wcirc\":\"\\u0175\",\"wedbar\":\"\\u2a5f\",\"wedge\":\"\\u2227\",\"Wedge\":\"\\u22c0\",\"wedgeq\":\"\\u2259\",\"weierp\":\"\\u2118\",\"Wfr\":\"\\ud835\\udd1a\",\"wfr\":\"\\ud835\\udd34\",\"Wopf\":\"\\ud835\\udd4e\",\"wopf\":\"\\ud835\\udd68\",\"wp\":\"\\u2118\",\"wr\":\"\\u2240\",\"wreath\":\"\\u2240\",\"Wscr\":\"\\ud835\\udcb2\",\"wscr\":\"\\ud835\\udccc\",\"xcap\":\"\\u22c2\",\"xcirc\":\"\\u25ef\",\"xcup\":\"\\u22c3\",\"xdtri\":\"\\u25bd\",\"Xfr\":\"\\ud835\\udd1b\",\"xfr\":\"\\ud835\\udd35\",\"xharr\":\"\\u27f7\",\"xhArr\":\"\\u27fa\",\"Xi\":\"\\u039e\",\"xi\":\"\\u03be\",\"xlarr\":\"\\u27f5\",\"xlArr\":\"\\u27f8\",\"xmap\":\"\\u27fc\",\"xnis\":\"\\u22fb\",\"xodot\":\"\\u2a00\",\"Xopf\":\"\\ud835\\udd4f\",\"xopf\":\"\\ud835\\udd69\",\"xoplus\":\"\\u2a01\",\"xotime\":\"\\u2a02\",\"xrarr\":\"\\u27f6\",\"xrArr\":\"\\u27f9\",\"Xscr\":\"\\ud835\\udcb3\",\"xscr\":\"\\ud835\\udccd\",\"xsqcup\":\"\\u2a06\",\"xuplus\":\"\\u2a04\",\"xutri\":\"\\u25b3\",\"xvee\":\"\\u22c1\",\"xwedge\":\"\\u22c0\",\"Yacute\":\"\\xdd\",\"yacute\":\"\\xfd\",\"YAcy\":\"\\u042f\",\"yacy\":\"\\u044f\",\"Ycirc\":\"\\u0176\",\"ycirc\":\"\\u0177\",\"Ycy\":\"\\u042b\",\"ycy\":\"\\u044b\",\"yen\":\"\\xa5\",\"Yfr\":\"\\ud835\\udd1c\",\"yfr\":\"\\ud835\\udd36\",\"YIcy\":\"\\u0407\",\"yicy\":\"\\u0457\",\"Yopf\":\"\\ud835\\udd50\",\"yopf\":\"\\ud835\\udd6a\",\"Yscr\":\"\\ud835\\udcb4\",\"yscr\":\"\\ud835\\udcce\",\"YUcy\":\"\\u042e\",\"yucy\":\"\\u044e\",\"yuml\":\"\\xff\",\"Yuml\":\"\\u0178\",\"Zacute\":\"\\u0179\",\"zacute\":\"\\u017a\",\"Zcaron\":\"\\u017d\",\"zcaron\":\"\\u017e\",\"Zcy\":\"\\u0417\",\"zcy\":\"\\u0437\",\"Zdot\":\"\\u017b\",\"zdot\":\"\\u017c\",\"zeetrf\":\"\\u2128\",\"ZeroWidthSpace\":\"\\u200b\",\"Zeta\":\"\\u0396\",\"zeta\":\"\\u03b6\",\"zfr\":\"\\ud835\\udd37\",\"Zfr\":\"\\u2128\",\"ZHcy\":\"\\u0416\",\"zhcy\":\"\\u0436\",\"zigrarr\":\"\\u21dd\",\"zopf\":\"\\ud835\\udd6b\",\"Zopf\":\"\\u2124\",\"Zscr\":\"\\ud835\\udcb5\",\"zscr\":\"\\ud835\\udccf\",\"zwj\":\"\\u200d\",\"zwnj\":\"\\u200c\"}')}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.m=e,n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},function(){var e,t=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__};n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if(\"object\"===typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&\"function\"===typeof r.then)return r}var i=Object.create(null);n.r(i);var a={};e=e||[null,t({}),t([]),t(t)];for(var l=2&o&&r;\"object\"==typeof l&&!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((function(e){a[e]=function(){return r[e]}}));return a.default=function(){return r},n.d(i,a),i}}(),n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.f={},n.e=function(e){return Promise.all(Object.keys(n.f).reduce((function(t,r){return n.f[r](e,t),t}),[]))},n.u=function(e){return\"static/js/\"+({63:\"nba-tables\",87:\"nba-edges-json\",112:\"bindle-tables\",127:\"movies-edges-json\",250:\"movies-tablePositions-json\",281:\"movies-tables\",335:\"the-bank-job-edges-json\",342:\"finance-tablePositions-json\",356:\"bindle-tablePositions-json\",415:\"ecommerce-schemaColors-json\",418:\"live-schemaColors-json\",449:\"the-bank-job-tables\",480:\"bindle-schemaColors-json\",547:\"ecommerce-edges-json\",575:\"finance-edges-json\",583:\"live-tablePositions-json\",679:\"ecommerce-tables\",691:\"bindle-edges-json\",741:\"nba-schemaColors-json\",743:\"ecommerce-tablePositions-json\",752:\"live-tables\",822:\"movies-schemaColors-json\",869:\"nba-tablePositions-json\",906:\"the-bank-job-schemaColors-json\",961:\"live-edges-json\",972:\"the-bank-job-tablePositions-json\",988:\"finance-schemaColors-json\",990:\"finance-tables\"}[e]||e)+\".\"+{63:\"7858f3c9\",87:\"b14b1c04\",112:\"0d2bfe46\",127:\"5b3266f6\",226:\"0d90ab44\",250:\"1435348f\",281:\"37f21107\",335:\"f4126c62\",342:\"9ab03387\",356:\"847db583\",394:\"14a9b9da\",415:\"fdb98809\",418:\"3efe2122\",449:\"b72c42c8\",480:\"b87e5760\",547:\"fe131063\",575:\"cc1c201e\",583:\"88001c8e\",679:\"f5264437\",691:\"94501736\",741:\"e0912a1a\",743:\"03a16298\",752:\"5a699030\",822:\"a48d91cc\",869:\"eda5bb0d\",906:\"00b0e9ee\",961:\"849f23e8\",972:\"1ddd80ab\",988:\"e0d3a5af\",990:\"eac6da84\"}[e]+\".chunk.js\"},n.miniCssF=function(e){},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={},t=\"sql_schema_visualizer:\";n.l=function(r,o,i,a){if(e[r])e[r].push(o);else{var l,s;if(void 0!==i)for(var u=document.getElementsByTagName(\"script\"),c=0;c<u.length;c++){var d=u[c];if(d.getAttribute(\"src\")==r||d.getAttribute(\"data-webpack\")==t+i){l=d;break}}l||(s=!0,(l=document.createElement(\"script\")).charset=\"utf-8\",l.timeout=120,n.nc&&l.setAttribute(\"nonce\",n.nc),l.setAttribute(\"data-webpack\",t+i),l.src=r),e[r]=[o];var f=function(t,n){l.onerror=l.onload=null,clearTimeout(h);var o=e[r];if(delete e[r],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((function(e){return e(n)})),t)return t(n)},h=setTimeout(f.bind(null,void 0,{type:\"timeout\",target:l}),12e4);l.onerror=f.bind(null,l.onerror),l.onload=f.bind(null,l.onload),s&&document.head.appendChild(l)}}}(),n.r=function(e){\"undefined\"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.p=\"/sql_schema_visualizer/\",function(){var e={179:0};n.f.j=function(t,r){var o=n.o(e,t)?e[t]:void 0;if(0!==o)if(o)r.push(o[2]);else{var i=new Promise((function(n,r){o=e[t]=[n,r]}));r.push(o[2]=i);var a=n.p+n.u(t),l=new Error;n.l(a,(function(r){if(n.o(e,t)&&(0!==(o=e[t])&&(e[t]=void 0),o)){var i=r&&(\"load\"===r.type?\"missing\":r.type),a=r&&r.target&&r.target.src;l.message=\"Loading chunk \"+t+\" failed.\\n(\"+i+\": \"+a+\")\",l.name=\"ChunkLoadError\",l.type=i,l.request=a,o[1](l)}}),\"chunk-\"+t,t)}};var t=function(t,r){var o,i,a=r[0],l=r[1],s=r[2],u=0;if(a.some((function(t){return 0!==e[t]}))){for(o in l)n.o(l,o)&&(n.m[o]=l[o]);if(s)s(n)}for(t&&t(r);u<a.length;u++)i=a[u],n.o(e,i)&&e[i]&&e[i][0](),e[i]=0},r=self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))}(),function(){\"use strict\";var e=n(2791),t=n.t(e,2),r=n(1250);function o(e){if(Array.isArray(e))return e}var i=n(181);function a(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function l(e,t){return o(e)||function(e,t){var n=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null!=n){var r,o,i,a,l=[],s=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=i.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(c){u=!0,o=c}finally{try{if(!s&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(u)throw o}}return l}}(e,t)||(0,i.Z)(e,t)||a()}var s=n(3433);function u(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function c(e){return c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c(e)}function d(e){var t=function(e,t){if(\"object\"!==c(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||\"default\");if(\"object\"!==c(r))return r;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===t?String:Number)(e)}(e,\"string\");return\"symbol\"===c(t)?t:String(t)}function f(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,d(r.key),r)}}function h(e,t,n){return t&&f(e.prototype,t),n&&f(e,n),Object.defineProperty(e,\"prototype\",{writable:!1}),e}function p(e,t){return p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},p(e,t)}function m(e,t){if(\"function\"!==typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,\"prototype\",{writable:!1}),t&&p(e,t)}function g(e){return g=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},g(e)}function v(){if(\"undefined\"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"===typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function y(e,t){if(t&&(\"object\"===c(t)||\"function\"===typeof t))return t;if(void 0!==t)throw new TypeError(\"Derived constructors may only return object or undefined\");return function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e)}function b(e){var t=v();return function(){var n,r=g(e);if(t){var o=g(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return y(this,n)}}function w(e,t,n){return w=v()?Reflect.construct.bind():function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&p(o,n.prototype),o},w.apply(null,arguments)}function x(e){var t=\"function\"===typeof Map?new Map:void 0;return x=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf(\"[native code]\")))return e;var n;if(\"function\"!==typeof e)throw new TypeError(\"Super expression must either be null or a function\");if(\"undefined\"!==typeof t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return w(e,arguments,g(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),p(r,e)},x(e)}var k=n(9199);var _,S=n(7762);function C(){return C=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},C.apply(this,arguments)}!function(e){e.Pop=\"POP\",e.Push=\"PUSH\",e.Replace=\"REPLACE\"}(_||(_={}));var E,N=\"popstate\";function M(e,t){if(!1===e||null===e||\"undefined\"===typeof e)throw new Error(t)}function A(e,t){return{usr:e.state,key:e.key,idx:t}}function D(e,t,n,r){return void 0===n&&(n=null),C({pathname:\"string\"===typeof e?e:e.pathname,search:\"\",hash:\"\"},\"string\"===typeof t?L(t):t,{state:n,key:t&&t.key||r||Math.random().toString(36).substr(2,8)})}function P(e){var t=e.pathname,n=void 0===t?\"/\":t,r=e.search,o=void 0===r?\"\":r,i=e.hash,a=void 0===i?\"\":i;return o&&\"?\"!==o&&(n+=\"?\"===o.charAt(0)?o:\"?\"+o),a&&\"#\"!==a&&(n+=\"#\"===a.charAt(0)?a:\"#\"+a),n}function L(e){var t={};if(e){var n=e.indexOf(\"#\");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));var r=e.indexOf(\"?\");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function z(e,t,n,r){void 0===r&&(r={});var o=r,i=o.window,a=void 0===i?document.defaultView:i,l=o.v5Compat,s=void 0!==l&&l,u=a.history,c=_.Pop,d=null,f=h();function h(){return(u.state||{idx:null}).idx}function p(){c=_.Pop;var e=h(),t=null==e?null:e-f;f=e,d&&d({action:c,location:g.location,delta:t})}function m(e){var t=\"null\"!==a.location.origin?a.location.origin:a.location.href,n=\"string\"===typeof e?e:P(e);return M(t,\"No window.location.(origin|href) available to create URL for href: \"+n),new URL(n,t)}null==f&&(f=0,u.replaceState(C({},u.state,{idx:f}),\"\"));var g={get action(){return c},get location(){return e(a,u)},listen:function(e){if(d)throw new Error(\"A history only accepts one active listener\");return a.addEventListener(N,p),d=e,function(){a.removeEventListener(N,p),d=null}},createHref:function(e){return t(a,e)},createURL:m,encodeLocation:function(e){var t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){c=_.Push;var r=D(g.location,e,t);n&&n(r,e);var o=A(r,f=h()+1),i=g.createHref(r);try{u.pushState(o,\"\",i)}catch(l){a.location.assign(i)}s&&d&&d({action:c,location:g.location,delta:1})},replace:function(e,t){c=_.Replace;var r=D(g.location,e,t);n&&n(r,e);var o=A(r,f=h()),i=g.createHref(r);u.replaceState(o,\"\",i),s&&d&&d({action:c,location:g.location,delta:0})},go:function(e){return u.go(e)}};return g}function j(e,t,n){void 0===n&&(n=\"/\");var r=H((\"string\"===typeof t?L(t):t).pathname||\"/\",n);if(null==r)return null;var o=O(e);!function(e){e.sort((function(e,t){return e.score!==t.score?t.score-e.score:function(e,t){var n=e.length===t.length&&e.slice(0,-1).every((function(e,n){return e===t[n]}));return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map((function(e){return e.childrenIndex})),t.routesMeta.map((function(e){return e.childrenIndex})))}))}(o);for(var i=null,a=0;null==i&&a<o.length;++a)i=B(o[a],U(r));return i}function O(e,t,n,r){void 0===t&&(t=[]),void 0===n&&(n=[]),void 0===r&&(r=\"\");var o=function(e,o,i){var a={relativePath:void 0===i?e.path||\"\":i,caseSensitive:!0===e.caseSensitive,childrenIndex:o,route:e};a.relativePath.startsWith(\"/\")&&(M(a.relativePath.startsWith(r),'Absolute route path \"'+a.relativePath+'\" nested under path \"'+r+'\" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),a.relativePath=a.relativePath.slice(r.length));var l=Y([r,a.relativePath]),s=n.concat(a);e.children&&e.children.length>0&&(M(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path \"'+l+'\".'),O(e.children,t,s,l)),(null!=e.path||e.index)&&t.push({path:l,score:F(l,e.index),routesMeta:s})};return e.forEach((function(e,t){var n;if(\"\"!==e.path&&null!=(n=e.path)&&n.includes(\"?\")){var r,i=(0,S.Z)(T(e.path));try{for(i.s();!(r=i.n()).done;){var a=r.value;o(e,t,a)}}catch(l){i.e(l)}finally{i.f()}}else o(e,t)})),t}function T(e){var t=e.split(\"/\");if(0===t.length)return[];var n,r=o(n=t)||(0,k.Z)(n)||(0,i.Z)(n)||a(),l=r[0],u=r.slice(1),c=l.endsWith(\"?\"),d=l.replace(/\\?$/,\"\");if(0===u.length)return c?[d,\"\"]:[d];var f=T(u.join(\"/\")),h=[];return h.push.apply(h,(0,s.Z)(f.map((function(e){return\"\"===e?d:[d,e].join(\"/\")})))),c&&h.push.apply(h,(0,s.Z)(f)),h.map((function(t){return e.startsWith(\"/\")&&\"\"===t?\"/\":t}))}!function(e){e.data=\"data\",e.deferred=\"deferred\",e.redirect=\"redirect\",e.error=\"error\"}(E||(E={}));var I=/^:\\w+$/,R=function(e){return\"*\"===e};function F(e,t){var n=e.split(\"/\"),r=n.length;return n.some(R)&&(r+=-2),t&&(r+=2),n.filter((function(e){return!R(e)})).reduce((function(e,t){return e+(I.test(t)?3:\"\"===t?1:10)}),r)}function B(e,t){for(var n=e.routesMeta,r={},o=\"/\",i=[],a=0;a<n.length;++a){var l=n[a],s=a===n.length-1,u=\"/\"===o?t:t.slice(o.length)||\"/\",c=q({path:l.relativePath,caseSensitive:l.caseSensitive,end:s},u);if(!c)return null;Object.assign(r,c.params);var d=l.route;i.push({params:r,pathname:Y([o,c.pathname]),pathnameBase:X(Y([o,c.pathnameBase])),route:d}),\"/\"!==c.pathnameBase&&(o=Y([o,c.pathnameBase]))}return i}function q(e,t){\"string\"===typeof e&&(e={path:e,caseSensitive:!1,end:!0});var n=function(e,t,n){void 0===t&&(t=!1);void 0===n&&(n=!0);V(\"*\"===e||!e.endsWith(\"*\")||e.endsWith(\"/*\"),'Route path \"'+e+'\" will be treated as if it were \"'+e.replace(/\\*$/,\"/*\")+'\" because the `*` character must always follow a `/` in the pattern. To get rid of this warning, please change the route path to \"'+e.replace(/\\*$/,\"/*\")+'\".');var r=[],o=\"^\"+e.replace(/\\/*\\*?$/,\"\").replace(/^\\/*/,\"/\").replace(/[\\\\.*+^$?{}|()[\\]]/g,\"\\\\$&\").replace(/\\/:(\\w+)/g,(function(e,t){return r.push(t),\"/([^\\\\/]+)\"}));e.endsWith(\"*\")?(r.push(\"*\"),o+=\"*\"===e||\"/*\"===e?\"(.*)$\":\"(?:\\\\/(.+)|\\\\/*)$\"):n?o+=\"\\\\/*$\":\"\"!==e&&\"/\"!==e&&(o+=\"(?:(?=\\\\/|$))\");var i=new RegExp(o,t?void 0:\"i\");return[i,r]}(e.path,e.caseSensitive,e.end),r=l(n,2),o=r[0],i=r[1],a=t.match(o);if(!a)return null;var s=a[0],u=s.replace(/(.)\\/+$/,\"$1\"),c=a.slice(1);return{params:i.reduce((function(e,t,n){if(\"*\"===t){var r=c[n]||\"\";u=s.slice(0,s.length-r.length).replace(/(.)\\/+$/,\"$1\")}return e[t]=function(e,t){try{return decodeURIComponent(e)}catch(n){return V(!1,'The value for the URL param \"'+t+'\" will not be decoded because the string \"'+e+'\" is a malformed URL segment. This is probably due to a bad percent encoding ('+n+\").\"),e}}(c[n]||\"\",t),e}),{}),pathname:s,pathnameBase:u,pattern:e}}function U(e){try{return decodeURI(e)}catch(t){return V(!1,'The URL path \"'+e+'\" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+\").\"),e}}function H(e,t){if(\"/\"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;var n=t.endsWith(\"/\")?t.length-1:t.length,r=e.charAt(n);return r&&\"/\"!==r?null:e.slice(n)||\"/\"}function V(e,t){if(!e){\"undefined\"!==typeof console&&console.warn(t);try{throw new Error(t)}catch(n){}}}function W(e,t,n,r){return\"Cannot include a '\"+e+\"' character in a manually specified `to.\"+t+\"` field [\"+JSON.stringify(r)+\"].  Please separate it out to the `to.\"+n+'` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.'}function Z(e){return e.filter((function(e,t){return 0===t||e.route.path&&e.route.path.length>0}))}function $(e,t,n,r){var o;void 0===r&&(r=!1),\"string\"===typeof e?o=L(e):(M(!(o=C({},e)).pathname||!o.pathname.includes(\"?\"),W(\"?\",\"pathname\",\"search\",o)),M(!o.pathname||!o.pathname.includes(\"#\"),W(\"#\",\"pathname\",\"hash\",o)),M(!o.search||!o.search.includes(\"#\"),W(\"#\",\"search\",\"hash\",o)));var i,a=\"\"===e||\"\"===o.pathname,l=a?\"/\":o.pathname;if(r||null==l)i=n;else{var s=t.length-1;if(l.startsWith(\"..\")){for(var u=l.split(\"/\");\"..\"===u[0];)u.shift(),s-=1;o.pathname=u.join(\"/\")}i=s>=0?t[s]:\"/\"}var c=function(e,t){void 0===t&&(t=\"/\");var n=\"string\"===typeof e?L(e):e,r=n.pathname,o=n.search,i=void 0===o?\"\":o,a=n.hash,l=void 0===a?\"\":a,s=r?r.startsWith(\"/\")?r:function(e,t){var n=t.replace(/\\/+$/,\"\").split(\"/\");return e.split(\"/\").forEach((function(e){\"..\"===e?n.length>1&&n.pop():\".\"!==e&&n.push(e)})),n.length>1?n.join(\"/\"):\"/\"}(r,t):t;return{pathname:s,search:K(i),hash:G(l)}}(o,i),d=l&&\"/\"!==l&&l.endsWith(\"/\"),f=(a||\".\"===l)&&n.endsWith(\"/\");return c.pathname.endsWith(\"/\")||!d&&!f||(c.pathname+=\"/\"),c}var Y=function(e){return e.join(\"/\").replace(/\\/\\/+/g,\"/\")},X=function(e){return e.replace(/\\/+$/,\"\").replace(/^\\/*/,\"/\")},K=function(e){return e&&\"?\"!==e?e.startsWith(\"?\")?e:\"?\"+e:\"\"},G=function(e){return e&&\"#\"!==e?e.startsWith(\"#\")?e:\"#\"+e:\"\"},Q=function(e){m(n,e);var t=b(n);function n(){return u(this,n),t.apply(this,arguments)}return h(n)}(x(Error));function J(e){return null!=e&&\"number\"===typeof e.status&&\"string\"===typeof e.statusText&&\"boolean\"===typeof e.internal&&\"data\"in e}var ee=[\"post\",\"put\",\"patch\",\"delete\"],te=(new Set(ee),[\"get\"].concat(ee));new Set(te),new Set([301,302,303,307,308]),new Set([307,308]),\"undefined\"!==typeof window&&\"undefined\"!==typeof window.document&&window.document.createElement;Symbol(\"deferred\");function ne(){return ne=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ne.apply(this,arguments)}var re=\"function\"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},oe=e.useState,ie=e.useEffect,ae=e.useLayoutEffect,le=e.useDebugValue;function se(e){var t=e.getSnapshot,n=e.value;try{var r=t();return!re(n,r)}catch(o){return!0}}\"undefined\"===typeof window||\"undefined\"===typeof window.document||window.document.createElement,t.useSyncExternalStore;var ue=e.createContext(null);var ce=e.createContext(null);var de=e.createContext(null);var fe=e.createContext(null);var he=e.createContext(null);var pe=e.createContext({outlet:null,matches:[]});var me=e.createContext(null);function ge(){return null!=e.useContext(he)}function ve(){return ge()||M(!1),e.useContext(he).location}function ye(){ge()||M(!1);var t=e.useContext(fe),n=t.basename,r=t.navigator,o=e.useContext(pe).matches,i=ve().pathname,a=JSON.stringify(Z(o).map((function(e){return e.pathnameBase}))),l=e.useRef(!1);return e.useEffect((function(){l.current=!0})),e.useCallback((function(e,t){if(void 0===t&&(t={}),l.current)if(\"number\"!==typeof e){var o=$(e,JSON.parse(a),i,\"path\"===t.relative);\"/\"!==n&&(o.pathname=\"/\"===o.pathname?n:Y([n,o.pathname])),(t.replace?r.replace:r.push)(o,t.state,t)}else r.go(e)}),[n,r,a,i])}function be(t,n){var r=(void 0===n?{}:n).relative,o=e.useContext(pe).matches,i=ve().pathname,a=JSON.stringify(Z(o).map((function(e){return e.pathnameBase})));return e.useMemo((function(){return $(t,JSON.parse(a),i,\"path\"===r)}),[t,a,i,r])}function we(){var t=function(){var t,n=e.useContext(me),r=Ee(ke.UseRouteError),o=Ne(ke.UseRouteError);if(n)return n;return null==(t=r.errors)?void 0:t[o]}(),n=J(t)?t.status+\" \"+t.statusText:t instanceof Error?t.message:JSON.stringify(t),r=t instanceof Error?t.stack:null,o=\"rgba(200,200,200, 0.5)\",i={padding:\"0.5rem\",backgroundColor:o};return e.createElement(e.Fragment,null,e.createElement(\"h2\",null,\"Unexpected Application Error!\"),e.createElement(\"h3\",{style:{fontStyle:\"italic\"}},n),r?e.createElement(\"pre\",{style:i},r):null,null)}var xe,ke,_e=function(t){m(r,t);var n=b(r);function r(e){var t;return u(this,r),(t=n.call(this,e)).state={location:e.location,error:e.error},t}return h(r,[{key:\"componentDidCatch\",value:function(e,t){console.error(\"React Router caught the following error during render\",e,t)}},{key:\"render\",value:function(){return this.state.error?e.createElement(pe.Provider,{value:this.props.routeContext},e.createElement(me.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}],[{key:\"getDerivedStateFromError\",value:function(e){return{error:e}}},{key:\"getDerivedStateFromProps\",value:function(e,t){return t.location!==e.location?{error:e.error,location:e.location}:{error:e.error||t.error,location:t.location}}}]),r}(e.Component);function Se(t){var n=t.routeContext,r=t.match,o=t.children,i=e.useContext(ue);return i&&i.static&&i.staticContext&&r.route.errorElement&&(i.staticContext._deepestRenderedBoundaryId=r.route.id),e.createElement(pe.Provider,{value:n},o)}function Ce(t,n,r){if(void 0===n&&(n=[]),null==t){if(null==r||!r.errors)return null;t=r.matches}var o=t,i=null==r?void 0:r.errors;if(null!=i){var a=o.findIndex((function(e){return e.route.id&&(null==i?void 0:i[e.route.id])}));a>=0||M(!1),o=o.slice(0,Math.min(o.length,a+1))}return o.reduceRight((function(t,a,l){var s=a.route.id?null==i?void 0:i[a.route.id]:null,u=r?a.route.errorElement||e.createElement(we,null):null,c=n.concat(o.slice(0,l+1)),d=function(){return e.createElement(Se,{match:a,routeContext:{outlet:t,matches:c}},s?u:void 0!==a.route.element?a.route.element:t)};return r&&(a.route.errorElement||0===l)?e.createElement(_e,{location:r.location,component:u,error:s,children:d(),routeContext:{outlet:null,matches:c}}):d()}),null)}function Ee(t){var n=e.useContext(ce);return n||M(!1),n}function Ne(t){var n=function(t){var n=e.useContext(pe);return n||M(!1),n}(),r=n.matches[n.matches.length-1];return r.route.id||M(!1),r.route.id}!function(e){e.UseBlocker=\"useBlocker\",e.UseRevalidator=\"useRevalidator\"}(xe||(xe={})),function(e){e.UseLoaderData=\"useLoaderData\",e.UseActionData=\"useActionData\",e.UseRouteError=\"useRouteError\",e.UseNavigation=\"useNavigation\",e.UseRouteLoaderData=\"useRouteLoaderData\",e.UseMatches=\"useMatches\",e.UseRevalidator=\"useRevalidator\"}(ke||(ke={}));var Me;function Ae(e){M(!1)}function De(t){var n=t.basename,r=void 0===n?\"/\":n,o=t.children,i=void 0===o?null:o,a=t.location,l=t.navigationType,s=void 0===l?_.Pop:l,u=t.navigator,c=t.static,d=void 0!==c&&c;ge()&&M(!1);var f=r.replace(/^\\/*/,\"/\"),h=e.useMemo((function(){return{basename:f,navigator:u,static:d}}),[f,u,d]);\"string\"===typeof a&&(a=L(a));var p=a,m=p.pathname,g=void 0===m?\"/\":m,v=p.search,y=void 0===v?\"\":v,b=p.hash,w=void 0===b?\"\":b,x=p.state,k=void 0===x?null:x,S=p.key,C=void 0===S?\"default\":S,E=e.useMemo((function(){var e=H(g,f);return null==e?null:{pathname:e,search:y,hash:w,state:k,key:C}}),[f,g,y,w,k,C]);return null==E?null:e.createElement(fe.Provider,{value:h},e.createElement(he.Provider,{children:i,value:{location:E,navigationType:s}}))}function Pe(t){var n=t.children,r=t.location,o=e.useContext(ue);return function(t,n){ge()||M(!1);var r,o=e.useContext(fe).navigator,i=e.useContext(ce),a=e.useContext(pe).matches,l=a[a.length-1],s=l?l.params:{},u=(l&&l.pathname,l?l.pathnameBase:\"/\"),c=(l&&l.route,ve());if(n){var d,f=\"string\"===typeof n?L(n):n;\"/\"===u||(null==(d=f.pathname)?void 0:d.startsWith(u))||M(!1),r=f}else r=c;var h=r.pathname||\"/\",p=j(t,{pathname:\"/\"===u?h:h.slice(u.length)||\"/\"}),m=Ce(p&&p.map((function(e){return Object.assign({},e,{params:Object.assign({},s,e.params),pathname:Y([u,o.encodeLocation?o.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:\"/\"===e.pathnameBase?u:Y([u,o.encodeLocation?o.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])})})),a,i||void 0);return n&&m?e.createElement(he.Provider,{value:{location:ne({pathname:\"/\",search:\"\",hash:\"\",state:null,key:\"default\"},r),navigationType:_.Pop}},m):m}(o&&!n?o.router.routes:ze(n),r)}!function(e){e[e.pending=0]=\"pending\",e[e.success=1]=\"success\",e[e.error=2]=\"error\"}(Me||(Me={}));var Le=new Promise((function(){}));e.Component;function ze(t,n){void 0===n&&(n=[]);var r=[];return e.Children.forEach(t,(function(t,o){if(e.isValidElement(t))if(t.type!==e.Fragment){t.type!==Ae&&M(!1),t.props.index&&t.props.children&&M(!1);var i=[].concat((0,s.Z)(n),[o]),a={id:t.props.id||i.join(\"-\"),caseSensitive:t.props.caseSensitive,element:t.props.element,index:t.props.index,path:t.props.path,loader:t.props.loader,action:t.props.action,errorElement:t.props.errorElement,hasErrorBoundary:null!=t.props.errorElement,shouldRevalidate:t.props.shouldRevalidate,handle:t.props.handle};t.props.children&&(a.children=ze(t.props.children,i)),r.push(a)}else r.push.apply(r,ze(t.props.children,n))})),r}function je(){return je=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},je.apply(this,arguments)}function Oe(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var Te=[\"onClick\",\"relative\",\"reloadDocument\",\"replace\",\"state\",\"target\",\"to\",\"preventScrollReset\"];function Ie(t){var n,r=t.basename,o=t.children,i=t.window,a=e.useRef();null==a.current&&(a.current=(void 0===(n={window:i,v5Compat:!0})&&(n={}),z((function(e,t){var n=e.location;return D(\"\",{pathname:n.pathname,search:n.search,hash:n.hash},t.state&&t.state.usr||null,t.state&&t.state.key||\"default\")}),(function(e,t){return\"string\"===typeof t?t:P(t)}),null,n)));var s=a.current,u=l(e.useState({action:s.action,location:s.location}),2),c=u[0],d=u[1];return e.useLayoutEffect((function(){return s.listen(d)}),[s]),e.createElement(De,{basename:r,children:o,location:c.location,navigationType:c.action,navigator:s})}var Re=\"undefined\"!==typeof window&&\"undefined\"!==typeof window.document&&\"undefined\"!==typeof window.document.createElement,Fe=e.forwardRef((function(t,n){var r=t.onClick,o=t.relative,i=t.reloadDocument,a=t.replace,l=t.state,s=t.target,u=t.to,c=t.preventScrollReset,d=Oe(t,Te),f=\"string\"===typeof u?u:P(u),h=/^[a-z+]+:\\/\\//i.test(f)||f.startsWith(\"//\"),p=f,m=!1;if(Re&&h){var g=new URL(window.location.href),v=f.startsWith(\"//\")?new URL(g.protocol+f):new URL(f);v.origin===g.origin?p=v.pathname+v.search+v.hash:m=!0}var y=function(t,n){var r=(void 0===n?{}:n).relative;ge()||M(!1);var o=e.useContext(fe),i=o.basename,a=o.navigator,l=be(t,{relative:r}),s=l.hash,u=l.pathname,c=l.search,d=u;return\"/\"!==i&&(d=\"/\"===u?i:Y([i,u])),a.createHref({pathname:d,search:c,hash:s})}(p,{relative:o}),b=function(t,n){var r=void 0===n?{}:n,o=r.target,i=r.replace,a=r.state,l=r.preventScrollReset,s=r.relative,u=ye(),c=ve(),d=be(t,{relative:s});return e.useCallback((function(e){if(function(e,t){return 0===e.button&&(!t||\"_self\"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(e,o)){e.preventDefault();var n=void 0!==i?i:P(c)===P(d);u(t,{replace:n,state:a,preventScrollReset:l,relative:s})}}),[c,u,d,i,a,o,t,l,s])}(p,{replace:a,state:l,target:s,preventScrollReset:c,relative:o});return e.createElement(\"a\",je({},d,{href:h?f:y,onClick:m||i?r:function(e){r&&r(e),e.defaultPrevented||b(e)},ref:n,target:s}))}));var Be,qe;(function(e){e.UseScrollRestoration=\"useScrollRestoration\",e.UseSubmitImpl=\"useSubmitImpl\",e.UseFetcher=\"useFetcher\"})(Be||(Be={})),function(e){e.UseFetchers=\"useFetchers\",e.UseScrollRestoration=\"useScrollRestoration\"}(qe||(qe={}));function Ue(e,t,n){return(t=d(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ve(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?He(Object(n),!0).forEach((function(t){Ue(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):He(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function We(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var Ze=n(184);function $e(e){if(\"string\"===typeof e||\"number\"===typeof e)return\"\"+e;var t=\"\";if(Array.isArray(e))for(var n,r=0;r<e.length;r++)\"\"!==(n=$e(e[r]))&&(t+=(t&&\" \")+n);else for(var o in e)e[o]&&(t+=(t&&\" \")+o);return t}var Ye=n(327).useSyncExternalStoreWithSelector;function Xe(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.getState,r=arguments.length>2?arguments[2]:void 0,o=Ye(t.subscribe,t.getState,t.getServerState||t.getState,n,r);return(0,e.useDebugValue)(o),o}var Ke=function(e){var t,n=new Set,r=function(e,r){var o=\"function\"===typeof e?e(t):e;if(!Object.is(o,t)){var i=t;t=(null!=r?r:\"object\"!==typeof o)?o:Object.assign({},t,o),n.forEach((function(e){return e(t,i)}))}},o=function(){return t},i={setState:r,getState:o,subscribe:function(e){return n.add(e),function(){return n.delete(e)}},destroy:function(){console.warn(\"[DEPRECATED] The destroy method will be unsupported in the future version. You should use unsubscribe function returned by subscribe. Everything will be garbage collected if store is garbage collected.\"),n.clear()}};return t=e(r,o,i),i},Ge=function(e){return e?Ke(e):Ke};function Qe(e,t){if(Object.is(e,t))return!0;if(\"object\"!==typeof e||null===e||\"object\"!==typeof t||null===t)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;var n,r=(0,S.Z)(e);try{for(r.s();!(n=r.n()).done;){var o=l(n.value,2),i=o[0],a=o[1];if(!Object.is(a,t.get(i)))return!1}}catch(h){r.e(h)}finally{r.f()}return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;var s,u=(0,S.Z)(e);try{for(u.s();!(s=u.n()).done;){var c=s.value;if(!t.has(c))return!1}}catch(h){u.e(h)}finally{u.f()}return!0}var d=Object.keys(e);if(d.length!==Object.keys(t).length)return!1;for(var f=0;f<d.length;f++)if(!Object.prototype.hasOwnProperty.call(t,d[f])||!Object.is(e[d[f]],t[d[f]]))return!1;return!0}var Je={value:function(){}};function et(){for(var e,t=0,n=arguments.length,r={};t<n;++t){if(!(e=arguments[t]+\"\")||e in r||/[\\s.]/.test(e))throw new Error(\"illegal type: \"+e);r[e]=[]}return new tt(r)}function tt(e){this._=e}function nt(e,t){return e.trim().split(/^|\\s+/).map((function(e){var n=\"\",r=e.indexOf(\".\");if(r>=0&&(n=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw new Error(\"unknown type: \"+e);return{type:e,name:n}}))}function rt(e,t){for(var n,r=0,o=e.length;r<o;++r)if((n=e[r]).name===t)return n.value}function ot(e,t,n){for(var r=0,o=e.length;r<o;++r)if(e[r].name===t){e[r]=Je,e=e.slice(0,r).concat(e.slice(r+1));break}return null!=n&&e.push({name:t,value:n}),e}tt.prototype=et.prototype={constructor:tt,on:function(e,t){var n,r=this._,o=nt(e+\"\",r),i=-1,a=o.length;if(!(arguments.length<2)){if(null!=t&&\"function\"!==typeof t)throw new Error(\"invalid callback: \"+t);for(;++i<a;)if(n=(e=o[i]).type)r[n]=ot(r[n],e.name,t);else if(null==t)for(n in r)r[n]=ot(r[n],e.name,null);return this}for(;++i<a;)if((n=(e=o[i]).type)&&(n=rt(r[n],e.name)))return n},copy:function(){var e={},t=this._;for(var n in t)e[n]=t[n].slice();return new tt(e)},call:function(e,t){if((n=arguments.length-2)>0)for(var n,r,o=new Array(n),i=0;i<n;++i)o[i]=arguments[i+2];if(!this._.hasOwnProperty(e))throw new Error(\"unknown type: \"+e);for(i=0,n=(r=this._[e]).length;i<n;++i)r[i].value.apply(t,o)},apply:function(e,t,n){if(!this._.hasOwnProperty(e))throw new Error(\"unknown type: \"+e);for(var r=this._[e],o=0,i=r.length;o<i;++o)r[o].value.apply(t,n)}};var it=et;function at(){}function lt(e){return null==e?at:function(){return this.querySelector(e)}}function st(e){return null==e?[]:Array.isArray(e)?e:Array.from(e)}function ut(){return[]}function ct(e){return null==e?ut:function(){return this.querySelectorAll(e)}}function dt(e){return function(){return this.matches(e)}}function ft(e){return function(t){return t.matches(e)}}var ht=Array.prototype.find;function pt(){return this.firstElementChild}var mt=Array.prototype.filter;function gt(){return Array.from(this.children)}function vt(e){return new Array(e.length)}function yt(e,t){this.ownerDocument=e.ownerDocument,this.namespaceURI=e.namespaceURI,this._next=null,this._parent=e,this.__data__=t}function bt(e){return function(){return e}}function wt(e,t,n,r,o,i){for(var a,l=0,s=t.length,u=i.length;l<u;++l)(a=t[l])?(a.__data__=i[l],r[l]=a):n[l]=new yt(e,i[l]);for(;l<s;++l)(a=t[l])&&(o[l]=a)}function xt(e,t,n,r,o,i,a){var l,s,u,c=new Map,d=t.length,f=i.length,h=new Array(d);for(l=0;l<d;++l)(s=t[l])&&(h[l]=u=a.call(s,s.__data__,l,t)+\"\",c.has(u)?o[l]=s:c.set(u,s));for(l=0;l<f;++l)u=a.call(e,i[l],l,i)+\"\",(s=c.get(u))?(r[l]=s,s.__data__=i[l],c.delete(u)):n[l]=new yt(e,i[l]);for(l=0;l<d;++l)(s=t[l])&&c.get(h[l])===s&&(o[l]=s)}function kt(e){return e.__data__}function _t(e){return\"object\"===typeof e&&\"length\"in e?e:Array.from(e)}function St(e,t){return e<t?-1:e>t?1:e>=t?0:NaN}yt.prototype={constructor:yt,appendChild:function(e){return this._parent.insertBefore(e,this._next)},insertBefore:function(e,t){return this._parent.insertBefore(e,t)},querySelector:function(e){return this._parent.querySelector(e)},querySelectorAll:function(e){return this._parent.querySelectorAll(e)}};var Ct=\"http://www.w3.org/1999/xhtml\",Et={svg:\"http://www.w3.org/2000/svg\",xhtml:Ct,xlink:\"http://www.w3.org/1999/xlink\",xml:\"http://www.w3.org/XML/1998/namespace\",xmlns:\"http://www.w3.org/2000/xmlns/\"};function Nt(e){var t=e+=\"\",n=t.indexOf(\":\");return n>=0&&\"xmlns\"!==(t=e.slice(0,n))&&(e=e.slice(n+1)),Et.hasOwnProperty(t)?{space:Et[t],local:e}:e}function Mt(e){return function(){this.removeAttribute(e)}}function At(e){return function(){this.removeAttributeNS(e.space,e.local)}}function Dt(e,t){return function(){this.setAttribute(e,t)}}function Pt(e,t){return function(){this.setAttributeNS(e.space,e.local,t)}}function Lt(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttribute(e):this.setAttribute(e,n)}}function zt(e,t){return function(){var n=t.apply(this,arguments);null==n?this.removeAttributeNS(e.space,e.local):this.setAttributeNS(e.space,e.local,n)}}function jt(e){return e.ownerDocument&&e.ownerDocument.defaultView||e.document&&e||e.defaultView}function Ot(e){return function(){this.style.removeProperty(e)}}function Tt(e,t,n){return function(){this.style.setProperty(e,t,n)}}function It(e,t,n){return function(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(e):this.style.setProperty(e,r,n)}}function Rt(e,t){return e.style.getPropertyValue(t)||jt(e).getComputedStyle(e,null).getPropertyValue(t)}function Ft(e){return function(){delete this[e]}}function Bt(e,t){return function(){this[e]=t}}function qt(e,t){return function(){var n=t.apply(this,arguments);null==n?delete this[e]:this[e]=n}}function Ut(e){return e.trim().split(/^|\\s+/)}function Ht(e){return e.classList||new Vt(e)}function Vt(e){this._node=e,this._names=Ut(e.getAttribute(\"class\")||\"\")}function Wt(e,t){for(var n=Ht(e),r=-1,o=t.length;++r<o;)n.add(t[r])}function Zt(e,t){for(var n=Ht(e),r=-1,o=t.length;++r<o;)n.remove(t[r])}function $t(e){return function(){Wt(this,e)}}function Yt(e){return function(){Zt(this,e)}}function Xt(e,t){return function(){(t.apply(this,arguments)?Wt:Zt)(this,e)}}function Kt(){this.textContent=\"\"}function Gt(e){return function(){this.textContent=e}}function Qt(e){return function(){var t=e.apply(this,arguments);this.textContent=null==t?\"\":t}}function Jt(){this.innerHTML=\"\"}function en(e){return function(){this.innerHTML=e}}function tn(e){return function(){var t=e.apply(this,arguments);this.innerHTML=null==t?\"\":t}}function nn(){this.nextSibling&&this.parentNode.appendChild(this)}function rn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function on(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Ct&&t.documentElement.namespaceURI===Ct?t.createElement(e):t.createElementNS(n,e)}}function an(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function ln(e){var t=Nt(e);return(t.local?an:on)(t)}function sn(){return null}function un(){var e=this.parentNode;e&&e.removeChild(this)}function cn(){var e=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function dn(){var e=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(e,this.nextSibling):e}function fn(e){return e.trim().split(/^|\\s+/).map((function(e){var t=\"\",n=e.indexOf(\".\");return n>=0&&(t=e.slice(n+1),e=e.slice(0,n)),{type:e,name:t}}))}function hn(e){return function(){var t=this.__on;if(t){for(var n,r=0,o=-1,i=t.length;r<i;++r)n=t[r],e.type&&n.type!==e.type||n.name!==e.name?t[++o]=n:this.removeEventListener(n.type,n.listener,n.options);++o?t.length=o:delete this.__on}}}function pn(e,t,n){return function(){var r,o=this.__on,i=function(e){return function(t){e.call(this,t,this.__data__)}}(t);if(o)for(var a=0,l=o.length;a<l;++a)if((r=o[a]).type===e.type&&r.name===e.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=i,r.options=n),void(r.value=t);this.addEventListener(e.type,i,n),r={type:e.type,name:e.name,value:t,listener:i,options:n},o?o.push(r):this.__on=[r]}}function mn(e,t,n){var r=jt(e),o=r.CustomEvent;\"function\"===typeof o?o=new o(t,n):(o=r.document.createEvent(\"Event\"),n?(o.initEvent(t,n.bubbles,n.cancelable),o.detail=n.detail):o.initEvent(t,!1,!1)),e.dispatchEvent(o)}function gn(e,t){return function(){return mn(this,e,t)}}function vn(e,t){return function(){return mn(this,e,t.apply(this,arguments))}}function yn(){yn=function(){return e};var e={},t=Object.prototype,n=t.hasOwnProperty,r=Object.defineProperty||function(e,t,n){e[t]=n.value},o=\"function\"==typeof Symbol?Symbol:{},i=o.iterator||\"@@iterator\",a=o.asyncIterator||\"@@asyncIterator\",l=o.toStringTag||\"@@toStringTag\";function s(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},\"\")}catch(A){s=function(e,t,n){return e[t]=n}}function u(e,t,n,o){var i=t&&t.prototype instanceof h?t:h,a=Object.create(i.prototype),l=new E(o||[]);return r(a,\"_invoke\",{value:k(e,n,l)}),a}function d(e,t,n){try{return{type:\"normal\",arg:e.call(t,n)}}catch(A){return{type:\"throw\",arg:A}}}e.wrap=u;var f={};function h(){}function p(){}function m(){}var g={};s(g,i,(function(){return this}));var v=Object.getPrototypeOf,y=v&&v(v(N([])));y&&y!==t&&n.call(y,i)&&(g=y);var b=m.prototype=h.prototype=Object.create(g);function w(e){[\"next\",\"throw\",\"return\"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function x(e,t){function o(r,i,a,l){var s=d(e[r],e,i);if(\"throw\"!==s.type){var u=s.arg,f=u.value;return f&&\"object\"==c(f)&&n.call(f,\"__await\")?t.resolve(f.__await).then((function(e){o(\"next\",e,a,l)}),(function(e){o(\"throw\",e,a,l)})):t.resolve(f).then((function(e){u.value=e,a(u)}),(function(e){return o(\"throw\",e,a,l)}))}l(s.arg)}var i;r(this,\"_invoke\",{value:function(e,n){function r(){return new t((function(t,r){o(e,n,t,r)}))}return i=i?i.then(r,r):r()}})}function k(e,t,n){var r=\"suspendedStart\";return function(o,i){if(\"executing\"===r)throw new Error(\"Generator is already running\");if(\"completed\"===r){if(\"throw\"===o)throw i;return M()}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var l=_(a,n);if(l){if(l===f)continue;return l}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(\"suspendedStart\"===r)throw r=\"completed\",n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);r=\"executing\";var s=d(e,t,n);if(\"normal\"===s.type){if(r=n.done?\"completed\":\"suspendedYield\",s.arg===f)continue;return{value:s.arg,done:n.done}}\"throw\"===s.type&&(r=\"completed\",n.method=\"throw\",n.arg=s.arg)}}}function _(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,\"throw\"===n&&e.iterator.return&&(t.method=\"return\",t.arg=void 0,_(e,t),\"throw\"===t.method)||\"return\"!==n&&(t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a '\"+n+\"' method\")),f;var o=d(r,e.iterator,t.arg);if(\"throw\"===o.type)return t.method=\"throw\",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,f):i:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,f)}function S(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function E(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(S,this),this.reset(!0)}function N(e){if(e){var t=e[i];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:M}}function M(){return{value:void 0,done:!0}}return p.prototype=m,r(b,\"constructor\",{value:m,configurable:!0}),r(m,\"constructor\",{value:p,configurable:!0}),p.displayName=s(m,l,\"GeneratorFunction\"),e.isGeneratorFunction=function(e){var t=\"function\"==typeof e&&e.constructor;return!!t&&(t===p||\"GeneratorFunction\"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,l,\"GeneratorFunction\")),e.prototype=Object.create(b),e},e.awrap=function(e){return{__await:e}},w(x.prototype),s(x.prototype,a,(function(){return this})),e.AsyncIterator=x,e.async=function(t,n,r,o,i){void 0===i&&(i=Promise);var a=new x(u(t,n,r,o),i);return e.isGeneratorFunction(n)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},w(b),s(b,l,\"Generator\"),s(b,i,(function(){return this})),s(b,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},e.values=N,E.prototype={constructor:E,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)\"t\"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if(\"throw\"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return a.type=\"throw\",a.arg=e,t.next=n,r&&(t.method=\"next\",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return r(\"end\");if(i.tryLoc<=this.prev){var l=n.call(i,\"catchLoc\"),s=n.call(i,\"finallyLoc\");if(l&&s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(l){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!s)throw new Error(\"try statement without catch or finally\");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break}}i&&(\"break\"===e||\"continue\"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method=\"next\",this.next=i.finallyLoc,f):this.complete(a)},complete:function(e,t){if(\"throw\"===e.type)throw e.arg;return\"break\"===e.type||\"continue\"===e.type?this.next=e.arg:\"return\"===e.type?(this.rval=this.arg=e.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===e.type&&t&&(this.next=t),f},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if(\"throw\"===r.type){var o=r.arg;C(n)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,n){return this.delegate={iterator:N(e),resultName:t,nextLoc:n},\"next\"===this.method&&(this.arg=void 0),f}},e}Vt.prototype={add:function(e){this._names.indexOf(e)<0&&(this._names.push(e),this._node.setAttribute(\"class\",this._names.join(\" \")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute(\"class\",this._names.join(\" \")))},contains:function(e){return this._names.indexOf(e)>=0}};var bn=yn().mark(wn);function wn(){var e,t,n,r,o,i,a;return yn().wrap((function(l){for(;;)switch(l.prev=l.next){case 0:e=this._groups,t=0,n=e.length;case 1:if(!(t<n)){l.next=13;break}r=e[t],o=0,i=r.length;case 3:if(!(o<i)){l.next=10;break}if(!(a=r[o])){l.next=7;break}return l.next=7,a;case 7:++o,l.next=3;break;case 10:++t,l.next=1;break;case 13:case\"end\":return l.stop()}}),bn,this)}var xn=[null];function kn(e,t){this._groups=e,this._parents=t}function _n(){return new kn([[document.documentElement]],xn)}kn.prototype=_n.prototype=Ue({constructor:kn,select:function(e){\"function\"!==typeof e&&(e=lt(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var i,a,l=t[o],s=l.length,u=r[o]=new Array(s),c=0;c<s;++c)(i=l[c])&&(a=e.call(i,i.__data__,c,l))&&(\"__data__\"in i&&(a.__data__=i.__data__),u[c]=a);return new kn(r,this._parents)},selectAll:function(e){e=\"function\"===typeof e?function(e){return function(){return st(e.apply(this,arguments))}}(e):ct(e);for(var t=this._groups,n=t.length,r=[],o=[],i=0;i<n;++i)for(var a,l=t[i],s=l.length,u=0;u<s;++u)(a=l[u])&&(r.push(e.call(a,a.__data__,u,l)),o.push(a));return new kn(r,o)},selectChild:function(e){return this.select(null==e?pt:function(e){return function(){return ht.call(this.children,e)}}(\"function\"===typeof e?e:ft(e)))},selectChildren:function(e){return this.selectAll(null==e?gt:function(e){return function(){return mt.call(this.children,e)}}(\"function\"===typeof e?e:ft(e)))},filter:function(e){\"function\"!==typeof e&&(e=dt(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var i,a=t[o],l=a.length,s=r[o]=[],u=0;u<l;++u)(i=a[u])&&e.call(i,i.__data__,u,a)&&s.push(i);return new kn(r,this._parents)},data:function(e,t){if(!arguments.length)return Array.from(this,kt);var n=t?xt:wt,r=this._parents,o=this._groups;\"function\"!==typeof e&&(e=bt(e));for(var i=o.length,a=new Array(i),l=new Array(i),s=new Array(i),u=0;u<i;++u){var c=r[u],d=o[u],f=d.length,h=_t(e.call(c,c&&c.__data__,u,r)),p=h.length,m=l[u]=new Array(p),g=a[u]=new Array(p),v=s[u]=new Array(f);n(c,d,m,g,v,h,t);for(var y,b,w=0,x=0;w<p;++w)if(y=m[w]){for(w>=x&&(x=w+1);!(b=g[x])&&++x<p;);y._next=b||null}}return(a=new kn(a,r))._enter=l,a._exit=s,a},enter:function(){return new kn(this._enter||this._groups.map(vt),this._parents)},exit:function(){return new kn(this._exit||this._groups.map(vt),this._parents)},join:function(e,t,n){var r=this.enter(),o=this,i=this.exit();return\"function\"===typeof e?(r=e(r))&&(r=r.selection()):r=r.append(e+\"\"),null!=t&&(o=t(o))&&(o=o.selection()),null==n?i.remove():n(i),r&&o?r.merge(o).order():o},merge:function(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,o=n.length,i=r.length,a=Math.min(o,i),l=new Array(o),s=0;s<a;++s)for(var u,c=n[s],d=r[s],f=c.length,h=l[s]=new Array(f),p=0;p<f;++p)(u=c[p]||d[p])&&(h[p]=u);for(;s<o;++s)l[s]=n[s];return new kn(l,this._parents)},selection:function(){return this},order:function(){for(var e=this._groups,t=-1,n=e.length;++t<n;)for(var r,o=e[t],i=o.length-1,a=o[i];--i>=0;)(r=o[i])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(e){function t(t,n){return t&&n?e(t.__data__,n.__data__):!t-!n}e||(e=St);for(var n=this._groups,r=n.length,o=new Array(r),i=0;i<r;++i){for(var a,l=n[i],s=l.length,u=o[i]=new Array(s),c=0;c<s;++c)(a=l[c])&&(u[c]=a);u.sort(t)}return new kn(o,this._parents).order()},call:function(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var e=this._groups,t=0,n=e.length;t<n;++t)for(var r=e[t],o=0,i=r.length;o<i;++o){var a=r[o];if(a)return a}return null},size:function(){var e,t=0,n=(0,S.Z)(this);try{for(n.s();!(e=n.n()).done;){e.value;++t}}catch(r){n.e(r)}finally{n.f()}return t},empty:function(){return!this.node()},each:function(e){for(var t=this._groups,n=0,r=t.length;n<r;++n)for(var o,i=t[n],a=0,l=i.length;a<l;++a)(o=i[a])&&e.call(o,o.__data__,a,i);return this},attr:function(e,t){var n=Nt(e);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==t?n.local?At:Mt:\"function\"===typeof t?n.local?zt:Lt:n.local?Pt:Dt)(n,t))},style:function(e,t,n){return arguments.length>1?this.each((null==t?Ot:\"function\"===typeof t?It:Tt)(e,t,null==n?\"\":n)):Rt(this.node(),e)},property:function(e,t){return arguments.length>1?this.each((null==t?Ft:\"function\"===typeof t?qt:Bt)(e,t)):this.node()[e]},classed:function(e,t){var n=Ut(e+\"\");if(arguments.length<2){for(var r=Ht(this.node()),o=-1,i=n.length;++o<i;)if(!r.contains(n[o]))return!1;return!0}return this.each((\"function\"===typeof t?Xt:t?$t:Yt)(n,t))},text:function(e){return arguments.length?this.each(null==e?Kt:(\"function\"===typeof e?Qt:Gt)(e)):this.node().textContent},html:function(e){return arguments.length?this.each(null==e?Jt:(\"function\"===typeof e?tn:en)(e)):this.node().innerHTML},raise:function(){return this.each(nn)},lower:function(){return this.each(rn)},append:function(e){var t=\"function\"===typeof e?e:ln(e);return this.select((function(){return this.appendChild(t.apply(this,arguments))}))},insert:function(e,t){var n=\"function\"===typeof e?e:ln(e),r=null==t?sn:\"function\"===typeof t?t:lt(t);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(un)},clone:function(e){return this.select(e?dn:cn)},datum:function(e){return arguments.length?this.property(\"__data__\",e):this.node().__data__},on:function(e,t,n){var r,o,i=fn(e+\"\"),a=i.length;if(!(arguments.length<2)){for(l=t?pn:hn,r=0;r<a;++r)this.each(l(i[r],t,n));return this}var l=this.node().__on;if(l)for(var s,u=0,c=l.length;u<c;++u)for(r=0,s=l[u];r<a;++r)if((o=i[r]).type===s.type&&o.name===s.name)return s.value},dispatch:function(e,t){return this.each((\"function\"===typeof t?vn:gn)(e,t))}},Symbol.iterator,wn);var Sn=_n;function Cn(e){return\"string\"===typeof e?new kn([[document.querySelector(e)]],[document.documentElement]):new kn([[e]],xn)}function En(e,t){if(e=function(e){for(var t;t=e.sourceEvent;)e=t;return e}(e),void 0===t&&(t=e.currentTarget),t){var n=t.ownerSVGElement||t;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=e.clientX,r.y=e.clientY,[(r=r.matrixTransform(t.getScreenCTM().inverse())).x,r.y]}if(t.getBoundingClientRect){var o=t.getBoundingClientRect();return[e.clientX-o.left-t.clientLeft,e.clientY-o.top-t.clientTop]}}return[e.pageX,e.pageY]}var Nn={passive:!1},Mn={capture:!0,passive:!1};function An(e){e.stopImmediatePropagation()}function Dn(e){e.preventDefault(),e.stopImmediatePropagation()}function Pn(e){var t=e.document.documentElement,n=Cn(e).on(\"dragstart.drag\",Dn,Mn);\"onselectstart\"in t?n.on(\"selectstart.drag\",Dn,Mn):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect=\"none\")}function Ln(e,t){var n=e.document.documentElement,r=Cn(e).on(\"dragstart.drag\",null);t&&(r.on(\"click.drag\",Dn,Mn),setTimeout((function(){r.on(\"click.drag\",null)}),0)),\"onselectstart\"in n?r.on(\"selectstart.drag\",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}var zn=function(e){return function(){return e}};function jn(e,t){var n=t.sourceEvent,r=t.subject,o=t.target,i=t.identifier,a=t.active,l=t.x,s=t.y,u=t.dx,c=t.dy,d=t.dispatch;Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:r,enumerable:!0,configurable:!0},target:{value:o,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:a,enumerable:!0,configurable:!0},x:{value:l,enumerable:!0,configurable:!0},y:{value:s,enumerable:!0,configurable:!0},dx:{value:u,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:d}})}function On(e){return!e.ctrlKey&&!e.button}function Tn(){return this.parentNode}function In(e,t){return null==t?{x:e.x,y:e.y}:t}function Rn(){return navigator.maxTouchPoints||\"ontouchstart\"in this}jn.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function Fn(e){return((e=Math.exp(e))+1/e)/2}var Bn,qn,Un=function e(t,n,r){function o(e,o){var i,a,l=e[0],s=e[1],u=e[2],c=o[0],d=o[1],f=o[2],h=c-l,p=d-s,m=h*h+p*p;if(m<1e-12)a=Math.log(f/u)/t,i=function(e){return[l+e*h,s+e*p,u*Math.exp(t*e*a)]};else{var g=Math.sqrt(m),v=(f*f-u*u+r*m)/(2*u*n*g),y=(f*f-u*u-r*m)/(2*f*n*g),b=Math.log(Math.sqrt(v*v+1)-v),w=Math.log(Math.sqrt(y*y+1)-y);a=(w-b)/t,i=function(e){var r,o=e*a,i=Fn(b),c=u/(n*g)*(i*(r=t*o+b,((r=Math.exp(2*r))-1)/(r+1))-function(e){return((e=Math.exp(e))-1/e)/2}(b));return[l+c*h,s+c*p,u*i/Fn(t*o+b)]}}return i.duration=1e3*a*t/Math.SQRT2,i}return o.rho=function(t){var n=Math.max(.001,+t),r=n*n;return e(n,r,r*r)},o}(Math.SQRT2,2,4),Hn=0,Vn=0,Wn=0,Zn=0,$n=0,Yn=0,Xn=\"object\"===typeof performance&&performance.now?performance:Date,Kn=\"object\"===typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(e){setTimeout(e,17)};function Gn(){return $n||(Kn(Qn),$n=Xn.now()+Yn)}function Qn(){$n=0}function Jn(){this._call=this._time=this._next=null}function er(e,t,n){var r=new Jn;return r.restart(e,t,n),r}function tr(){$n=(Zn=Xn.now())+Yn,Hn=Vn=0;try{!function(){Gn(),++Hn;for(var e,t=Bn;t;)(e=$n-t._time)>=0&&t._call.call(void 0,e),t=t._next;--Hn}()}finally{Hn=0,function(){var e,t,n=Bn,r=1/0;for(;n;)n._call?(r>n._time&&(r=n._time),e=n,n=n._next):(t=n._next,n._next=null,n=e?e._next=t:Bn=t);qn=e,rr(r)}(),$n=0}}function nr(){var e=Xn.now(),t=e-Zn;t>1e3&&(Yn-=t,Zn=e)}function rr(e){Hn||(Vn&&(Vn=clearTimeout(Vn)),e-$n>24?(e<1/0&&(Vn=setTimeout(tr,e-Xn.now()-Yn)),Wn&&(Wn=clearInterval(Wn))):(Wn||(Zn=Xn.now(),Wn=setInterval(nr,1e3)),Hn=1,Kn(tr)))}function or(e,t,n){var r=new Jn;return t=null==t?0:+t,r.restart((function(n){r.stop(),e(n+t)}),t,n),r}Jn.prototype=er.prototype={constructor:Jn,restart:function(e,t,n){if(\"function\"!==typeof e)throw new TypeError(\"callback is not a function\");n=(null==n?Gn():+n)+(null==t?0:+t),this._next||qn===this||(qn?qn._next=this:Bn=this,qn=this),this._call=e,this._time=n,rr()},stop:function(){this._call&&(this._call=null,this._time=1/0,rr())}};var ir=it(\"start\",\"end\",\"cancel\",\"interrupt\"),ar=[];function lr(e,t,n,r,o,i){var a=e.__transition;if(a){if(n in a)return}else e.__transition={};!function(e,t,n){var r,o=e.__transition;function i(e){n.state=1,n.timer.restart(a,n.delay,n.time),n.delay<=e&&a(e-n.delay)}function a(i){var u,c,d,f;if(1!==n.state)return s();for(u in o)if((f=o[u]).name===n.name){if(3===f.state)return or(a);4===f.state?(f.state=6,f.timer.stop(),f.on.call(\"interrupt\",e,e.__data__,f.index,f.group),delete o[u]):+u<t&&(f.state=6,f.timer.stop(),f.on.call(\"cancel\",e,e.__data__,f.index,f.group),delete o[u])}if(or((function(){3===n.state&&(n.state=4,n.timer.restart(l,n.delay,n.time),l(i))})),n.state=2,n.on.call(\"start\",e,e.__data__,n.index,n.group),2===n.state){for(n.state=3,r=new Array(d=n.tween.length),u=0,c=-1;u<d;++u)(f=n.tween[u].value.call(e,e.__data__,n.index,n.group))&&(r[++c]=f);r.length=c+1}}function l(t){for(var o=t<n.duration?n.ease.call(null,t/n.duration):(n.timer.restart(s),n.state=5,1),i=-1,a=r.length;++i<a;)r[i].call(e,o);5===n.state&&(n.on.call(\"end\",e,e.__data__,n.index,n.group),s())}function s(){for(var r in n.state=6,n.timer.stop(),delete o[t],o)return;delete e.__transition}o[t]=n,n.timer=er(i,0,n.time)}(e,n,{name:t,index:r,group:o,on:ir,tween:ar,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:0})}function sr(e,t){var n=cr(e,t);if(n.state>0)throw new Error(\"too late; already scheduled\");return n}function ur(e,t){var n=cr(e,t);if(n.state>3)throw new Error(\"too late; already running\");return n}function cr(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error(\"transition not found\");return n}function dr(e,t){var n,r,o,i=e.__transition,a=!0;if(i){for(o in t=null==t?null:t+\"\",i)(n=i[o]).name===t?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?\"interrupt\":\"cancel\",e,e.__data__,n.index,n.group),delete i[o]):a=!1;a&&delete e.__transition}}function fr(e,t){return e=+e,t=+t,function(n){return e*(1-n)+t*n}}var hr,pr=180/Math.PI,mr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function gr(e,t,n,r,o,i){var a,l,s;return(a=Math.sqrt(e*e+t*t))&&(e/=a,t/=a),(s=e*n+t*r)&&(n-=e*s,r-=t*s),(l=Math.sqrt(n*n+r*r))&&(n/=l,r/=l,s/=l),e*r<t*n&&(e=-e,t=-t,s=-s,a=-a),{translateX:o,translateY:i,rotate:Math.atan2(t,e)*pr,skewX:Math.atan(s)*pr,scaleX:a,scaleY:l}}function vr(e,t,n,r){function o(e){return e.length?e.pop()+\" \":\"\"}return function(i,a){var l=[],s=[];return i=e(i),a=e(a),function(e,r,o,i,a,l){if(e!==o||r!==i){var s=a.push(\"translate(\",null,t,null,n);l.push({i:s-4,x:fr(e,o)},{i:s-2,x:fr(r,i)})}else(o||i)&&a.push(\"translate(\"+o+t+i+n)}(i.translateX,i.translateY,a.translateX,a.translateY,l,s),function(e,t,n,i){e!==t?(e-t>180?t+=360:t-e>180&&(e+=360),i.push({i:n.push(o(n)+\"rotate(\",null,r)-2,x:fr(e,t)})):t&&n.push(o(n)+\"rotate(\"+t+r)}(i.rotate,a.rotate,l,s),function(e,t,n,i){e!==t?i.push({i:n.push(o(n)+\"skewX(\",null,r)-2,x:fr(e,t)}):t&&n.push(o(n)+\"skewX(\"+t+r)}(i.skewX,a.skewX,l,s),function(e,t,n,r,i,a){if(e!==n||t!==r){var l=i.push(o(i)+\"scale(\",null,\",\",null,\")\");a.push({i:l-4,x:fr(e,n)},{i:l-2,x:fr(t,r)})}else 1===n&&1===r||i.push(o(i)+\"scale(\"+n+\",\"+r+\")\")}(i.scaleX,i.scaleY,a.scaleX,a.scaleY,l,s),i=a=null,function(e){for(var t,n=-1,r=s.length;++n<r;)l[(t=s[n]).i]=t.x(e);return l.join(\"\")}}}var yr=vr((function(e){var t=new(\"function\"===typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(e+\"\");return t.isIdentity?mr:gr(t.a,t.b,t.c,t.d,t.e,t.f)}),\"px, \",\"px)\",\"deg)\"),br=vr((function(e){return null==e?mr:(hr||(hr=document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")),hr.setAttribute(\"transform\",e),(e=hr.transform.baseVal.consolidate())?gr((e=e.matrix).a,e.b,e.c,e.d,e.e,e.f):mr)}),\", \",\")\",\")\");function wr(e,t){var n,r;return function(){var o=ur(this,e),i=o.tween;if(i!==n)for(var a=0,l=(r=n=i).length;a<l;++a)if(r[a].name===t){(r=r.slice()).splice(a,1);break}o.tween=r}}function xr(e,t,n){var r,o;if(\"function\"!==typeof n)throw new Error;return function(){var i=ur(this,e),a=i.tween;if(a!==r){o=(r=a).slice();for(var l={name:t,value:n},s=0,u=o.length;s<u;++s)if(o[s].name===t){o[s]=l;break}s===u&&o.push(l)}i.tween=o}}function kr(e,t,n){var r=e._id;return e.each((function(){var e=ur(this,r);(e.value||(e.value={}))[t]=n.apply(this,arguments)})),function(e){return cr(e,r).value[t]}}function _r(e,t,n){e.prototype=t.prototype=n,n.constructor=e}function Sr(e,t){var n=Object.create(e.prototype);for(var r in t)n[r]=t[r];return n}function Cr(){}var Er=.7,Nr=1/Er,Mr=\"\\\\s*([+-]?\\\\d+)\\\\s*\",Ar=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",Dr=\"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",Pr=/^#([0-9a-f]{3,8})$/,Lr=new RegExp(\"^rgb\\\\(\".concat(Mr,\",\").concat(Mr,\",\").concat(Mr,\"\\\\)$\")),zr=new RegExp(\"^rgb\\\\(\".concat(Dr,\",\").concat(Dr,\",\").concat(Dr,\"\\\\)$\")),jr=new RegExp(\"^rgba\\\\(\".concat(Mr,\",\").concat(Mr,\",\").concat(Mr,\",\").concat(Ar,\"\\\\)$\")),Or=new RegExp(\"^rgba\\\\(\".concat(Dr,\",\").concat(Dr,\",\").concat(Dr,\",\").concat(Ar,\"\\\\)$\")),Tr=new RegExp(\"^hsl\\\\(\".concat(Ar,\",\").concat(Dr,\",\").concat(Dr,\"\\\\)$\")),Ir=new RegExp(\"^hsla\\\\(\".concat(Ar,\",\").concat(Dr,\",\").concat(Dr,\",\").concat(Ar,\"\\\\)$\")),Rr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function Fr(){return this.rgb().formatHex()}function Br(){return this.rgb().formatRgb()}function qr(e){var t,n;return e=(e+\"\").trim().toLowerCase(),(t=Pr.exec(e))?(n=t[1].length,t=parseInt(t[1],16),6===n?Ur(t):3===n?new Zr(t>>8&15|t>>4&240,t>>4&15|240&t,(15&t)<<4|15&t,1):8===n?Hr(t>>24&255,t>>16&255,t>>8&255,(255&t)/255):4===n?Hr(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|240&t,((15&t)<<4|15&t)/255):null):(t=Lr.exec(e))?new Zr(t[1],t[2],t[3],1):(t=zr.exec(e))?new Zr(255*t[1]/100,255*t[2]/100,255*t[3]/100,1):(t=jr.exec(e))?Hr(t[1],t[2],t[3],t[4]):(t=Or.exec(e))?Hr(255*t[1]/100,255*t[2]/100,255*t[3]/100,t[4]):(t=Tr.exec(e))?Qr(t[1],t[2]/100,t[3]/100,1):(t=Ir.exec(e))?Qr(t[1],t[2]/100,t[3]/100,t[4]):Rr.hasOwnProperty(e)?Ur(Rr[e]):\"transparent\"===e?new Zr(NaN,NaN,NaN,0):null}function Ur(e){return new Zr(e>>16&255,e>>8&255,255&e,1)}function Hr(e,t,n,r){return r<=0&&(e=t=n=NaN),new Zr(e,t,n,r)}function Vr(e){return e instanceof Cr||(e=qr(e)),e?new Zr((e=e.rgb()).r,e.g,e.b,e.opacity):new Zr}function Wr(e,t,n,r){return 1===arguments.length?Vr(e):new Zr(e,t,n,null==r?1:r)}function Zr(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}function $r(){return\"#\".concat(Gr(this.r)).concat(Gr(this.g)).concat(Gr(this.b))}function Yr(){var e=Xr(this.opacity);return\"\".concat(1===e?\"rgb(\":\"rgba(\").concat(Kr(this.r),\", \").concat(Kr(this.g),\", \").concat(Kr(this.b)).concat(1===e?\")\":\", \".concat(e,\")\"))}function Xr(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Kr(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function Gr(e){return((e=Kr(e))<16?\"0\":\"\")+e.toString(16)}function Qr(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new eo(e,t,n,r)}function Jr(e){if(e instanceof eo)return new eo(e.h,e.s,e.l,e.opacity);if(e instanceof Cr||(e=qr(e)),!e)return new eo;if(e instanceof eo)return e;var t=(e=e.rgb()).r/255,n=e.g/255,r=e.b/255,o=Math.min(t,n,r),i=Math.max(t,n,r),a=NaN,l=i-o,s=(i+o)/2;return l?(a=t===i?(n-r)/l+6*(n<r):n===i?(r-t)/l+2:(t-n)/l+4,l/=s<.5?i+o:2-i-o,a*=60):l=s>0&&s<1?0:a,new eo(a,l,s,e.opacity)}function eo(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}function to(e){return(e=(e||0)%360)<0?e+360:e}function no(e){return Math.max(0,Math.min(1,e||0))}function ro(e,t,n){return 255*(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)}function oo(e,t,n,r,o){var i=e*e,a=i*e;return((1-3*e+3*i-a)*t+(4-6*i+3*a)*n+(1+3*e+3*i-3*a)*r+a*o)/6}_r(Cr,qr,{copy:function(e){return Object.assign(new this.constructor,this,e)},displayable:function(){return this.rgb().displayable()},hex:Fr,formatHex:Fr,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return Jr(this).formatHsl()},formatRgb:Br,toString:Br}),_r(Zr,Wr,Sr(Cr,{brighter:function(e){return e=null==e?Nr:Math.pow(Nr,e),new Zr(this.r*e,this.g*e,this.b*e,this.opacity)},darker:function(e){return e=null==e?Er:Math.pow(Er,e),new Zr(this.r*e,this.g*e,this.b*e,this.opacity)},rgb:function(){return this},clamp:function(){return new Zr(Kr(this.r),Kr(this.g),Kr(this.b),Xr(this.opacity))},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:$r,formatHex:$r,formatHex8:function(){return\"#\".concat(Gr(this.r)).concat(Gr(this.g)).concat(Gr(this.b)).concat(Gr(255*(isNaN(this.opacity)?1:this.opacity)))},formatRgb:Yr,toString:Yr})),_r(eo,(function(e,t,n,r){return 1===arguments.length?Jr(e):new eo(e,t,n,null==r?1:r)}),Sr(Cr,{brighter:function(e){return e=null==e?Nr:Math.pow(Nr,e),new eo(this.h,this.s,this.l*e,this.opacity)},darker:function(e){return e=null==e?Er:Math.pow(Er,e),new eo(this.h,this.s,this.l*e,this.opacity)},rgb:function(){var e=this.h%360+360*(this.h<0),t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,o=2*n-r;return new Zr(ro(e>=240?e-240:e+120,o,r),ro(e,o,r),ro(e<120?e+240:e-120,o,r),this.opacity)},clamp:function(){return new eo(to(this.h),no(this.s),no(this.l),Xr(this.opacity))},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var e=Xr(this.opacity);return\"\".concat(1===e?\"hsl(\":\"hsla(\").concat(to(this.h),\", \").concat(100*no(this.s),\"%, \").concat(100*no(this.l),\"%\").concat(1===e?\")\":\", \".concat(e,\")\"))}}));var io=function(e){return function(){return e}};function ao(e,t){return function(n){return e+n*t}}function lo(e){return 1===(e=+e)?so:function(t,n){return n-t?function(e,t,n){return e=Math.pow(e,n),t=Math.pow(t,n)-e,n=1/n,function(r){return Math.pow(e+r*t,n)}}(t,n,e):io(isNaN(t)?n:t)}}function so(e,t){var n=t-e;return n?ao(e,n):io(isNaN(e)?t:e)}var uo=function e(t){var n=lo(t);function r(e,t){var r=n((e=Wr(e)).r,(t=Wr(t)).r),o=n(e.g,t.g),i=n(e.b,t.b),a=so(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=o(t),e.b=i(t),e.opacity=a(t),e+\"\"}}return r.gamma=e,r}(1);function co(e){return function(t){var n,r,o=t.length,i=new Array(o),a=new Array(o),l=new Array(o);for(n=0;n<o;++n)r=Wr(t[n]),i[n]=r.r||0,a[n]=r.g||0,l[n]=r.b||0;return i=e(i),a=e(a),l=e(l),r.opacity=1,function(e){return r.r=i(e),r.g=a(e),r.b=l(e),r+\"\"}}}co((function(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),o=e[r],i=e[r+1],a=r>0?e[r-1]:2*o-i,l=r<t-1?e[r+2]:2*i-o;return oo((n-r/t)*t,a,o,i,l)}})),co((function(e){var t=e.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*t),o=e[(r+t-1)%t],i=e[r%t],a=e[(r+1)%t],l=e[(r+2)%t];return oo((n-r/t)*t,o,i,a,l)}}));var fo=/[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,ho=new RegExp(fo.source,\"g\");function po(e,t){var n,r,o,i=fo.lastIndex=ho.lastIndex=0,a=-1,l=[],s=[];for(e+=\"\",t+=\"\";(n=fo.exec(e))&&(r=ho.exec(t));)(o=r.index)>i&&(o=t.slice(i,o),l[a]?l[a]+=o:l[++a]=o),(n=n[0])===(r=r[0])?l[a]?l[a]+=r:l[++a]=r:(l[++a]=null,s.push({i:a,x:fr(n,r)})),i=ho.lastIndex;return i<t.length&&(o=t.slice(i),l[a]?l[a]+=o:l[++a]=o),l.length<2?s[0]?function(e){return function(t){return e(t)+\"\"}}(s[0].x):function(e){return function(){return e}}(t):(t=s.length,function(e){for(var n,r=0;r<t;++r)l[(n=s[r]).i]=n.x(e);return l.join(\"\")})}function mo(e,t){var n;return(\"number\"===typeof t?fr:t instanceof qr?uo:(n=qr(t))?(t=n,uo):po)(e,t)}function go(e){return function(){this.removeAttribute(e)}}function vo(e){return function(){this.removeAttributeNS(e.space,e.local)}}function yo(e,t,n){var r,o,i=n+\"\";return function(){var a=this.getAttribute(e);return a===i?null:a===r?o:o=t(r=a,n)}}function bo(e,t,n){var r,o,i=n+\"\";return function(){var a=this.getAttributeNS(e.space,e.local);return a===i?null:a===r?o:o=t(r=a,n)}}function wo(e,t,n){var r,o,i;return function(){var a,l,s=n(this);if(null!=s)return(a=this.getAttribute(e))===(l=s+\"\")?null:a===r&&l===o?i:(o=l,i=t(r=a,s));this.removeAttribute(e)}}function xo(e,t,n){var r,o,i;return function(){var a,l,s=n(this);if(null!=s)return(a=this.getAttributeNS(e.space,e.local))===(l=s+\"\")?null:a===r&&l===o?i:(o=l,i=t(r=a,s));this.removeAttributeNS(e.space,e.local)}}function ko(e,t){return function(n){this.setAttribute(e,t.call(this,n))}}function _o(e,t){return function(n){this.setAttributeNS(e.space,e.local,t.call(this,n))}}function So(e,t){var n,r;function o(){var o=t.apply(this,arguments);return o!==r&&(n=(r=o)&&_o(e,o)),n}return o._value=t,o}function Co(e,t){var n,r;function o(){var o=t.apply(this,arguments);return o!==r&&(n=(r=o)&&ko(e,o)),n}return o._value=t,o}function Eo(e,t){return function(){sr(this,e).delay=+t.apply(this,arguments)}}function No(e,t){return t=+t,function(){sr(this,e).delay=t}}function Mo(e,t){return function(){ur(this,e).duration=+t.apply(this,arguments)}}function Ao(e,t){return t=+t,function(){ur(this,e).duration=t}}function Do(e,t){if(\"function\"!==typeof t)throw new Error;return function(){ur(this,e).ease=t}}function Po(e,t,n){var r,o,i=function(e){return(e+\"\").trim().split(/^|\\s+/).every((function(e){var t=e.indexOf(\".\");return t>=0&&(e=e.slice(0,t)),!e||\"start\"===e}))}(t)?sr:ur;return function(){var a=i(this,e),l=a.on;l!==r&&(o=(r=l).copy()).on(t,n),a.on=o}}var Lo=Sn.prototype.constructor;function zo(e){return function(){this.style.removeProperty(e)}}function jo(e,t,n){return function(r){this.style.setProperty(e,t.call(this,r),n)}}function Oo(e,t,n){var r,o;function i(){var i=t.apply(this,arguments);return i!==o&&(r=(o=i)&&jo(e,i,n)),r}return i._value=t,i}function To(e){return function(t){this.textContent=e.call(this,t)}}function Io(e){var t,n;function r(){var r=e.apply(this,arguments);return r!==n&&(t=(n=r)&&To(r)),t}return r._value=e,r}var Ro=0;function Fo(e,t,n,r){this._groups=e,this._parents=t,this._name=n,this._id=r}function Bo(){return++Ro}var qo=Sn.prototype;Fo.prototype=function(e){return Sn().transition(e)}.prototype=Ue({constructor:Fo,select:function(e){var t=this._name,n=this._id;\"function\"!==typeof e&&(e=lt(e));for(var r=this._groups,o=r.length,i=new Array(o),a=0;a<o;++a)for(var l,s,u=r[a],c=u.length,d=i[a]=new Array(c),f=0;f<c;++f)(l=u[f])&&(s=e.call(l,l.__data__,f,u))&&(\"__data__\"in l&&(s.__data__=l.__data__),d[f]=s,lr(d[f],t,n,f,d,cr(l,n)));return new Fo(i,this._parents,t,n)},selectAll:function(e){var t=this._name,n=this._id;\"function\"!==typeof e&&(e=ct(e));for(var r=this._groups,o=r.length,i=[],a=[],l=0;l<o;++l)for(var s,u=r[l],c=u.length,d=0;d<c;++d)if(s=u[d]){for(var f,h=e.call(s,s.__data__,d,u),p=cr(s,n),m=0,g=h.length;m<g;++m)(f=h[m])&&lr(f,t,n,m,h,p);i.push(h),a.push(s)}return new Fo(i,a,t,n)},selectChild:qo.selectChild,selectChildren:qo.selectChildren,filter:function(e){\"function\"!==typeof e&&(e=dt(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o<n;++o)for(var i,a=t[o],l=a.length,s=r[o]=[],u=0;u<l;++u)(i=a[u])&&e.call(i,i.__data__,u,a)&&s.push(i);return new Fo(r,this._parents,this._name,this._id)},merge:function(e){if(e._id!==this._id)throw new Error;for(var t=this._groups,n=e._groups,r=t.length,o=n.length,i=Math.min(r,o),a=new Array(r),l=0;l<i;++l)for(var s,u=t[l],c=n[l],d=u.length,f=a[l]=new Array(d),h=0;h<d;++h)(s=u[h]||c[h])&&(f[h]=s);for(;l<r;++l)a[l]=t[l];return new Fo(a,this._parents,this._name,this._id)},selection:function(){return new Lo(this._groups,this._parents)},transition:function(){for(var e=this._name,t=this._id,n=Bo(),r=this._groups,o=r.length,i=0;i<o;++i)for(var a,l=r[i],s=l.length,u=0;u<s;++u)if(a=l[u]){var c=cr(a,t);lr(a,e,n,u,l,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new Fo(r,this._parents,e,n)},call:qo.call,nodes:qo.nodes,node:qo.node,size:qo.size,empty:qo.empty,each:qo.each,on:function(e,t){var n=this._id;return arguments.length<2?cr(this.node(),n).on.on(e):this.each(Po(n,e,t))},attr:function(e,t){var n=Nt(e),r=\"transform\"===n?br:mo;return this.attrTween(e,\"function\"===typeof t?(n.local?xo:wo)(n,r,kr(this,\"attr.\"+e,t)):null==t?(n.local?vo:go)(n):(n.local?bo:yo)(n,r,t))},attrTween:function(e,t){var n=\"attr.\"+e;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if(\"function\"!==typeof t)throw new Error;var r=Nt(e);return this.tween(n,(r.local?So:Co)(r,t))},style:function(e,t,n){var r=\"transform\"===(e+=\"\")?yr:mo;return null==t?this.styleTween(e,function(e,t){var n,r,o;return function(){var i=Rt(this,e),a=(this.style.removeProperty(e),Rt(this,e));return i===a?null:i===n&&a===r?o:o=t(n=i,r=a)}}(e,r)).on(\"end.style.\"+e,zo(e)):\"function\"===typeof t?this.styleTween(e,function(e,t,n){var r,o,i;return function(){var a=Rt(this,e),l=n(this),s=l+\"\";return null==l&&(this.style.removeProperty(e),s=l=Rt(this,e)),a===s?null:a===r&&s===o?i:(o=s,i=t(r=a,l))}}(e,r,kr(this,\"style.\"+e,t))).each(function(e,t){var n,r,o,i,a=\"style.\"+t,l=\"end.\"+a;return function(){var s=ur(this,e),u=s.on,c=null==s.value[a]?i||(i=zo(t)):void 0;u===n&&o===c||(r=(n=u).copy()).on(l,o=c),s.on=r}}(this._id,e)):this.styleTween(e,function(e,t,n){var r,o,i=n+\"\";return function(){var a=Rt(this,e);return a===i?null:a===r?o:o=t(r=a,n)}}(e,r,t),n).on(\"end.style.\"+e,null)},styleTween:function(e,t,n){var r=\"style.\"+(e+=\"\");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==t)return this.tween(r,null);if(\"function\"!==typeof t)throw new Error;return this.tween(r,Oo(e,t,null==n?\"\":n))},text:function(e){return this.tween(\"text\",\"function\"===typeof e?function(e){return function(){var t=e(this);this.textContent=null==t?\"\":t}}(kr(this,\"text\",e)):function(e){return function(){this.textContent=e}}(null==e?\"\":e+\"\"))},textTween:function(e){var t=\"text\";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(null==e)return this.tween(t,null);if(\"function\"!==typeof e)throw new Error;return this.tween(t,Io(e))},remove:function(){return this.on(\"end.remove\",function(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}(this._id))},tween:function(e,t){var n=this._id;if(e+=\"\",arguments.length<2){for(var r,o=cr(this.node(),n).tween,i=0,a=o.length;i<a;++i)if((r=o[i]).name===e)return r.value;return null}return this.each((null==t?wr:xr)(n,e,t))},delay:function(e){var t=this._id;return arguments.length?this.each((\"function\"===typeof e?Eo:No)(t,e)):cr(this.node(),t).delay},duration:function(e){var t=this._id;return arguments.length?this.each((\"function\"===typeof e?Mo:Ao)(t,e)):cr(this.node(),t).duration},ease:function(e){var t=this._id;return arguments.length?this.each(Do(t,e)):cr(this.node(),t).ease},easeVarying:function(e){if(\"function\"!==typeof e)throw new Error;return this.each(function(e,t){return function(){var n=t.apply(this,arguments);if(\"function\"!==typeof n)throw new Error;ur(this,e).ease=n}}(this._id,e))},end:function(){var e,t,n=this,r=n._id,o=n.size();return new Promise((function(i,a){var l={value:a},s={value:function(){0===--o&&i()}};n.each((function(){var n=ur(this,r),o=n.on;o!==e&&((t=(e=o).copy())._.cancel.push(l),t._.interrupt.push(l),t._.end.push(s)),n.on=t})),0===o&&i()}))}},Symbol.iterator,qo[Symbol.iterator]);var Uo={time:null,delay:0,duration:250,ease:function(e){return((e*=2)<=1?e*e*e:(e-=2)*e*e+2)/2}};function Ho(e,t){for(var n;!(n=e.__transition)||!(n=n[t]);)if(!(e=e.parentNode))throw new Error(\"transition \".concat(t,\" not found\"));return n}Sn.prototype.interrupt=function(e){return this.each((function(){dr(this,e)}))},Sn.prototype.transition=function(e){var t,n;e instanceof Fo?(t=e._id,e=e._name):(t=Bo(),(n=Uo).time=Gn(),e=null==e?null:e+\"\");for(var r=this._groups,o=r.length,i=0;i<o;++i)for(var a,l=r[i],s=l.length,u=0;u<s;++u)(a=l[u])&&lr(a,e,t,u,l,n||Ho(a,t));return new Fo(r,this._parents,e,t)};var Vo=function(e){return function(){return e}};function Wo(e,t){var n=t.sourceEvent,r=t.target,o=t.transform,i=t.dispatch;Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},transform:{value:o,enumerable:!0,configurable:!0},_:{value:i}})}function Zo(e,t,n){this.k=e,this.x=t,this.y=n}Zo.prototype={constructor:Zo,scale:function(e){return 1===e?this:new Zo(this.k*e,this.x,this.y)},translate:function(e,t){return 0===e&0===t?this:new Zo(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return\"translate(\"+this.x+\",\"+this.y+\") scale(\"+this.k+\")\"}};var $o=new Zo(1,0,0);function Yo(e){e.stopImmediatePropagation()}function Xo(e){e.preventDefault(),e.stopImmediatePropagation()}function Ko(e){return(!e.ctrlKey||\"wheel\"===e.type)&&!e.button}function Go(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e).hasAttribute(\"viewBox\")?[[(e=e.viewBox.baseVal).x,e.y],[e.x+e.width,e.y+e.height]]:[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]:[[0,0],[e.clientWidth,e.clientHeight]]}function Qo(){return this.__zoom||$o}function Jo(e){return-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function ei(){return navigator.maxTouchPoints||\"ontouchstart\"in this}function ti(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],a=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}Zo.prototype;n(4164);var ni,ri,oi,ii=[\"position\",\"children\",\"className\",\"style\"],ai=[\"x\",\"y\",\"label\",\"labelStyle\",\"labelShowBg\",\"labelBgStyle\",\"labelBgPadding\",\"labelBgBorderRadius\",\"children\",\"className\"],li=[\"type\",\"position\",\"isValidConnection\",\"isConnectable\",\"id\",\"onConnect\",\"children\",\"className\",\"onMouseDown\"],si=[\"nodes\",\"edges\",\"defaultNodes\",\"defaultEdges\",\"className\",\"nodeTypes\",\"edgeTypes\",\"onNodeClick\",\"onEdgeClick\",\"onInit\",\"onMove\",\"onMoveStart\",\"onMoveEnd\",\"onConnect\",\"onConnectStart\",\"onConnectEnd\",\"onClickConnectStart\",\"onClickConnectEnd\",\"onNodeMouseEnter\",\"onNodeMouseMove\",\"onNodeMouseLeave\",\"onNodeContextMenu\",\"onNodeDoubleClick\",\"onNodeDragStart\",\"onNodeDrag\",\"onNodeDragStop\",\"onNodesDelete\",\"onEdgesDelete\",\"onSelectionChange\",\"onSelectionDragStart\",\"onSelectionDrag\",\"onSelectionDragStop\",\"onSelectionContextMenu\",\"onSelectionStart\",\"onSelectionEnd\",\"connectionMode\",\"connectionLineType\",\"connectionLineStyle\",\"connectionLineComponent\",\"connectionLineContainerStyle\",\"deleteKeyCode\",\"selectionKeyCode\",\"selectionOnDrag\",\"selectionMode\",\"panActivationKeyCode\",\"multiSelectionKeyCode\",\"zoomActivationKeyCode\",\"snapToGrid\",\"snapGrid\",\"onlyRenderVisibleElements\",\"selectNodesOnDrag\",\"nodesDraggable\",\"nodesConnectable\",\"nodesFocusable\",\"nodeOrigin\",\"edgesFocusable\",\"elementsSelectable\",\"defaultViewport\",\"minZoom\",\"maxZoom\",\"translateExtent\",\"preventScrolling\",\"nodeExtent\",\"defaultMarkerColor\",\"zoomOnScroll\",\"zoomOnPinch\",\"panOnScroll\",\"panOnScrollSpeed\",\"panOnScrollMode\",\"zoomOnDoubleClick\",\"panOnDrag\",\"onPaneClick\",\"onPaneMouseEnter\",\"onPaneMouseMove\",\"onPaneMouseLeave\",\"onPaneScroll\",\"onPaneContextMenu\",\"children\",\"onEdgeUpdate\",\"onEdgeContextMenu\",\"onEdgeDoubleClick\",\"onEdgeMouseEnter\",\"onEdgeMouseMove\",\"onEdgeMouseLeave\",\"onEdgeUpdateStart\",\"onEdgeUpdateEnd\",\"edgeUpdaterRadius\",\"onNodesChange\",\"onEdgesChange\",\"noDragClassName\",\"noWheelClassName\",\"noPanClassName\",\"fitView\",\"fitViewOptions\",\"connectOnClick\",\"attributionPosition\",\"proOptions\",\"defaultEdgeOptions\",\"elevateNodesOnSelect\",\"elevateEdgesOnSelect\",\"disableKeyboardA11y\",\"style\",\"id\"],ui=(0,e.createContext)(null),ci=ui.Provider,di=\"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#100\";function fi(t,n){var r=(0,e.useContext)(ui);if(null===r)throw new Error(di);return Xe(r,t,n)}var hi=function(){var t=(0,e.useContext)(ui);if(null===t)throw new Error(di);return(0,e.useMemo)((function(){return{getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}}),[t])},pi=function(e){return e.userSelectionActive?\"none\":\"all\"};function mi(e){var t=e.position,n=e.children,r=e.className,o=e.style,i=We(e,ii),a=fi(pi),l=\"\".concat(t).split(\"-\");return(0,Ze.jsx)(\"div\",Ve(Ve({className:$e([\"react-flow__panel\",r].concat((0,s.Z)(l))),style:Ve(Ve({},o),{},{pointerEvents:a})},i),{},{children:n}))}function gi(e){var t=e.proOptions,n=e.position,r=void 0===n?\"bottom-right\":n;return null!==t&&void 0!==t&&t.hideAttribution?null:(0,Ze.jsx)(mi,{position:r,className:\"react-flow__attribution\",\"data-message\":\"Please only hide this attribution when you are subscribed to React Flow Pro: https://pro.reactflow.dev\",children:(0,Ze.jsx)(\"a\",{href:\"https://reactflow.dev\",target:\"_blank\",rel:\"noopener noreferrer\",\"aria-label\":\"React Flow attribution\",children:\"React Flow\"})})}var vi=(0,e.memo)((function(t){var n=t.x,r=t.y,o=t.label,i=t.labelStyle,a=void 0===i?{}:i,s=t.labelShowBg,u=void 0===s||s,c=t.labelBgStyle,d=void 0===c?{}:c,f=t.labelBgPadding,h=void 0===f?[2,4]:f,p=t.labelBgBorderRadius,m=void 0===p?2:p,g=t.children,v=t.className,y=We(t,ai),b=(0,e.useRef)(null),w=l((0,e.useState)({x:0,y:0,width:0,height:0}),2),x=w[0],k=w[1],_=$e([\"react-flow__edge-textwrapper\",v]);return(0,e.useEffect)((function(){if(b.current){var e=b.current.getBBox();k({x:e.x,y:e.y,width:e.width,height:e.height})}}),[o]),\"undefined\"!==typeof o&&o?(0,Ze.jsxs)(\"g\",Ve(Ve({transform:\"translate(\".concat(n-x.width/2,\" \").concat(r-x.height/2,\")\"),className:_,visibility:x.width?\"visible\":\"hidden\"},y),{},{children:[u&&(0,Ze.jsx)(\"rect\",{width:x.width+2*h[0],x:-h[0],y:-h[1],height:x.height+2*h[1],className:\"react-flow__edge-textbg\",style:d,rx:m,ry:m}),(0,Ze.jsx)(\"text\",{className:\"react-flow__edge-text\",y:x.height/2,dy:\"0.3em\",ref:b,style:a,children:o}),g]})):null})),yi=function(e){return{width:e.offsetWidth,height:e.offsetHeight}},bi=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return Math.min(Math.max(e,t),n)},wi=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{x:0,y:0},t=arguments.length>1?arguments[1]:void 0;return{x:bi(e.x,t[0][0],t[1][0]),y:bi(e.y,t[0][1],t[1][1])}},xi=function(e){var t,n;return(null===(t=e.getRootNode)||void 0===t?void 0:t.call(e))||(null===(n=window)||void 0===n?void 0:n.document)},ki=function(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}},_i=function(e){var t=e.x,n=e.y;return{x:t,y:n,x2:t+e.width,y2:n+e.height}},Si=function(e){var t=e.x,n=e.y;return{x:t,y:n,width:e.x2-t,height:e.y2-n}},Ci=function(e){return Ve(Ve({},e.positionAbsolute||{x:0,y:0}),{},{width:e.width||0,height:e.height||0})},Ei=function(e,t){var n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},Ni=function(e){return!isNaN(e)&&isFinite(e)},Mi=Symbol.for(\"internals\"),Ai=[\"Enter\",\" \",\"Escape\"],Di=function(e){0};function Pi(e){var t,n,r=function(e){return\"nativeEvent\"in e}(e)?e.nativeEvent:e,o=(null===(t=r.composedPath)||void 0===t||null===(n=t.call(r))||void 0===n?void 0:n[0])||e.target;return!(e.ctrlKey||e.metaKey||e.shiftKey)&&([\"INPUT\",\"SELECT\",\"TEXTAREA\"].includes(null===o||void 0===o?void 0:o.nodeName)||(null===o||void 0===o?void 0:o.hasAttribute(\"contenteditable\"))||!(null===o||void 0===o||!o.closest(\".nokey\")))}var Li=function(e){var t=e.path,n=e.labelX,r=e.labelY,o=e.label,i=e.labelStyle,a=e.labelShowBg,l=e.labelBgStyle,s=e.labelBgPadding,u=e.labelBgBorderRadius,c=e.style,d=e.markerEnd,f=e.markerStart,h=e.interactionWidth,p=void 0===h?20:h;return(0,Ze.jsxs)(Ze.Fragment,{children:[(0,Ze.jsx)(\"path\",{style:c,d:t,fill:\"none\",className:\"react-flow__edge-path\",markerEnd:d,markerStart:f}),p&&(0,Ze.jsx)(\"path\",{d:t,fill:\"none\",strokeOpacity:0,strokeWidth:p,className:\"react-flow__edge-interaction\"}),o&&Ni(n)&&Ni(r)?(0,Ze.jsx)(vi,{x:n,y:r,label:o,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:s,labelBgBorderRadius:u}):null]})};Li.displayName=\"BaseEdge\";var zi,ji,Oi,Ti,Ii,Ri;function Fi(e,t,n){return void 0===n?n:function(r){var o=t().edges.find((function(t){return t.id===e}));o&&n(r,Ve({},o))}}function Bi(e){var t=e.sourceX,n=e.sourceY,r=e.targetX,o=e.targetY,i=Math.abs(r-t)/2,a=r<t?r+i:r-i,l=Math.abs(o-n)/2;return[a,o<n?o+l:o-l,i,l]}function qi(e){var t=e.sourceX,n=e.sourceY,r=e.targetX,o=e.targetY,i=e.sourceControlX,a=e.sourceControlY,l=.125*t+.375*i+.375*e.targetControlX+.125*r,s=.125*n+.375*a+.375*e.targetControlY+.125*o;return[l,s,Math.abs(l-t),Math.abs(s-n)]}function Ui(e){var t=e.pos,n=e.x1,r=e.y1,o=e.x2,i=e.y2;return t===Ri.Left||t===Ri.Right?[.5*(n+o),r]:[n,.5*(r+i)]}function Hi(e){var t=e.sourceX,n=e.sourceY,r=e.sourcePosition,o=void 0===r?Ri.Bottom:r,i=e.targetX,a=e.targetY,s=e.targetPosition,u=void 0===s?Ri.Top:s,c=l(Ui({pos:o,x1:t,y1:n,x2:i,y2:a}),2),d=c[0],f=c[1],h=l(Ui({pos:u,x1:i,y1:a,x2:t,y2:n}),2),p=h[0],m=h[1],g=l(qi({sourceX:t,sourceY:n,targetX:i,targetY:a,sourceControlX:d,sourceControlY:f,targetControlX:p,targetControlY:m}),4),v=g[0],y=g[1],b=g[2],w=g[3];return[\"M\".concat(t,\",\").concat(n,\" C\").concat(d,\",\").concat(f,\" \").concat(p,\",\").concat(m,\" \").concat(i,\",\").concat(a),v,y,b,w]}!function(e){e.Strict=\"strict\",e.Loose=\"loose\"}(zi||(zi={})),function(e){e.Free=\"free\",e.Vertical=\"vertical\",e.Horizontal=\"horizontal\"}(ji||(ji={})),function(e){e.Partial=\"partial\",e.Full=\"full\"}(Oi||(Oi={})),function(e){e.Bezier=\"default\",e.Straight=\"straight\",e.Step=\"step\",e.SmoothStep=\"smoothstep\",e.SimpleBezier=\"simplebezier\"}(Ti||(Ti={})),function(e){e.Arrow=\"arrow\",e.ArrowClosed=\"arrowclosed\"}(Ii||(Ii={})),function(e){e.Left=\"left\",e.Top=\"top\",e.Right=\"right\",e.Bottom=\"bottom\"}(Ri||(Ri={}));var Vi=(0,e.memo)((function(e){var t=e.sourceX,n=e.sourceY,r=e.targetX,o=e.targetY,i=e.sourcePosition,a=void 0===i?Ri.Bottom:i,s=e.targetPosition,u=void 0===s?Ri.Top:s,c=e.label,d=e.labelStyle,f=e.labelShowBg,h=e.labelBgStyle,p=e.labelBgPadding,m=e.labelBgBorderRadius,g=e.style,v=e.markerEnd,y=e.markerStart,b=e.interactionWidth,w=l(Hi({sourceX:t,sourceY:n,sourcePosition:a,targetX:r,targetY:o,targetPosition:u}),3),x=w[0],k=w[1],_=w[2];return(0,Ze.jsx)(Li,{path:x,labelX:k,labelY:_,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,style:g,markerEnd:v,markerStart:y,interactionWidth:b})}));Vi.displayName=\"SimpleBezierEdge\";var Wi=(Ue(ni={},Ri.Left,{x:-1,y:0}),Ue(ni,Ri.Right,{x:1,y:0}),Ue(ni,Ri.Top,{x:0,y:-1}),Ue(ni,Ri.Bottom,{x:0,y:1}),ni),Zi=function(e,t){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))};function $i(e){var t,n,r=e.source,o=e.sourcePosition,i=void 0===o?Ri.Bottom:o,a=e.target,u=e.targetPosition,c=void 0===u?Ri.Top:u,d=e.center,f=e.offset,h=Wi[i],p=Wi[c],m={x:r.x+h.x*f,y:r.y+h.y*f},g={x:a.x+p.x*f,y:a.y+p.y*f},v=function(e){var t=e.source,n=e.sourcePosition,r=void 0===n?Ri.Bottom:n,o=e.target;return r===Ri.Left||r===Ri.Right?t.x<o.x?{x:1,y:0}:{x:-1,y:0}:t.y<o.y?{x:0,y:1}:{x:0,y:-1}}({source:m,sourcePosition:i,target:g}),y=0!==v.x?\"x\":\"y\",b=v[y],w=[],x=l(Bi({sourceX:r.x,sourceY:r.y,targetX:a.x,targetY:a.y}),4),k=x[0],_=x[1],S=x[2],C=x[3];if(h[y]*p[y]===-1){t=d.x||k,n=d.y||_;var E=[{x:t,y:m.y},{x:t,y:g.y}],N=[{x:m.x,y:n},{x:g.x,y:n}];w=h[y]===b?\"x\"===y?E:N:\"x\"===y?N:E}else{var M=[{x:m.x,y:g.y}],A=[{x:g.x,y:m.y}];if(w=\"x\"===y?h.x===b?A:M:h.y===b?M:A,i!==c){var D=\"x\"===y?\"y\":\"x\",P=h[y]===p[D],L=m[D]>g[D],z=m[D]<g[D];(1===h[y]&&(!P&&L||P&&z)||1!==h[y]&&(!P&&z||P&&L))&&(w=\"x\"===y?M:A)}t=w[0].x,n=w[0].y}return[[r,m].concat((0,s.Z)(w),[g,a]),t,n,S,C]}function Yi(e){var t=e.sourceX,n=e.sourceY,r=e.sourcePosition,o=void 0===r?Ri.Bottom:r,i=e.targetX,a=e.targetY,s=e.targetPosition,u=void 0===s?Ri.Top:s,c=e.borderRadius,d=void 0===c?5:c,f=e.centerX,h=e.centerY,p=e.offset,m=l($i({source:{x:t,y:n},sourcePosition:o,target:{x:i,y:a},targetPosition:u,center:{x:f,y:h},offset:void 0===p?20:p}),5),g=m[0],v=m[1],y=m[2],b=m[3],w=m[4],x=g.reduce((function(e,t,n){var r=\"\";return r=n>0&&n<g.length-1?function(e,t,n,r){var o=Math.min(Zi(e,t)/2,Zi(t,n)/2,r),i=t.x,a=t.y;if(e.x===i&&i===n.x||e.y===a&&a===n.y)return\"L\".concat(i,\" \").concat(a);if(e.y===a){var l=e.x<n.x?-1:1,s=e.y<n.y?1:-1;return\"L \".concat(i+o*l,\",\").concat(a,\"Q \").concat(i,\",\").concat(a,\" \").concat(i,\",\").concat(a+o*s)}var u=e.x<n.x?1:-1,c=e.y<n.y?-1:1;return\"L \".concat(i,\",\").concat(a+o*c,\"Q \").concat(i,\",\").concat(a,\" \").concat(i+o*u,\",\").concat(a)}(g[n-1],t,g[n+1],d):\"\".concat(0===n?\"M\":\"L\").concat(t.x,\" \").concat(t.y),e+=r}),\"\");return[x,v,y,b,w]}var Xi=(0,e.memo)((function(e){var t=e.sourceX,n=e.sourceY,r=e.targetX,o=e.targetY,i=e.label,a=e.labelStyle,s=e.labelShowBg,u=e.labelBgStyle,c=e.labelBgPadding,d=e.labelBgBorderRadius,f=e.style,h=e.sourcePosition,p=void 0===h?Ri.Bottom:h,m=e.targetPosition,g=void 0===m?Ri.Top:m,v=e.markerEnd,y=e.markerStart,b=e.pathOptions,w=e.interactionWidth,x=l(Yi({sourceX:t,sourceY:n,sourcePosition:p,targetX:r,targetY:o,targetPosition:g,borderRadius:null===b||void 0===b?void 0:b.borderRadius,offset:null===b||void 0===b?void 0:b.offset}),3),k=x[0],_=x[1],S=x[2];return(0,Ze.jsx)(Li,{path:k,labelX:_,labelY:S,label:i,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:v,markerStart:y,interactionWidth:w})}));Xi.displayName=\"SmoothStepEdge\";var Ki=(0,e.memo)((function(t){var n;return(0,Ze.jsx)(Xi,Ve(Ve({},t),{},{pathOptions:(0,e.useMemo)((function(){var e;return{borderRadius:0,offset:null===(e=t.pathOptions)||void 0===e?void 0:e.offset}}),[null===(n=t.pathOptions)||void 0===n?void 0:n.offset])}))}));Ki.displayName=\"StepEdge\";var Gi=(0,e.memo)((function(e){var t=e.sourceX,n=e.sourceY,r=e.targetX,o=e.targetY,i=e.label,a=e.labelStyle,s=e.labelShowBg,u=e.labelBgStyle,c=e.labelBgPadding,d=e.labelBgBorderRadius,f=e.style,h=e.markerEnd,p=e.markerStart,m=e.interactionWidth,g=function(e){var t=e.sourceX,n=e.sourceY,r=e.targetX,o=e.targetY,i=l(Bi({sourceX:t,sourceY:n,targetX:r,targetY:o}),4),a=i[0],s=i[1],u=i[2],c=i[3];return[\"M \".concat(t,\",\").concat(n,\"L \").concat(r,\",\").concat(o),a,s,u,c]}({sourceX:t,sourceY:n,targetX:r,targetY:o}),v=l(g,3),y=v[0],b=v[1],w=v[2];return(0,Ze.jsx)(Li,{path:y,labelX:b,labelY:w,label:i,labelStyle:a,labelShowBg:s,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:p,interactionWidth:m})}));function Qi(e,t){return e>=0?.5*e:25*t*Math.sqrt(-e)}function Ji(e){var t=e.pos,n=e.x1,r=e.y1,o=e.x2,i=e.y2,a=e.c;switch(t){case Ri.Left:return[n-Qi(n-o,a),r];case Ri.Right:return[n+Qi(o-n,a),r];case Ri.Top:return[n,r-Qi(r-i,a)];case Ri.Bottom:return[n,r+Qi(i-r,a)]}}function ea(e){var t=e.sourceX,n=e.sourceY,r=e.sourcePosition,o=void 0===r?Ri.Bottom:r,i=e.targetX,a=e.targetY,s=e.targetPosition,u=void 0===s?Ri.Top:s,c=e.curvature,d=void 0===c?.25:c,f=l(Ji({pos:o,x1:t,y1:n,x2:i,y2:a,c:d}),2),h=f[0],p=f[1],m=l(Ji({pos:u,x1:i,y1:a,x2:t,y2:n,c:d}),2),g=m[0],v=m[1],y=l(qi({sourceX:t,sourceY:n,targetX:i,targetY:a,sourceControlX:h,sourceControlY:p,targetControlX:g,targetControlY:v}),4),b=y[0],w=y[1],x=y[2],k=y[3];return[\"M\".concat(t,\",\").concat(n,\" C\").concat(h,\",\").concat(p,\" \").concat(g,\",\").concat(v,\" \").concat(i,\",\").concat(a),b,w,x,k]}Gi.displayName=\"StraightEdge\";var ta=(0,e.memo)((function(e){var t=e.sourceX,n=e.sourceY,r=e.targetX,o=e.targetY,i=e.sourcePosition,a=void 0===i?Ri.Bottom:i,s=e.targetPosition,u=void 0===s?Ri.Top:s,c=e.label,d=e.labelStyle,f=e.labelShowBg,h=e.labelBgStyle,p=e.labelBgPadding,m=e.labelBgBorderRadius,g=e.style,v=e.markerEnd,y=e.markerStart,b=e.pathOptions,w=e.interactionWidth,x=l(ea({sourceX:t,sourceY:n,sourcePosition:a,targetX:r,targetY:o,targetPosition:u,curvature:null===b||void 0===b?void 0:b.curvature}),3),k=x[0],_=x[1],S=x[2];return(0,Ze.jsx)(Li,{path:k,labelX:_,labelY:S,label:c,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:p,labelBgBorderRadius:m,style:g,markerEnd:v,markerStart:y,interactionWidth:w})}));ta.displayName=\"BezierEdge\";var na=(0,e.createContext)(null),ra=na.Provider;na.Consumer;function oa(e,t,n,r,o,i,a){var l=a.elementFromPoint(e.clientX,e.clientY),s=(null===l||void 0===l?void 0:l.classList.contains(\"target\"))||!1,u=(null===l||void 0===l?void 0:l.classList.contains(\"source\"))||!1,c={elementBelow:l,isValid:!1,connection:{source:null,target:null,sourceHandle:null,targetHandle:null},isHoveringHandle:!1};if(l&&(s||u)){c.isHoveringHandle=!0;var d=l.getAttribute(\"data-nodeid\"),f=l.getAttribute(\"data-handleid\"),h=n?{source:d,sourceHandle:f,target:r,targetHandle:o}:{source:r,sourceHandle:o,target:d,targetHandle:f};c.connection=h,(t===zi.Strict?n&&u||!n&&s:d!==r||f!==o)&&(c.isValid=i(h))}return c}function ia(e){null===e||void 0===e||e.classList.remove(\"react-flow__handle-valid\"),null===e||void 0===e||e.classList.remove(\"react-flow__handle-connecting\")}function aa(e){var t=e.event,n=e.handleId,r=e.nodeId,o=e.onConnect,i=e.isTarget,a=e.getState,l=e.setState,s=e.isValidConnection,u=e.elementEdgeUpdaterType,c=e.onEdgeUpdateEnd,d=t.target.closest(\".react-flow\"),f=xi(t.target);if(f){var h=f.elementFromPoint(t.clientX,t.clientY),p=null===h||void 0===h?void 0:h.classList.contains(\"target\"),m=null===h||void 0===h?void 0:h.classList.contains(\"source\");if(d&&(p||m||u)){var g,v=a(),y=v.onConnectStart,b=v.connectionMode,w=u||(p?\"target\":\"source\"),x=d.getBoundingClientRect();l({connectionPosition:{x:t.clientX-x.left,y:t.clientY-x.top},connectionNodeId:r,connectionHandleId:n,connectionHandleType:w}),null===y||void 0===y||y(t,{nodeId:r,handleId:n,handleType:w}),f.addEventListener(\"mousemove\",k),f.addEventListener(\"mouseup\",(function e(t){var d,h,p=oa(t,b,i,r,n,s,f),m=p.connection;p.isValid&&(null===o||void 0===o||o(m)),null===(d=(h=a()).onConnectEnd)||void 0===d||d.call(h,t),u&&c&&c(t),ia(g),l({connectionNodeId:null,connectionHandleId:null,connectionHandleType:null}),f.removeEventListener(\"mousemove\",k),f.removeEventListener(\"mouseup\",e)}))}}function k(e){l({connectionPosition:{x:e.clientX-x.left,y:e.clientY-x.top}});var t=oa(e,b,i,r,n,s,f),o=t.connection,a=t.elementBelow,u=t.isValid;if(!t.isHoveringHandle)return ia(g);o.source!==o.target&&a&&(ia(g),g=a,a.classList.add(\"react-flow__handle-connecting\"),a.classList.toggle(\"react-flow__handle-valid\",u))}}var la=function(e){return\"id\"in e&&!(\"source\"in e)&&!(\"target\"in e)},sa=function(e){var t=e.source,n=e.sourceHandle,r=e.target,o=e.targetHandle;return\"reactflow__edge-\".concat(t).concat(n||\"\",\"-\").concat(r).concat(o||\"\")},ua=function(e,t){if(\"undefined\"===typeof e)return\"\";if(\"string\"===typeof e)return e;var n=t?\"\".concat(t,\"__\"):\"\";return\"\".concat(n).concat(Object.keys(e).sort().map((function(t){return\"\".concat(t,\"=\").concat(e[t])})).join(\"&\"))},ca=function(e,t){return e.source&&e.target?function(e,t){return t.some((function(t){return t.source===e.source&&t.target===e.target&&(t.sourceHandle===e.sourceHandle||!t.sourceHandle&&!e.sourceHandle)&&(t.targetHandle===e.targetHandle||!t.targetHandle&&!e.targetHandle)}))}(n=\"id\"in(r=e)&&\"source\"in r&&\"target\"in r?Ve({},e):Ve(Ve({},e),{},{id:sa(e)}),t)?t:t.concat(n):(Di(),t);var n,r},da=function(e){var t,n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0];if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};var o=(null!==(t=e.width)&&void 0!==t?t:0)*r[0],i=(null!==(n=e.height)&&void 0!==n?n:0)*r[1],a={x:e.position.x-o,y:e.position.y-i};return Ve(Ve({},a),{},{positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-o,y:e.positionAbsolute.y-i}:a})},fa=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0,0];if(0===e.length)return{x:0,y:0,width:0,height:0};var n=e.reduce((function(e,n){var r=da(n,t).positionAbsolute,o=r.x,i=r.y;return ki(e,_i({x:o,y:i,width:n.width||0,height:n.height||0}))}),{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return Si(n)},ha=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[0,0,1],r=l(n,3),o=r[0],i=r[1],a=r[2],s=arguments.length>3&&void 0!==arguments[3]&&arguments[3],u=arguments.length>4&&void 0!==arguments[4]&&arguments[4],c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[0,0],d={x:(t.x-o)/a,y:(t.y-i)/a,width:t.width/a,height:t.height/a},f=[];return e.forEach((function(e){var t=e.width,n=e.height,r=e.selectable,o=void 0===r||r,i=e.hidden;if(u&&!o||void 0!==i&&i)return!1;var a=da(e,c).positionAbsolute,l={x:a.x,y:a.y,width:t||0,height:n||0},h=Ei(d,l);(\"undefined\"===typeof t||\"undefined\"===typeof n||null===t||null===n||s&&h>0||h>=(t||0)*(n||0)||e.dragging)&&f.push(e)})),f},pa=function(e,t){var n=e.map((function(e){return e.id}));return t.filter((function(e){return n.includes(e.source)||n.includes(e.target)}))},ma=function(e,t,n,r,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:.1,a=t/(e.width*(1+i)),l=n/(e.height*(1+i)),s=Math.min(a,l),u=bi(s,r,o),c=e.x+e.width/2,d=e.y+e.height/2,f=t/2-c*u,h=n/2-d*u;return[f,h,u]},ga=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.transition().duration(t)},va=function(){return!0},ya=function(e){return{connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}},ba=(0,e.forwardRef)((function(t,n){var r=t.type,o=void 0===r?\"source\":r,i=t.position,a=void 0===i?Ri.Top:i,l=t.isValidConnection,s=void 0===l?va:l,u=t.isConnectable,c=void 0===u||u,d=t.id,f=t.onConnect,h=t.children,p=t.className,m=t.onMouseDown,g=We(t,li),v=hi(),y=(0,e.useContext)(na),b=fi(ya,Qe),w=b.connectionStartHandle,x=b.connectOnClick,k=b.noPanClassName,_=d||null,S=\"target\"===o,C=function(e){var t=v.getState(),n=t.defaultEdgeOptions,r=t.onConnect,o=t.hasDefaultEdges,i=Ve(Ve({},n),e);if(o){var a=v.getState().edges;v.setState({edges:ca(i,a)})}null===r||void 0===r||r(i),null===f||void 0===f||f(i)};return(0,Ze.jsx)(\"div\",Ve(Ve({\"data-handleid\":_,\"data-nodeid\":y,\"data-handlepos\":a,className:$e([\"react-flow__handle\",\"react-flow__handle-\".concat(a),\"nodrag\",k,p,{source:!S,target:S,connectable:c,connecting:(null===w||void 0===w?void 0:w.nodeId)===y&&(null===w||void 0===w?void 0:w.handleId)===_&&(null===w||void 0===w?void 0:w.type)===o}]),onMouseDown:function(e){0===e.button&&aa({event:e,handleId:_,nodeId:y,onConnect:C,isTarget:S,getState:v.getState,setState:v.setState,isValidConnection:s}),null===m||void 0===m||m(e)},onClick:x?function(e){var t=v.getState(),n=t.onClickConnectStart,r=t.onClickConnectEnd,i=t.connectionMode;if(!w)return null===n||void 0===n||n(e,{nodeId:y,handleId:_,handleType:o}),void v.setState({connectionStartHandle:{nodeId:y,type:o,handleId:_}});var a=xi(e.target),l=oa(e,i,\"target\"===w.type,w.nodeId,w.handleId||null,s,a),u=l.connection;l.isValid&&C(u),null===r||void 0===r||r(e),v.setState({connectionStartHandle:null})}:void 0,ref:n},g),{},{children:h}))}));ba.displayName=\"Handle\";var wa=(0,e.memo)(ba),xa=function(e){var t=e.data,n=e.isConnectable,r=e.targetPosition,o=void 0===r?Ri.Top:r,i=e.sourcePosition,a=void 0===i?Ri.Bottom:i;return(0,Ze.jsxs)(Ze.Fragment,{children:[(0,Ze.jsx)(wa,{type:\"target\",position:o,isConnectable:n}),null===t||void 0===t?void 0:t.label,(0,Ze.jsx)(wa,{type:\"source\",position:a,isConnectable:n})]})};xa.displayName=\"DefaultNode\";var ka=(0,e.memo)(xa),_a=function(e){var t=e.data,n=e.isConnectable,r=e.sourcePosition,o=void 0===r?Ri.Bottom:r;return(0,Ze.jsxs)(Ze.Fragment,{children:[null===t||void 0===t?void 0:t.label,(0,Ze.jsx)(wa,{type:\"source\",position:o,isConnectable:n})]})};_a.displayName=\"InputNode\";var Sa=(0,e.memo)(_a),Ca=function(e){var t=e.data,n=e.isConnectable,r=e.targetPosition,o=void 0===r?Ri.Top:r;return(0,Ze.jsxs)(Ze.Fragment,{children:[(0,Ze.jsx)(wa,{type:\"target\",position:o,isConnectable:n}),null===t||void 0===t?void 0:t.label]})};Ca.displayName=\"OutputNode\";var Ea=(0,e.memo)(Ca),Na=function(){return null};Na.displayName=\"GroupNode\";var Ma=function(e){return{selectedNodes:e.getNodes().filter((function(e){return e.selected})),selectedEdges:e.edges.filter((function(e){return e.selected}))}},Aa=function(e){return e.id};function Da(e,t){return Qe(e.selectedNodes.map(Aa),t.selectedNodes.map(Aa))&&Qe(e.selectedEdges.map(Aa),t.selectedEdges.map(Aa))}var Pa=(0,e.memo)((function(t){var n=t.onSelectionChange,r=hi(),o=fi(Ma,Da),i=o.selectedNodes,a=o.selectedEdges;return(0,e.useEffect)((function(){var e,t,o={nodes:i,edges:a};null===n||void 0===n||n(o),null===(e=(t=r.getState()).onSelectionChange)||void 0===e||e.call(t,o)}),[i,a,n]),null}));Pa.displayName=\"SelectionListener\";var La=function(e){return!!e.onSelectionChange};function za(e){var t=e.onSelectionChange,n=fi(La);return t||n?(0,Ze.jsx)(Pa,{onSelectionChange:t}):null}var ja=function(e){return{setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset}};function Oa(t,n){(0,e.useEffect)((function(){\"undefined\"!==typeof t&&n(t)}),[t])}function Ta(t,n,r){(0,e.useEffect)((function(){\"undefined\"!==typeof n&&r(Ue({},t,n))}),[n])}var Ia=function(t){var n=t.nodes,r=t.edges,o=t.defaultNodes,i=t.defaultEdges,a=t.onConnect,l=t.onConnectStart,s=t.onConnectEnd,u=t.onClickConnectStart,c=t.onClickConnectEnd,d=t.nodesDraggable,f=t.nodesConnectable,h=t.nodesFocusable,p=t.edgesFocusable,m=t.elevateNodesOnSelect,g=t.minZoom,v=t.maxZoom,y=t.nodeExtent,b=t.onNodesChange,w=t.onEdgesChange,x=t.elementsSelectable,k=t.connectionMode,_=t.snapGrid,S=t.snapToGrid,C=t.translateExtent,E=t.connectOnClick,N=t.defaultEdgeOptions,M=t.fitView,A=t.fitViewOptions,D=t.onNodesDelete,P=t.onEdgesDelete,L=t.onNodeDrag,z=t.onNodeDragStart,j=t.onNodeDragStop,O=t.onSelectionDrag,T=t.onSelectionDragStart,I=t.onSelectionDragStop,R=t.noPanClassName,F=t.nodeOrigin,B=t.rfId,q=fi(ja,Qe),U=q.setNodes,H=q.setEdges,V=q.setDefaultNodesAndEdges,W=q.setMinZoom,Z=q.setMaxZoom,$=q.setTranslateExtent,Y=q.setNodeExtent,X=q.reset,K=hi();return(0,e.useEffect)((function(){var e=null===i||void 0===i?void 0:i.map((function(e){return Ve(Ve({},e),N)}));return V(o,e),function(){X()}}),[]),Ta(\"defaultEdgeOptions\",N,K.setState),Ta(\"connectionMode\",k,K.setState),Ta(\"onConnect\",a,K.setState),Ta(\"onConnectStart\",l,K.setState),Ta(\"onConnectEnd\",s,K.setState),Ta(\"onClickConnectStart\",u,K.setState),Ta(\"onClickConnectEnd\",c,K.setState),Ta(\"nodesDraggable\",d,K.setState),Ta(\"nodesConnectable\",f,K.setState),Ta(\"nodesFocusable\",h,K.setState),Ta(\"edgesFocusable\",p,K.setState),Ta(\"elementsSelectable\",x,K.setState),Ta(\"elevateNodesOnSelect\",m,K.setState),Ta(\"snapToGrid\",S,K.setState),Ta(\"snapGrid\",_,K.setState),Ta(\"onNodesChange\",b,K.setState),Ta(\"onEdgesChange\",w,K.setState),Ta(\"connectOnClick\",E,K.setState),Ta(\"fitViewOnInit\",M,K.setState),Ta(\"fitViewOnInitOptions\",A,K.setState),Ta(\"onNodesDelete\",D,K.setState),Ta(\"onEdgesDelete\",P,K.setState),Ta(\"onNodeDrag\",L,K.setState),Ta(\"onNodeDragStart\",z,K.setState),Ta(\"onNodeDragStop\",j,K.setState),Ta(\"onSelectionDrag\",O,K.setState),Ta(\"onSelectionDragStart\",T,K.setState),Ta(\"onSelectionDragStop\",I,K.setState),Ta(\"noPanClassName\",R,K.setState),Ta(\"nodeOrigin\",F,K.setState),Ta(\"rfId\",B,K.setState),Oa(n,U),Oa(r,H),Oa(g,W),Oa(v,Z),Oa(C,$),Oa(y,Y),null},Ra={display:\"none\"},Fa={position:\"absolute\",width:1,height:1,margin:-1,border:0,padding:0,overflow:\"hidden\",clip:\"rect(0px, 0px, 0px, 0px)\",clipPath:\"inset(100%)\"},Ba=\"react-flow__node-desc\",qa=\"react-flow__edge-desc\",Ua=function(e){return e.ariaLiveMessage};function Ha(e){var t=e.rfId,n=fi(Ua);return(0,Ze.jsx)(\"div\",{id:\"\".concat(\"react-flow__aria-live\",\"-\").concat(t),\"aria-live\":\"assertive\",\"aria-atomic\":\"true\",style:Fa,children:n})}function Va(e){var t=e.rfId,n=e.disableKeyboardA11y;return(0,Ze.jsxs)(Ze.Fragment,{children:[(0,Ze.jsxs)(\"div\",{id:\"\".concat(Ba,\"-\").concat(t),style:Ra,children:[\"Press enter or space to select a node.\",!n&&\"You can then use the arrow keys to move the node around.\",\" Press delete to remove it and escape to cancel.\",\" \"]}),(0,Ze.jsx)(\"div\",{id:\"\".concat(qa,\"-\").concat(t),style:Ra,children:\"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.\"}),!n&&(0,Ze.jsx)(Ha,{rfId:t})]})}var Wa=function(e,t,n){return n===Ri.Left?e-t:n===Ri.Right?e+t:e},Za=function(e,t,n){return n===Ri.Top?e-t:n===Ri.Bottom?e+t:e},$a=\"react-flow__edgeupdater\",Ya=function(e){var t=e.position,n=e.centerX,r=e.centerY,o=e.radius,i=void 0===o?10:o,a=e.onMouseDown,l=e.onMouseEnter,s=e.onMouseOut,u=e.type;return(0,Ze.jsx)(\"circle\",{onMouseDown:a,onMouseEnter:l,onMouseOut:s,className:$e([$a,\"\".concat($a,\"-\").concat(u)]),cx:Wa(n,i,t),cy:Za(r,i,t),r:i,stroke:\"transparent\",fill:\"transparent\"})},Xa=function(t){var n=function(n){var r=n.id,o=n.className,i=n.type,a=n.data,s=n.onClick,u=n.onEdgeDoubleClick,c=n.selected,d=n.animated,f=n.label,h=n.labelStyle,p=n.labelShowBg,m=n.labelBgStyle,g=n.labelBgPadding,v=n.labelBgBorderRadius,y=n.style,b=n.source,w=n.target,x=n.sourceX,k=n.sourceY,_=n.targetX,S=n.targetY,C=n.sourcePosition,E=n.targetPosition,N=n.elementsSelectable,M=n.hidden,A=n.sourceHandleId,D=n.targetHandleId,P=n.onContextMenu,L=n.onMouseEnter,z=n.onMouseMove,j=n.onMouseLeave,O=n.edgeUpdaterRadius,T=n.onEdgeUpdate,I=n.onEdgeUpdateStart,R=n.onEdgeUpdateEnd,F=n.markerEnd,B=n.markerStart,q=n.rfId,U=n.ariaLabel,H=n.isFocusable,V=n.pathOptions,W=n.interactionWidth,Z=(0,e.useRef)(null),$=l((0,e.useState)(!1),2),Y=$[0],X=$[1],K=l((0,e.useState)(!1),2),G=K[0],Q=K[1],J=hi(),ee=(0,e.useMemo)((function(){return\"url(#\".concat(ua(B,q),\")\")}),[B,q]),te=(0,e.useMemo)((function(){return\"url(#\".concat(ua(F,q),\")\")}),[F,q]);if(M)return null;var ne=Fi(r,J.getState,u),re=Fi(r,J.getState,P),oe=Fi(r,J.getState,L),ie=Fi(r,J.getState,z),ae=Fi(r,J.getState,j),le=function(e,t){var n=t?w:b,o=(t?D:A)||null,i=t?\"target\":\"source\",a=t,l=J.getState().edges.find((function(e){return e.id===r}));Q(!0),null===I||void 0===I||I(e,l,i);aa({event:e,handleId:o,nodeId:n,onConnect:function(e){return null===T||void 0===T?void 0:T(l,e)},isTarget:a,getState:J.getState,setState:J.setState,isValidConnection:function(){return!0},elementEdgeUpdaterType:i,onEdgeUpdateEnd:function(e){Q(!1),null===R||void 0===R||R(e,l,i)}})},se=function(){return X(!0)},ue=function(){return X(!1)},ce=!N&&!s,de=\"undefined\"!==typeof T;return(0,Ze.jsxs)(\"g\",{className:$e([\"react-flow__edge\",\"react-flow__edge-\".concat(i),o,{selected:c,animated:d,inactive:ce,updating:Y}]),onClick:function(e){var t=J.getState(),n=t.edges,o=t.addSelectedEdges;if(N&&(J.setState({nodesSelectionActive:!1}),o([r])),s){var i=n.find((function(e){return e.id===r}));s(e,i)}},onDoubleClick:ne,onContextMenu:re,onMouseEnter:oe,onMouseMove:ie,onMouseLeave:ae,onKeyDown:H?function(e){if(Ai.includes(e.key)&&N){var t,n=J.getState(),o=n.unselectNodesAndEdges,i=n.addSelectedEdges,a=n.edges;if(\"Escape\"===e.key)null===(t=Z.current)||void 0===t||t.blur(),o({edges:[a.find((function(e){return e.id===r}))]});else i([r])}}:void 0,tabIndex:H?0:void 0,role:H?\"button\":void 0,\"data-testid\":\"rf__edge-\".concat(r),\"aria-label\":null===U?void 0:U||\"Edge from \".concat(b,\" to \").concat(w),\"aria-describedby\":H?\"\".concat(qa,\"-\").concat(q):void 0,ref:Z,children:[!G&&(0,Ze.jsx)(t,{id:r,source:b,target:w,selected:c,animated:d,label:f,labelStyle:h,labelShowBg:p,labelBgStyle:m,labelBgPadding:g,labelBgBorderRadius:v,data:a,style:y,sourceX:x,sourceY:k,targetX:_,targetY:S,sourcePosition:C,targetPosition:E,sourceHandleId:A,targetHandleId:D,markerStart:ee,markerEnd:te,pathOptions:V,interactionWidth:W}),de&&(0,Ze.jsxs)(Ze.Fragment,{children:[(0,Ze.jsx)(Ya,{position:C,centerX:x,centerY:k,radius:O,onMouseDown:function(e){return le(e,!0)},onMouseEnter:se,onMouseOut:ue,type:\"source\"}),(0,Ze.jsx)(Ya,{position:E,centerX:_,centerY:S,radius:O,onMouseDown:function(e){return le(e,!1)},onMouseEnter:se,onMouseOut:ue,type:\"target\"})]})]})};return n.displayName=\"EdgeWrapper\",(0,e.memo)(n)};function Ka(e){var t={default:Xa(e.default||ta),straight:Xa(e.bezier||Gi),step:Xa(e.step||Ki),smoothstep:Xa(e.step||Xi),simplebezier:Xa(e.simplebezier||Vi)},n=Object.keys(e).filter((function(e){return![\"default\",\"bezier\"].includes(e)})).reduce((function(t,n){return t[n]=Xa(e[n]||ta),t}),{});return Ve(Ve({},t),n)}function Ga(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=((null===n||void 0===n?void 0:n.x)||0)+t.x,o=((null===n||void 0===n?void 0:n.y)||0)+t.y,i=(null===n||void 0===n?void 0:n.width)||t.width,a=(null===n||void 0===n?void 0:n.height)||t.height;switch(e){case Ri.Top:return{x:r+i/2,y:o};case Ri.Right:return{x:r+i,y:o+a/2};case Ri.Bottom:return{x:r+i/2,y:o+a};case Ri.Left:return{x:r,y:o+a/2}}}function Qa(e,t){if(!e)return null;var n=null;return 1!==e.length&&t?t&&(n=e.find((function(e){return e.id===t}))):n=e[0],\"undefined\"===typeof n?null:n}function Ja(e){var t,n,r,o,i,a=(null===e||void 0===e||null===(t=e[Mi])||void 0===t?void 0:t.handleBounds)||null,l=!e||!a||!e.width||!e.height||\"undefined\"===typeof(null===(n=e.positionAbsolute)||void 0===n?void 0:n.x)||\"undefined\"===typeof(null===(r=e.positionAbsolute)||void 0===r?void 0:r.y);return[{x:(null===e||void 0===e||null===(o=e.positionAbsolute)||void 0===o?void 0:o.x)||0,y:(null===e||void 0===e||null===(i=e.positionAbsolute)||void 0===i?void 0:i.y)||0,width:(null===e||void 0===e?void 0:e.width)||0,height:(null===e||void 0===e?void 0:e.height)||0},a,!l]}function el(e,t){if(!e.parentNode)return!1;var n=t.get(e.parentNode);return!!n&&(!!n.selected||el(n,t))}function tl(e,t,n){var r=e;do{var o;if(null!==(o=r)&&void 0!==o&&o.matches(t))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function nl(e,t,n){return Array.from(e.values()).filter((function(t){return(t.selected||t.id===n)&&(!t.parentNode||!el(t,e))})).map((function(e){var n,r,o,i;return{id:e.id,position:e.position||{x:0,y:0},positionAbsolute:e.positionAbsolute||{x:0,y:0},distance:{x:t.x-(null!==(n=null===(r=e.positionAbsolute)||void 0===r?void 0:r.x)&&void 0!==n?n:0),y:t.y-(null!==(o=null===(i=e.positionAbsolute)||void 0===i?void 0:i.y)&&void 0!==o?o:0)},delta:{x:0,y:0},extent:e.extent,parentNode:e.parentNode,width:e.width,height:e.height}}))}function rl(e,t,n,r){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[0,0],i=e.extent||r;if(\"parent\"===e.extent)if(e.parentNode&&e.width&&e.height){var a=n.get(e.parentNode),l=da(a,o).positionAbsolute,s=l.x,u=l.y;i=a&&Ni(s)&&Ni(u)&&Ni(a.width)&&Ni(a.height)?[[s+e.width*o[0],u+e.height*o[1]],[s+a.width-e.width+e.width*o[0],u+a.height-e.height+e.height*o[1]]]:i}else Di(),i=r;else if(e.extent&&e.parentNode){var c=n.get(e.parentNode),d=da(c,o).positionAbsolute,f=d.x,h=d.y;i=[[e.extent[0][0]+f,e.extent[0][1]+h],[e.extent[1][0]+f,e.extent[1][1]+h]]}var p={x:0,y:0};if(e.parentNode){var m=n.get(e.parentNode);p=da(m,o).positionAbsolute}var g=i?wi(t,i):t;return{position:{x:g.x-p.x,y:g.y-p.y},positionAbsolute:g}}function ol(e){var t=e.nodeId,n=e.dragItems,r=e.nodeInternals,o=n.map((function(e){return Ve(Ve({},r.get(e.id)),{},{position:e.position,positionAbsolute:e.positionAbsolute})}));return[t?o.find((function(e){return e.id===t})):o[0],o]}var il=function(e,t,n,r){var o=t.querySelectorAll(e);if(!o||!o.length)return null;var i=Array.from(o),a=t.getBoundingClientRect(),l=a.width*r[0],s=a.height*r[1];return i.map((function(e){var t=e.getBoundingClientRect();return Ve({id:e.getAttribute(\"data-handleid\"),position:e.getAttribute(\"data-handlepos\"),x:(t.left-a.left-l)/n,y:(t.top-a.top-s)/n},yi(e))}))};function al(e,t,n){return void 0===n?n:function(r){var o=t().nodeInternals.get(e);n(r,Ve({},o))}}function ll(e){var t=e.id,n=e.store,r=e.unselect,o=void 0!==r&&r,i=n.getState(),a=i.addSelectedNodes,l=i.unselectNodesAndEdges,s=i.multiSelectionActive,u=i.nodeInternals.get(t);n.setState({nodesSelectionActive:!1}),u.selected?(o||u.selected&&s)&&l({nodes:[u]}):a([t])}function sl(e){return function(t,n,r){return null===e||void 0===e?void 0:e(t,r)}}function ul(t){var n=t.nodeRef,r=t.disabled,o=void 0!==r&&r,i=t.noDragClassName,a=t.handleSelector,s=t.nodeId,u=t.isSelectable,c=t.selectNodesOnDrag,d=l((0,e.useState)(!1),2),f=d[0],h=d[1],p=hi(),m=(0,e.useRef)(),g=(0,e.useRef)({x:null,y:null}),v=function(){var t=hi(),n=(0,e.useCallback)((function(e){var n=e.sourceEvent,r=t.getState(),o=r.transform,i=r.snapGrid,a=r.snapToGrid,l=n.touches?n.touches[0].clientX:n.clientX,s=n.touches?n.touches[0].clientY:n.clientY,u={x:(l-o[0])/o[2],y:(s-o[1])/o[2]};return Ve({xSnapped:a?i[0]*Math.round(u.x/i[0]):u.x,ySnapped:a?i[1]*Math.round(u.y/i[1]):u.y},u)}),[]);return n}();return(0,e.useEffect)((function(){if(null!==n&&void 0!==n&&n.current){var e=Cn(n.current);if(!o){var t=function(){var e,t,n,r,o=On,i=Tn,a=In,l=Rn,s={},u=it(\"start\",\"drag\",\"end\"),c=0,d=0;function f(e){e.on(\"mousedown.drag\",h).filter(l).on(\"touchstart.drag\",g).on(\"touchmove.drag\",v,Nn).on(\"touchend.drag touchcancel.drag\",y).style(\"touch-action\",\"none\").style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\")}function h(a,l){if(!r&&o.call(this,a,l)){var s=b(this,i.call(this,a,l),a,l,\"mouse\");s&&(Cn(a.view).on(\"mousemove.drag\",p,Mn).on(\"mouseup.drag\",m,Mn),Pn(a.view),An(a),n=!1,e=a.clientX,t=a.clientY,s(\"start\",a))}}function p(r){if(Dn(r),!n){var o=r.clientX-e,i=r.clientY-t;n=o*o+i*i>d}s.mouse(\"drag\",r)}function m(e){Cn(e.view).on(\"mousemove.drag mouseup.drag\",null),Ln(e.view,n),Dn(e),s.mouse(\"end\",e)}function g(e,t){if(o.call(this,e,t)){var n,r,a=e.changedTouches,l=i.call(this,e,t),s=a.length;for(n=0;n<s;++n)(r=b(this,l,e,t,a[n].identifier,a[n]))&&(An(e),r(\"start\",e,a[n]))}}function v(e){var t,n,r=e.changedTouches,o=r.length;for(t=0;t<o;++t)(n=s[r[t].identifier])&&(Dn(e),n(\"drag\",e,r[t]))}function y(e){var t,n,o=e.changedTouches,i=o.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),t=0;t<i;++t)(n=s[o[t].identifier])&&(An(e),n(\"end\",e,o[t]))}function b(e,t,n,r,o,i){var l,d,h,p=u.copy(),m=En(i||n,t);if(null!=(h=a.call(e,new jn(\"beforestart\",{sourceEvent:n,target:f,identifier:o,active:c,x:m[0],y:m[1],dx:0,dy:0,dispatch:p}),r)))return l=h.x-m[0]||0,d=h.y-m[1]||0,function n(i,a,u){var g,v=m;switch(i){case\"start\":s[o]=n,g=c++;break;case\"end\":delete s[o],--c;case\"drag\":m=En(u||a,t),g=c}p.call(i,e,new jn(i,{sourceEvent:a,subject:h,target:f,identifier:o,active:g,x:m[0]+l,y:m[1]+d,dx:m[0]-v[0],dy:m[1]-v[1],dispatch:p}),r)}}return f.filter=function(e){return arguments.length?(o=\"function\"===typeof e?e:zn(!!e),f):o},f.container=function(e){return arguments.length?(i=\"function\"===typeof e?e:zn(e),f):i},f.subject=function(e){return arguments.length?(a=\"function\"===typeof e?e:zn(e),f):a},f.touchable=function(e){return arguments.length?(l=\"function\"===typeof e?e:zn(!!e),f):l},f.on=function(){var e=u.on.apply(u,arguments);return e===u?f:e},f.clickDistance=function(e){return arguments.length?(d=(e=+e)*e,f):Math.sqrt(d)},f}().on(\"start\",(function(e){var t,n=p.getState(),r=n.nodeInternals,o=n.multiSelectionActive,i=n.unselectNodesAndEdges,a=n.onNodeDragStart,d=n.onSelectionDragStart,f=s?a:sl(d);c||o||!s||(null!==(t=r.get(s))&&void 0!==t&&t.selected||i());s&&u&&c&&ll({id:s,store:p});var h=v(e);if(g.current=h,m.current=nl(r,h,s),f&&m.current){var y=l(ol({nodeId:s,dragItems:m.current,nodeInternals:r}),2),b=y[0],w=y[1];f(e.sourceEvent,b,w)}})).on(\"drag\",(function(e){var t=p.getState(),n=t.updateNodePositions,r=t.nodeInternals,o=t.nodeExtent,i=t.onNodeDrag,a=t.onSelectionDrag,u=t.snapGrid,c=t.snapToGrid,d=t.nodeOrigin,f=v(e);if((g.current.x!==f.xSnapped||g.current.y!==f.ySnapped)&&m.current){g.current={x:f.xSnapped,y:f.ySnapped};var y=!1;if(m.current=m.current.map((function(e){var t={x:f.x-e.distance.x,y:f.y-e.distance.y};c&&(t.x=u[0]*Math.round(t.x/u[0]),t.y=u[1]*Math.round(t.y/u[1]));var n=rl(e,t,r,o,d);return y=y||e.position.x!==n.position.x||e.position.y!==n.position.y,e.position=n.position,e.positionAbsolute=n.positionAbsolute,e})),!y)return;var b=s?i:sl(a);if(n(m.current,!0,!0),h(!0),b){var w=l(ol({nodeId:s,dragItems:m.current,nodeInternals:r}),2),x=w[0],k=w[1];b(e.sourceEvent,x,k)}}})).on(\"end\",(function(e){if(h(!1),m.current){var t=p.getState(),n=t.updateNodePositions,r=t.nodeInternals,o=t.onNodeDragStop,i=t.onSelectionDragStop,a=s?o:sl(i);if(n(m.current,!1,!1),a){var u=l(ol({nodeId:s,dragItems:m.current,nodeInternals:r}),2),c=u[0],d=u[1];a(e.sourceEvent,c,d)}}})).filter((function(e){var t=e.target;return!e.button&&(!i||!tl(t,\".\".concat(i),n))&&(!a||tl(t,a,n))}));return e.call(t),function(){e.on(\".drag\",null)}}e.on(\".drag\",null)}}),[n,o,i,a,u,p,s,c,v]),f}function cl(){var t=hi();return(0,e.useCallback)((function(e){var n=t.getState(),r=n.nodeInternals,o=n.nodeExtent,i=n.updateNodePositions,a=n.getNodes,l=n.snapToGrid,s=n.snapGrid,u=a().filter((function(e){return e.selected})),c=l?s[0]:5,d=l?s[1]:5,f=e.isShiftPressed?4:1,h=e.x*c*f,p=e.y*d*f;i(u.map((function(e){if(e.positionAbsolute){var t={x:e.positionAbsolute.x+h,y:e.positionAbsolute.y+p};l&&(t.x=s[0]*Math.round(t.x/s[0]),t.y=s[1]*Math.round(t.y/s[1]));var n=rl(e,t,r,o);e.position=n.position,e.positionAbsolute=n.positionAbsolute}return e})),!0,!1)}),[])}var dl={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},fl=function(t){var n=function(n){var r=n.id,o=n.type,i=n.data,a=n.xPos,l=n.yPos,s=n.xPosOrigin,u=n.yPosOrigin,c=n.selected,d=n.onClick,f=n.onMouseEnter,h=n.onMouseMove,p=n.onMouseLeave,m=n.onContextMenu,g=n.onDoubleClick,v=n.style,y=n.className,b=n.isDraggable,w=n.isSelectable,x=n.isConnectable,k=n.isFocusable,_=n.selectNodesOnDrag,S=n.sourcePosition,C=n.targetPosition,E=n.hidden,N=n.resizeObserver,M=n.dragHandle,A=n.zIndex,D=n.isParent,P=n.noDragClassName,L=n.noPanClassName,z=n.initialized,j=n.disableKeyboardA11y,O=n.ariaLabel,T=n.rfId,I=hi(),R=(0,e.useRef)(null),F=(0,e.useRef)(S),B=(0,e.useRef)(C),q=(0,e.useRef)(o),U=w||b||d||f||h||p,H=cl(),V=al(r,I.getState,f),W=al(r,I.getState,h),Z=al(r,I.getState,p),$=al(r,I.getState,m),Y=al(r,I.getState,g);(0,e.useEffect)((function(){if(R.current&&!E){var e=R.current;return null===N||void 0===N||N.observe(e),function(){return null===N||void 0===N?void 0:N.unobserve(e)}}}),[E]),(0,e.useEffect)((function(){var e=q.current!==o,t=F.current!==S,n=B.current!==C;R.current&&(e||t||n)&&(e&&(q.current=o),t&&(F.current=S),n&&(B.current=C),I.getState().updateNodeDimensions([{id:r,nodeElement:R.current,forceUpdate:!0}]))}),[r,o,S,C]);var X=ul({nodeRef:R,disabled:E||!b,noDragClassName:P,handleSelector:M,nodeId:r,isSelectable:w,selectNodesOnDrag:_});return E?null:(0,Ze.jsx)(\"div\",{className:$e([\"react-flow__node\",\"react-flow__node-\".concat(o),Ue({},L,b),y,{selected:c,selectable:w,parent:D,dragging:X}]),ref:R,style:Ve({zIndex:A,transform:\"translate(\".concat(s,\"px,\").concat(u,\"px)\"),pointerEvents:U?\"all\":\"none\",visibility:z?\"visible\":\"hidden\"},v),\"data-id\":r,\"data-testid\":\"rf__node-\".concat(r),onMouseEnter:V,onMouseMove:W,onMouseLeave:Z,onContextMenu:$,onClick:function(e){if(!w||_&&b||ll({id:r,store:I}),d){var t=I.getState().nodeInternals.get(r);d(e,Ve({},t))}},onDoubleClick:Y,onKeyDown:k?function(e){if(!Pi(e))if(Ai.includes(e.key)&&w){var t,n=\"Escape\"===e.key;if(n)null===(t=R.current)||void 0===t||t.blur();ll({id:r,store:I,unselect:n})}else!j&&b&&c&&Object.prototype.hasOwnProperty.call(dl,e.key)&&(I.setState({ariaLiveMessage:\"Moved selected node \".concat(e.key.replace(\"Arrow\",\"\").toLowerCase(),\". New position, x: \").concat(~~a,\", y: \").concat(~~l)}),H({x:dl[e.key].x,y:dl[e.key].y,isShiftPressed:e.shiftKey}))}:void 0,tabIndex:k?0:void 0,role:k?\"button\":void 0,\"aria-describedby\":j?void 0:\"\".concat(Ba,\"-\").concat(T),\"aria-label\":O,children:(0,Ze.jsx)(ra,{value:r,children:(0,Ze.jsx)(t,{id:r,data:i,type:o,xPos:a,yPos:l,selected:c,isConnectable:x,sourcePosition:S,targetPosition:C,dragging:X,dragHandle:M,zIndex:A})})})};return n.displayName=\"NodeWrapper\",(0,e.memo)(n)};function hl(e){var t={input:fl(e.input||Sa),default:fl(e.default||ka),output:fl(e.output||Ea),group:fl(e.group||Na)},n=Object.keys(e).filter((function(e){return![\"input\",\"default\",\"output\",\"group\"].includes(e)})).reduce((function(t,n){return t[n]=fl(e[n]||ka),t}),{});return Ve(Ve({},t),n)}var pl=\"undefined\"!==typeof document?document:null,ml=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{target:pl},r=(0,e.useState)(!1),o=l(r,2),i=o[0],a=o[1],u=(0,e.useRef)(new Set([])),c=(0,e.useMemo)((function(){if(null!==t){var e=(Array.isArray(t)?t:[t]).filter((function(e){return\"string\"===typeof e})).map((function(e){return e.split(\"+\")})),n=e.reduce((function(e,t){return e.concat.apply(e,(0,s.Z)(t))}),[]);return[e,n]}return[[],[]]}),[t]),d=l(c,2),f=d[0],h=d[1];return(0,e.useEffect)((function(){if(null!==t){var e,r,o=function(e){if(Pi(e))return!1;var t=vl(e.code,h);u.current.add(e[t]),gl(f,u.current,!1)&&(e.preventDefault(),a(!0))},i=function(e){if(Pi(e))return!1;var t=vl(e.code,h);gl(f,u.current,!0)?(a(!1),u.current.clear()):u.current.delete(e[t])},l=function(){u.current.clear(),a(!1)};return null===n||void 0===n||null===(e=n.target)||void 0===e||e.addEventListener(\"keydown\",o),null===n||void 0===n||null===(r=n.target)||void 0===r||r.addEventListener(\"keyup\",i),window.addEventListener(\"blur\",l),function(){var e,t;null===n||void 0===n||null===(e=n.target)||void 0===e||e.removeEventListener(\"keydown\",o),null===n||void 0===n||null===(t=n.target)||void 0===t||t.removeEventListener(\"keyup\",i),window.removeEventListener(\"blur\",l)}}}),[t,a]),i};function gl(e,t,n){return e.filter((function(e){return n||e.length===t.size})).some((function(e){return e.every((function(e){return t.has(e)}))}))}function vl(e,t){return t.includes(e)?\"code\":\"key\"}function yl(e,t,n,r){var o,i,a,l,s,u,c,d;if(!e.parentNode)return n;var f=t.get(e.parentNode),h=da(f,r);return yl(f,t,{x:(null!==(o=n.x)&&void 0!==o?o:0)+h.x,y:(null!==(i=n.y)&&void 0!==i?i:0)+h.y,z:(null!==(a=null===(l=f[Mi])||void 0===l?void 0:l.z)&&void 0!==a?a:0)>(null!==(s=n.z)&&void 0!==s?s:0)?null!==(u=null===(c=f[Mi])||void 0===c?void 0:c.z)&&void 0!==u?u:0:null!==(d=n.z)&&void 0!==d?d:0},r)}function bl(e,t,n){e.forEach((function(r){if(r.parentNode&&!e.has(r.parentNode))throw new Error(\"Parent node \".concat(r.parentNode,\" not found\"));if(r.parentNode||null!==n&&void 0!==n&&n[r.id]){var o,i,a=yl(r,e,Ve(Ve({},r.position),{},{z:null!==(o=null===(i=r[Mi])||void 0===i?void 0:i.z)&&void 0!==o?o:0}),t),l=a.x,s=a.y,u=a.z;r.positionAbsolute={x:l,y:s},r[Mi].z=u,null!==n&&void 0!==n&&n[r.id]&&(r[Mi].isParent=!0)}}))}function wl(e,t,n,r){var o=new Map,i={},a=r?1e3:0;return e.forEach((function(e){var n,r=(Ni(e.zIndex)?e.zIndex:0)+(e.selected?a:0),l=t.get(e.id),s=Ve(Ve({width:null===l||void 0===l?void 0:l.width,height:null===l||void 0===l?void 0:l.height},e),{},{positionAbsolute:{x:e.position.x,y:e.position.y}});e.parentNode&&(s.parentNode=e.parentNode,i[e.parentNode]=!0),Object.defineProperty(s,Mi,{enumerable:!1,value:{handleBounds:null===l||void 0===l||null===(n=l[Mi])||void 0===n?void 0:n.handleBounds,z:r}}),o.set(e.id,s)})),bl(o,n,i),o}function xl(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e(),r=n.getNodes,o=n.width,i=n.height,a=n.minZoom,s=n.maxZoom,u=n.d3Zoom,c=n.d3Selection,d=n.fitViewOnInitDone,f=n.fitViewOnInit,h=n.nodeOrigin;if((t.initial&&!d&&f||!t.initial)&&u&&c){var p=r().filter((function(e){return t.includeHiddenNodes?e.width&&e.height:!e.hidden})),m=p.every((function(e){return e.width&&e.height}));if(p.length>0&&m){var g,v,y,b=fa(p,h),w=ma(b,o,i,null!==(g=t.minZoom)&&void 0!==g?g:a,null!==(v=t.maxZoom)&&void 0!==v?v:s,null!==(y=t.padding)&&void 0!==y?y:.1),x=l(w,3),k=x[0],_=x[1],S=x[2],C=$o.translate(k,_).scale(S);return\"number\"===typeof t.duration&&t.duration>0?u.transform(ga(c,t.duration),C):u.transform(c,C),!0}}return!1}function kl(e,t){return e.forEach((function(e){var n,r=t.get(e.id);r&&t.set(r.id,Ve(Ve({},r),{},(Ue(n={},Mi,r[Mi]),Ue(n,\"selected\",e.selected),n)))})),new Map(t)}function _l(e,t){return t.map((function(t){var n=e.find((function(e){return e.id===t.id}));return n&&(t.selected=n.selected),t}))}function Sl(e){var t=e.changedNodes,n=e.changedEdges,r=e.get,o=e.set,i=r(),a=i.nodeInternals,l=i.edges,s=i.onNodesChange,u=i.onEdgesChange,c=i.hasDefaultNodes,d=i.hasDefaultEdges;null!==t&&void 0!==t&&t.length&&(c&&o({nodeInternals:kl(t,a)}),null===s||void 0===s||s(t)),null!==n&&void 0!==n&&n.length&&(d&&o({edges:_l(n,l)}),null===u||void 0===u||u(n))}var Cl=function(){},El={zoomIn:Cl,zoomOut:Cl,zoomTo:Cl,getZoom:function(){return 1},setViewport:Cl,getViewport:function(){return{x:0,y:0,zoom:1}},fitView:Cl,setCenter:Cl,fitBounds:Cl,project:function(e){return e},viewportInitialized:!1},Nl=function(e){return{d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}},Ml=function(){var t=hi(),n=fi(Nl,Qe),r=n.d3Zoom,o=n.d3Selection,i=(0,e.useMemo)((function(){return o&&r?{zoomIn:function(e){return r.scaleBy(ga(o,null===e||void 0===e?void 0:e.duration),1.2)},zoomOut:function(e){return r.scaleBy(ga(o,null===e||void 0===e?void 0:e.duration),1/1.2)},zoomTo:function(e,t){return r.scaleTo(ga(o,null===t||void 0===t?void 0:t.duration),e)},getZoom:function(){return t.getState().transform[2]},setViewport:function(e,n){var i,a,s,u=l(t.getState().transform,3),c=u[0],d=u[1],f=u[2],h=$o.translate(null!==(i=e.x)&&void 0!==i?i:c,null!==(a=e.y)&&void 0!==a?a:d).scale(null!==(s=e.zoom)&&void 0!==s?s:f);r.transform(ga(o,null===n||void 0===n?void 0:n.duration),h)},getViewport:function(){var e=l(t.getState().transform,3);return{x:e[0],y:e[1],zoom:e[2]}},fitView:function(e){return xl(t.getState,e)},setCenter:function(e,n,i){var a=t.getState(),l=a.width,s=a.height,u=a.maxZoom,c=\"undefined\"!==typeof(null===i||void 0===i?void 0:i.zoom)?i.zoom:u,d=l/2-e*c,f=s/2-n*c,h=$o.translate(d,f).scale(c);r.transform(ga(o,null===i||void 0===i?void 0:i.duration),h)},fitBounds:function(e,n){var i,a=t.getState(),s=a.width,u=a.height,c=a.minZoom,d=a.maxZoom,f=l(ma(e,s,u,c,d,null!==(i=null===n||void 0===n?void 0:n.padding)&&void 0!==i?i:.1),3),h=f[0],p=f[1],m=f[2],g=$o.translate(h,p).scale(m);r.transform(ga(o,null===n||void 0===n?void 0:n.duration),g)},project:function(e){var n=t.getState();return function(e,t,n,r){var o=e.x,i=e.y,a=l(t,3),s=a[0],u=a[1],c=a[2],d=l(r,2),f=d[0],h=d[1],p={x:(o-s)/c,y:(i-u)/c};return n?{x:f*Math.round(p.x/f),y:h*Math.round(p.y/h)}:p}(e,n.transform,n.snapToGrid,n.snapGrid)},viewportInitialized:!0}:El}),[r,o]);return i};function Al(){var t=Ml(),n=hi(),r=(0,e.useCallback)((function(){return n.getState().getNodes().map((function(e){return Ve({},e)}))}),[]),o=(0,e.useCallback)((function(e){return n.getState().nodeInternals.get(e)}),[]),i=(0,e.useCallback)((function(){var e=n.getState().edges;return(void 0===e?[]:e).map((function(e){return Ve({},e)}))}),[]),a=(0,e.useCallback)((function(e){var t=n.getState().edges;return(void 0===t?[]:t).find((function(t){return t.id===e}))}),[]),u=(0,e.useCallback)((function(e){var t=n.getState(),r=t.getNodes,o=t.setNodes,i=t.hasDefaultNodes,a=t.onNodesChange,l=r(),s=\"function\"===typeof e?e(l):e;if(i)o(s);else if(a){var u=0===s.length?l.map((function(e){return{type:\"remove\",id:e.id}})):s.map((function(e){return{item:e,type:\"reset\"}}));a(u)}}),[]),c=(0,e.useCallback)((function(e){var t=n.getState(),r=t.edges,o=void 0===r?[]:r,i=t.setEdges,a=t.hasDefaultEdges,l=t.onEdgesChange,s=\"function\"===typeof e?e(o):e;if(a)i(s);else if(l){l(0===s.length?o.map((function(e){return{type:\"remove\",id:e.id}})):s.map((function(e){return{item:e,type:\"reset\"}})))}}),[]),d=(0,e.useCallback)((function(e){var t=Array.isArray(e)?e:[e],r=n.getState(),o=r.getNodes,i=r.setNodes,a=r.hasDefaultNodes,l=r.onNodesChange;if(a){var u=o();i([].concat((0,s.Z)(u),(0,s.Z)(t)))}else if(l){var c=t.map((function(e){return{item:e,type:\"add\"}}));l(c)}}),[]),f=(0,e.useCallback)((function(e){var t=Array.isArray(e)?e:[e],r=n.getState(),o=r.edges,i=void 0===o?[]:o,a=r.setEdges,l=r.hasDefaultEdges,u=r.onEdgesChange;if(l)a([].concat((0,s.Z)(i),(0,s.Z)(t)));else if(u){u(t.map((function(e){return{item:e,type:\"add\"}})))}}),[]),h=(0,e.useCallback)((function(){var e=n.getState(),t=e.getNodes,r=e.edges,o=void 0===r?[]:r,i=l(e.transform,3),a=i[0],s=i[1],u=i[2];return{nodes:t().map((function(e){return Ve({},e)})),edges:o.map((function(e){return Ve({},e)})),viewport:{x:a,y:s,zoom:u}}}),[]),p=(0,e.useCallback)((function(e){var t=e.nodes,r=e.edges,o=n.getState(),i=o.nodeInternals,a=o.getNodes,l=o.edges,u=o.hasDefaultNodes,c=o.hasDefaultEdges,d=o.onNodesDelete,f=o.onEdgesDelete,h=o.onNodesChange,p=o.onEdgesChange,m=(t||[]).map((function(e){return e.id})),g=(r||[]).map((function(e){return e.id})),v=a().reduce((function(e,t){var n=!m.includes(t.id)&&t.parentNode&&e.find((function(e){return e.id===t.parentNode}));return(\"boolean\"!==typeof t.deletable||t.deletable)&&(m.includes(t.id)||n)&&e.push(t),e}),[]),y=l.filter((function(e){return\"boolean\"!==typeof e.deletable||e.deletable})),b=y.filter((function(e){return g.includes(e.id)}));if(v||b){var w=pa(v,y),x=[].concat((0,s.Z)(b),(0,s.Z)(w)),k=x.reduce((function(e,t){return e.includes(t.id)||e.push(t.id),e}),[]);if((c||u)&&(c&&n.setState({edges:l.filter((function(e){return!k.includes(e.id)}))}),u&&(v.forEach((function(e){i.delete(e.id)})),n.setState({nodeInternals:new Map(i)}))),k.length>0&&(null===f||void 0===f||f(x),p&&p(k.map((function(e){return{id:e,type:\"remove\"}})))),v.length>0)if(null===d||void 0===d||d(v),h)h(v.map((function(e){return{id:e.id,type:\"remove\"}})))}}),[]),m=(0,e.useCallback)((function(e){var t,r=Ni((t=e).width)&&Ni(t.height)&&Ni(t.x)&&Ni(t.y),o=r?null:n.getState().nodeInternals.get(e.id);return[r?e:Ci(o),o,r]}),[]),g=(0,e.useCallback)((function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2?arguments[2]:void 0,o=m(e),i=l(o,3),a=i[0],s=i[1],u=i[2];return a?(r||n.getState().getNodes()).filter((function(n){if(!u&&(n.id===s.id||!n.positionAbsolute))return!1;var r=Ci(n),o=Ei(r,a);return t&&o>0||o>=e.width*e.height})):[]}),[]),v=(0,e.useCallback)((function(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=m(e),o=l(r,1),i=o[0];if(!i)return!1;var a=Ei(i,t),s=n&&a>0;return s||a>=e.width*e.height}),[]);return(0,e.useMemo)((function(){return Ve(Ve({},t),{},{getNodes:r,getNode:o,getEdges:i,getEdge:a,setNodes:u,setEdges:c,addNodes:d,addEdges:f,toObject:h,deleteElements:p,getIntersectingNodes:g,isNodeIntersecting:v})}),[t,r,o,i,a,u,c,d,f,h,p,g,v])}var Dl={position:\"absolute\",width:\"100%\",height:\"100%\",top:0,left:0},Pl=function(e){return{x:e.x,y:e.y,zoom:e.k}},Ll=function(e,t){return e.target.closest(\".\".concat(t))},zl=function(e,t){return 2===t&&Array.isArray(e)&&e.includes(2)},jl=function(e){return{d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}},Ol=function(t){var n=t.onMove,r=t.onMoveStart,o=t.onMoveEnd,i=t.onPaneContextMenu,a=t.zoomOnScroll,l=void 0===a||a,s=t.zoomOnPinch,u=void 0===s||s,c=t.panOnScroll,d=void 0!==c&&c,f=t.panOnScrollSpeed,h=void 0===f?.5:f,p=t.panOnScrollMode,m=void 0===p?ji.Free:p,g=t.zoomOnDoubleClick,v=void 0===g||g,y=t.elementsSelectable,b=t.panOnDrag,w=void 0===b||b,x=t.defaultViewport,k=t.translateExtent,_=t.minZoom,S=t.maxZoom,C=t.zoomActivationKeyCode,E=t.preventScrolling,N=void 0===E||E,M=t.children,A=t.noWheelClassName,D=t.noPanClassName,P=(0,e.useRef)(),L=hi(),z=(0,e.useRef)(!1),j=(0,e.useRef)(!1),O=(0,e.useRef)(null),T=(0,e.useRef)({x:0,y:0,zoom:0}),I=fi(jl,Qe),R=I.d3Zoom,F=I.d3Selection,B=I.d3ZoomHandler,q=I.userSelectionActive,U=ml(C),H=(0,e.useRef)(0);return function(t){var n=hi();(0,e.useEffect)((function(){var e,r=function(){if(t.current){var e=yi(t.current);0!==e.height&&0!==e.width||Di(),n.setState({width:e.width||500,height:e.height||500})}};return r(),window.addEventListener(\"resize\",r),t.current&&(e=new ResizeObserver((function(){return r()}))).observe(t.current),function(){window.removeEventListener(\"resize\",r),e&&t.current&&e.unobserve(t.current)}}),[])}(O),(0,e.useEffect)((function(){if(O.current){var e=O.current.getBoundingClientRect(),t=function(){var e,t,n,r=Ko,o=Go,i=ti,a=Jo,l=ei,s=[0,1/0],u=[[-1/0,-1/0],[1/0,1/0]],c=250,d=Un,f=it(\"start\",\"zoom\",\"end\"),h=500,p=0,m=10;function g(e){e.property(\"__zoom\",Qo).on(\"wheel.zoom\",_,{passive:!1}).on(\"mousedown.zoom\",S).on(\"dblclick.zoom\",C).filter(l).on(\"touchstart.zoom\",E).on(\"touchmove.zoom\",N).on(\"touchend.zoom touchcancel.zoom\",M).style(\"-webkit-tap-highlight-color\",\"rgba(0,0,0,0)\")}function v(e,t){return(t=Math.max(s[0],Math.min(s[1],t)))===e.k?e:new Zo(t,e.x,e.y)}function y(e,t,n){var r=t[0]-n[0]*e.k,o=t[1]-n[1]*e.k;return r===e.x&&o===e.y?e:new Zo(e.k,r,o)}function b(e){return[(+e[0][0]+ +e[1][0])/2,(+e[0][1]+ +e[1][1])/2]}function w(e,t,n,r){e.on(\"start.zoom\",(function(){x(this,arguments).event(r).start()})).on(\"interrupt.zoom end.zoom\",(function(){x(this,arguments).event(r).end()})).tween(\"zoom\",(function(){var e=this,i=arguments,a=x(e,i).event(r),l=o.apply(e,i),s=null==n?b(l):\"function\"===typeof n?n.apply(e,i):n,u=Math.max(l[1][0]-l[0][0],l[1][1]-l[0][1]),c=e.__zoom,f=\"function\"===typeof t?t.apply(e,i):t,h=d(c.invert(s).concat(u/c.k),f.invert(s).concat(u/f.k));return function(e){if(1===e)e=f;else{var t=h(e),n=u/t[2];e=new Zo(n,s[0]-t[0]*n,s[1]-t[1]*n)}a.zoom(null,e)}}))}function x(e,t,n){return!n&&e.__zooming||new k(e,t)}function k(e,t){this.that=e,this.args=t,this.active=0,this.sourceEvent=null,this.extent=o.apply(e,t),this.taps=0}function _(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o<t;o++)n[o-1]=arguments[o];if(r.apply(this,arguments)){var l=x(this,n).event(e),c=this.__zoom,d=Math.max(s[0],Math.min(s[1],c.k*Math.pow(2,a.apply(this,arguments)))),f=En(e);if(l.wheel)l.mouse[0][0]===f[0]&&l.mouse[0][1]===f[1]||(l.mouse[1]=c.invert(l.mouse[0]=f)),clearTimeout(l.wheel);else{if(c.k===d)return;l.mouse=[f,c.invert(f)],dr(this),l.start()}Xo(e),l.wheel=setTimeout(h,150),l.zoom(\"mouse\",i(y(v(c,d),l.mouse[0],l.mouse[1]),l.extent,u))}function h(){l.wheel=null,l.end()}}function S(e){for(var t=arguments.length,o=new Array(t>1?t-1:0),a=1;a<t;a++)o[a-1]=arguments[a];if(!n&&r.apply(this,arguments)){var l=e.currentTarget,s=x(this,o,!0).event(e),c=Cn(e.view).on(\"mousemove.zoom\",m,!0).on(\"mouseup.zoom\",g,!0),d=En(e,l),f=e.clientX,h=e.clientY;Pn(e.view),Yo(e),s.mouse=[d,this.__zoom.invert(d)],dr(this),s.start()}function m(e){if(Xo(e),!s.moved){var t=e.clientX-f,n=e.clientY-h;s.moved=t*t+n*n>p}s.event(e).zoom(\"mouse\",i(y(s.that.__zoom,s.mouse[0]=En(e,l),s.mouse[1]),s.extent,u))}function g(e){c.on(\"mousemove.zoom mouseup.zoom\",null),Ln(e.view,s.moved),Xo(e),s.event(e).end()}}function C(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a<t;a++)n[a-1]=arguments[a];if(r.apply(this,arguments)){var l=this.__zoom,s=En(e.changedTouches?e.changedTouches[0]:e,this),d=l.invert(s),f=l.k*(e.shiftKey?.5:2),h=i(y(v(l,f),s,d),o.apply(this,n),u);Xo(e),c>0?Cn(this).transition().duration(c).call(w,h,s,e):Cn(this).call(g.transform,h,s,e)}}function E(n){for(var o=arguments.length,i=new Array(o>1?o-1:0),a=1;a<o;a++)i[a-1]=arguments[a];if(r.apply(this,arguments)){var l,s,u,c,d=n.touches,f=d.length,p=x(this,i,n.changedTouches.length===f).event(n);for(Yo(n),s=0;s<f;++s)c=[c=En(u=d[s],this),this.__zoom.invert(c),u.identifier],p.touch0?p.touch1||p.touch0[2]===c[2]||(p.touch1=c,p.taps=0):(p.touch0=c,l=!0,p.taps=1+!!e);e&&(e=clearTimeout(e)),l&&(p.taps<2&&(t=c[0],e=setTimeout((function(){e=null}),h)),dr(this),p.start())}}function N(e){if(this.__zooming){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o,a,l,s,c=x(this,n).event(e),d=e.changedTouches,f=d.length;for(Xo(e),o=0;o<f;++o)l=En(a=d[o],this),c.touch0&&c.touch0[2]===a.identifier?c.touch0[0]=l:c.touch1&&c.touch1[2]===a.identifier&&(c.touch1[0]=l);if(a=c.that.__zoom,c.touch1){var h=c.touch0[0],p=c.touch0[1],m=c.touch1[0],g=c.touch1[1],b=(b=m[0]-h[0])*b+(b=m[1]-h[1])*b,w=(w=g[0]-p[0])*w+(w=g[1]-p[1])*w;a=v(a,Math.sqrt(b/w)),l=[(h[0]+m[0])/2,(h[1]+m[1])/2],s=[(p[0]+g[0])/2,(p[1]+g[1])/2]}else{if(!c.touch0)return;l=c.touch0[0],s=c.touch0[1]}c.zoom(\"touch\",i(y(a,l,s),c.extent,u))}}function M(e){for(var r=arguments.length,o=new Array(r>1?r-1:0),i=1;i<r;i++)o[i-1]=arguments[i];if(this.__zooming){var a,l,s=x(this,o).event(e),u=e.changedTouches,c=u.length;for(Yo(e),n&&clearTimeout(n),n=setTimeout((function(){n=null}),h),a=0;a<c;++a)l=u[a],s.touch0&&s.touch0[2]===l.identifier?delete s.touch0:s.touch1&&s.touch1[2]===l.identifier&&delete s.touch1;if(s.touch1&&!s.touch0&&(s.touch0=s.touch1,delete s.touch1),s.touch0)s.touch0[1]=this.__zoom.invert(s.touch0[0]);else if(s.end(),2===s.taps&&(l=En(l,this),Math.hypot(t[0]-l[0],t[1]-l[1])<m)){var d=Cn(this).on(\"dblclick.zoom\");d&&d.apply(this,arguments)}}}return g.transform=function(e,t,n,r){var o=e.selection?e.selection():e;o.property(\"__zoom\",Qo),e!==o?w(e,t,n,r):o.interrupt().each((function(){x(this,arguments).event(r).start().zoom(null,\"function\"===typeof t?t.apply(this,arguments):t).end()}))},g.scaleBy=function(e,t,n,r){g.scaleTo(e,(function(){return this.__zoom.k*(\"function\"===typeof t?t.apply(this,arguments):t)}),n,r)},g.scaleTo=function(e,t,n,r){g.transform(e,(function(){var e=o.apply(this,arguments),r=this.__zoom,a=null==n?b(e):\"function\"===typeof n?n.apply(this,arguments):n,l=r.invert(a),s=\"function\"===typeof t?t.apply(this,arguments):t;return i(y(v(r,s),a,l),e,u)}),n,r)},g.translateBy=function(e,t,n,r){g.transform(e,(function(){return i(this.__zoom.translate(\"function\"===typeof t?t.apply(this,arguments):t,\"function\"===typeof n?n.apply(this,arguments):n),o.apply(this,arguments),u)}),null,r)},g.translateTo=function(e,t,n,r,a){g.transform(e,(function(){var e=o.apply(this,arguments),a=this.__zoom,l=null==r?b(e):\"function\"===typeof r?r.apply(this,arguments):r;return i($o.translate(l[0],l[1]).scale(a.k).translate(\"function\"===typeof t?-t.apply(this,arguments):-t,\"function\"===typeof n?-n.apply(this,arguments):-n),e,u)}),r,a)},k.prototype={event:function(e){return e&&(this.sourceEvent=e),this},start:function(){return 1===++this.active&&(this.that.__zooming=this,this.emit(\"start\")),this},zoom:function(e,t){return this.mouse&&\"mouse\"!==e&&(this.mouse[1]=t.invert(this.mouse[0])),this.touch0&&\"touch\"!==e&&(this.touch0[1]=t.invert(this.touch0[0])),this.touch1&&\"touch\"!==e&&(this.touch1[1]=t.invert(this.touch1[0])),this.that.__zoom=t,this.emit(\"zoom\"),this},end:function(){return 0===--this.active&&(delete this.that.__zooming,this.emit(\"end\")),this},emit:function(e){var t=Cn(this.that).datum();f.call(e,this.that,new Wo(e,{sourceEvent:this.sourceEvent,target:g,type:e,transform:this.that.__zoom,dispatch:f}),t)}},g.wheelDelta=function(e){return arguments.length?(a=\"function\"===typeof e?e:Vo(+e),g):a},g.filter=function(e){return arguments.length?(r=\"function\"===typeof e?e:Vo(!!e),g):r},g.touchable=function(e){return arguments.length?(l=\"function\"===typeof e?e:Vo(!!e),g):l},g.extent=function(e){return arguments.length?(o=\"function\"===typeof e?e:Vo([[+e[0][0],+e[0][1]],[+e[1][0],+e[1][1]]]),g):o},g.scaleExtent=function(e){return arguments.length?(s[0]=+e[0],s[1]=+e[1],g):[s[0],s[1]]},g.translateExtent=function(e){return arguments.length?(u[0][0]=+e[0][0],u[1][0]=+e[1][0],u[0][1]=+e[0][1],u[1][1]=+e[1][1],g):[[u[0][0],u[0][1]],[u[1][0],u[1][1]]]},g.constrain=function(e){return arguments.length?(i=e,g):i},g.duration=function(e){return arguments.length?(c=+e,g):c},g.interpolate=function(e){return arguments.length?(d=e,g):d},g.on=function(){var e=f.on.apply(f,arguments);return e===f?g:e},g.clickDistance=function(e){return arguments.length?(p=(e=+e)*e,g):Math.sqrt(p)},g.tapDistance=function(e){return arguments.length?(m=+e,g):m},g}().scaleExtent([_,S]).translateExtent(k),n=Cn(O.current).call(t),r=$o.translate(x.x,x.y).scale(bi(x.zoom,_,S)),o=[[0,0],[e.width,e.height]],i=t.constrain()(r,o,k);t.transform(n,i),L.setState({d3Zoom:t,d3Selection:n,d3ZoomHandler:n.on(\"wheel.zoom\"),transform:[i.x,i.y,i.k],domNode:O.current.closest(\".react-flow\")})}}),[]),(0,e.useEffect)((function(){F&&R&&(!d||U||q?\"undefined\"!==typeof B&&F.on(\"wheel.zoom\",(function(e,t){if(!N||Ll(e,A))return null;e.preventDefault(),B.call(this,e,t)})):F.on(\"wheel.zoom\",(function(e){if(Ll(e,A))return!1;e.preventDefault(),e.stopImmediatePropagation();var t=F.property(\"__zoom\").k||1;if(e.ctrlKey&&u){var n=En(e),r=-e.deltaY*(1===e.deltaMode?.05:e.deltaMode?1:.002)*10,o=t*Math.pow(2,r);R.scaleTo(F,o,n)}else{var i=1===e.deltaMode?20:1,a=m===ji.Vertical?0:e.deltaX*i,l=m===ji.Horizontal?0:e.deltaY*i;R.translateBy(F,-a/t*h,-l/t*h)}})))}),[q,d,m,F,R,B,U,u,N,A]),(0,e.useEffect)((function(){R&&R.on(\"start\",(function(e){var t;if(!e.sourceEvent)return null;H.current=e.sourceEvent.button;var n=L.getState().onViewportChangeStart;if(z.current=!0,\"mousedown\"===(null===(t=e.sourceEvent)||void 0===t?void 0:t.type)&&L.setState({paneDragging:!0}),r||n){var o=Pl(e.transform);T.current=o,null===n||void 0===n||n(o),null===r||void 0===r||r(e.sourceEvent,o)}}))}),[R,r]),(0,e.useEffect)((function(){R&&(q&&!z.current?R.on(\"zoom\",null):q||R.on(\"zoom\",(function(e){var t,r=L.getState().onViewportChange;if(L.setState({transform:[e.transform.x,e.transform.y,e.transform.k]}),j.current=!(!i||!zl(w,null!==(t=H.current)&&void 0!==t?t:0)),n||r){var o=Pl(e.transform);null===r||void 0===r||r(o),null===n||void 0===n||n(e.sourceEvent,o)}})))}),[q,R,n,w,i]),(0,e.useEffect)((function(){R&&R.on(\"end\",(function(e){var t;if(!e.sourceEvent)return null;var n,r,a=L.getState().onViewportChangeEnd;if(z.current=!1,L.setState({paneDragging:!1}),i&&zl(w,null!==(t=H.current)&&void 0!==t?t:0)&&!j.current&&i(e.sourceEvent),j.current=!1,(o||a)&&(n=T.current,r=e.transform,n.x!==r.x||n.y!==r.y||n.zoom!==r.k)){var l=Pl(e.transform);T.current=l,clearTimeout(P.current),P.current=setTimeout((function(){null===a||void 0===a||a(l),null===o||void 0===o||o(e.sourceEvent,l)}),d?150:0)}}))}),[R,d,w,o,i]),(0,e.useEffect)((function(){R&&R.filter((function(e){var t=U||l,n=u&&e.ctrlKey;if(1===e.button&&\"mousedown\"===e.type&&(Ll(e,\"react-flow__node\")||Ll(e,\"react-flow__edge\")))return!0;if(!w&&!t&&!d&&!v&&!u)return!1;if(q)return!1;if(!v&&\"dblclick\"===e.type)return!1;if(Ll(e,A)&&\"wheel\"===e.type)return!1;if(Ll(e,D)&&\"wheel\"!==e.type)return!1;if(!u&&e.ctrlKey&&\"wheel\"===e.type)return!1;if(!t&&!d&&!n&&\"wheel\"===e.type)return!1;if(!w&&(\"mousedown\"===e.type||\"touchstart\"===e.type))return!1;if(Array.isArray(w)&&!w.includes(e.button)&&(\"mousedown\"===e.type||\"touchstart\"===e.type))return!1;var r=Array.isArray(w)&&w.includes(e.button)||!e.button||e.button<=1;return(!e.ctrlKey||\"wheel\"===e.type)&&r}))}),[q,R,l,u,d,v,w,y,U]),(0,Ze.jsx)(\"div\",{className:\"react-flow__renderer\",ref:O,style:Dl,children:M})},Tl=function(e){return{userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect}};function Il(){var e=fi(Tl,Qe),t=e.userSelectionActive,n=e.userSelectionRect;return t&&n?(0,Ze.jsx)(\"div\",{className:\"react-flow__selection react-flow__container\",style:{width:n.width,height:n.height,transform:\"translate(\".concat(n.x,\"px, \").concat(n.y,\"px)\")}}):null}function Rl(e,t){var n=e.find((function(e){return e.id===t.parentNode}));if(n){var r=t.position.x+t.width-n.width,o=t.position.y+t.height-n.height;if(r>0||o>0||t.position.x<0||t.position.y<0){var i,a;if(n.style=Ve({},n.style)||{},n.style.width=null!==(i=n.style.width)&&void 0!==i?i:n.width,n.style.height=null!==(a=n.style.height)&&void 0!==a?a:n.height,r>0&&(n.style.width+=r),o>0&&(n.style.height+=o),t.position.x<0){var l=Math.abs(t.position.x);n.position.x=n.position.x-l,n.style.width+=l,t.position.x=0}if(t.position.y<0){var s=Math.abs(t.position.y);n.position.y=n.position.y-s,n.style.height+=s,t.position.y=0}n.width=n.style.width,n.height=n.style.height}}}function Fl(e,t){if(e.some((function(e){return\"reset\"===e.type})))return e.filter((function(e){return\"reset\"===e.type})).map((function(e){return e.item}));var n=e.filter((function(e){return\"add\"===e.type})).map((function(e){return e.item}));return t.reduce((function(t,n){var r=e.filter((function(e){return e.id===n.id}));if(0===r.length)return t.push(n),t;var o,i=Ve({},n),a=(0,S.Z)(r);try{for(a.s();!(o=a.n()).done;){var l=o.value;if(l)switch(l.type){case\"select\":i.selected=l.selected;break;case\"position\":\"undefined\"!==typeof l.position&&(i.position=l.position),\"undefined\"!==typeof l.positionAbsolute&&(i.positionAbsolute=l.positionAbsolute),\"undefined\"!==typeof l.dragging&&(i.dragging=l.dragging),i.expandParent&&Rl(t,i);break;case\"dimensions\":\"undefined\"!==typeof l.dimensions&&(i.width=l.dimensions.width,i.height=l.dimensions.height),\"undefined\"!==typeof l.updateStyle&&(i.style=Ve(Ve({},i.style||{}),l.dimensions)),\"boolean\"===typeof l.resizing&&(i.resizing=l.resizing),i.expandParent&&Rl(t,i);break;case\"remove\":return t}}}catch(s){a.e(s)}finally{a.f()}return t.push(i),t}),n)}function Bl(e,t){return Fl(e,t)}var ql=function(e,t){return{id:e,type:\"select\",selected:t}};function Ul(e,t){return e.reduce((function(e,n){var r=t.includes(n.id);return!n.selected&&r?(n.selected=!0,e.push(ql(n.id,!0))):n.selected&&!r&&(n.selected=!1,e.push(ql(n.id,!1))),e}),[])}function Hl(e,t){return{x:e.clientX-t.left,y:e.clientY-t.top}}var Vl=function(e,t){return function(n){n.target===t.current&&(null===e||void 0===e||e(n))}},Wl=function(e){return{userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}},Zl=(0,e.memo)((function(t){var n=t.isSelecting,r=t.selectionMode,o=void 0===r?Oi.Full:r,i=t.panOnDrag,a=t.onSelectionStart,l=t.onSelectionEnd,s=t.onPaneClick,u=t.onPaneContextMenu,c=t.onPaneScroll,d=t.onPaneMouseEnter,f=t.onPaneMouseMove,h=t.onPaneMouseLeave,p=t.children,m=(0,e.useRef)(null),g=hi(),v=(0,e.useRef)(0),y=(0,e.useRef)(0),b=(0,e.useRef)(),w=fi(Wl,Qe),x=w.userSelectionActive,k=w.elementsSelectable,_=w.dragging,S=function(){g.setState({userSelectionActive:!1,userSelectionRect:null}),v.current=0,y.current=0},C=function(e){null===s||void 0===s||s(e),g.getState().resetSelectedElements(),g.setState({nodesSelectionActive:!1})},E=c?function(e){return c(e)}:void 0,N=k&&(n||x);return(0,Ze.jsxs)(\"div\",{className:$e([\"react-flow__pane\",{dragging:_,selection:n}]),onClick:N?void 0:Vl(C,m),onContextMenu:Vl((function(e){Array.isArray(i)&&null!==i&&void 0!==i&&i.includes(2)?e.preventDefault():null===u||void 0===u||u(e)}),m),onWheel:Vl(E,m),onMouseEnter:N?void 0:d,onMouseDown:N?function(e){var t=g.getState(),r=t.resetSelectedElements,o=t.domNode;if(b.current=null===o||void 0===o?void 0:o.getBoundingClientRect(),k&&n&&0===e.button&&e.target===m.current&&b.current){var i=Hl(e,b.current),l=i.x,s=i.y;r(),g.setState({userSelectionRect:{width:0,height:0,startX:l,startY:s,x:l,y:s}}),null===a||void 0===a||a(e)}}:void 0,onMouseMove:N?function(e){var t,r,i=g.getState(),a=i.userSelectionRect,l=i.nodeInternals,s=i.edges,u=i.transform,c=i.onNodesChange,d=i.onEdgesChange,f=i.nodeOrigin,h=i.getNodes;if(n&&b.current&&a){g.setState({userSelectionActive:!0,nodesSelectionActive:!1});var p=Hl(e,b.current),m=null!==(t=a.startX)&&void 0!==t?t:0,w=null!==(r=a.startY)&&void 0!==r?r:0,x=Ve(Ve({},a),{},{x:p.x<m?p.x:m,y:p.y<w?p.y:w,width:Math.abs(p.x-m),height:Math.abs(p.y-w)}),k=h(),_=ha(l,x,u,o===Oi.Partial,!0,f),S=pa(_,s).map((function(e){return e.id})),C=_.map((function(e){return e.id}));if(v.current!==C.length){v.current=C.length;var E=Ul(k,C);E.length&&(null===c||void 0===c||c(E))}if(y.current!==S.length){y.current=S.length;var N=Ul(s,S);N.length&&(null===d||void 0===d||d(N))}g.setState({userSelectionRect:x})}}:f,onMouseUp:N?function(e){if(0===e.button){var t=g.getState().userSelectionRect;!x&&t&&e.target===m.current&&(null===C||void 0===C||C(e)),g.setState({nodesSelectionActive:v.current>0}),S(),null===l||void 0===l||l(e)}}:void 0,onMouseLeave:N?function(e){x&&(g.setState({nodesSelectionActive:v.current>0}),null===l||void 0===l||l(e)),S()}:h,ref:m,style:Dl,children:[p,(0,Ze.jsx)(Il,{})]})}));Zl.displayName=\"Pane\";var $l=function(e){return{transformString:\"translate(\".concat(e.transform[0],\"px,\").concat(e.transform[1],\"px) scale(\").concat(e.transform[2],\")\"),userSelectionActive:e.userSelectionActive}},Yl=function(e){var t=e.getNodes().filter((function(e){return e.selected}));return fa(t,e.nodeOrigin)};var Xl=(0,e.memo)((function(t){var n=t.onSelectionContextMenu,r=t.noPanClassName,o=t.disableKeyboardA11y,i=hi(),a=fi($l,Qe),l=a.transformString,s=a.userSelectionActive,u=fi(Yl,Qe),c=u.width,d=u.height,f=u.x,h=u.y,p=cl(),m=(0,e.useRef)(null);if((0,e.useEffect)((function(){var e;o||(null===(e=m.current)||void 0===e||e.focus({preventScroll:!0}))}),[o]),ul({nodeRef:m}),s||!c||!d)return null;var g=n?function(e){var t=i.getState().getNodes().filter((function(e){return e.selected}));n(e,t)}:void 0;return(0,Ze.jsx)(\"div\",{className:$e([\"react-flow__nodesselection\",\"react-flow__container\",r]),style:{transform:l},children:(0,Ze.jsx)(\"div\",{ref:m,className:\"react-flow__nodesselection-rect\",onContextMenu:g,tabIndex:o?void 0:-1,onKeyDown:o?void 0:function(e){Object.prototype.hasOwnProperty.call(dl,e.key)&&p({x:dl[e.key].x,y:dl[e.key].y,isShiftPressed:e.shiftKey})},style:{width:c,height:d,top:h,left:f}})})})),Kl=function(e){return e.nodesSelectionActive},Gl=function(t){var n=t.children,r=t.onPaneClick,o=t.onPaneMouseEnter,i=t.onPaneMouseMove,a=t.onPaneMouseLeave,l=t.onPaneContextMenu,s=t.onPaneScroll,u=t.deleteKeyCode,c=t.onMove,d=t.onMoveStart,f=t.onMoveEnd,h=t.selectionKeyCode,p=t.selectionOnDrag,m=t.selectionMode,g=t.onSelectionStart,v=t.onSelectionEnd,y=t.multiSelectionKeyCode,b=t.panActivationKeyCode,w=t.zoomActivationKeyCode,x=t.elementsSelectable,k=t.zoomOnScroll,_=t.zoomOnPinch,S=t.panOnScroll,C=t.panOnScrollSpeed,E=t.panOnScrollMode,N=t.zoomOnDoubleClick,M=t.panOnDrag,A=t.defaultViewport,D=t.translateExtent,P=t.minZoom,L=t.maxZoom,z=t.preventScrolling,j=t.onSelectionContextMenu,O=t.noWheelClassName,T=t.noPanClassName,I=t.disableKeyboardA11y,R=fi(Kl),F=ml(h),B=ml(b)||M,q=F||p&&!0!==B;return function(t){var n=t.deleteKeyCode,r=t.multiSelectionKeyCode,o=hi(),i=Al().deleteElements,a=ml(n),l=ml(r);(0,e.useEffect)((function(){if(a){var e=o.getState(),t=e.edges,n=(0,e.getNodes)().filter((function(e){return e.selected})),r=t.filter((function(e){return e.selected}));i({nodes:n,edges:r}),o.setState({nodesSelectionActive:!1})}}),[a]),(0,e.useEffect)((function(){o.setState({multiSelectionActive:l})}),[l])}({deleteKeyCode:u,multiSelectionKeyCode:y}),(0,Ze.jsx)(Ol,{onMove:c,onMoveStart:d,onMoveEnd:f,onPaneContextMenu:l,elementsSelectable:x,zoomOnScroll:k,zoomOnPinch:_,panOnScroll:S,panOnScrollSpeed:C,panOnScrollMode:E,zoomOnDoubleClick:N,panOnDrag:!F&&B,defaultViewport:A,translateExtent:D,minZoom:P,maxZoom:L,zoomActivationKeyCode:w,preventScrolling:z,noWheelClassName:O,noPanClassName:T,children:(0,Ze.jsxs)(Zl,{onSelectionStart:g,onSelectionEnd:v,onPaneClick:r,onPaneMouseEnter:o,onPaneMouseMove:i,onPaneMouseLeave:a,onPaneContextMenu:l,onPaneScroll:s,panOnDrag:B,isSelecting:!!q,selectionMode:m,children:[n,R&&(0,Ze.jsx)(Xl,{onSelectionContextMenu:j,noPanClassName:T,disableKeyboardA11y:I})]})})};Gl.displayName=\"FlowRenderer\";var Ql=(0,e.memo)(Gl);var Jl=function(e){return{nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions}},es=function(t){var n,r=fi(Jl,Qe),o=r.nodesDraggable,i=r.nodesConnectable,a=r.nodesFocusable,l=r.elementsSelectable,s=r.updateNodeDimensions,u=(n=t.onlyRenderVisibleElements,fi((0,e.useCallback)((function(e){return n?ha(e.nodeInternals,{x:0,y:0,width:e.width,height:e.height},e.transform,!0):e.getNodes()}),[n]))),c=(0,e.useRef)(),d=(0,e.useMemo)((function(){if(\"undefined\"===typeof ResizeObserver)return null;var e=new ResizeObserver((function(e){var t=e.map((function(e){return{id:e.target.getAttribute(\"data-id\"),nodeElement:e.target,forceUpdate:!0}}));s(t)}));return c.current=e,e}),[]);return(0,e.useEffect)((function(){return function(){var e;null===c||void 0===c||null===(e=c.current)||void 0===e||e.disconnect()}}),[]),(0,Ze.jsx)(\"div\",{className:\"react-flow__nodes\",style:Dl,children:u.map((function(e){var n,r,s,u,c,f,h,p=e.type||\"default\";t.nodeTypes[p]||(Di('Node type \"'.concat(p,'\" not found. Using fallback type \"default\". Help: https://reactflow.dev/error#300')),p=\"default\");var m=t.nodeTypes[p]||t.nodeTypes.default,g=!!(e.draggable||o&&\"undefined\"===typeof e.draggable),v=!!(e.selectable||l&&\"undefined\"===typeof e.selectable),y=!!(e.connectable||i&&\"undefined\"===typeof e.connectable),b=!!(e.focusable||a&&\"undefined\"===typeof e.focusable),w=t.nodeExtent?wi(e.positionAbsolute,t.nodeExtent):e.positionAbsolute,x=null!==(n=null===w||void 0===w?void 0:w.x)&&void 0!==n?n:0,k=null!==(r=null===w||void 0===w?void 0:w.y)&&void 0!==r?r:0,_=function(e){var t=e.x,n=e.y,r=e.width,o=e.height,i=e.origin;return r&&o?i[0]<0||i[1]<0||i[0]>1||i[1]>1?(Di(),{x:t,y:n}):{x:t-r*i[0],y:n-o*i[1]}:{x:t,y:n}}({x:x,y:k,width:null!==(s=e.width)&&void 0!==s?s:0,height:null!==(u=e.height)&&void 0!==u?u:0,origin:t.nodeOrigin});return(0,Ze.jsx)(m,{id:e.id,className:e.className,style:e.style,type:p,data:e.data,sourcePosition:e.sourcePosition||Ri.Bottom,targetPosition:e.targetPosition||Ri.Top,hidden:e.hidden,xPos:x,yPos:k,xPosOrigin:_.x,yPosOrigin:_.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!e.selected,isDraggable:g,isSelectable:v,isConnectable:y,isFocusable:b,resizeObserver:d,dragHandle:e.dragHandle,zIndex:null!==(c=null===(f=e[Mi])||void 0===f?void 0:f.z)&&void 0!==c?c:0,isParent:!(null===(h=e[Mi])||void 0===h||!h.isParent),noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!e.width&&!!e.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:e.ariaLabel},e.id)}))})};es.displayName=\"NodeRenderer\";var ts=(0,e.memo)(es),ns=[{level:0,isMaxLevel:!0,edges:[]}];function rs(t,n,r){var o=fi((0,e.useCallback)((function(e){return t?e.edges.filter((function(t){var r=n.get(t.source),o=n.get(t.target);return(null===r||void 0===r?void 0:r.width)&&(null===r||void 0===r?void 0:r.height)&&(null===o||void 0===o?void 0:o.width)&&(null===o||void 0===o?void 0:o.height)&&function(e){var t=e.sourcePos,n=e.targetPos,r=e.sourceWidth,o=e.sourceHeight,i=e.targetWidth,a=e.targetHeight,l=e.width,s=e.height,u=e.transform,c={x:Math.min(t.x,n.x),y:Math.min(t.y,n.y),x2:Math.max(t.x+r,n.x+i),y2:Math.max(t.y+o,n.y+a)};c.x===c.x2&&(c.x2+=1),c.y===c.y2&&(c.y2+=1);var d=_i({x:(0-u[0])/u[2],y:(0-u[1])/u[2],width:l/u[2],height:s/u[2]}),f=Math.max(0,Math.min(d.x2,c.x2)-Math.max(d.x,c.x)),h=Math.max(0,Math.min(d.y2,c.y2)-Math.max(d.y,c.y));return Math.ceil(f*h)>0}({sourcePos:r.positionAbsolute||{x:0,y:0},targetPos:o.positionAbsolute||{x:0,y:0},sourceWidth:r.width,sourceHeight:r.height,targetWidth:o.width,targetHeight:o.height,width:e.width,height:e.height,transform:e.transform})})):e.edges}),[t,n]));return function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=-1,o=e.reduce((function(e,o){var i,a,l,s,u=Ni(o.zIndex),c=u?o.zIndex:0;return n&&(c=u?o.zIndex:Math.max((null===(i=t.get(o.source))||void 0===i||null===(a=i[Mi])||void 0===a?void 0:a.z)||0,(null===(l=t.get(o.target))||void 0===l||null===(s=l[Mi])||void 0===s?void 0:s.z)||0)),e[c]?e[c].push(o):e[c]=[o],r=c>r?c:r,e}),{}),i=Object.entries(o).map((function(e){var t=l(e,2),n=+t[0];return{edges:t[1],level:n,isMaxLevel:n===r}}));return 0===i.length?ns:i}(o,n,r)}var os=(Ue(ri={},Ri.Left,Ri.Right),Ue(ri,Ri.Right,Ri.Left),Ue(ri,Ri.Top,Ri.Bottom),Ue(ri,Ri.Bottom,Ri.Top),ri),is=function(t){var n,r,o,i,a,s=t.connectionNodeId,u=t.connectionHandleType,c=t.connectionLineStyle,d=t.connectionLineType,f=void 0===d?Ti.Bezier:d,h=t.isConnectable,p=t.CustomConnectionLineComponent,m=fi((0,e.useCallback)((function(e){return{fromNode:e.nodeInternals.get(s),handleId:e.connectionHandleId,toX:(e.connectionPosition.x-e.transform[0])/e.transform[2],toY:(e.connectionPosition.y-e.transform[1])/e.transform[2],connectionMode:e.connectionMode}}),[s]),Qe),g=m.fromNode,v=m.handleId,y=m.toX,b=m.toY,w=m.connectionMode,x=null===g||void 0===g||null===(n=g[Mi])||void 0===n?void 0:n.handleBounds,k=null===x||void 0===x?void 0:x[u];if(w===zi.Loose&&(k=k||(null===x||void 0===x?void 0:x[\"source\"===u?\"target\":\"source\"])),!g||!h||!k)return null;var _=v?k.find((function(e){return e.id===v})):k[0],S=_?_.x+_.width/2:(null!==(r=null===g||void 0===g?void 0:g.width)&&void 0!==r?r:0)/2,C=_?_.y+_.height/2:null!==(o=null===g||void 0===g?void 0:g.height)&&void 0!==o?o:0,E=((null===g||void 0===g||null===(i=g.positionAbsolute)||void 0===i?void 0:i.x)||0)+S,N=((null===g||void 0===g||null===(a=g.positionAbsolute)||void 0===a?void 0:a.y)||0)+C,M=null===_||void 0===_?void 0:_.position;if(!M)return null;var A=os[M];if(p)return(0,Ze.jsx)(\"g\",{className:\"react-flow__connection\",children:(0,Ze.jsx)(p,{connectionLineType:f,connectionLineStyle:c,fromNode:g,fromHandle:_,fromX:E,fromY:N,toX:y,toY:b,fromPosition:M,toPosition:A})});var D=\"\",P={sourceX:E,sourceY:N,sourcePosition:M,targetX:y,targetY:b,targetPosition:A};if(f===Ti.Bezier)D=l(ea(P),1)[0];else if(f===Ti.Step){D=l(Yi(Ve(Ve({},P),{},{borderRadius:0})),1)[0]}else if(f===Ti.SmoothStep){D=l(Yi(P),1)[0]}else if(f===Ti.SimpleBezier){D=l(Hi(P),1)[0]}else D=\"M\".concat(E,\",\").concat(N,\" \").concat(y,\",\").concat(b);return(0,Ze.jsx)(\"g\",{className:\"react-flow__connection\",children:(0,Ze.jsx)(\"path\",{d:D,fill:\"none\",className:\"react-flow__connection-path\",style:c})})};is.displayName=\"ConnectionLine\";var as=(Ue(oi={},Ii.Arrow,(function(e){var t=e.color,n=void 0===t?\"none\":t,r=e.strokeWidth,o=void 0===r?1:r;return(0,Ze.jsx)(\"polyline\",{stroke:n,strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:o,fill:\"none\",points:\"-5,-4 0,0 -5,4\"})})),Ue(oi,Ii.ArrowClosed,(function(e){var t=e.color,n=void 0===t?\"none\":t,r=e.strokeWidth,o=void 0===r?1:r;return(0,Ze.jsx)(\"polyline\",{stroke:n,strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:o,fill:n,points:\"-5,-4 0,0 -5,4 -5,-4\"})})),oi);var ls=function(t){var n=t.id,r=t.type,o=t.color,i=t.width,a=void 0===i?12.5:i,l=t.height,s=void 0===l?12.5:l,u=t.markerUnits,c=void 0===u?\"strokeWidth\":u,d=t.strokeWidth,f=t.orient,h=void 0===f?\"auto-start-reverse\":f,p=function(t){return(0,e.useMemo)((function(){return Object.prototype.hasOwnProperty.call(as,t)?as[t]:(Di('Marker type \"'.concat(t,\"\\\" doesn't exist. Help: https://reactflow.dev/error#900\")),null)}),[t])}(r);return p?(0,Ze.jsx)(\"marker\",{className:\"react-flow__arrowhead\",id:n,markerWidth:\"\".concat(a),markerHeight:\"\".concat(s),viewBox:\"-10 -10 20 20\",markerUnits:c,orient:h,refX:\"0\",refY:\"0\",children:(0,Ze.jsx)(p,{color:o,strokeWidth:d})}):null},ss=function(t){var n=t.defaultColor,r=t.rfId,o=fi((0,e.useCallback)(function(e){var t=e.defaultColor,n=e.rfId;return function(e){var r=[];return e.edges.reduce((function(e,o){return[o.markerStart,o.markerEnd].forEach((function(o){if(o&&\"object\"===typeof o){var i=ua(o,n);r.includes(i)||(e.push(Ve({id:i,color:o.color||t},o)),r.push(i))}})),e}),[]).sort((function(e,t){return e.id.localeCompare(t.id)}))}}({defaultColor:n,rfId:r}),[n,r]),(function(e,t){return!(e.length!==t.length||e.some((function(e,n){return e.id!==t[n].id})))}));return(0,Ze.jsx)(\"defs\",{children:o.map((function(e){return(0,Ze.jsx)(ls,{id:e.id,type:e.type,color:e.color,width:e.width,height:e.height,markerUnits:e.markerUnits,strokeWidth:e.strokeWidth,orient:e.orient},e.id)}))})};ss.displayName=\"MarkerDefinitions\";var us=(0,e.memo)(ss),cs=function(e){return{connectionNodeId:e.connectionNodeId,connectionHandleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals}},ds=function(e){var t=fi(cs,Qe),n=t.connectionNodeId,r=t.connectionHandleType,o=t.nodesConnectable,i=t.edgesFocusable,a=t.elementsSelectable,s=t.width,u=t.height,c=t.connectionMode,d=t.nodeInternals,f=rs(e.onlyRenderVisibleElements,d,e.elevateEdgesOnSelect);if(!s)return null;var h=e.connectionLineType,p=e.defaultMarkerColor,m=e.connectionLineStyle,g=e.connectionLineComponent,v=e.connectionLineContainerStyle,y=n&&r;return(0,Ze.jsxs)(Ze.Fragment,{children:[f.map((function(t){var n=t.level,r=t.edges,o=t.isMaxLevel;return(0,Ze.jsxs)(\"svg\",{style:{zIndex:n},width:s,height:u,className:\"react-flow__edges react-flow__container\",children:[o&&(0,Ze.jsx)(us,{defaultColor:p,rfId:e.rfId}),(0,Ze.jsx)(\"g\",{children:r.map((function(t){var n,r,o=l(Ja(d.get(t.source)),3),s=o[0],u=o[1],f=o[2],h=l(Ja(d.get(t.target)),3),p=h[0],m=h[1],g=h[2];if(!f||!g)return null;var v=t.type||\"default\";e.edgeTypes[v]||(Di('Edge type \"'.concat(v,'\" not found. Using fallback type \"default\". Help: https://reactflow.dev/error#300')),v=\"default\");var y=e.edgeTypes[v]||e.edgeTypes.default,b=c===zi.Strict?m.target:(null!==(n=m.target)&&void 0!==n?n:[]).concat(null!==(r=m.source)&&void 0!==r?r:[]),w=Qa(u.source,t.sourceHandle||null),x=Qa(b,t.targetHandle||null),k=(null===w||void 0===w?void 0:w.position)||Ri.Bottom,_=(null===x||void 0===x?void 0:x.position)||Ri.Top,S=!!(t.focusable||i&&\"undefined\"===typeof t.focusable);if(!w||!x)return Di(\"Couldn't create edge for \".concat(w?\"target\":\"source\",\" handle id: \").concat(w?t.targetHandle:t.sourceHandle,\"; edge id: \").concat(t.id,\". Help: https://reactflow.dev/error#800\")),null;var C=function(e,t,n,r,o,i){var a=Ga(n,e,t),l=Ga(i,r,o);return{sourceX:a.x,sourceY:a.y,targetX:l.x,targetY:l.y}}(s,w,k,p,x,_),E=C.sourceX,N=C.sourceY,M=C.targetX,A=C.targetY;return(0,Ze.jsx)(y,{id:t.id,className:$e([t.className,e.noPanClassName]),type:v,data:t.data,selected:!!t.selected,animated:!!t.animated,hidden:!!t.hidden,label:t.label,labelStyle:t.labelStyle,labelShowBg:t.labelShowBg,labelBgStyle:t.labelBgStyle,labelBgPadding:t.labelBgPadding,labelBgBorderRadius:t.labelBgBorderRadius,style:t.style,source:t.source,target:t.target,sourceHandleId:t.sourceHandle,targetHandleId:t.targetHandle,markerEnd:t.markerEnd,markerStart:t.markerStart,sourceX:E,sourceY:N,targetX:M,targetY:A,sourcePosition:k,targetPosition:_,elementsSelectable:a,onEdgeUpdate:e.onEdgeUpdate,onContextMenu:e.onEdgeContextMenu,onMouseEnter:e.onEdgeMouseEnter,onMouseMove:e.onEdgeMouseMove,onMouseLeave:e.onEdgeMouseLeave,onClick:e.onEdgeClick,edgeUpdaterRadius:e.edgeUpdaterRadius,onEdgeDoubleClick:e.onEdgeDoubleClick,onEdgeUpdateStart:e.onEdgeUpdateStart,onEdgeUpdateEnd:e.onEdgeUpdateEnd,rfId:e.rfId,ariaLabel:t.ariaLabel,isFocusable:S,pathOptions:\"pathOptions\"in t?t.pathOptions:void 0,interactionWidth:t.interactionWidth},t.id)}))})]},n)})),y&&(0,Ze.jsx)(\"svg\",{style:v,width:s,height:u,className:\"react-flow__edges react-flow__connectionline react-flow__container\",children:(0,Ze.jsx)(is,{connectionNodeId:n,connectionHandleType:r,connectionLineStyle:m,connectionLineType:h,isConnectable:o,CustomConnectionLineComponent:g})})]})};ds.displayName=\"EdgeRenderer\";var fs=(0,e.memo)(ds),hs=function(e){return\"translate(\".concat(e.transform[0],\"px,\").concat(e.transform[1],\"px) scale(\").concat(e.transform[2],\")\")};function ps(e){var t=e.children,n=fi(hs);return(0,Ze.jsx)(\"div\",{className:\"react-flow__viewport react-flow__container\",style:{transform:n},children:t})}var ms=function(t){var n=t.nodeTypes,r=t.edgeTypes,o=t.onMove,i=t.onMoveStart,a=t.onMoveEnd,l=t.onInit,s=t.onNodeClick,u=t.onEdgeClick,c=t.onNodeDoubleClick,d=t.onEdgeDoubleClick,f=t.onNodeMouseEnter,h=t.onNodeMouseMove,p=t.onNodeMouseLeave,m=t.onNodeContextMenu,g=t.onSelectionContextMenu,v=t.onSelectionStart,y=t.onSelectionEnd,b=t.connectionLineType,w=t.connectionLineStyle,x=t.connectionLineComponent,k=t.connectionLineContainerStyle,_=t.selectionKeyCode,S=t.selectionOnDrag,C=t.selectionMode,E=t.multiSelectionKeyCode,N=t.panActivationKeyCode,M=t.zoomActivationKeyCode,A=t.deleteKeyCode,D=t.onlyRenderVisibleElements,P=t.elementsSelectable,L=t.selectNodesOnDrag,z=t.defaultViewport,j=t.translateExtent,O=t.minZoom,T=t.maxZoom,I=t.preventScrolling,R=t.defaultMarkerColor,F=t.zoomOnScroll,B=t.zoomOnPinch,q=t.panOnScroll,U=t.panOnScrollSpeed,H=t.panOnScrollMode,V=t.zoomOnDoubleClick,W=t.panOnDrag,Z=t.onPaneClick,$=t.onPaneMouseEnter,Y=t.onPaneMouseMove,X=t.onPaneMouseLeave,K=t.onPaneScroll,G=t.onPaneContextMenu,Q=t.onEdgeUpdate,J=t.onEdgeContextMenu,ee=t.onEdgeMouseEnter,te=t.onEdgeMouseMove,ne=t.onEdgeMouseLeave,re=t.edgeUpdaterRadius,oe=t.onEdgeUpdateStart,ie=t.onEdgeUpdateEnd,ae=t.noDragClassName,le=t.noWheelClassName,se=t.noPanClassName,ue=t.elevateEdgesOnSelect,ce=t.disableKeyboardA11y,de=t.nodeOrigin,fe=t.nodeExtent,he=t.rfId;return function(t){var n=Al(),r=(0,e.useRef)(!1);(0,e.useEffect)((function(){!r.current&&n.viewportInitialized&&t&&(setTimeout((function(){return t(n)}),1),r.current=!0)}),[t,n.viewportInitialized])}(l),(0,Ze.jsx)(Ql,{onPaneClick:Z,onPaneMouseEnter:$,onPaneMouseMove:Y,onPaneMouseLeave:X,onPaneContextMenu:G,onPaneScroll:K,deleteKeyCode:A,selectionKeyCode:_,selectionOnDrag:S,selectionMode:C,onSelectionStart:v,onSelectionEnd:y,multiSelectionKeyCode:E,panActivationKeyCode:N,zoomActivationKeyCode:M,elementsSelectable:P,onMove:o,onMoveStart:i,onMoveEnd:a,zoomOnScroll:F,zoomOnPinch:B,zoomOnDoubleClick:V,panOnScroll:q,panOnScrollSpeed:U,panOnScrollMode:H,panOnDrag:W,defaultViewport:z,translateExtent:j,minZoom:O,maxZoom:T,onSelectionContextMenu:g,preventScrolling:I,noDragClassName:ae,noWheelClassName:le,noPanClassName:se,disableKeyboardA11y:ce,children:(0,Ze.jsxs)(ps,{children:[(0,Ze.jsx)(fs,{edgeTypes:r,onEdgeClick:u,onEdgeDoubleClick:d,connectionLineType:b,connectionLineStyle:w,connectionLineComponent:x,connectionLineContainerStyle:k,onEdgeUpdate:Q,onlyRenderVisibleElements:D,onEdgeContextMenu:J,onEdgeMouseEnter:ee,onEdgeMouseMove:te,onEdgeMouseLeave:ne,onEdgeUpdateStart:oe,onEdgeUpdateEnd:ie,edgeUpdaterRadius:re,defaultMarkerColor:R,noPanClassName:se,elevateEdgesOnSelect:!!ue,disableKeyboardA11y:ce,rfId:he}),(0,Ze.jsx)(\"div\",{className:\"react-flow__edgelabel-renderer\"}),(0,Ze.jsx)(ts,{nodeTypes:n,onNodeClick:s,onNodeDoubleClick:c,onNodeMouseEnter:f,onNodeMouseMove:h,onNodeMouseLeave:p,onNodeContextMenu:m,selectNodesOnDrag:L,onlyRenderVisibleElements:D,noPanClassName:se,noDragClassName:ae,disableKeyboardA11y:ce,nodeOrigin:de,nodeExtent:fe,rfId:he})]})})};ms.displayName=\"GraphView\";var gs=(0,e.memo)(ms),vs=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],ys={rfId:\"1\",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:vs,nodeExtent:vs,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:\"source\",connectionPosition:{x:0,y:0},connectionMode:zi.Strict,domNode:null,paneDragging:!1,noPanClassName:\"nopan\",nodeOrigin:[0,0],snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,multiSelectionActive:!1,connectionStartHandle:null,connectOnClick:!0,ariaLiveMessage:\"\"},bs=function(t){var n=t.children,r=(0,e.useRef)(null);return r.current||(r.current=Ge((function(e,t){return Ve(Ve({},ys),{},{setNodes:function(n){var r=t(),o=r.nodeInternals,i=r.nodeOrigin,a=r.elevateNodesOnSelect;e({nodeInternals:wl(n,o,i,a)})},getNodes:function(){return Array.from(t().nodeInternals.values())},setEdges:function(n){var r=t().defaultEdgeOptions,o=void 0===r?{}:r;e({edges:n.map((function(e){return Ve(Ve({},o),e)}))})},setDefaultNodesAndEdges:function(n,r){var o=\"undefined\"!==typeof n,i=\"undefined\"!==typeof r,a=o?wl(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:a,edges:i?r:[],hasDefaultNodes:o,hasDefaultEdges:i})},updateNodeDimensions:function(n){var r=t(),o=r.onNodesChange,i=r.nodeInternals,a=r.fitViewOnInit,l=r.fitViewOnInitDone,s=r.fitViewOnInitOptions,u=r.domNode,c=r.nodeOrigin,d=null===u||void 0===u?void 0:u.querySelector(\".react-flow__viewport\");if(d){var f=window.getComputedStyle(d),h=new window.DOMMatrixReadOnly(f.transform).m22,p=n.reduce((function(e,t){var n=i.get(t.id);if(n){var r=yi(t.nodeElement);r.width&&r.height&&(n.width!==r.width||n.height!==r.height||t.forceUpdate)&&(i.set(n.id,Ve(Ve({},n),{},Ue({},Mi,Ve(Ve({},n[Mi]),{},{handleBounds:{source:il(\".source\",t.nodeElement,h,c),target:il(\".target\",t.nodeElement,h,c)}})),r)),e.push({id:n.id,type:\"dimensions\",dimensions:r}))}return e}),[]);bl(i,c);var m=l||a&&!l&&xl(t,Ve({initial:!0},s));e({nodeInternals:new Map(i),fitViewOnInitDone:m}),(null===p||void 0===p?void 0:p.length)>0&&(null===o||void 0===o||o(p))}},updateNodePositions:function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=t().triggerNodeChanges,i=e.map((function(e){var t={id:e.id,type:\"position\",dragging:r};return n&&(t.positionAbsolute=e.positionAbsolute,t.position=e.position),t}));o(i)},triggerNodeChanges:function(n){var r=t(),o=r.onNodesChange,i=r.nodeInternals,a=r.hasDefaultNodes,l=r.nodeOrigin,s=r.getNodes,u=r.elevateNodesOnSelect;if(null!==n&&void 0!==n&&n.length){if(a){var c=wl(Bl(n,s()),i,l,u);e({nodeInternals:c})}null===o||void 0===o||o(n)}},addSelectedNodes:function(n){var r,o=t(),i=o.multiSelectionActive,a=o.edges,l=o.getNodes,s=null;i?r=n.map((function(e){return ql(e,!0)})):(r=Ul(l(),n),s=Ul(a,[])),Sl({changedNodes:r,changedEdges:s,get:t,set:e})},addSelectedEdges:function(n){var r,o=t(),i=o.multiSelectionActive,a=o.edges,l=o.getNodes,s=null;i?r=n.map((function(e){return ql(e,!0)})):(r=Ul(a,n),s=Ul(l(),[])),Sl({changedNodes:s,changedEdges:r,get:t,set:e})},unselectNodesAndEdges:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.nodes,o=n.edges,i=t(),a=i.edges,l=i.getNodes,s=o||a;Sl({changedNodes:(r||l()).map((function(e){return e.selected=!1,ql(e.id,!1)})),changedEdges:s.map((function(e){return ql(e.id,!1)})),get:t,set:e})},setMinZoom:function(n){var r=t(),o=r.d3Zoom,i=r.maxZoom;null===o||void 0===o||o.scaleExtent([n,i]),e({minZoom:n})},setMaxZoom:function(n){var r=t(),o=r.d3Zoom,i=r.minZoom;null===o||void 0===o||o.scaleExtent([i,n]),e({maxZoom:n})},setTranslateExtent:function(n){var r;null===(r=t().d3Zoom)||void 0===r||r.translateExtent(n),e({translateExtent:n})},resetSelectedElements:function(){var n=t(),r=n.edges;Sl({changedNodes:(0,n.getNodes)().filter((function(e){return e.selected})).map((function(e){return ql(e.id,!1)})),changedEdges:r.filter((function(e){return e.selected})).map((function(e){return ql(e.id,!1)})),get:t,set:e})},setNodeExtent:function(n){var r=t().nodeInternals;r.forEach((function(e){e.positionAbsolute=wi(e.position,n)})),e({nodeExtent:n,nodeInternals:new Map(r)})},cancelConnection:function(){return e({connectionNodeId:ys.connectionNodeId,connectionHandleId:ys.connectionHandleId})},reset:function(){return e(Ve({},ys))}})}))),(0,Ze.jsx)(ci,{value:r.current,children:n})};bs.displayName=\"ReactFlowProvider\";var ws=function(t){var n=t.children;return(0,e.useContext)(ui)?(0,Ze.jsx)(Ze.Fragment,{children:n}):(0,Ze.jsx)(bs,{children:n})};function xs(t,n){(0,e.useRef)(null);return(0,e.useMemo)((function(){return n(t)}),[t])}ws.displayName=\"ReactFlowWrapper\";var ks={input:Sa,default:ka,output:Ea,group:Na},_s={default:ta,straight:Gi,step:Ki,smoothstep:Xi,simplebezier:Vi},Ss=[0,0],Cs=[15,15],Es={x:0,y:0,zoom:1},Ns={width:\"100%\",height:\"100%\",overflow:\"hidden\",position:\"relative\",zIndex:0},Ms=(0,e.forwardRef)((function(e,t){var n=e.nodes,r=e.edges,o=e.defaultNodes,i=e.defaultEdges,a=e.className,l=e.nodeTypes,s=void 0===l?ks:l,u=e.edgeTypes,c=void 0===u?_s:u,d=e.onNodeClick,f=e.onEdgeClick,h=e.onInit,p=e.onMove,m=e.onMoveStart,g=e.onMoveEnd,v=e.onConnect,y=e.onConnectStart,b=e.onConnectEnd,w=e.onClickConnectStart,x=e.onClickConnectEnd,k=e.onNodeMouseEnter,_=e.onNodeMouseMove,S=e.onNodeMouseLeave,C=e.onNodeContextMenu,E=e.onNodeDoubleClick,N=e.onNodeDragStart,M=e.onNodeDrag,A=e.onNodeDragStop,D=e.onNodesDelete,P=e.onEdgesDelete,L=e.onSelectionChange,z=e.onSelectionDragStart,j=e.onSelectionDrag,O=e.onSelectionDragStop,T=e.onSelectionContextMenu,I=e.onSelectionStart,R=e.onSelectionEnd,F=e.connectionMode,B=void 0===F?zi.Strict:F,q=e.connectionLineType,U=void 0===q?Ti.Bezier:q,H=e.connectionLineStyle,V=e.connectionLineComponent,W=e.connectionLineContainerStyle,Z=e.deleteKeyCode,$=void 0===Z?\"Backspace\":Z,Y=e.selectionKeyCode,X=void 0===Y?\"Shift\":Y,K=e.selectionOnDrag,G=void 0!==K&&K,Q=e.selectionMode,J=void 0===Q?Oi.Full:Q,ee=e.panActivationKeyCode,te=void 0===ee?\"Space\":ee,ne=e.multiSelectionKeyCode,re=void 0===ne?\"Meta\":ne,oe=e.zoomActivationKeyCode,ie=void 0===oe?\"Meta\":oe,ae=e.snapToGrid,le=void 0!==ae&&ae,se=e.snapGrid,ue=void 0===se?Cs:se,ce=e.onlyRenderVisibleElements,de=void 0!==ce&&ce,fe=e.selectNodesOnDrag,he=void 0===fe||fe,pe=e.nodesDraggable,me=e.nodesConnectable,ge=e.nodesFocusable,ve=e.nodeOrigin,ye=void 0===ve?Ss:ve,be=e.edgesFocusable,we=e.elementsSelectable,xe=e.defaultViewport,ke=void 0===xe?Es:xe,_e=e.minZoom,Se=void 0===_e?.5:_e,Ce=e.maxZoom,Ee=void 0===Ce?2:Ce,Ne=e.translateExtent,Me=void 0===Ne?vs:Ne,Ae=e.preventScrolling,De=void 0===Ae||Ae,Pe=e.nodeExtent,Le=e.defaultMarkerColor,ze=void 0===Le?\"#b1b1b7\":Le,je=e.zoomOnScroll,Oe=void 0===je||je,Te=e.zoomOnPinch,Ie=void 0===Te||Te,Re=e.panOnScroll,Fe=void 0!==Re&&Re,Be=e.panOnScrollSpeed,qe=void 0===Be?.5:Be,Ue=e.panOnScrollMode,He=void 0===Ue?ji.Free:Ue,Ye=e.zoomOnDoubleClick,Xe=void 0===Ye||Ye,Ke=e.panOnDrag,Ge=void 0===Ke||Ke,Qe=e.onPaneClick,Je=e.onPaneMouseEnter,et=e.onPaneMouseMove,tt=e.onPaneMouseLeave,nt=e.onPaneScroll,rt=e.onPaneContextMenu,ot=e.children,it=e.onEdgeUpdate,at=e.onEdgeContextMenu,lt=e.onEdgeDoubleClick,st=e.onEdgeMouseEnter,ut=e.onEdgeMouseMove,ct=e.onEdgeMouseLeave,dt=e.onEdgeUpdateStart,ft=e.onEdgeUpdateEnd,ht=e.edgeUpdaterRadius,pt=void 0===ht?10:ht,mt=e.onNodesChange,gt=e.onEdgesChange,vt=e.noDragClassName,yt=void 0===vt?\"nodrag\":vt,bt=e.noWheelClassName,wt=void 0===bt?\"nowheel\":bt,xt=e.noPanClassName,kt=void 0===xt?\"nopan\":xt,_t=e.fitView,St=void 0!==_t&&_t,Ct=e.fitViewOptions,Et=e.connectOnClick,Nt=void 0===Et||Et,Mt=e.attributionPosition,At=e.proOptions,Dt=e.defaultEdgeOptions,Pt=e.elevateNodesOnSelect,Lt=void 0===Pt||Pt,zt=e.elevateEdgesOnSelect,jt=void 0!==zt&&zt,Ot=e.disableKeyboardA11y,Tt=void 0!==Ot&&Ot,It=e.style,Rt=e.id,Ft=We(e,si),Bt=xs(s,hl),qt=xs(c,Ka),Ut=Rt||\"1\";return(0,Ze.jsx)(\"div\",Ve(Ve({},Ft),{},{style:Ve(Ve({},It),Ns),ref:t,className:$e([\"react-flow\",a]),\"data-testid\":\"rf__wrapper\",id:Rt,children:(0,Ze.jsxs)(ws,{children:[(0,Ze.jsx)(gs,{onInit:h,onMove:p,onMoveStart:m,onMoveEnd:g,onNodeClick:d,onEdgeClick:f,onNodeMouseEnter:k,onNodeMouseMove:_,onNodeMouseLeave:S,onNodeContextMenu:C,onNodeDoubleClick:E,nodeTypes:Bt,edgeTypes:qt,connectionLineType:U,connectionLineStyle:H,connectionLineComponent:V,connectionLineContainerStyle:W,selectionKeyCode:X,selectionOnDrag:G,selectionMode:J,deleteKeyCode:$,multiSelectionKeyCode:re,panActivationKeyCode:te,zoomActivationKeyCode:ie,onlyRenderVisibleElements:de,selectNodesOnDrag:he,defaultViewport:ke,translateExtent:Me,minZoom:Se,maxZoom:Ee,preventScrolling:De,zoomOnScroll:Oe,zoomOnPinch:Ie,zoomOnDoubleClick:Xe,panOnScroll:Fe,panOnScrollSpeed:qe,panOnScrollMode:He,panOnDrag:Ge,onPaneClick:Qe,onPaneMouseEnter:Je,onPaneMouseMove:et,onPaneMouseLeave:tt,onPaneScroll:nt,onPaneContextMenu:rt,onSelectionContextMenu:T,onSelectionStart:I,onSelectionEnd:R,onEdgeUpdate:it,onEdgeContextMenu:at,onEdgeDoubleClick:lt,onEdgeMouseEnter:st,onEdgeMouseMove:ut,onEdgeMouseLeave:ct,onEdgeUpdateStart:dt,onEdgeUpdateEnd:ft,edgeUpdaterRadius:pt,defaultMarkerColor:ze,noDragClassName:yt,noWheelClassName:wt,noPanClassName:kt,elevateEdgesOnSelect:jt,rfId:Ut,disableKeyboardA11y:Tt,nodeOrigin:ye,nodeExtent:Pe}),(0,Ze.jsx)(Ia,{nodes:n,edges:r,defaultNodes:o,defaultEdges:i,onConnect:v,onConnectStart:y,onConnectEnd:b,onClickConnectStart:w,onClickConnectEnd:x,nodesDraggable:pe,nodesConnectable:me,nodesFocusable:ge,edgesFocusable:be,elementsSelectable:we,elevateNodesOnSelect:Lt,minZoom:Se,maxZoom:Ee,nodeExtent:Pe,onNodesChange:mt,onEdgesChange:gt,snapToGrid:le,snapGrid:ue,connectionMode:B,translateExtent:Me,connectOnClick:Nt,defaultEdgeOptions:Dt,fitView:St,fitViewOptions:Ct,onNodesDelete:D,onEdgesDelete:P,onNodeDragStart:N,onNodeDrag:M,onNodeDragStop:A,onSelectionDrag:j,onSelectionDragStart:z,onSelectionDragStop:O,noPanClassName:kt,nodeOrigin:ye,rfId:Ut}),(0,Ze.jsx)(za,{onSelectionChange:L}),ot,(0,Ze.jsx)(gi,{proOptions:At,position:Mt}),(0,Ze.jsx)(Va,{rfId:Ut,disableKeyboardA11y:Tt})]})}))}));Ms.displayName=\"ReactFlow\";function As(t){return function(n){var r=l((0,e.useState)(n),2),o=r[0],i=r[1],a=(0,e.useCallback)((function(e){return i((function(n){return t(e,n)}))}),[]);return[o,i,a]}}var Ds=As(Bl),Ps=As((function(e,t){return Fl(e,t)}));var Ls=[\"children\",\"className\"];function zs(){return(0,Ze.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 32 32\",children:(0,Ze.jsx)(\"path\",{d:\"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z\"})})}function js(){return(0,Ze.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 32 5\",children:(0,Ze.jsx)(\"path\",{d:\"M0 0h32v4.2H0z\"})})}function Os(){return(0,Ze.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 32 30\",children:(0,Ze.jsx)(\"path\",{d:\"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z\"})})}function Ts(){return(0,Ze.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 25 32\",children:(0,Ze.jsx)(\"path\",{d:\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z\"})})}function Is(){return(0,Ze.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 25 32\",children:(0,Ze.jsx)(\"path\",{d:\"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z\"})})}var Rs=function(e){var t=e.children,n=e.className,r=We(e,Ls);return(0,Ze.jsx)(\"button\",Ve(Ve({type:\"button\",className:$e([\"react-flow__controls-button\",n])},r),{},{children:t}))};Rs.displayName=\"ControlButton\";var Fs=function(e){return e.nodesDraggable&&e.nodesConnectable&&e.elementsSelectable},Bs=function(t){var n=t.style,r=t.showZoom,o=void 0===r||r,i=t.showFitView,a=void 0===i||i,s=t.showInteractive,u=void 0===s||s,c=t.fitViewOptions,d=t.onZoomIn,f=t.onZoomOut,h=t.onFitView,p=t.onInteractiveChange,m=t.className,g=t.children,v=t.position,y=void 0===v?\"bottom-left\":v,b=hi(),w=l((0,e.useState)(!1),2),x=w[0],k=w[1],_=fi(Fs),S=Al(),C=S.zoomIn,E=S.zoomOut,N=S.fitView;if((0,e.useEffect)((function(){k(!0)}),[]),!x)return null;return(0,Ze.jsxs)(mi,{className:$e([\"react-flow__controls\",m]),position:y,style:n,children:[o&&(0,Ze.jsxs)(Ze.Fragment,{children:[(0,Ze.jsx)(Rs,{onClick:function(){C(),null===d||void 0===d||d()},className:\"react-flow__controls-zoomin\",title:\"zoom in\",\"aria-label\":\"zoom in\",children:(0,Ze.jsx)(zs,{})}),(0,Ze.jsx)(Rs,{onClick:function(){E(),null===f||void 0===f||f()},className:\"react-flow__controls-zoomout\",title:\"zoom out\",\"aria-label\":\"zoom out\",children:(0,Ze.jsx)(js,{})})]}),a&&(0,Ze.jsx)(Rs,{className:\"react-flow__controls-fitview\",onClick:function(){N(c),null===h||void 0===h||h()},title:\"fit view\",\"aria-label\":\"fit view\",children:(0,Ze.jsx)(Os,{})}),u&&(0,Ze.jsx)(Rs,{className:\"react-flow__controls-interactive\",onClick:function(){b.setState({nodesDraggable:!_,nodesConnectable:!_,elementsSelectable:!_}),null===p||void 0===p||p(!_)},title:\"toggle interactivity\",\"aria-label\":\"toggle interactivity\",children:_?(0,Ze.jsx)(Is,{}):(0,Ze.jsx)(Ts,{})}),g]})};Bs.displayName=\"Controls\";var qs,Us,Hs,Vs=(0,e.memo)(Bs);function Ws(e){var t=e.color,n=e.dimensions,r=e.lineWidth;return(0,Ze.jsx)(\"path\",{stroke:t,strokeWidth:r,d:\"M\".concat(n[0]/2,\" 0 V\").concat(n[1],\" M0 \").concat(n[1]/2,\" H\").concat(n[0])})}function Zs(e){var t=e.color,n=e.radius;return(0,Ze.jsx)(\"circle\",{cx:n,cy:n,r:n,fill:t})}!function(e){e.Lines=\"lines\",e.Dots=\"dots\",e.Cross=\"cross\"}(Hs||(Hs={}));var $s=(Ue(qs={},Hs.Dots,\"#91919a\"),Ue(qs,Hs.Lines,\"#eee\"),Ue(qs,Hs.Cross,\"#e2e2e2\"),qs),Ys=(Ue(Us={},Hs.Dots,1),Ue(Us,Hs.Lines,1),Ue(Us,Hs.Cross,6),Us),Xs=function(e){return{transform:e.transform,patternId:\"pattern-\".concat(e.rfId)}};function Ks(t){var n=t.variant,r=void 0===n?Hs.Dots:n,o=t.gap,i=void 0===o?20:o,a=t.size,l=t.lineWidth,s=void 0===l?1:l,u=t.color,c=t.style,d=t.className,f=(0,e.useRef)(null),h=fi(Xs,Qe),p=h.transform,m=h.patternId,g=u||$s[r],v=a||Ys[r],y=r===Hs.Dots,b=r===Hs.Cross,w=Array.isArray(i)?i:[i,i],x=[w[0]*p[2]||1,w[1]*p[2]||1],k=v*p[2],_=b?[k,k]:x,S=y?[k/2,k/2]:[_[0]/2,_[1]/2];return(0,Ze.jsxs)(\"svg\",{className:$e([\"react-flow__background\",d]),style:Ve(Ve({},c),{},{position:\"absolute\",width:\"100%\",height:\"100%\",top:0,left:0}),ref:f,children:[(0,Ze.jsx)(\"pattern\",{id:m,x:p[0]%x[0],y:p[1]%x[1],width:x[0],height:x[1],patternUnits:\"userSpaceOnUse\",patternTransform:\"translate(-\".concat(S[0],\",-\").concat(S[1],\")\"),children:y?(0,Ze.jsx)(Zs,{color:g,radius:k/2}):(0,Ze.jsx)(Ws,{dimensions:_,color:g,lineWidth:s})}),(0,Ze.jsx)(\"rect\",{x:\"0\",y:\"0\",width:\"100%\",height:\"100%\",fill:\"url(#\".concat(m,\")\")})]})}Ks.displayName=\"Background\";var Gs=(0,e.memo)(Ks),Qs=function(e,t){var n=\"hasOne\"===e.relation?\"has-one-edge\":\"has-many-edge\";return e.targetPosition?\"right\"===e.targetPosition&&(n+=\"-reversed\"):\"right\"===t&&(n+=\"-reversed\"),n},Js=function(e,t){var n=\"hasOne\"===e.relation?\"hasOne\":\"hasMany\";return e.targetPosition?\"right\"===e.targetPosition&&(n+=\"Reversed\"):\"right\"===t&&(n+=\"Reversed\"),n},eu=function(e,t,n,r){return t>r+n||t>r&&t<r+n?\"right\":\"left\"},tu=function(e,t,n,r){return t>r+n?\"left\":t>r&&t<r+n?\"right\":t+e>r?\"left\":\"right\"},nu=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"public\";return e.includes(\".\")?e:\"\".concat(t,\".\").concat(e)},ru=function(e,t,n,r){e.forEach((function(e){nu(e.name,e.schema||\"public\")===t&&e.columns.forEach((function(e){e.name===n&&(e.handleType=r)}))}))};function ou(e,t,n,r,o,i,a){try{var l=e[i](a),s=l.value}catch(u){return void n(u)}l.done?t(s):Promise.resolve(s).then(r,o)}function iu(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var i=e.apply(t,n);function a(e){ou(i,r,o,a,l,\"next\",e)}function l(e){ou(i,r,o,a,l,\"throw\",e)}a(void 0)}))}}var au,lu=n(3534),su=n.n(lu),uu=!1,cu=[],du=function(){var e=iu(yn().mark((function e(){var t,r,o,i;return yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!uu){e.next=2;break}return e.abrupt(\"return\");case 2:return au=new(su())({html:!0,linkify:!0,typographer:!0}),e.next=5,Promise.all([n.e(394).then(n.t.bind(n,7394,23)),n.e(226).then(n.bind(n,3226))]);case 5:t=e.sent,r=l(t,2),o=r[0],i=r[1],au.use(o.default),au.renderer.rules.emoji=function(e,t){return i.default.parse(e[t].content,{base:\"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/\"})},uu=!0,cu.forEach((function(e){var t=e.text;(0,e.resolve)(au.renderInline(t))})),cu.length=0;case 14:case\"end\":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),fu=function(e){return uu?au.renderInline(e):new Promise((function(t){cu.push({text:e,resolve:t}),uu||1!==cu.length||du()}))},hu=function(e){if(e){var t=e.closest(\"svg\");null===t||void 0===t||t.appendChild(e)}},pu=function(){var e=iu(yn().mark((function e(t){var r,o,i,a,s,u,c,d,f,h;return yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([n(7748)(\"./\".concat(t,\"/edges.json\")),n(9052)(\"./\".concat(t,\"/tablePositions.json\")),n(7594)(\"./\".concat(t,\"/schemaColors.json\")),n(3322)(\"./\".concat(t,\"/tables\"))]);case 2:return r=e.sent,o=l(r,4),i=o[0],a=o[1],s=o[2],u=o[3],c=i.default,d=a.default,f=s.default,h=u.default,c.forEach((function(e){var t=nu(e.source),n=nu(e.target);e.source=t,e.target=n})),h.forEach((function(e){e.schemaColor=f[e.schema||\"DEFAULT\"]})),e.abrupt(\"return\",{tables:h,tablePositions:d,edgeConfigs:c,schemaColors:f});case 15:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),mu=JSON.parse('{\"bindle\":{\"name\":\"Bindle dataset\",\"description\":\"This data warehouse belongs to a fictional startup named **Bindle**. Bindle is a web and mobile app for reading books, it has subscription business model. The SQL Habit Course is based on Bindle\\'s story. :book:\\\\n\\\\nBindle\\'s data warehouse contains everything needed to run a modern Internet company \\u2013 web and mobile analytics, marketing data, AB-test data, etc.\"},\"finance\":{\"name\":\"Finance dataset\",\"description\":\"This data warehouse simply contains all company\\'s financial transactions. :dollar:\\\\n\\\\nIf the company paid for something \\u2013 there\\'s a **debit** transaction with negative amount. If someone paid the company \\u2013 it\\'s a **credit** transaction with positive amount. :moneybag:\"},\"ecommerce\":{\"name\":\"E-commerce dataset\",\"description\":\"This data warehouse is inspired by an E-commerce website like Amazon. :shopping_cart:\\\\n\\\\nOur E-commerce website allows vendors to sell items in multiple categories. Users can add as many items as they want to a cart and then purchase a cart with/without a discount code. Users also can return items and leave reviews.\"},\"nba\":{\"name\":\"NBA dataset\",\"description\":\"The **NBA** dataset contains stats of NBA games since 1949. It is regularly updated.\\\\n\\\\nThe dataset contains aggregated game stats (**team_game_stats** table) and individual player stats per quarter or overtime period (**player_period_stats**).\\\\n\\\\nHave a ball! :basketball:\"},\"live\":{\"name\":\"Live dataset\",\"description\":\"The **Live** dataset contains data of a meditation mobile app with subscription business model. :iphone:\\\\n\\\\nThe data is updated **daily**. You can run queries to calculate metrics for the past 24h, week, month, etc. and build dashboards as if you were actually working for that company. :bar_chart:\"},\"movies\":{\"name\":\"Movies dataset\",\"description\":\"The **Movies** dataset contains data from some of the best films released since the 1990s.\\\\n\\\\nIt includes information on actors, directors, and key movie statistics like budget and revenue. The most interesting part is probably the `ratings` table. Please note that the ratings were artificially generated, so the final movie scores only partially correlate with real IMDb data.\\\\n\\\\nEnjoy the show! :movie_camera:\"},\"the-bank-job\":{\"name\":\"The Bank Job Quest dataset\",\"description\":\"This is a dataset for [SQL Habit\\'s Bank Job quest](https://www.sqlhabit.com/quests/the-bank-job). Saying more would be a spoiler. :bank:\"}}'),gu=mu,vu=function(){var e=iu(yn().mark((function e(t){return yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t in gu){e.next=2;break}return e.abrupt(\"return\",null);case 2:return e.next=4,pu(t);case 4:return e.abrupt(\"return\",e.sent);case 5:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();function yu(t){var n=l((0,e.useState)(\"\"),2),r=n[0],o=n[1],i=l((0,e.useState)(\"\"),2),a=i[0],s=i[1],u=l((0,e.useState)(\"\"),2),c=u[0],d=u[1];return(0,e.useEffect)((function(){Promise.resolve(fu(\"Hey :wave: The SQL Schema Visualiser is an open source project, it is built with [React Flow](https://reactflow.dev/). I bet in 20 minutes you can visualize your own schema! :boom: Check out [the README file on Github](https://github.com/sqlhabit/sql_schema_visualisation#readme) for instructions how to do it.\")).then(o),Promise.resolve(fu(\"The schema you're looking at belongs to a fictional startup called Bindle and featured in [the SQL Habit course](https://www.sqlhabit.com).\")).then(s),Promise.resolve(fu(\"Made with :heart: by [Anatoli Makarevich](https://twitter.com/makaroni4).\")).then(d)}),[]),(0,Ze.jsx)(\"div\",{className:\"info-popup\",children:(0,Ze.jsxs)(\"div\",{className:\"info-popup__inner\",children:[(0,Ze.jsx)(Su,{className:\"info-popup__close-icon\",onClick:function(){t.onClose()}}),(0,Ze.jsx)(\"h1\",{className:\"info-popup__headline\",children:\"SQL Schema Visualizer\"}),(0,Ze.jsxs)(\"div\",{className:\"info-popup__body\",children:[(0,Ze.jsx)(\"p\",{dangerouslySetInnerHTML:{__html:r}}),(0,Ze.jsx)(\"p\",{dangerouslySetInnerHTML:{__html:a}}),(0,Ze.jsx)(\"h2\",{children:\"Shortcuts\"}),(0,Ze.jsxs)(\"p\",{children:[(0,Ze.jsx)(\"strong\",{children:\"CMD + hover\"}),\" over a table node or a column name to see the description.\"]}),(0,Ze.jsxs)(\"p\",{children:[(0,Ze.jsx)(\"strong\",{children:\"CMD + click on an edge\"}),\" to select and highlight it.\"]}),(0,Ze.jsxs)(\"p\",{children:[(0,Ze.jsx)(\"strong\",{children:\"CTRL + P\"}),\" shortcut prints all table node positions to the console and copies them to the clipboard. You can then paste these positions to the \",(0,Ze.jsx)(\"a\",{target:\"_blank\",rel:\"noreferrer\",href:\"https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/tablePositions.json\",children:(0,Ze.jsx)(\"i\",{children:\"TablePositions.json\"})}),\" file.\"]}),(0,Ze.jsxs)(\"p\",{className:\"mb-32\",children:[(0,Ze.jsx)(\"strong\",{children:\"Hover over a table node\"}),\" to highlight all incoming and outgoing edges.\"]}),(0,Ze.jsx)(\"p\",{dangerouslySetInnerHTML:{__html:c}})]})]})})}function bu(){return(0,Ze.jsxs)(\"svg\",{style:{position:\"absolute\",top:0,left:0},children:[(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsxs)(\"marker\",{id:\"hasMany\",viewBox:\"0 0 10 13\",markerHeight:\"10\",markerWidth:\"13\",refX:\"10\",refY:\"6.5\",fill:\"none\",children:[(0,Ze.jsx)(\"path\",{d:\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\",stroke:\"#B1B1B6\"}),(0,Ze.jsx)(\"path\",{d:\"M10 1C2.57803 1 0.909955 5 1.00367 7\",stroke:\"#B1B1B6\"})]})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsxs)(\"marker\",{id:\"hasManySelected\",viewBox:\"0 0 10 13\",markerHeight:\"10\",markerWidth:\"13\",refX:\"10\",refY:\"6.5\",fill:\"none\",children:[(0,Ze.jsx)(\"path\",{d:\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\",stroke:\"#2186EB\"}),(0,Ze.jsx)(\"path\",{d:\"M10 1C2.57803 1 0.909955 5 1.00367 7\",stroke:\"#2186EB\"})]})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsxs)(\"marker\",{id:\"hasManyReversed\",viewBox:\"0 0 10 13\",markerHeight:\"10\",markerWidth:\"13\",refX:\"10\",refY:\"6.5\",fill:\"none\",orient:\"auto-start-reverse\",children:[(0,Ze.jsx)(\"path\",{d:\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\",stroke:\"#B1B1B6\"}),(0,Ze.jsx)(\"path\",{d:\"M10 1C2.57803 1 0.909955 5 1.00367 7\",stroke:\"#B1B1B6\"})]})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsxs)(\"marker\",{id:\"hasManyReversedSelected\",viewBox:\"0 0 10 13\",markerHeight:\"10\",markerWidth:\"13\",refX:\"10\",refY:\"6.5\",fill:\"none\",orient:\"auto-start-reverse\",children:[(0,Ze.jsx)(\"path\",{d:\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\",stroke:\"#2186EB\"}),(0,Ze.jsx)(\"path\",{d:\"M10 1C2.57803 1 0.909955 5 1.00367 7\",stroke:\"#2186EB\"})]})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsxs)(\"marker\",{id:\"hasManyHighlighted\",viewBox:\"0 0 10 13\",markerHeight:\"10\",markerWidth:\"13\",refX:\"10\",refY:\"6.5\",fill:\"none\",children:[(0,Ze.jsx)(\"path\",{d:\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\",stroke:\"#2186EB\"}),(0,Ze.jsx)(\"path\",{d:\"M10 1C2.57803 1 0.909955 5 1.00367 7\",stroke:\"#2186EB\"})]})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsxs)(\"marker\",{id:\"hasManyReversedHighlighted\",viewBox:\"0 0 10 13\",markerHeight:\"10\",markerWidth:\"13\",refX:\"10\",refY:\"6.5\",fill:\"none\",orient:\"auto-start-reverse\",children:[(0,Ze.jsx)(\"path\",{d:\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\",stroke:\"#2186EB\"}),(0,Ze.jsx)(\"path\",{d:\"M10 1C2.57803 1 0.909955 5 1.00367 7\",stroke:\"#2186EB\"})]})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsx)(\"marker\",{id:\"hasOne\",viewBox:\"0 0 6 6\",markerHeight:\"6\",markerWidth:\"6\",refX:\"6\",refY:\"3\",fill:\"none\",children:(0,Ze.jsx)(\"circle\",{cx:\"3\",cy:\"3\",r:\"3\",fill:\"#B1B1B6\"})})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsx)(\"marker\",{id:\"hasOneSelected\",viewBox:\"0 0 6 6\",markerHeight:\"6\",markerWidth:\"6\",refX:\"6\",refY:\"3\",fill:\"none\",children:(0,Ze.jsx)(\"circle\",{cx:\"3\",cy:\"3\",r:\"3\",fill:\"#2186EB\"})})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsx)(\"marker\",{id:\"hasOneReversed\",viewBox:\"0 0 6 6\",markerHeight:\"6\",markerWidth:\"6\",refX:\"6\",refY:\"3\",fill:\"none\",orient:\"auto-start-reverse\",children:(0,Ze.jsx)(\"circle\",{cx:\"3\",cy:\"3\",r:\"3\",fill:\"#B1B1B6\"})})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsx)(\"marker\",{id:\"hasOneReversedSelected\",viewBox:\"0 0 6 6\",markerHeight:\"6\",markerWidth:\"6\",refX:\"6\",refY:\"3\",fill:\"none\",orient:\"auto-start-reverse\",children:(0,Ze.jsx)(\"circle\",{cx:\"3\",cy:\"3\",r:\"3\",fill:\"#2186EB\"})})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsx)(\"marker\",{id:\"hasOneHighlighted\",viewBox:\"0 0 6 6\",markerHeight:\"6\",markerWidth:\"6\",refX:\"6\",refY:\"3\",fill:\"none\",children:(0,Ze.jsx)(\"circle\",{cx:\"3\",cy:\"3\",r:\"3\",fill:\"#2186EB\"})})}),(0,Ze.jsx)(\"defs\",{children:(0,Ze.jsx)(\"marker\",{id:\"hasOneReversedHighlighted\",viewBox:\"0 0 6 6\",markerHeight:\"6\",markerWidth:\"6\",refX:\"6\",refY:\"3\",fill:\"none\",orient:\"auto-start-reverse\",children:(0,Ze.jsx)(\"circle\",{cx:\"3\",cy:\"3\",r:\"3\",fill:\"#2186EB\"})})})]})}var wu=(new URL(window.location.href).searchParams.get(\"highlights\")||\"\").split(\";\").reduce((function(e,t){var n=l(t.split(\":\"),2),r=n[0],o=n[1];return r&&o&&(e[r]=o.split(\",\")),e}),{}),xu=function(){return Object.keys(wu).length>0},ku=function(e){var t=e.schema,n=e.tableName,r=t?\"\".concat(t,\".\").concat(n):n;return wu.hasOwnProperty(r)},_u=function(t){var n=t.data,r=l((0,e.useState)(\"\"),2),o=r[0],i=r[1],a=l((0,e.useState)(!1),2),s=a[0],u=a[1],c=l((0,e.useState)(!1),2),d=c[0],f=c[1],h=l((0,e.useState)(null),2),p=h[0],m=h[1],g=l((0,e.useState)(new Map),2),v=g[0],y=g[1];(0,e.useEffect)((function(){document.addEventListener(\"keydown\",(function(e){\"MetaLeft\"===e.code&&f(!0)}),!1),document.addEventListener(\"keyup\",(function(e){\"MetaLeft\"===e.code&&f(!1)}),!1)}),[]);var b=function(e){var t=e.selectedColumn,r=e.columnName,o=[\"column-name\"];return t===r&&o.push(\"column-name--selected\"),!function(e){var t,n=e.schema,r=e.tableName,o=e.columnName,i=n?\"\".concat(n,\".\").concat(r):r;return null===(t=wu[i])||void 0===t?void 0:t.includes(o)}({schema:n.schema,tableName:n.name,columnName:r})?xu()&&o.push(\"column-name--dimmed\"):o.push(\"column-name--highlighted\"),o.join(\" \")},w=(0,e.useCallback)(iu(yn().mark((function e(){var t;return yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(null!==p){e.next=6;break}return e.next=3,fu(n.description||\"No description.\");case 3:return t=e.sent,m(t),e.abrupt(\"return\",t);case 6:return e.abrupt(\"return\",p);case 7:case\"end\":return e.stop()}}),e)}))),[p,n.description]),x=(0,e.useCallback)(function(){var e=iu(yn().mark((function e(t){var n,r;return yn().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===(n=v.get(t.name))){e.next=3;break}return e.abrupt(\"return\",n);case 3:return e.next=5,fu(t.description||\"No description.\");case 5:return r=e.sent,y(new Map(v.set(t.name,r))),e.abrupt(\"return\",r);case 8:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[v]);return(0,e.useEffect)((function(){s&&null===p&&w()}),[s,p,w]),(0,e.useEffect)((function(){if(o&&!v.has(o)){var e=n.columns.find((function(e){return e.name===o}));e&&x(e)}}),[o,v,n.columns,x]),(0,Ze.jsxs)(\"div\",{className:function(e){var t=e.schema,n=e.tableName,r=[\"table\"];return ku({schema:t,tableName:n})?r.push(\"table--highlighted\"):xu()&&r.push(\"table--dimmed\"),r.join(\" \")}({schema:n.schema,tableName:n.name}),children:[(0,Ze.jsxs)(\"div\",{style:ku({schema:n.schema,tableName:n.name})?{}:{backgroundColor:n.schemaColor},className:\"table__name\",onMouseEnter:function(){d&&u(!0)},onMouseLeave:function(){return u(!1)},children:[n.schema?\"\".concat(n.schema,\".\").concat(n.name):n.name,(0,Ze.jsx)(\"div\",{className:s?\"table__description table__description--active\":\"table__description\",dangerouslySetInnerHTML:{__html:s&&p?p:\"\"}})]}),(0,Ze.jsx)(\"div\",{className:\"table__columns\",children:n.columns.map((function(e,t){return(0,Ze.jsxs)(\"div\",{className:b({selectedColumn:o,columnName:e.name}),onMouseEnter:function(){d&&i(e.name)},onMouseLeave:function(){return i(\"\")},children:[e.handleType&&(0,Ze.jsx)(wa,{type:e.handleType,position:Ri.Right,id:\"\".concat(e.name,\"-right\"),className:\"source\"===e.handleType?\"right-handle source-handle\":\"right-handle target-handle\"}),e.handleType&&(0,Ze.jsx)(wa,{type:e.handleType,position:Ri.Left,id:\"\".concat(e.name,\"-left\"),className:\"source\"===e.handleType?\"left-handle source-handle\":\"left-handle target-handle\"}),(0,Ze.jsxs)(\"div\",{className:\"column-name__inner\",children:[(0,Ze.jsxs)(\"div\",{className:\"column-name__name\",children:[e.key&&(0,Ze.jsx)(Eu,{}),e.name]}),(0,Ze.jsx)(\"div\",{className:\"column-name__type\",children:e.type}),(0,Ze.jsx)(\"div\",{className:\"column-name__description\",dangerouslySetInnerHTML:{__html:o===e.name&&v.has(e.name)&&v.get(e.name)||\"\"}})]})]},t)}))})]})};function Su(e){return(0,Ze.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"24\",height:\"24\",viewBox:\"0 0 50 50\",className:e.className,onClick:function(){e.onClick&&e.onClick()},children:(0,Ze.jsx)(\"path\",{d:\"M7.719 6.281L6.28 7.72 23.563 25 6.28 42.281 7.72 43.72 25 26.437 42.281 43.72l1.438-1.438L26.437 25 43.72 7.719 42.28 6.28 25 23.563z\"})})}function Cu(){return(0,Ze.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"512\",height:\"512\",enableBackground:\"new 0 0 512 512\",version:\"1.1\",viewBox:\"0 0 512 512\",xmlSpace:\"preserve\",children:[(0,Ze.jsx)(\"path\",{d:\"M288 448L288 192 192 192 192 208 224 208 224 448 192 448 192 464 320 464 320 448z\"}),(0,Ze.jsx)(\"path\",{d:\"M255.8 144.5c26.6 0 48.2-21.6 48.2-48.2s-21.6-48.2-48.2-48.2-48.2 21.6-48.2 48.2 21.6 48.2 48.2 48.2z\"})]})}function Eu(){return(0,Ze.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"800\",height:\"800\",fill:\"#000\",version:\"1.1\",viewBox:\"0 0 485.017 485.017\",xmlSpace:\"preserve\",className:\"key-icon\",children:[(0,Ze.jsx)(\"path\",{d:\"M361.205 68.899c-14.663 0-28.447 5.71-38.816 16.078-21.402 21.403-21.402 56.228 0 77.631 10.368 10.368 24.153 16.078 38.815 16.078s28.447-5.71 38.816-16.078c21.402-21.403 21.402-56.228 0-77.631-10.368-10.368-24.153-16.078-38.815-16.078zm17.602 72.495c-4.702 4.702-10.953 7.292-17.603 7.292s-12.901-2.59-17.603-7.291c-9.706-9.706-9.706-25.499 0-35.205 4.702-4.702 10.953-7.291 17.603-7.291s12.9 2.589 17.603 7.291c9.706 9.706 9.706 25.498 0 35.204z\"}),(0,Ze.jsx)(\"path\",{d:\"M441.961 43.036C414.21 15.284 377.311 0 338.064 0c-39.248 0-76.146 15.284-103.897 43.036-42.226 42.226-54.491 105.179-32.065 159.698L.254 404.584l-.165 80.268 144.562.165v-55.722h55.705V373.59h55.705v-64.492l26.212-26.212c17.615 7.203 36.698 10.976 55.799 10.976 39.244 0 76.14-15.282 103.889-43.032 57.289-57.289 57.289-150.505 0-207.794zm-21.213 186.581c-22.083 22.083-51.445 34.245-82.676 34.245-18.133 0-36.237-4.265-52.353-12.333l-9.672-4.842-49.986 49.985v46.918h-55.705v55.705h-55.705v55.688l-84.5-.096.078-37.85L238.311 208.95l-4.842-9.672c-22.572-45.087-13.767-99.351 21.911-135.029C277.466 42.163 306.83 30 338.064 30c31.234 0 60.598 12.163 82.684 34.249 45.592 45.592 45.592 119.776 0 165.368z\"})]})}function Nu(){return(0,Ze.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"800\",height:\"800\",fill:\"#000\",className:\"icon flat-line\",\"data-name\":\"Flat Line\",viewBox:\"0 0 24 24\",children:[(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M9 9L3.29 3.29M15 9l5.71-5.71M9 15l-5.71 5.71m17.42 0L15 15\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M3 8V4a1 1 0 011-1h4\",\"data-name\":\"primary\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M16 3h4a1 1 0 011 1v4\",\"data-name\":\"primary\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M8 21H4a1 1 0 01-1-1v-4\",\"data-name\":\"primary\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M21 16v4a1 1 0 01-1 1h-4\",\"data-name\":\"primary\"})]})}function Mu(){return(0,Ze.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"800\",height:\"800\",fill:\"#000\",className:\"icon flat-line\",\"data-name\":\"Flat Line\",viewBox:\"0 0 24 24\",children:[(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M8.71 15.29L3 21M8.71 8.71L3 3m18 18l-5.71-5.71M21 3l-5.71 5.71\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M4 15h4a1 1 0 011 1v4\",\"data-name\":\"primary\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M9 4v4a1 1 0 01-1 1H4\",\"data-name\":\"primary\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M15 20v-4a1 1 0 011-1h4\",\"data-name\":\"primary\"}),(0,Ze.jsx)(\"path\",{fill:\"none\",stroke:\"#000\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"2\",d:\"M20 9h-4a1 1 0 01-1-1V4\",\"data-name\":\"primary\"})]})}function Au(t){var n=l((0,e.useState)(\"\"),2),r=n[0],o=n[1],i=l((0,e.useState)(\"\"),2),a=i[0],s=i[1],u=l((0,e.useState)(new Map),2),c=u[0],d=u[1];(0,e.useEffect)((function(){Promise.resolve(fu(t.headline)).then(o),t.subheadline&&Promise.resolve(fu(t.subheadline)).then(s),Object.keys(gu).forEach((function(e){Promise.resolve(fu(gu[e].description||\"No description.\")).then((function(t){d((function(n){return new Map(n).set(e,t)}))}))}))}),[t.headline,t.subheadline]);var f=function(e){return\"/sql_schema_visualizer/databases/\".concat(e)};return(0,Ze.jsx)(\"div\",{className:\"info-popup\",children:(0,Ze.jsxs)(\"div\",{className:\"info-popup__inner\",children:[(0,Ze.jsx)(Su,{className:\"info-popup__close-icon\",onClick:function(){t.onClose()}}),(0,Ze.jsx)(\"h1\",{className:\"info-popup__headline\",dangerouslySetInnerHTML:{__html:r}}),t.subheadline&&(0,Ze.jsx)(\"h2\",{className:\"info-popup__subheadline\",dangerouslySetInnerHTML:{__html:a}}),(0,Ze.jsx)(\"div\",{className:\"info-popup__body\",children:Object.keys(gu).map((function(e){return(0,Ze.jsxs)(\"div\",{children:[(0,Ze.jsx)(\"h3\",{className:\"info-popup__database-name\",children:(0,Ze.jsx)(\"a\",{href:f(e),children:gu[e].name})}),(0,Ze.jsx)(\"p\",{dangerouslySetInnerHTML:{__html:c.get(e)||\"\"}})]},e)}))})]})})}var Du={table:(0,e.memo)(_u)};var Pu=function(){return(0,Ze.jsx)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"48\",height:\"48\",viewBox:\"0 0 48 48\",children:(0,Ze.jsxs)(\"g\",{children:[(0,Ze.jsx)(\"path\",{d:\"M24 20c-11.215 0-20-3.953-20-9s8.785-9 20-9 20 3.953 20 9-8.785 9-20 9zm0-16C15.486 4 6 6.875 6 11s9.486 7 18 7 18-2.875 18-7-9.486-7-18-7z\"}),(0,Ze.jsx)(\"path\",{d:\"M24 28c-11.215 0-20-3.953-20-9v-8a1 1 0 112 0v8c0 4.125 9.486 7 18 7s18-2.875 18-7v-8a1 1 0 112 0v8c0 5.047-8.785 9-20 9z\"}),(0,Ze.jsx)(\"path\",{d:\"M24 37c-11.215 0-20-3.953-20-9v-9a1 1 0 112 0v9c0 4.125 9.486 7 18 7s18-2.875 18-7v-9a1 1 0 112 0v9c0 5.047-8.785 9-20 9z\"}),(0,Ze.jsx)(\"path\",{d:\"M24 46c-11.215 0-20-3.953-20-9v-9a1 1 0 112 0v9c0 4.125 9.486 7 18 7s18-2.875 18-7v-9a1 1 0 112 0v9c0 5.047-8.785 9-20 9z\"})]})})},Lu=function(t){var n=t.currentDatabase,r=function(e){var t=[],n={};return Object.entries(e.tablePositions).forEach((function(e){var t=e[0],r=e[1];t.includes(\".\")?n[t]=r:n[nu(t)]=r})),e.edgeConfigs.forEach((function(t){var n=nu(t.source);ru(e.tables,n,t.sourceKey,\"source\");var r=nu(t.target);ru(e.tables,r,t.targetKey,\"target\")})),e.tables.forEach((function(e){var r=e.schema||\"public\",o=nu(e.name,r),i={id:o,data:e,position:n[o]||{x:0,y:0},type:\"table\"};t.push(i)})),t}(t.currentDatabase),o=hi(),i=l(Ds(r),3),a=i[0],s=(i[1],i[2]),u=l(Ps([]),3),c=u[0],d=u[1],f=u[2],h=l((0,e.useState)(!1),2),p=h[0],m=h[1],g=l((0,e.useState)(!1),2),v=g[0],y=g[1],b=l((0,e.useState)(!1),2),w=b[0],x=b[1],k=l((0,e.useState)(!1),2),_=k[0],S=k[1],C=l((0,e.useState)(!0),2),E=C[0],N=C[1],M=(0,e.useCallback)((function(e,t){if(E){var n=o.getState();n.resetSelectedElements(),n.addSelectedNodes([t.id]);var r=pa([t],c);d((function(e){return e.map((function(e){return r.find((function(t){return t.id===e.id}))&&function(e){var t,n,r,o;if(null!==(t=e.className)&&void 0!==t&&t.includes(\"has-many-edge-reversed\")){var i;e.className=\"has-many-edge-reversed has-many-edge-reversed--highlighted\",e.markerEnd=\"hasManyReversedHighlighted\";var a=null===(i=document.querySelector(\".react-flow__edges\"))||void 0===i?void 0:i.querySelector('[data-testid=\"rf__edge-'.concat(e.id,'\"]'));hu(a)}else if(null!==(n=e.className)&&void 0!==n&&n.includes(\"has-many-edge\")){var l;e.className=\"has-many-edge has-many-edge--highlighted\",e.markerEnd=\"hasManyHighlighted\";var s=null===(l=document.querySelector(\".react-flow__edges\"))||void 0===l?void 0:l.querySelector('[data-testid=\"rf__edge-'.concat(e.id,'\"]'));hu(s)}else if(null!==(r=e.className)&&void 0!==r&&r.includes(\"has-one-edge-reversed\")){var u;e.className=\"has-one-edge-reversed has-one-edge-reversed--highlighted\",e.markerEnd=\"hasOneReversedHighlighted\";var c=null===(u=document.querySelector(\".react-flow__edges\"))||void 0===u?void 0:u.querySelector('[data-testid=\"rf__edge-'.concat(e.id,'\"]'));hu(c)}else if(null!==(o=e.className)&&void 0!==o&&o.includes(\"has-one-edge\")){var d;e.className=\"has-one-edge has-one-edge--highlighted\",e.markerEnd=\"hasOneHighlighted\";var f=null===(d=document.querySelector(\".react-flow__edges\"))||void 0===d?void 0:d.querySelector('[data-testid=\"rf__edge-'.concat(e.id,'\"]'));hu(f)}}(e),e}))}))}}),[c,E,d,o]),A=(0,e.useCallback)((function(e,t){E&&(o.getState().resetSelectedElements(),d((function(e){return e.map((function(e){return function(e){var t,n,r,o;return null!==(t=e.className)&&void 0!==t&&t.includes(\"has-many-edge-reversed\")?(e.className=\"has-many-edge-reversed\",e.markerEnd=\"hasManyReversed\"):null!==(n=e.className)&&void 0!==n&&n.includes(\"has-many-edge\")?(e.className=\"has-many-edge\",e.markerEnd=\"hasMany\"):null!==(r=e.className)&&void 0!==r&&r.includes(\"has-one-edge-reversed\")?(e.className=\"has-one-edge-reversed\",e.markerEnd=\"hasOneReversed\"):null!==(o=e.className)&&void 0!==o&&o.includes(\"has-one-edge\")&&(e.className=\"has-one-edge\",e.markerEnd=\"hasOne\"),e}(e)}))})),document.activeElement.blur())}),[E,d,o]),D=(0,e.useCallback)((function(e){e.edges.forEach((function(e){var t,n=null===(t=document.querySelector(\".react-flow__edges\"))||void 0===t?void 0:t.querySelector('[data-testid=\"rf__edge-'.concat(e.id,'\"]'));hu(n)}))}),[]),P=(0,e.useCallback)((function(e){e.forEach((function(e){if(\"position\"===e.type&&e.positionAbsolute){var t=a.find((function(t){return t.id===e.id}));if(!t)return;var r=function(e,t,n){if(!la(e))return[];var r=n.filter((function(t){return t.target===e.id})).map((function(e){return e.source}));return t.filter((function(e){return r.includes(e.id)}))}(t,a,c);r.forEach((function(r){var o,i=c.find((function(e){return e.id===\"\".concat(r.id,\"-\").concat(t.id)})),a=n.edgeConfigs.find((function(e){return e.source===r.id&&e.target===t.id}));null!==(o=e.positionAbsolute)&&void 0!==o&&o.x&&d((function(n){return n.map((function(n){if(i&&n.id===i.id){var o=a.sourcePosition||tu(r.width,r.position.x,t.width,e.positionAbsolute.x),l=a.targetPosition||eu(r.width,r.position.x,t.width,e.positionAbsolute.x),s=\"\".concat(a.sourceKey,\"-\").concat(o),u=\"\".concat(a.targetKey,\"-\").concat(l);n.sourceHandle=s,n.targetHandle=u,n.className=Qs(a,l),n.markerEnd=Js(a,l)}return n}))}))}));var o=function(e,t,n){if(!la(e))return[];var r=n.filter((function(t){return t.source===e.id})).map((function(e){return e.target}));return t.filter((function(e){return r.includes(e.id)}))}(t,a,c);o.forEach((function(r){var o,i=c.find((function(e){return e.id===\"\".concat(t.id,\"-\").concat(r.id)})),a=n.edgeConfigs.find((function(t){return t.source===e.id&&t.target===r.id}));null!==(o=e.positionAbsolute)&&void 0!==o&&o.x&&d((function(n){return n.map((function(n){if(i&&n.id===i.id){var o=a.sourcePosition||tu(t.width,e.positionAbsolute.x,r.width,r.position.x),l=a.targetPosition||eu(t.width,e.positionAbsolute.x,r.width,r.position.x),s=\"\".concat(a.sourceKey,\"-\").concat(o),u=\"\".concat(a.targetKey,\"-\").concat(l);n.sourceHandle=s,n.targetHandle=u,n.className=Qs(a,l),n.markerEnd=Js(a,l)}return n}))}))}))}})),s(e)}),[s,d,a,c,n]);return(0,Ze.jsxs)(\"div\",{className:\"Flow\",children:[(0,Ze.jsx)(bu,{}),(0,Ze.jsxs)(Ms,{nodes:a,edges:c,onNodesChange:P,onEdgesChange:f,onInit:function(e){var t=function(e){var t=e.nodes,n=e.currentDatabase,r=[];return n.edgeConfigs.forEach((function(e){var n=t.find((function(t){return t.id===e.source})),o=t.find((function(t){return t.id===e.target}));if(n&&o){var i=e.sourcePosition||tu(n.width,n.position.x,o.width,o.position.x),a=e.targetPosition||eu(n.width,n.position.x,o.width,o.position.x),l=\"\".concat(e.sourceKey,\"-\").concat(i),s=\"\".concat(e.targetKey,\"-\").concat(a);r.push({id:\"\".concat(e.source,\"-\").concat(e.target),source:e.source,target:e.target,sourceHandle:l,targetHandle:s,type:\"smoothstep\",markerEnd:Js(e,a),className:Qs(e,a)})}})),r}({nodes:e.getNodes(),currentDatabase:n});d((function(){return t}));document.addEventListener(\"keydown\",(function(t){t.ctrlKey&&\"p\"===t.key&&function(e){var t={};e.sort((function(e,t){return(n=e.id)<(r=t.id)?-1:n>r?1:0;var n,r})).forEach((function(e){t[e.id]={x:Math.round(e.position.x),y:Math.round(e.position.y)}})),navigator.clipboard.writeText(JSON.stringify(t,null,2)),console.log(JSON.stringify(t,null,2))}(e.getNodes())})),window.addEventListener(\"resize\",(function(e){m(window.innerHeight===window.screen.height)})),document.addEventListener(\"keydown\",(function(e){\"Escape\"===e.code&&(y(!1),x(!1),S(!1))})),document.addEventListener(\"click\",(function(e){if(document.querySelector(\".info-popup\")){var t=e.target;t&&t.closest(\".into-popup-toggle\")||t&&!t.closest(\".info-popup__inner\")&&(y(!1),x(!1),S(!1))}})),document.addEventListener(\"keydown\",(function(e){\"MetaLeft\"===e.code&&N(!1)}),!1),document.addEventListener(\"keyup\",(function(e){\"MetaLeft\"===e.code&&N(!0)}),!1)},snapToGrid:!0,fitView:!0,snapGrid:[16,16],nodeTypes:Du,onNodeMouseEnter:M,onNodeMouseLeave:A,onSelectionChange:D,children:[(0,Ze.jsxs)(Vs,{showInteractive:!1,children:[(0,Ze.jsxs)(Rs,{onClick:function(){if(p)document.exitFullscreen().then((function(){m(!1)})).catch((function(e){alert(\"Can't exit fullscreen\"),console.error(e)}));else{var e=document.querySelector(\"body\");e&&e.requestFullscreen().then((function(){m(!0)})).catch((function(e){alert(\"Can't turn on fullscreen\"),console.error(e)}))}},children:[!p&&(0,Ze.jsx)(Nu,{}),p&&(0,Ze.jsx)(Mu,{})]}),(0,Ze.jsx)(Rs,{onClick:function(){y(!v)},className:\"into-popup-toggle\",children:(0,Ze.jsx)(Cu,{})}),(0,Ze.jsx)(Rs,{onClick:function(){S(!0)},className:\"into-popup-toggle\",children:(0,Ze.jsx)(Pu,{})})]}),(0,Ze.jsx)(Gs,{color:\"#aaa\",gap:16})]}),v&&(0,Ze.jsx)(yu,{onClose:function(){y(!1)}}),w&&(0,Ze.jsx)(Au,{headline:\"Unknown dataset :warning:\",subheadline:\"Available datasets :point_down:\",onClose:function(){x(!1)}}),_&&(0,Ze.jsx)(Au,{headline:\"Choose a dataset :point_down:\",onClose:function(){S(!1)}})]})},zu=function(t){var n=l((0,e.useState)({tables:[],edgeConfigs:[],schemaColors:{},tablePositions:{}}),2),r=n[0],o=n[1],i=l((0,e.useState)(!1),2),a=i[0],s=i[1];return(0,e.useEffect)((function(){var e=t.database;e&&(s(!1),vu(e).then((function(e){e&&(o(e),s(!0))})))}),[t.database]),(0,Ze.jsx)(bs,{children:a&&(0,Ze.jsx)(Lu,{currentDatabase:r})})};var ju=function(){return(0,Ze.jsxs)(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"101\",height:\"23\",fill:\"none\",viewBox:\"0 0 101 23\",children:[(0,Ze.jsx)(\"path\",{fill:\"#000\",d:\"M52.358 6.016c2.88 0 4.32 1.704 4.32 5.112v7.368h-3.624v-7.2c0-.848-.16-1.464-.48-1.848-.304-.4-.792-.6-1.464-.6-.8 0-1.44.256-1.92.768s-.72 1.2-.72 2.064v6.816h-3.624V.832h3.624v7.152a4.283 4.283 0 011.656-1.464c.672-.336 1.416-.504 2.232-.504zm18.438.312v12.168H67.22v-1.8a3.83 3.83 0 01-1.56 1.464c-.671.352-1.431.528-2.28.528-1.056 0-1.992-.256-2.808-.768-.8-.512-1.431-1.24-1.896-2.184-.448-.96-.672-2.064-.672-3.312 0-1.248.224-2.36.672-3.336.465-.976 1.105-1.728 1.92-2.256.817-.544 1.745-.816 2.785-.816.847 0 1.608.184 2.28.552a3.995 3.995 0 011.56 1.488V6.328h3.575zm-6.36 9.6c.896 0 1.584-.304 2.064-.912.48-.608.72-1.488.72-2.64 0-1.152-.24-2.032-.72-2.64-.48-.624-1.168-.936-2.064-.936-.896 0-1.592.32-2.088.96-.495.64-.743 1.528-.743 2.664 0 1.136.24 2.008.72 2.616.495.592 1.2.888 2.111.888zm15.766-9.912c1.056 0 1.992.264 2.808.792.816.512 1.448 1.248 1.896 2.208.448.944.672 2.04.672 3.288 0 1.248-.232 2.36-.696 3.336-.448.96-1.08 1.712-1.896 2.256-.816.528-1.744.792-2.784.792-.848 0-1.616-.176-2.304-.528-.672-.368-1.184-.864-1.536-1.488v1.824h-3.6V.832h3.624v7.2a3.67 3.67 0 011.536-1.464 4.757 4.757 0 012.28-.552zm-1.032 9.912c.896 0 1.584-.312 2.064-.936.48-.624.72-1.52.72-2.688 0-1.12-.24-1.984-.72-2.592-.48-.608-1.168-.912-2.064-.912-.896 0-1.592.312-2.088.936-.48.608-.72 1.48-.72 2.616 0 1.152.24 2.04.72 2.664.496.608 1.192.912 2.088.912zm7.772-9.6h3.624v12.168h-3.624V6.328zM90.686.616v3.408h-3.864V.616h3.864zm6.442 8.424v4.728c0 .672.176 1.168.528 1.488.352.304.808.456 1.368.456.352 0 .752-.056 1.2-.168v2.808c-.576.224-1.272.336-2.088.336-1.504 0-2.656-.424-3.456-1.272-.784-.848-1.176-2.04-1.176-3.576v-4.8H91.2V6.328h2.304V3.472l3.624-1.176v4.032h3.096V9.04h-3.096z\"}),(0,Ze.jsx)(\"path\",{fill:\"#2186EB\",d:\"M7.036 18.583a13.82 13.82 0 01-3.744-.504c-1.184-.352-2.168-.84-2.952-1.464l1.2-2.688c1.648 1.152 3.488 1.728 5.52 1.728 1.088 0 1.92-.168 2.496-.504.592-.352.888-.84.888-1.464 0-.544-.272-.968-.816-1.272-.528-.32-1.464-.624-2.808-.912-1.504-.304-2.704-.672-3.6-1.104-.88-.448-1.528-.984-1.944-1.608-.4-.64-.6-1.432-.6-2.376 0-1.024.28-1.944.84-2.76.576-.816 1.376-1.448 2.4-1.896 1.024-.464 2.208-.696 3.552-.696 1.216 0 2.384.176 3.504.528 1.12.352 2.016.832 2.688 1.44l-1.2 2.688C10.956 4.567 9.3 3.991 7.492 3.991c-.96 0-1.728.192-2.304.576-.576.384-.864.904-.864 1.56 0 .384.104.704.312.96.224.256.592.488 1.104.696.512.192 1.24.384 2.184.576 2.192.48 3.768 1.104 4.728 1.872.976.768 1.464 1.816 1.464 3.144 0 1.6-.624 2.872-1.872 3.816-1.248.928-2.984 1.392-5.208 1.392zm19.565-.888a8.723 8.723 0 001.296 1.704 26.922 26.922 0 001.8 1.632l-2.52 1.92a13.025 13.025 0 01-4.056-4.392 5.764 5.764 0 01-.6.024c-1.696 0-3.176-.352-4.44-1.056-1.248-.72-2.216-1.744-2.904-3.072-.672-1.328-1.008-2.88-1.008-4.656 0-1.776.336-3.32 1.008-4.632.688-1.312 1.656-2.32 2.904-3.024 1.264-.72 2.744-1.08 4.44-1.08 1.696 0 3.168.36 4.416 1.08 1.248.704 2.208 1.712 2.88 3.024.672 1.312 1.008 2.856 1.008 4.632 0 1.872-.368 3.488-1.104 4.848-.736 1.36-1.776 2.376-3.12 3.048zM17.937 9.8c0 1.904.4 3.36 1.2 4.368.816.992 1.944 1.488 3.384 1.488s2.56-.504 3.36-1.512c.816-1.008 1.224-2.456 1.224-4.344 0-1.888-.408-3.328-1.224-4.32-.8-.992-1.92-1.488-3.36-1.488s-2.568.496-3.384 1.488c-.8.992-1.2 2.432-1.2 4.32zm13.654 8.568V1.28h3.744v14.04h7.632v3.048H31.591z\"})]})};function Ou(){var t=function(){var t=e.useContext(pe).matches,n=t[t.length-1];return n?n.params:{}}().slug,n=Object.keys(mu),r=t||n[0];return(0,Ze.jsx)(zu,{database:r})}function Tu(){return(0,Ze.jsxs)(\"div\",{children:[(0,Ze.jsx)(\"h2\",{children:\"Nothing to see here!\"}),(0,Ze.jsx)(\"p\",{children:(0,Ze.jsx)(Fe,{to:\"/\",children:\"Go to the home page\"})})]})}var Iu=function(){return(0,Ze.jsxs)(\"div\",{className:\"App\",children:[(0,Ze.jsx)(\"a\",{href:\"https://www.sqlhabit.com\",target:\"_blank\",rel:\"noreferrer\",className:\"App__logo\",children:(0,Ze.jsx)(ju,{})}),(0,Ze.jsx)(Pe,{children:(0,Ze.jsxs)(Ae,{path:\"/\",element:(0,Ze.jsx)(Ou,{}),children:[(0,Ze.jsx)(Ae,{path:\"databases/:slug\",element:(0,Ze.jsx)(Ou,{})}),(0,Ze.jsx)(Ae,{path:\"*\",element:(0,Ze.jsx)(Tu,{})})]})})]})},Ru=document.getElementById(\"root\");r.createRoot(Ru).render((0,Ze.jsx)(e.StrictMode,{children:(0,Ze.jsx)(Ie,{basename:\"/sql_schema_visualizer\",children:(0,Ze.jsx)(Iu,{})})}))}()}();\n//# sourceMappingURL=main.33dfc6b0.js.map"
  },
  {
    "path": "build/static/js/main.33dfc6b0.js.LICENSE.txt",
    "content": "/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/**\n * @remix-run/router v1.3.1\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n\n/**\n * React Router DOM v6.8.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n\n/**\n * React Router v6.8.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\n"
  },
  {
    "path": "build/static/js/movies-edges-json.5b3266f6.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[127],{8997:function(e){e.exports=JSON.parse('[{\"source\":\"actors\",\"sourceKey\":\"id\",\"target\":\"actors_movies\",\"targetKey\":\"actor_id\",\"relation\":\"hasMany\"},{\"source\":\"genres\",\"sourceKey\":\"id\",\"target\":\"genres_movies\",\"targetKey\":\"genre_id\",\"relation\":\"hasMany\"},{\"source\":\"movies\",\"sourceKey\":\"id\",\"target\":\"ratings\",\"targetKey\":\"movie_id\",\"relation\":\"hasMany\"},{\"source\":\"movies\",\"sourceKey\":\"id\",\"target\":\"actors_movies\",\"targetKey\":\"movie_id\",\"relation\":\"hasMany\"},{\"source\":\"movies\",\"sourceKey\":\"id\",\"target\":\"genres_movies\",\"targetKey\":\"movie_id\",\"relation\":\"hasMany\"},{\"source\":\"directors\",\"sourceKey\":\"id\",\"target\":\"movies\",\"targetKey\":\"director_id\",\"relation\":\"hasMany\",\"sourcePosition\":\"left\",\"targetPosition\":\"right\"},{\"source\":\"movies\",\"sourceKey\":\"id\",\"target\":\"movies\",\"targetKey\":\"sequel_id\",\"relation\":\"hasOne\",\"sourcePosition\":\"right\",\"targetPosition\":\"right\"}]')}}]);"
  },
  {
    "path": "build/static/js/movies-schemaColors-json.a48d91cc.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[822],{5544:function(s){s.exports=JSON.parse('{\"DEFAULT\":\"#91C4F2\",\"public\":\"#91C4F2\"}')}}]);"
  },
  {
    "path": "build/static/js/movies-tablePositions-json.1435348f.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[250],{8863:function(s){s.exports=JSON.parse('{\"public.actors\":{\"x\":-112,\"y\":160},\"public.actors_movies\":{\"x\":176,\"y\":-16},\"public.directors\":{\"x\":752,\"y\":160},\"public.genres\":{\"x\":-96,\"y\":320},\"public.genres_movies\":{\"x\":128,\"y\":272},\"public.movies\":{\"x\":480,\"y\":208},\"public.ratings\":{\"x\":160,\"y\":496}}')}}]);"
  },
  {
    "path": "build/static/js/movies-tables.37f21107.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[281],{1233:function(e,i,t){t.r(i),t.d(i,{default:function(){return n}});var n=[JSON.parse('{\"name\":\"actors\",\"description\":\"This table contains movie actors.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier for each actor.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Full name of the actor.\",\"type\":\"text\"}]}'),JSON.parse('{\"name\":\"actors_movies\",\"description\":\"This is a join table between actors and movies, since they have many-to-many relationship.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"actor_id\",\"description\":\"Unique identifier of an actor from the `actors` table.\",\"type\":\"bigint\"},{\"name\":\"movie_id\",\"description\":\"Unique identifier of a movie from the `movies` table.\",\"type\":\"bigint\"}]}'),JSON.parse('{\"name\":\"directors\",\"description\":\"This table contains movie directors.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier for each director.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Full name of the director.\",\"type\":\"text\"}]}'),JSON.parse('{\"name\":\"genres\",\"description\":\"This table contains movie genres.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier for each genre.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Name of the movie genre.\",\"type\":\"text\"}]}'),JSON.parse('{\"name\":\"genres_movies\",\"description\":\"This is an association (aka join aka many-to-many relationship) table between genres and movies.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"genre_id\",\"description\":\"Genre\\'s ID from the `genres` table.\",\"type\":\"bigint\"},{\"name\":\"movie_id\",\"description\":\"Movie\\'s ID from the `movies` table.\",\"type\":\"bigint\"}]}'),JSON.parse('{\"name\":\"movies\",\"description\":\"This table contains all dataset movies.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"description\":\"Unique identifier for each movie.\",\"type\":\"bigint\"},{\"name\":\"release_date\",\"description\":\"Release date of the movie.\",\"type\":\"date\"},{\"name\":\"duration\",\"description\":\"Total runtime of the movie in minutes.\",\"type\":\"integer\"},{\"name\":\"budget\",\"description\":\"Total budget allocated for the movie in US dollars.\",\"type\":\"bigint\"},{\"name\":\"revenue\",\"description\":\"Total revenue earned by the movie in US dollars.\",\"type\":\"bigint\"},{\"name\":\"director_id\",\"description\":\"Director\\'s ID from the `director` table linking the director to the movie.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Official title of the movie.\",\"type\":\"text\"},{\"name\":\"imdb_slug\",\"description\":\"Unique IMDb URL slug for the movie.\",\"type\":\"text\"},{\"name\":\"sequel_id\",\"description\":\"A sequel (follow up) movie ID from the `movies` table.\",\"type\":\"integer\"}]}'),JSON.parse('{\"name\":\"ratings\",\"description\":\"This table contains individual user ratings for all movies.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"movie_id\",\"description\":\"Movie\\'s ID from the `movies` table.\",\"type\":\"bigint\"},{\"name\":\"user_id\",\"description\":\"ID of the user who gave the rating.\",\"type\":\"integer\"},{\"name\":\"rating\",\"description\":\"Rating score assigned to the movie.\",\"type\":\"integer\"},{\"name\":\"created_at\",\"description\":\"Timestamp when the rating was created.\",\"type\":\"timestamp\"}]}')]}}]);\n//# sourceMappingURL=movies-tables.37f21107.chunk.js.map"
  },
  {
    "path": "build/static/js/nba-edges-json.b14b1c04.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[87],{6469:function(e){e.exports=JSON.parse('[{\"source\":\"players\",\"sourceKey\":\"id\",\"target\":\"player_game_stats\",\"targetKey\":\"player_id\",\"relation\":\"hasMany\"},{\"source\":\"games\",\"sourceKey\":\"id\",\"target\":\"player_game_stats\",\"targetKey\":\"game_id\",\"relation\":\"hasMany\"},{\"source\":\"games\",\"sourceKey\":\"id\",\"target\":\"team_game_stats\",\"targetKey\":\"game_id\",\"relation\":\"hasMany\"},{\"source\":\"teams\",\"sourceKey\":\"id\",\"target\":\"team_game_stats\",\"targetKey\":\"team_id\",\"relation\":\"hasMany\"},{\"source\":\"teams\",\"sourceKey\":\"id\",\"target\":\"player_game_stats\",\"targetKey\":\"team_id\",\"relation\":\"hasMany\"}]')}}]);"
  },
  {
    "path": "build/static/js/nba-schemaColors-json.e0912a1a.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[741],{1873:function(s){s.exports=JSON.parse('{\"DEFAULT\":\"#91C4F2\",\"public\":\"#91C4F2\"}')}}]);"
  },
  {
    "path": "build/static/js/nba-tablePositions-json.eda5bb0d.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[869],{4139:function(s){s.exports=JSON.parse('{\"public.games\":{\"x\":32,\"y\":48},\"public.player_game_stats\":{\"x\":400,\"y\":288},\"public.players\":{\"x\":688,\"y\":496},\"public.team_game_stats\":{\"x\":-272,\"y\":208},\"public.teams\":{\"x\":48,\"y\":416}}')}}]);"
  },
  {
    "path": "build/static/js/nba-tables.7858f3c9.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[63],{4156:function(e,t,n){n.r(t),n.d(t,{default:function(){return a}});var a=[JSON.parse('{\"name\":\"games\",\"description\":\"This table contains all NBA games since NBA was found in 1949.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an NBA game.\",\"type\":\"bigint\"},{\"name\":\"game_date\",\"description\":\"When the game was played (calculated with EST time).\",\"type\":\"date\"},{\"name\":\"season\",\"description\":\"A year of a NBA season.\",\"type\":\"integer\"},{\"name\":\"home_team_id\",\"description\":\"An ID of a team that played on their home court.\",\"type\":\"bigint\"},{\"name\":\"visitor_team_id\",\"description\":\"An ID of a visiting team.\",\"type\":\"bigint\"},{\"name\":\"game_type\",\"description\":\"Type of a game depending on when it was played during a season. Possible values are **preseason**, **regular**, **allstar**, **playin** or **playoff**.\",\"type\":\"text\"},{\"name\":\"home_team_points\",\"description\":\"How many points a home team scored.\",\"type\":\"integer\"},{\"name\":\"visitor_team_points\",\"description\":\"How many points a visiting team scored.\",\"type\":\"integer\"}]}'),JSON.parse('{\"name\":\"player_game_stats\",\"description\":\"This table contains player stats for individual games.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"game_id\",\"description\":\"An ID of a game.\",\"type\":\"bigint\"},{\"name\":\"team_id\",\"description\":\"An ID of a team.\",\"type\":\"bigint\"},{\"name\":\"player_id\",\"description\":\"An ID of a player.\",\"type\":\"bigint\"},{\"name\":\"min\",\"description\":\"How many minutes a player was in the game.\",\"type\":\"integer\"},{\"name\":\"fgm\",\"description\":\"A number of goals made by a player.\",\"type\":\"integer\"},{\"name\":\"fga\",\"description\":\"A number of goals attempted (shots made) by a player.\",\"type\":\"integer\"},{\"name\":\"fg3m\",\"description\":\"A number of 3-pointers made by a player.\",\"type\":\"integer\"},{\"name\":\"fg3a\",\"description\":\"A number of attempted 3-point shots by a player.\",\"type\":\"integer\"},{\"name\":\"ftm\",\"description\":\"A number of Free Throws made by a player.\",\"type\":\"integer\"},{\"name\":\"fta\",\"description\":\"A number of Free Throws attempted by a player.\",\"type\":\"integer\"},{\"name\":\"oreb\",\"description\":\"Number of offensive rebounds by a player.\",\"type\":\"integer\"},{\"name\":\"dreb\",\"description\":\"Number of defensive rebounds by a player.\",\"type\":\"integer\"},{\"name\":\"reb\",\"description\":\"Total number of rebounds by a player.\",\"type\":\"integer\"},{\"name\":\"ast\",\"description\":\"Number of assists by a player.\",\"type\":\"integer\"},{\"name\":\"stl\",\"description\":\"Number of steals by a player.\",\"type\":\"integer\"},{\"name\":\"blk\",\"description\":\"Number of blocks by a player.\",\"type\":\"integer\"},{\"name\":\"to\",\"description\":\"Number of turnovers by a player.\",\"type\":\"integer\"},{\"name\":\"pf\",\"description\":\"Number of personal fouls made by a player.\",\"type\":\"integer\"},{\"name\":\"pts\",\"description\":\"Number of points scored by a player.\",\"type\":\"integer\"}]}'),JSON.parse('{\"name\":\"players\",\"description\":\"This table contains all players who have played in at least one NBA game.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an NBA player.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Player\\'s name.\",\"type\":\"text\"}]}'),JSON.parse('{\"name\":\"team_game_stats\",\"description\":\"This table contains team stats for individual games.\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"game_id\",\"description\":\"An ID of a game.\",\"type\":\"bigint\"},{\"name\":\"team_id\",\"description\":\"An ID of a team.\",\"type\":\"bigint\"},{\"name\":\"pts_q1\",\"description\":\"Number of points scored by the team in the 1st quarter.\",\"type\":\"integer\"},{\"name\":\"pts_q2\",\"description\":\"Number of points scored by the team in the 2nd quarter.\",\"type\":\"integer\"},{\"name\":\"pts_q3\",\"description\":\"Number of points scored by the team in the 3rd quarter.\",\"type\":\"integer\"},{\"name\":\"pts_q4\",\"description\":\"Number of points scored by the team in the 4th quarter.\",\"type\":\"integer\"},{\"name\":\"pts_ot1\",\"description\":\"Number of points scored by the team in the 1st overtime.\",\"type\":\"integer\"},{\"name\":\"pts_ot2\",\"description\":\"Number of points scored by the team in the 2nd overtime.\",\"type\":\"integer\"},{\"name\":\"pts_ot3\",\"description\":\"Number of points scored by the team in the 3rd overtime.\",\"type\":\"integer\"},{\"name\":\"pts_ot4\",\"description\":\"Number of points scored by the team in the 4th overtime.\",\"type\":\"integer\"},{\"name\":\"pts_ot5\",\"description\":\"Number of points scored by the team in the 5th overtime.\",\"type\":\"integer\"},{\"name\":\"pts_ot6\",\"description\":\"Number of points scored by the team in the 6th overtime.\",\"type\":\"integer\"},{\"name\":\"fg_pct\",\"description\":\"Team\\'s Field Goal Percentage in a game. It\\'s the ratio of made goals to attempted goals.\",\"type\":\"numeric\"},{\"name\":\"ft_pct\",\"description\":\"Team\\'s Free Throw Percentage in a game. It\\'s the ratio of made free throws to attemtped free throws.\",\"type\":\"numeric\"},{\"name\":\"fg3_pct\",\"description\":\"Team\\'s Three Point Field Goal Percentage in a game. It\\'s the ratio of made 3-pointers to the total number \",\"type\":\"numeric\"},{\"name\":\"ast\",\"description\":\"A number of team assists in a game.\",\"type\":\"integer\"},{\"name\":\"reb\",\"description\":\"A number of team rebounds in a game.\",\"type\":\"integer\"},{\"name\":\"tov\",\"description\":\"A number of team turnovers in a game.\",\"type\":\"integer\"}]}'),JSON.parse('{\"name\":\"teams\",\"description\":\"This table contains all NBA teams (including dissolved or merged teams).\",\"schemaColor\":\"#91C4F2\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an NBA team.\",\"type\":\"bigint\"},{\"name\":\"name\",\"description\":\"Team\\'s name.\",\"type\":\"text\"},{\"name\":\"nickname\",\"description\":\"Team\\'s nickname.\",\"type\":\"text\"},{\"name\":\"city\",\"description\":\"Team\\'s city.\",\"type\":\"text\"},{\"name\":\"state\",\"description\":\"Team\\'s state.\",\"type\":\"text\"},{\"name\":\"founding_year\",\"description\":\"When the team was founded.\",\"type\":\"integer\"}]}')]}}]);\n//# sourceMappingURL=nba-tables.7858f3c9.chunk.js.map"
  },
  {
    "path": "build/static/js/the-bank-job-edges-json.f4126c62.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[335],{4879:function(e){e.exports=JSON.parse('[{\"source\":\"bank.accounts\",\"sourceKey\":\"id\",\"target\":\"bank.safe_deposit_boxes\",\"targetKey\":\"account_id\",\"relation\":\"hasMany\"},{\"source\":\"bank.vaults\",\"sourceKey\":\"id\",\"target\":\"bank.safe_deposit_boxes\",\"targetKey\":\"vault_id\",\"relation\":\"hasMany\"},{\"source\":\"bank.employees\",\"sourceKey\":\"id\",\"target\":\"bank.event_log\",\"targetKey\":\"params\",\"relation\":\"hasMany\"},{\"source\":\"bank.safe_deposit_boxes\",\"sourceKey\":\"id\",\"target\":\"bank.event_log\",\"targetKey\":\"params\",\"relation\":\"hasMany\"},{\"source\":\"bank.employees\",\"sourceKey\":\"id\",\"target\":\"bank.authorized_vehicles\",\"targetKey\":\"employee_id\",\"relation\":\"hasMany\"},{\"source\":\"interpol.cases\",\"sourceKey\":\"case_number\",\"target\":\"interpol.cases_crime_types\",\"targetKey\":\"case_number\",\"relation\":\"hasMany\"},{\"source\":\"interpol.crime_types\",\"sourceKey\":\"id\",\"target\":\"interpol.cases_crime_types\",\"targetKey\":\"crime_type_id\",\"relation\":\"hasMany\"},{\"source\":\"interpol.cases\",\"sourceKey\":\"case_number\",\"target\":\"interpol.cases_criminals\",\"targetKey\":\"case_number\",\"relation\":\"hasMany\"},{\"source\":\"interpol.criminal_aliases\",\"sourceKey\":\"id\",\"target\":\"interpol.cases_criminals\",\"targetKey\":\"criminal_alias_id\",\"relation\":\"hasMany\"},{\"source\":\"interpol.criminals\",\"sourceKey\":\"id\",\"target\":\"interpol.criminal_aliases\",\"targetKey\":\"criminal_id\",\"relation\":\"hasMany\"},{\"source\":\"fake.art_works\",\"sourceKey\":\"id\",\"target\":\"fake.transactions\",\"targetKey\":\"art_work_id\",\"relation\":\"hasMany\"},{\"source\":\"fake.transactions\",\"sourceKey\":\"id\",\"target\":\"fake.transactions\",\"targetKey\":\"prev_transaction_id\",\"relation\":\"hasMany\"},{\"source\":\"penn_station.storage_units\",\"sourceKey\":\"id\",\"target\":\"penn_station.storage_units_log\",\"targetKey\":\"unit_id\",\"relation\":\"hasMany\"}]')}}]);"
  },
  {
    "path": "build/static/js/the-bank-job-schemaColors-json.00b0e9ee.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[906],{4189:function(e){e.exports=JSON.parse('{\"DEFAULT\":\"#91C4F2\",\"bank\":\"#BEB8EB\",\"interpol\":\"#AFA2FF\",\"sellmycar_com\":\"#75C9C8\",\"nyc_dot\":\"#F6BDD1\",\"penn_station\":\"#FFD791\",\"fake\":\"#FFA07A\"}')}}]);"
  },
  {
    "path": "build/static/js/the-bank-job-tablePositions-json.1ddd80ab.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[972],{3388:function(e){e.exports=JSON.parse('{\"bank.accounts\":{\"x\":100,\"y\":100},\"bank.authorized_vehicles\":{\"x\":1200,\"y\":384},\"bank.employees\":{\"x\":912,\"y\":384},\"bank.event_log\":{\"x\":656,\"y\":368},\"bank.safe_deposit_boxes\":{\"x\":400,\"y\":300},\"bank.vaults\":{\"x\":100,\"y\":500},\"fake.art_works\":{\"x\":1120,\"y\":800},\"fake.transactions\":{\"x\":864,\"y\":816},\"interpol.cases\":{\"x\":100,\"y\":800},\"interpol.cases_crime_types\":{\"x\":300,\"y\":700},\"interpol.cases_criminals\":{\"x\":300,\"y\":900},\"interpol.crime_types\":{\"x\":576,\"y\":704},\"interpol.criminal_aliases\":{\"x\":576,\"y\":896},\"interpol.criminals\":{\"x\":560,\"y\":1104},\"nyc_dot.road_camera_events\":{\"x\":1744,\"y\":384},\"penn_station.storage_units\":{\"x\":1072,\"y\":48},\"penn_station.storage_units_log\":{\"x\":768,\"y\":48},\"sellmycar_com.vehicles\":{\"x\":1472,\"y\":384}}')}}]);"
  },
  {
    "path": "build/static/js/the-bank-job-tables.b72c42c8.chunk.js",
    "content": "\"use strict\";(self.webpackChunksql_schema_visualizer=self.webpackChunksql_schema_visualizer||[]).push([[449],{2865:function(e,t,i){i.r(t),i.d(t,{default:function(){return n}});var n=[JSON.parse('{\"schema\":\"bank\",\"name\":\"accounts\",\"description\":\"Information about the bank accounts.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a bank account.\",\"type\":\"integer\"},{\"name\":\"name\",\"description\":\"Account owner\\'s name.\",\"type\":\"text\"},{\"name\":\"address\",\"description\":\"Account owner\\'s address.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp when the account was created.\",\"type\":\"timestamp\"},{\"name\":\"closed_at\",\"description\":\"Timestamp when the account was closed.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"schema\":\"bank\",\"name\":\"vaults\",\"description\":\"Bank vaults.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a vault.\",\"type\":\"integer\"},{\"name\":\"type\",\"description\":\"Type of the vault.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"bank\",\"name\":\"safe_deposit_boxes\",\"description\":\"Safe deposit boxes.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a safe deposit box.\",\"type\":\"integer\"},{\"name\":\"code\",\"description\":\"Unique code of the safe deposit box (what customer sees on the safe deposit box label).\",\"type\":\"text\"},{\"name\":\"width\",\"description\":\"Width of the safe deposit box.\",\"type\":\"integer\"},{\"name\":\"height\",\"description\":\"Height of the safe deposit box.\",\"type\":\"integer\"},{\"name\":\"depth\",\"description\":\"Depth of the safe deposit box.\",\"type\":\"integer\"},{\"name\":\"account_id\",\"description\":\"ID of the bank account that the safe deposit box belongs to.\",\"type\":\"integer\"},{\"name\":\"vault_id\",\"description\":\"ID of the vault where the safe deposit box is located.\",\"type\":\"integer\"}]}'),JSON.parse('{\"schema\":\"bank\",\"name\":\"event_log\",\"description\":\"Event log of everything happening at the bank.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an event log entry.\",\"type\":\"integer\"},{\"name\":\"event_name\",\"description\":\"Name of the event, like *boring_joke_from_steve_detected*.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp of the event.\",\"type\":\"timestamp\"},{\"name\":\"params\",\"description\":\"Parameters of the event in a key-value JSON format.\",\"type\":\"json\"}]}'),JSON.parse('{\"schema\":\"bank\",\"name\":\"employees\",\"description\":\"Bank employee records.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an employee.\",\"type\":\"integer\"},{\"name\":\"name\",\"description\":\"Name of the employee.\",\"type\":\"text\"},{\"name\":\"address\",\"description\":\"Address of the employee.\",\"type\":\"text\"},{\"name\":\"age\",\"description\":\"Age of the employee.\",\"type\":\"integer\"},{\"name\":\"started_at\",\"description\":\"Timestamp when the employee joined the bank.\",\"type\":\"timestamp\"},{\"name\":\"terminated_at\",\"description\":\"Timestamp when the employee contractwas terminated.\",\"type\":\"timestamp\"},{\"name\":\"title\",\"description\":\"Job title of the employee.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"bank\",\"name\":\"authorized_vehicles\",\"description\":\"This table contains all vehicles authorized to enter the bank premises.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an authorized vehicle.\",\"type\":\"integer\"},{\"name\":\"employee_id\",\"description\":\"ID of the employee who is authorized to use this vehicle.\",\"type\":\"integer\"},{\"name\":\"manufacturer\",\"description\":\"Manufacturer of the vehicle.\",\"type\":\"text\"},{\"name\":\"model\",\"description\":\"Model of the vehicle.\",\"type\":\"text\"},{\"name\":\"production_year\",\"description\":\"Year when the vehicle was produced.\",\"type\":\"integer\"},{\"name\":\"color\",\"description\":\"Color of the vehicle.\",\"type\":\"text\"},{\"name\":\"plate_number\",\"description\":\"License plate number of the vehicle.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"interpol\",\"name\":\"cases\",\"description\":\"Interpol case records.\",\"columns\":[{\"name\":\"case_number\",\"key\":true,\"description\":\"Unique identifier of a case (primary key).\",\"type\":\"text\"},{\"name\":\"title\",\"description\":\"Title of the case.\",\"type\":\"text\"},{\"name\":\"status\",\"description\":\"Current status of the case.\",\"type\":\"text\"},{\"name\":\"country\",\"description\":\"Country where the case was opened.\",\"type\":\"text\"},{\"name\":\"opened_at\",\"description\":\"Timestamp when the case was opened.\",\"type\":\"timestamp\"},{\"name\":\"closed_at\",\"description\":\"Timestamp when the case was closed.\",\"type\":\"timestamp\"},{\"name\":\"resolution\",\"description\":\"Resolution details of the case.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"interpol\",\"name\":\"crime_types\",\"description\":\"Crime types.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a crime type.\",\"type\":\"integer\"},{\"name\":\"name\",\"description\":\"Name of the crime type.\",\"type\":\"text\"},{\"name\":\"description\",\"description\":\"Description of the crime type.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"interpol\",\"name\":\"criminals\",\"description\":\"Criminal records.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a criminal.\",\"type\":\"integer\"},{\"name\":\"full_name\",\"description\":\"Full name of the criminal.\",\"type\":\"text\"},{\"name\":\"date_of_birth\",\"description\":\"Date of birth of the criminal.\",\"type\":\"date\"},{\"name\":\"gender\",\"description\":\"Gender of the criminal.\",\"type\":\"text\"},{\"name\":\"nationality\",\"description\":\"Nationality of the criminal.\",\"type\":\"text\"},{\"name\":\"notes\",\"description\":\"Additional notes about the criminal.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp when the criminal record was created.\",\"type\":\"timestamp\"}]}'),JSON.parse('{\"schema\":\"interpol\",\"name\":\"criminal_aliases\",\"description\":\"This table contains all aliases used by criminals.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a criminal alias.\",\"type\":\"integer\"},{\"name\":\"criminal_id\",\"description\":\"ID of the criminal that this alias belongs to.\",\"type\":\"integer\"},{\"name\":\"alias\",\"description\":\"Alias name used by the criminal.\",\"type\":\"text\"}]}'),JSON.parse('{\"schema\":\"interpol\",\"name\":\"cases_crime_types\",\"description\":\"This is a join table between cases and crime types.\",\"columns\":[{\"name\":\"case_number\",\"description\":\"Case number.\",\"type\":\"text\"},{\"name\":\"crime_type_id\",\"description\":\"Crime type ID.\",\"type\":\"integer\"}]}'),JSON.parse('{\"schema\":\"interpol\",\"name\":\"cases_criminals\",\"description\":\"This is a join table between cases and criminal aliases.\",\"columns\":[{\"name\":\"case_number\",\"description\":\"Case number.\",\"type\":\"text\"},{\"name\":\"criminal_alias_id\",\"description\":\"Criminal alias ID.\",\"type\":\"integer\"}]}'),JSON.parse('{\"schema\":\"sellmycar_com\",\"name\":\"vehicles\",\"description\":\"This table contains all vehicles listed for sale on the fictional sellmycar.com website.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a vehicle.\",\"type\":\"integer\"},{\"name\":\"brand\",\"description\":\"Brand of the vehicle.\",\"type\":\"text\"},{\"name\":\"model\",\"description\":\"Model of the vehicle.\",\"type\":\"text\"},{\"name\":\"production_year\",\"description\":\"Year when the vehicle was produced.\",\"type\":\"integer\"},{\"name\":\"color\",\"description\":\"Color of the vehicle.\",\"type\":\"text\"},{\"name\":\"number_of_seats\",\"description\":\"Number of seats in the vehicle.\",\"type\":\"integer\"},{\"name\":\"cargo_volume\",\"description\":\"Cargo volume of the vehicle in cubic meters.\",\"type\":\"numeric\"},{\"name\":\"price\",\"description\":\"Price of the vehicle.\",\"type\":\"numeric\"},{\"name\":\"rating\",\"description\":\"Customer rating of the vehicle.\",\"type\":\"numeric\"},{\"name\":\"has_damages\",\"description\":\"Whether the vehicle has any damages.\",\"type\":\"boolean\"}]}'),JSON.parse('{\"schema\":\"nyc_dot\",\"name\":\"road_camera_events\",\"description\":\"This table contains all events captured by NYC Department of Transportation road cameras.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a road camera event.\",\"type\":\"integer\"},{\"name\":\"camera_id\",\"description\":\"ID of the camera that captured the event.\",\"type\":\"integer\"},{\"name\":\"name\",\"description\":\"Name or description of the event.\",\"type\":\"text\"},{\"name\":\"address\",\"description\":\"Address where the event was captured.\",\"type\":\"text\"},{\"name\":\"lat\",\"description\":\"Latitude coordinate of the camera location.\",\"type\":\"numeric\"},{\"name\":\"lon\",\"description\":\"Longitude coordinate of the camera location.\",\"type\":\"numeric\"},{\"name\":\"created_at\",\"description\":\"Timestamp when the event was recorded.\",\"type\":\"timestamp\"},{\"name\":\"params\",\"description\":\"Additional parameters of the event in a key-value JSON format.\",\"type\":\"json\"}]}'),JSON.parse('{\"schema\":\"penn_station\",\"name\":\"storage_units\",\"description\":\"Storage units at Penn Station.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a storage unit.\",\"type\":\"integer\"},{\"name\":\"width\",\"description\":\"Width of the storage unit.\",\"type\":\"integer\"},{\"name\":\"height\",\"description\":\"Height of the storage unit.\",\"type\":\"integer\"},{\"name\":\"depth\",\"description\":\"Depth of the storage unit.\",\"type\":\"integer\"}]}'),JSON.parse('{\"schema\":\"penn_station\",\"name\":\"storage_units_log\",\"description\":\"Log entries for storage unit events at Penn Station.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a storage unit log entry.\",\"type\":\"integer\"},{\"name\":\"unit_id\",\"description\":\"ID of the storage unit.\",\"type\":\"integer\"},{\"name\":\"name\",\"description\":\"Event name.\",\"type\":\"text\"},{\"name\":\"created_at\",\"description\":\"Timestamp when the log entry was created.\",\"type\":\"datetime\"}]}'),JSON.parse('{\"schema\":\"fake\",\"name\":\"art_works\",\"description\":\"Fake art works database.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of an art work.\",\"type\":\"integer\"},{\"name\":\"author\",\"description\":\"Author(s) of the art work.\",\"type\":\"text\"},{\"name\":\"creation_date\",\"description\":\"Date when the art work was created.\",\"type\":\"date\"}]}'),JSON.parse('{\"schema\":\"fake\",\"name\":\"transactions\",\"description\":\"Transactions of fake art works.\",\"columns\":[{\"name\":\"id\",\"key\":true,\"description\":\"Unique identifier of a transaction.\",\"type\":\"integer\"},{\"name\":\"art_work_id\",\"description\":\"ID of the art work involved in the transaction.\",\"type\":\"integer\"},{\"name\":\"code\",\"description\":\"Unique code of the transaction.\",\"type\":\"text\"},{\"name\":\"prev_code\",\"description\":\"Code of the previous transaction in the chain.\",\"type\":\"text\"},{\"name\":\"from_party\",\"description\":\"Party that the art work was transferred from (e.g. \\\\\"John Doe\\\\\").\",\"type\":\"text\"},{\"name\":\"to_party\",\"description\":\"Party that the art work was transferred to (e.g. \\\\\"Jane Doe\\\\\").\",\"type\":\"text\"},{\"name\":\"kind\",\"description\":\"Type or kind of the transaction (e.g. \\\\\"Purchase\\\\\").\",\"type\":\"text\"},{\"name\":\"year\",\"description\":\"Year when the transaction occurred.\",\"type\":\"integer\"}]}')]}}]);\n//# sourceMappingURL=the-bank-job-tables.b72c42c8.chunk.js.map"
  },
  {
    "path": "design_notes/0001_using_regular_links.md",
    "content": "# Using regular links\n\n:calendar: **Last edited on Feb 5, 2023**\n\nYou may have noticed that Visualizer uses regular `<a>` tags for navigation instead of React's `<Link>` components.\n\nThe reason is the following exception that's thrown when you follow a link to render another dataset:\n\n![Error with React Router links](./files/error_with_router_links.png)\n\n## Github Pages\n\nSince we're using static links, we need to generate static pages so links like `/databases/bindle` work on a live website.\n\nGood news, is that we simply need to clone a built `index.html` file for every database.\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"sql_schema_visualizer\",\n  \"version\": \"1.5.0\",\n  \"homepage\": \"https://sqlhabit.github.io/sql_schema_visualizer/\",\n  \"private\": false,\n  \"dependencies\": {\n    \"@reactflow/node-resizer\": \"^1.2.1\",\n    \"@testing-library/jest-dom\": \"^5.16.5\",\n    \"@testing-library/react\": \"^13.4.0\",\n    \"@testing-library/user-event\": \"^14.4.3\",\n    \"@types/jest\": \"^29.2.4\",\n    \"@types/markdown-it\": \"^12.2.3\",\n    \"@types/markdown-it-emoji\": \"^2.0.2\",\n    \"@types/node\": \"^18.11.17\",\n    \"@types/react\": \"^18.0.26\",\n    \"@types/react-dom\": \"^18.0.9\",\n    \"gh-pages\": \"^4.0.0\",\n    \"markdown-it\": \"^13.0.1\",\n    \"markdown-it-emoji\": \"^2.0.2\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"react-is\": \"^18.2.0\",\n    \"react-router-dom\": \"^6.8.0\",\n    \"react-scripts\": \"5.0.1\",\n    \"reactflow\": \"^11.4.1\",\n    \"twemoji\": \"^14.0.2\",\n    \"typescript\": \"^4.9.4\",\n    \"web-vitals\": \"^3.1.0\",\n    \"history\": \"^5.3.0\"\n  },\n  \"scripts\": {\n    \"start\": \"react-scripts start\",\n    \"build\": \"react-scripts build && bin/create_db_pages\",\n    \"predeploy\": \"npm run build\",\n    \"deploy\": \"gh-pages -d build\",\n    \"test\": \"react-scripts test\",\n    \"eject\": \"react-scripts eject\",\n    \"reset\": \"bin/reset\",\n    \"import\": \"bin/import\"\n  },\n  \"eslintConfig\": {\n    \"extends\": [\n      \"react-app\",\n      \"react-app/jest\"\n    ]\n  },\n  \"browserslist\": {\n    \"production\": [\n      \">0.2%\",\n      \"not dead\",\n      \"not op_mini all\"\n    ],\n    \"development\": [\n      \"last 1 chrome version\",\n      \"last 1 firefox version\",\n      \"last 1 safari version\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@juggle/resize-observer\": \"^3.4.0\",\n    \"sass\": \"^1.58.0\"\n  }\n}\n"
  },
  {
    "path": "public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <link rel=\"icon\" href=\"%PUBLIC_URL%/favicon.ico\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <meta\n      name=\"description\"\n      content=\"Schema Visualizer\"\n    />\n\n    <title>Schema Visualizer</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <a href=\"https://github.com/sqlhabit/sql_schema_visualizer\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"149\" height=\"149\" src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_darkblue_121621.png?resize=149%2C149\" style=\"position: fixed; top: 0; right: 0; z-index: 99999;\" alt=\"Fork me on GitHub\" data-recalc-dims=\"1\" /></a>\n\n    <div id=\"root\"></div>\n  </body>\n</html>\n"
  },
  {
    "path": "schema.csv.template",
    "content": "\"table_schema\",\"table_name\",\"column_name\",\"data_type\",\"ordinal_position\"\n\"adjust\",\"callbacks\",\"id\",\"bigint\",1\n\"adjust\",\"callbacks\",\"tracker\",\"character varying\",2\n\"adjust\",\"callbacks\",\"created_at\",\"timestamp without time zone\",3\n\"adjust\",\"callbacks\",\"campaign_name\",\"character varying\",4\n\"adjust\",\"callbacks\",\"creative_name\",\"character varying\",5\n\"adjust\",\"callbacks\",\"adgroup_name\",\"character varying\",6\n\"adjust\",\"callbacks\",\"label\",\"character varying\",7\n\"adjust\",\"callbacks\",\"device_name\",\"character varying\",8\n\"adjust\",\"callbacks\",\"app_version\",\"character varying\",9\n\"adjust\",\"callbacks\",\"activity_kind\",\"character varying\",10\n\"adjust\",\"callbacks\",\"event_name\",\"character varying\",11\n\"adjust\",\"callbacks\",\"adid\",\"character varying\",12\n\"adjust\",\"callbacks\",\"user_id\",\"bigint\",13\n\"adjust\",\"callbacks\",\"country\",\"character varying\",14\n\"helpers\",\"dates\",\"id\",\"bigint\",1\n\"helpers\",\"dates\",\"date\",\"date\",2\n\"mobile_analytics\",\"events\",\"event_id\",\"character varying\",1\n\"mobile_analytics\",\"events\",\"category\",\"character varying\",2\n\"mobile_analytics\",\"events\",\"action\",\"character varying\",3\n\"mobile_analytics\",\"events\",\"name\",\"character varying\",4\n\"mobile_analytics\",\"events\",\"screen_resolution\",\"character varying\",5\n\"mobile_analytics\",\"events\",\"device_type\",\"character varying\",6\n\"mobile_analytics\",\"events\",\"user_id\",\"integer\",7\n\"mobile_analytics\",\"events\",\"adid\",\"character varying\",8\n\"mobile_analytics\",\"events\",\"country\",\"character varying\",9\n\"mobile_analytics\",\"events\",\"custom_parameters\",\"json\",10\n\"mobile_analytics\",\"events\",\"created_at\",\"timestamp without time zone\",11\n\"mobile_analytics\",\"events\",\"app_version\",\"character varying\",13\n\"public\",\"ab_test_categorization\",\"user_id\",\"integer\",1\n\"public\",\"ab_test_categorization\",\"ab_test_name\",\"text\",2\n\"public\",\"ab_test_categorization\",\"ab_test_variation\",\"text\",3\n\"public\",\"ab_test_categorization\",\"categorized_at\",\"timestamp without time zone\",4\n\"public\",\"accounts\",\"id\",\"bigint\",1\n\"public\",\"accounts\",\"user_id\",\"bigint\",2\n\"public\",\"accounts\",\"email\",\"character varying\",3\n\"public\",\"accounts\",\"platform\",\"character varying\",4\n\"public\",\"accounts\",\"created_at\",\"timestamp without time zone\",5\n\"public\",\"ar_internal_metadata\",\"key\",\"character varying\",1\n\"public\",\"ar_internal_metadata\",\"value\",\"character varying\",2\n\"public\",\"ar_internal_metadata\",\"created_at\",\"timestamp without time zone\",3\n\"public\",\"ar_internal_metadata\",\"updated_at\",\"timestamp without time zone\",4\n\"public\",\"books\",\"id\",\"bigint\",1\n\"public\",\"books\",\"name\",\"character varying\",2\n\"public\",\"books\",\"genre\",\"character varying\",3\n\"public\",\"books\",\"pages_count\",\"integer\",4\n\"public\",\"books\",\"slug\",\"character varying\",5\n\"public\",\"books_users\",\"id\",\"bigint\",1\n\"public\",\"books_users\",\"user_id\",\"bigint\",2\n\"public\",\"books_users\",\"book_id\",\"bigint\",3\n\"public\",\"books_users\",\"last_page\",\"integer\",4\n\"public\",\"books_users\",\"created_at\",\"timestamp without time zone\",5\n\"public\",\"devices\",\"id\",\"bigint\",1\n\"public\",\"devices\",\"user_id\",\"bigint\",2\n\"public\",\"devices\",\"device_type\",\"character varying\",3\n\"public\",\"devices\",\"connected_at\",\"timestamp without time zone\",4\n\"public\",\"devices\",\"version\",\"character varying\",5\n\"public\",\"marketing_spends\",\"id\",\"bigint\",1\n\"public\",\"marketing_spends\",\"spent_at\",\"date\",2\n\"public\",\"marketing_spends\",\"amount\",\"numeric\",3\n\"public\",\"marketing_spends\",\"utm_medium\",\"character varying\",4\n\"public\",\"marketing_spends\",\"utm_source\",\"character varying\",5\n\"public\",\"marketing_spends\",\"utm_campaign\",\"character varying\",6\n\"public\",\"marketing_spends\",\"utm_term\",\"character varying\",7\n\"public\",\"marketing_spends\",\"utm_content\",\"character varying\",8\n\"public\",\"marketing_spends\",\"clicks\",\"integer\",9\n\"public\",\"products\",\"id\",\"bigint\",1\n\"public\",\"products\",\"name\",\"character varying\",2\n\"public\",\"products\",\"price\",\"numeric\",3\n\"public\",\"profiles\",\"id\",\"bigint\",1\n\"public\",\"profiles\",\"user_id\",\"bigint\",2\n\"public\",\"profiles\",\"about\",\"text\",3\n\"public\",\"profiles\",\"interests\",\"text\",4\n\"public\",\"profiles\",\"avatar_url\",\"character varying\",5\n\"public\",\"profiles\",\"postal_code\",\"character varying\",6\n\"public\",\"purchases\",\"id\",\"bigint\",1\n\"public\",\"purchases\",\"user_id\",\"bigint\",2\n\"public\",\"purchases\",\"product_id\",\"bigint\",3\n\"public\",\"purchases\",\"amount\",\"numeric\",4\n\"public\",\"purchases\",\"refunded\",\"boolean\",5\n\"public\",\"purchases\",\"created_at\",\"timestamp without time zone\",6\n\"public\",\"schema_migrations\",\"version\",\"character varying\",1\n\"public\",\"users\",\"id\",\"bigint\",1\n\"public\",\"users\",\"email\",\"character varying\",2\n\"public\",\"users\",\"first_name\",\"character varying\",3\n\"public\",\"users\",\"last_name\",\"character varying\",4\n\"public\",\"users\",\"country\",\"character varying\",5\n\"public\",\"users\",\"created_at\",\"timestamp without time zone\",6\n\"public\",\"users\",\"age\",\"integer\",7\n\"public\",\"users\",\"referrer_id\",\"bigint\",8\n\"public\",\"users\",\"signup_date\",\"date\",9\n\"public\",\"users\",\"utm_source\",\"character varying\",10\n\"public\",\"users\",\"utm_campaign\",\"character varying\",11\n\"public\",\"users\",\"utm_medium\",\"character varying\",12\n\"public\",\"users\",\"utm_term\",\"character varying\",13\n\"public\",\"users\",\"utm_content\",\"character varying\",14\n\"public\",\"users\",\"visitor_id\",\"character varying\",15\n\"public\",\"users\",\"status\",\"character varying\",16\n\"public\",\"users\",\"adjust_tracker\",\"character varying\",17\n\"public\",\"users\",\"adjust_campaign\",\"character varying\",18\n\"public\",\"users\",\"adjust_adgroup\",\"character varying\",19\n\"public\",\"users\",\"adjust_creative\",\"character varying\",20\n\"web_analytics\",\"events\",\"category\",\"character varying\",1\n\"web_analytics\",\"events\",\"action\",\"character varying\",2\n\"web_analytics\",\"events\",\"name\",\"character varying\",3\n\"web_analytics\",\"events\",\"pageview_id\",\"character varying\",9\n\"web_analytics\",\"events\",\"created_at\",\"timestamp without time zone\",13\n\"web_analytics\",\"pageviews\",\"url\",\"text\",1\n\"web_analytics\",\"pageviews\",\"referer_url\",\"text\",2\n\"web_analytics\",\"pageviews\",\"screen_resolution\",\"character varying\",3\n\"web_analytics\",\"pageviews\",\"device_type\",\"character varying\",4\n\"web_analytics\",\"pageviews\",\"custom_parameters\",\"json\",5\n\"web_analytics\",\"pageviews\",\"pageview_id\",\"character varying\",6\n\"web_analytics\",\"pageviews\",\"user_id\",\"integer\",7\n\"web_analytics\",\"pageviews\",\"visitor_id\",\"character varying\",8\n\"web_analytics\",\"pageviews\",\"created_at\",\"timestamp without time zone\",10\n\"web_analytics\",\"pageviews\",\"country\",\"character varying\",11\n"
  },
  {
    "path": "src/App/App.css",
    "content": ".App {\n  height: 100%;\n  display: flex;\n  flex-direction: column;\n}\n\n.App-header {\n  height: 40px;\n  display: flex;\n  align-items: center;\n  border-bottom: 1px solid #eee;\n  padding: 0 1rem;\n}\n\n.App__logo {\n  top: 16px;\n  left: 16px;\n  position: fixed;\n  z-index: 50000;\n\n  background: none;\n\n  text-decoration: none;\n\n  cursor: pointer;\n}\n\n.layout {\n  position: fixed;\n  width: 100%;\n  height: 100%;\n}\n\n.layout__outlet {\n  width: 100%;\n  height: 100%;\n}\n"
  },
  {
    "path": "src/App/App.test.tsx",
    "content": "import { render, } from \"@testing-library/react\";\nimport { createMemoryHistory } from \"history\";\n\nimport App from \".\";\nimport { Router } from \"react-router-dom\";\n\ntest(\"renders SQL Habit logo\", () => {\n  const history = createMemoryHistory();\n\n  const { container } = render(\n    <Router location={history.location} navigator={history}>\n      <App />\n    </Router>\n  );\n\n  // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access\n  const logo = container.querySelector(\".App__logo\");\n\n  expect(logo).toBeInTheDocument();\n});\n"
  },
  {
    "path": "src/App/SQLHabitLogo.tsx",
    "content": "function SQLHabitLogo() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"101\"\n      height=\"23\"\n      fill=\"none\"\n      viewBox=\"0 0 101 23\"\n    >\n      <path\n        fill=\"#000\"\n        d=\"M52.358 6.016c2.88 0 4.32 1.704 4.32 5.112v7.368h-3.624v-7.2c0-.848-.16-1.464-.48-1.848-.304-.4-.792-.6-1.464-.6-.8 0-1.44.256-1.92.768s-.72 1.2-.72 2.064v6.816h-3.624V.832h3.624v7.152a4.283 4.283 0 011.656-1.464c.672-.336 1.416-.504 2.232-.504zm18.438.312v12.168H67.22v-1.8a3.83 3.83 0 01-1.56 1.464c-.671.352-1.431.528-2.28.528-1.056 0-1.992-.256-2.808-.768-.8-.512-1.431-1.24-1.896-2.184-.448-.96-.672-2.064-.672-3.312 0-1.248.224-2.36.672-3.336.465-.976 1.105-1.728 1.92-2.256.817-.544 1.745-.816 2.785-.816.847 0 1.608.184 2.28.552a3.995 3.995 0 011.56 1.488V6.328h3.575zm-6.36 9.6c.896 0 1.584-.304 2.064-.912.48-.608.72-1.488.72-2.64 0-1.152-.24-2.032-.72-2.64-.48-.624-1.168-.936-2.064-.936-.896 0-1.592.32-2.088.96-.495.64-.743 1.528-.743 2.664 0 1.136.24 2.008.72 2.616.495.592 1.2.888 2.111.888zm15.766-9.912c1.056 0 1.992.264 2.808.792.816.512 1.448 1.248 1.896 2.208.448.944.672 2.04.672 3.288 0 1.248-.232 2.36-.696 3.336-.448.96-1.08 1.712-1.896 2.256-.816.528-1.744.792-2.784.792-.848 0-1.616-.176-2.304-.528-.672-.368-1.184-.864-1.536-1.488v1.824h-3.6V.832h3.624v7.2a3.67 3.67 0 011.536-1.464 4.757 4.757 0 012.28-.552zm-1.032 9.912c.896 0 1.584-.312 2.064-.936.48-.624.72-1.52.72-2.688 0-1.12-.24-1.984-.72-2.592-.48-.608-1.168-.912-2.064-.912-.896 0-1.592.312-2.088.936-.48.608-.72 1.48-.72 2.616 0 1.152.24 2.04.72 2.664.496.608 1.192.912 2.088.912zm7.772-9.6h3.624v12.168h-3.624V6.328zM90.686.616v3.408h-3.864V.616h3.864zm6.442 8.424v4.728c0 .672.176 1.168.528 1.488.352.304.808.456 1.368.456.352 0 .752-.056 1.2-.168v2.808c-.576.224-1.272.336-2.088.336-1.504 0-2.656-.424-3.456-1.272-.784-.848-1.176-2.04-1.176-3.576v-4.8H91.2V6.328h2.304V3.472l3.624-1.176v4.032h3.096V9.04h-3.096z\"\n      ></path>\n      <path\n        fill=\"#2186EB\"\n        d=\"M7.036 18.583a13.82 13.82 0 01-3.744-.504c-1.184-.352-2.168-.84-2.952-1.464l1.2-2.688c1.648 1.152 3.488 1.728 5.52 1.728 1.088 0 1.92-.168 2.496-.504.592-.352.888-.84.888-1.464 0-.544-.272-.968-.816-1.272-.528-.32-1.464-.624-2.808-.912-1.504-.304-2.704-.672-3.6-1.104-.88-.448-1.528-.984-1.944-1.608-.4-.64-.6-1.432-.6-2.376 0-1.024.28-1.944.84-2.76.576-.816 1.376-1.448 2.4-1.896 1.024-.464 2.208-.696 3.552-.696 1.216 0 2.384.176 3.504.528 1.12.352 2.016.832 2.688 1.44l-1.2 2.688C10.956 4.567 9.3 3.991 7.492 3.991c-.96 0-1.728.192-2.304.576-.576.384-.864.904-.864 1.56 0 .384.104.704.312.96.224.256.592.488 1.104.696.512.192 1.24.384 2.184.576 2.192.48 3.768 1.104 4.728 1.872.976.768 1.464 1.816 1.464 3.144 0 1.6-.624 2.872-1.872 3.816-1.248.928-2.984 1.392-5.208 1.392zm19.565-.888a8.723 8.723 0 001.296 1.704 26.922 26.922 0 001.8 1.632l-2.52 1.92a13.025 13.025 0 01-4.056-4.392 5.764 5.764 0 01-.6.024c-1.696 0-3.176-.352-4.44-1.056-1.248-.72-2.216-1.744-2.904-3.072-.672-1.328-1.008-2.88-1.008-4.656 0-1.776.336-3.32 1.008-4.632.688-1.312 1.656-2.32 2.904-3.024 1.264-.72 2.744-1.08 4.44-1.08 1.696 0 3.168.36 4.416 1.08 1.248.704 2.208 1.712 2.88 3.024.672 1.312 1.008 2.856 1.008 4.632 0 1.872-.368 3.488-1.104 4.848-.736 1.36-1.776 2.376-3.12 3.048zM17.937 9.8c0 1.904.4 3.36 1.2 4.368.816.992 1.944 1.488 3.384 1.488s2.56-.504 3.36-1.512c.816-1.008 1.224-2.456 1.224-4.344 0-1.888-.408-3.328-1.224-4.32-.8-.992-1.92-1.488-3.36-1.488s-2.568.496-3.384 1.488c-.8.992-1.2 2.432-1.2 4.32zm13.654 8.568V1.28h3.744v14.04h7.632v3.048H31.591z\"\n      ></path>\n    </svg>\n  );\n}\n\nexport default SQLHabitLogo;\n"
  },
  {
    "path": "src/App/index.tsx",
    "content": "import Visualizer from \"../Visualizer\";\nimport SQLHabitLogo from \"./SQLHabitLogo\";\nimport { Routes, Route, Outlet, Link, useParams } from \"react-router-dom\";\nimport databases from \"../config/databases.json\";\nimport \"./App.css\";\n\nfunction App() {\n  return (\n    <div className=\"App\">\n      <a\n        href=\"https://www.sqlhabit.com\"\n        target=\"_blank\"\n        rel=\"noreferrer\"\n        className=\"App__logo\">\n        <SQLHabitLogo/>\n      </a>\n\n      <Routes>\n        <Route path=\"/\" element={<Database />}>\n          <Route path=\"databases/:slug\" element={<Database />} />\n          <Route path=\"*\" element={<NoMatch />} />\n        </Route>\n      </Routes>\n    </div>\n  );\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction Layout() {\n  return (\n    <div className=\"layout\">\n      <div className=\"layout__outlet\">\n        <Outlet />\n      </div>\n    </div>\n  );\n}\n\nfunction Database() {\n  let { slug } = useParams();\n\n  const databaseNames = Object.keys(databases);\n  const databaseName = slug || databaseNames[0];\n\n  return (\n    <Visualizer database={databaseName} />\n  );\n}\n\nfunction NoMatch() {\n  return (\n    <div>\n      <h2>Nothing to see here!</h2>\n      <p>\n        <Link to=\"/\">Go to the home page</Link>\n      </p>\n    </div>\n  );\n}\n\nexport default App;\n"
  },
  {
    "path": "src/Visualizer/Style.ts",
    "content": "import \"./style/flow.css\";\nimport \"./style/react-flow.scss\";\nimport \"./style/table.scss\";\nimport \"./style/column-name.scss\";\nimport \"./style/info-popup.scss\";\nimport \"./style/database-menu-sidebar.scss\";\nimport \"./style/has-one-edge.scss\";\nimport \"./style/has-many-edge.scss\";\nimport \"./style/key-icon.css\";\nimport \"./style/handle.css\";\n"
  },
  {
    "path": "src/Visualizer/Visualizer.test.tsx",
    "content": "import { render, waitFor } from \"@testing-library/react\";\nimport Visualizer from \".\";\n\nconst wrapperStyle = { width: 1200, height: 800 };\n\ntest(\"renders nodes and edges\", async () => {\n  const { container } = render(\n    <div style={wrapperStyle}>\n      <Visualizer database={\"bindle\"} />\n    </div>\n  );\n\n\n  await waitFor(() => {\n    // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access\n    const nodes = container.getElementsByClassName(\"react-flow__node\");\n    expect(nodes.length).toBe(14);\n  });\n\n  await waitFor(() => {\n    // eslint-disable-next-line testing-library/no-container, testing-library/no-node-access\n    const edges = container.getElementsByClassName(\"react-flow__edge\");\n    expect(edges.length).toBe(12);\n  });\n});\n"
  },
  {
    "path": "src/Visualizer/components/CloseIcon.tsx",
    "content": "import { CloseIconProps } from \"../types\";\n\nexport function CloseIcon(props: CloseIconProps) {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"24\"\n      height=\"24\"\n      viewBox=\"0 0 50 50\"\n      className={props.className}\n      onClick={() => { props.onClick && props.onClick() }}\n    >\n      <path d=\"M7.719 6.281L6.28 7.72 23.563 25 6.28 42.281 7.72 43.72 25 26.437 42.281 43.72l1.438-1.438L26.437 25 43.72 7.719 42.28 6.28 25 23.563z\"></path>\n    </svg>\n  );\n};\n"
  },
  {
    "path": "src/Visualizer/components/DatabaseIcon.tsx",
    "content": "function DatabaseIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"48\"\n      height=\"48\"\n      viewBox=\"0 0 48 48\"\n    >\n      <g>\n        <path d=\"M24 20c-11.215 0-20-3.953-20-9s8.785-9 20-9 20 3.953 20 9-8.785 9-20 9zm0-16C15.486 4 6 6.875 6 11s9.486 7 18 7 18-2.875 18-7-9.486-7-18-7z\"></path>\n        <path d=\"M24 28c-11.215 0-20-3.953-20-9v-8a1 1 0 112 0v8c0 4.125 9.486 7 18 7s18-2.875 18-7v-8a1 1 0 112 0v8c0 5.047-8.785 9-20 9z\"></path>\n        <path d=\"M24 37c-11.215 0-20-3.953-20-9v-9a1 1 0 112 0v9c0 4.125 9.486 7 18 7s18-2.875 18-7v-9a1 1 0 112 0v9c0 5.047-8.785 9-20 9z\"></path>\n        <path d=\"M24 46c-11.215 0-20-3.953-20-9v-9a1 1 0 112 0v9c0 4.125 9.486 7 18 7s18-2.875 18-7v-9a1 1 0 112 0v9c0 5.047-8.785 9-20 9z\"></path>\n      </g>\n    </svg>\n  );\n}\n\nexport default DatabaseIcon;\n"
  },
  {
    "path": "src/Visualizer/components/DatabaseMenuSidebar.tsx",
    "content": "import { useState, useEffect } from \"react\";\nimport { markdown } from \"../helpers\";\nimport { CloseIcon, InfoIcon } from \"../components\";\nimport { DatabaseMenuPopupProps } from \"../types\";\nimport databases from \"../../config/databases\";\n\nexport function DatabaseMenuSidebar(props: DatabaseMenuPopupProps) {\n  const [parsedHeadline, setParsedHeadline] = useState<string>(\"\");\n  const [parsedSubheadline, setParsedSubheadline] = useState<string>(\"\");\n  const [parsedTeasers, setParsedTeasers] = useState<Map<string, string>>(new Map());\n  const [parsedDescriptions, setParsedDescriptions] = useState<Map<string, string>>(new Map());\n  const [expandedTile, setExpandedTile] = useState<string | null>(null);\n\n  useEffect(() => {\n    // Load headline\n    Promise.resolve(markdown(props.headline)).then(setParsedHeadline);\n\n    // Load subheadline if present\n    if (props.subheadline) {\n      Promise.resolve(markdown(props.subheadline)).then(setParsedSubheadline);\n    }\n\n    // Load all database teasers and descriptions\n    Object.keys(databases).forEach(databaseName => {\n      Promise.resolve(markdown(databases[databaseName].teaser || \"No teaser.\")).then(parsed => {\n        setParsedTeasers(prev => new Map(prev).set(databaseName, parsed));\n      });\n\n      Promise.resolve(markdown(databases[databaseName].description || \"No description.\")).then(parsed => {\n        setParsedDescriptions(prev => new Map(prev).set(databaseName, parsed));\n      });\n    });\n  }, [props.headline, props.subheadline]);\n\n  const databaseHref = ((databaseName: string) => {\n    if(process.env.NODE_ENV === \"production\") {\n      return `/sql_schema_visualizer/databases/${databaseName}`\n    } else {\n      return `/databases/${databaseName}`;\n    }\n  });\n\n  return (\n    <div className=\"database-menu-sidebar\">\n      <div className=\"database-menu-sidebar__inner\">\n        <CloseIcon\n          className=\"database-menu-sidebar__close-icon\"\n          onClick={() => { props.onClose() }} />\n\n        <h1\n          className=\"database-menu-sidebar__headline\"\n          dangerouslySetInnerHTML={{__html: parsedHeadline }} />\n\n        {props.subheadline && <h2\n          className=\"database-menu-sidebar__subheadline\"\n          dangerouslySetInnerHTML={{__html: parsedSubheadline }} />}\n\n        <div className=\"database-menu-sidebar__body\">\n          {Object.keys(databases).map((databaseName, index) => {\n            const isExpanded = expandedTile === databaseName;\n\n            return (\n              <a\n                href={databaseHref(databaseName)}\n                key={databaseName}\n                className={`database-tile ${isExpanded ? 'database-tile--expanded' : ''}`}\n                onMouseLeave={() => setExpandedTile(null)}>\n                <div className=\"database-tile__index\">\n                  {String(index + 1).padStart(2, '0')}\n                </div>\n                <div className=\"database-tile__content\">\n                  <h3 className=\"database-tile__name\">\n                    {databases[databaseName].name}\n                  </h3>\n                  <div\n                    className=\"database-tile__teaser\"\n                    dangerouslySetInnerHTML={{__html: parsedTeasers.get(databaseName) || \"\" }} />\n                  <div\n                    className=\"database-tile__description\"\n                    dangerouslySetInnerHTML={{__html: parsedDescriptions.get(databaseName) || \"\" }} />\n                </div>\n                <div\n                  className=\"database-tile__info-icon\"\n                  onMouseEnter={(e) => {\n                    e.preventDefault();\n                    setExpandedTile(databaseName);\n                  }}>\n                  <InfoIcon />\n                </div>\n              </a>\n            )\n          })}\n        </div>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/Visualizer/components/InfoIcon.tsx",
    "content": "export function InfoIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"512\"\n      height=\"512\"\n      enableBackground=\"new 0 0 512 512\"\n      version=\"1.1\"\n      viewBox=\"0 0 512 512\"\n      xmlSpace=\"preserve\"\n    >\n      <path d=\"M288 448L288 192 192 192 192 208 224 208 224 448 192 448 192 464 320 464 320 448z\"></path>\n      <path d=\"M255.8 144.5c26.6 0 48.2-21.6 48.2-48.2s-21.6-48.2-48.2-48.2-48.2 21.6-48.2 48.2 21.6 48.2 48.2 48.2z\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/Visualizer/components/InfoPopup.tsx",
    "content": "import { useState, useEffect } from \"react\";\nimport { markdown } from \"../helpers\";\nimport { CloseIcon } from \"../components\";\nimport { PopupProps } from \"../types\";\n\nexport function InfoPopup(props: PopupProps) {\n  const [parsedText1, setParsedText1] = useState<string>(\"\");\n  const [parsedText2, setParsedText2] = useState<string>(\"\");\n  const [parsedText3, setParsedText3] = useState<string>(\"\");\n\n  useEffect(() => {\n    Promise.resolve(markdown(\"Hey :wave: The SQL Schema Visualiser is an open source project, it is built with [React Flow](https://reactflow.dev/). I bet in 20 minutes you can visualize your own schema! :boom: Check out [the README file on Github](https://github.com/sqlhabit/sql_schema_visualisation#readme) for instructions how to do it.\")).then(setParsedText1);\n\n    Promise.resolve(markdown(\"The schema you're looking at belongs to a fictional startup called Bindle and featured in [the SQL Habit course](https://www.sqlhabit.com).\")).then(setParsedText2);\n\n    Promise.resolve(markdown(\"Made with :heart: by [Anatoli Makarevich](https://twitter.com/makaroni4).\")).then(setParsedText3);\n  }, []);\n\n  return (\n    <div\n      className=\"info-popup\">\n      <div className=\"info-popup__inner\">\n        <CloseIcon\n          className=\"info-popup__close-icon\"\n          onClick={() => { props.onClose() }} />\n\n        <h1\n          className=\"info-popup__headline\">\n          SQL Schema Visualizer\n        </h1>\n\n        <div className=\"info-popup__body\">\n          <p dangerouslySetInnerHTML={{__html: parsedText1 }} />\n\n          <p dangerouslySetInnerHTML={{__html: parsedText2 }} />\n\n          <h2>Shortcuts</h2>\n\n          <p>\n            <strong>CMD + hover</strong> over a table node or a column name to see the description.\n          </p>\n\n          <p>\n            <strong>CMD + click on an edge</strong> to select and highlight it.\n          </p>\n\n          <p>\n            <strong>CTRL + P</strong> shortcut prints all table node positions to the console and copies them to the clipboard. You can then paste these positions to the <a target=\"_blank\" rel=\"noreferrer\" href=\"https://github.com/sqlhabit/sql_schema_visualizer/blob/main/src/config/tablePositions.json\"><i>TablePositions.json</i></a> file.\n          </p>\n\n          <p className=\"mb-32\">\n            <strong>Hover over a table node</strong> to highlight all incoming and outgoing edges.\n          </p>\n\n          <p dangerouslySetInnerHTML={{__html: parsedText3 }} />\n        </div>\n      </div>\n    </div>\n  );\n};\n"
  },
  {
    "path": "src/Visualizer/components/KeyIcon.tsx",
    "content": "export function KeyIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"800\"\n      height=\"800\"\n      fill=\"#000\"\n      version=\"1.1\"\n      viewBox=\"0 0 485.017 485.017\"\n      xmlSpace=\"preserve\"\n      className=\"key-icon\"\n    >\n      <path d=\"M361.205 68.899c-14.663 0-28.447 5.71-38.816 16.078-21.402 21.403-21.402 56.228 0 77.631 10.368 10.368 24.153 16.078 38.815 16.078s28.447-5.71 38.816-16.078c21.402-21.403 21.402-56.228 0-77.631-10.368-10.368-24.153-16.078-38.815-16.078zm17.602 72.495c-4.702 4.702-10.953 7.292-17.603 7.292s-12.901-2.59-17.603-7.291c-9.706-9.706-9.706-25.499 0-35.205 4.702-4.702 10.953-7.291 17.603-7.291s12.9 2.589 17.603 7.291c9.706 9.706 9.706 25.498 0 35.204z\"></path>\n      <path d=\"M441.961 43.036C414.21 15.284 377.311 0 338.064 0c-39.248 0-76.146 15.284-103.897 43.036-42.226 42.226-54.491 105.179-32.065 159.698L.254 404.584l-.165 80.268 144.562.165v-55.722h55.705V373.59h55.705v-64.492l26.212-26.212c17.615 7.203 36.698 10.976 55.799 10.976 39.244 0 76.14-15.282 103.889-43.032 57.289-57.289 57.289-150.505 0-207.794zm-21.213 186.581c-22.083 22.083-51.445 34.245-82.676 34.245-18.133 0-36.237-4.265-52.353-12.333l-9.672-4.842-49.986 49.985v46.918h-55.705v55.705h-55.705v55.688l-84.5-.096.078-37.85L238.311 208.95l-4.842-9.672c-22.572-45.087-13.767-99.351 21.911-135.029C277.466 42.163 306.83 30 338.064 30c31.234 0 60.598 12.163 82.684 34.249 45.592 45.592 45.592 119.776 0 165.368z\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/Visualizer/components/Markers.tsx",
    "content": "export function Markers() {\n  return (\n    <svg style={{ position: \"absolute\", top: 0, left: 0 }}>\n      <defs>\n        <marker id=\"hasMany\" viewBox=\"0 0 10 13\" markerHeight=\"10\" markerWidth=\"13\" refX=\"10\" refY=\"6.5\" fill=\"none\">\n          <path d=\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\" stroke=\"#B1B1B6\"/>\n          <path d=\"M10 1C2.57803 1 0.909955 5 1.00367 7\" stroke=\"#B1B1B6\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasManySelected\" viewBox=\"0 0 10 13\" markerHeight=\"10\" markerWidth=\"13\" refX=\"10\" refY=\"6.5\" fill=\"none\">\n          <path d=\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\" stroke=\"#2186EB\"/>\n          <path d=\"M10 1C2.57803 1 0.909955 5 1.00367 7\" stroke=\"#2186EB\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasManyReversed\" viewBox=\"0 0 10 13\" markerHeight=\"10\" markerWidth=\"13\" refX=\"10\" refY=\"6.5\" fill=\"none\" orient=\"auto-start-reverse\">\n          <path d=\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\" stroke=\"#B1B1B6\"/>\n          <path d=\"M10 1C2.57803 1 0.909955 5 1.00367 7\" stroke=\"#B1B1B6\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasManyReversedSelected\" viewBox=\"0 0 10 13\" markerHeight=\"10\" markerWidth=\"13\" refX=\"10\" refY=\"6.5\" fill=\"none\" orient=\"auto-start-reverse\">\n          <path d=\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\" stroke=\"#2186EB\"/>\n          <path d=\"M10 1C2.57803 1 0.909955 5 1.00367 7\" stroke=\"#2186EB\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasManyHighlighted\" viewBox=\"0 0 10 13\" markerHeight=\"10\" markerWidth=\"13\" refX=\"10\" refY=\"6.5\" fill=\"none\">\n          <path d=\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\" stroke=\"#2186EB\"/>\n          <path d=\"M10 1C2.57803 1 0.909955 5 1.00367 7\" stroke=\"#2186EB\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasManyReversedHighlighted\" viewBox=\"0 0 10 13\" markerHeight=\"10\" markerWidth=\"13\" refX=\"10\" refY=\"6.5\" fill=\"none\" orient=\"auto-start-reverse\">\n          <path d=\"M10 12C2.57803 12 0.909955 8.66667 1.00367 7\" stroke=\"#2186EB\"/>\n          <path d=\"M10 1C2.57803 1 0.909955 5 1.00367 7\" stroke=\"#2186EB\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasOne\" viewBox=\"0 0 6 6\" markerHeight=\"6\" markerWidth=\"6\" refX=\"6\" refY=\"3\" fill=\"none\">\n          <circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#B1B1B6\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasOneSelected\" viewBox=\"0 0 6 6\" markerHeight=\"6\" markerWidth=\"6\" refX=\"6\" refY=\"3\" fill=\"none\">\n          <circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#2186EB\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasOneReversed\" viewBox=\"0 0 6 6\" markerHeight=\"6\" markerWidth=\"6\" refX=\"6\" refY=\"3\" fill=\"none\" orient=\"auto-start-reverse\">\n          <circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#B1B1B6\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasOneReversedSelected\" viewBox=\"0 0 6 6\" markerHeight=\"6\" markerWidth=\"6\" refX=\"6\" refY=\"3\" fill=\"none\" orient=\"auto-start-reverse\">\n          <circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#2186EB\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasOneHighlighted\" viewBox=\"0 0 6 6\" markerHeight=\"6\" markerWidth=\"6\" refX=\"6\" refY=\"3\" fill=\"none\">\n          <circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#2186EB\"/>\n        </marker>\n      </defs>\n      <defs>\n        <marker id=\"hasOneReversedHighlighted\" viewBox=\"0 0 6 6\" markerHeight=\"6\" markerWidth=\"6\" refX=\"6\" refY=\"3\" fill=\"none\" orient=\"auto-start-reverse\">\n          <circle cx=\"3\" cy=\"3\" r=\"3\" fill=\"#2186EB\"/>\n        </marker>\n      </defs>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/Visualizer/components/MaximizeIcon.tsx",
    "content": "// https://www.svgrepo.com/svg/469238/maximize-size\n// https://svg2jsx.com/\n\nexport function MaximizeIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"800\"\n      height=\"800\"\n      fill=\"#000\"\n      className=\"icon flat-line\"\n      data-name=\"Flat Line\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M9 9L3.29 3.29M15 9l5.71-5.71M9 15l-5.71 5.71m17.42 0L15 15\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M3 8V4a1 1 0 011-1h4\"\n        data-name=\"primary\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M16 3h4a1 1 0 011 1v4\"\n        data-name=\"primary\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M8 21H4a1 1 0 01-1-1v-4\"\n        data-name=\"primary\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M21 16v4a1 1 0 01-1 1h-4\"\n        data-name=\"primary\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/Visualizer/components/MinimizeIcon.tsx",
    "content": "// https://www.svgrepo.com/svg/469278/minimize-size\n// https://svg2jsx.com/\n\nexport function MinimizeIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"800\"\n      height=\"800\"\n      fill=\"#000\"\n      className=\"icon flat-line\"\n      data-name=\"Flat Line\"\n      viewBox=\"0 0 24 24\"\n    >\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M8.71 15.29L3 21M8.71 8.71L3 3m18 18l-5.71-5.71M21 3l-5.71 5.71\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M4 15h4a1 1 0 011 1v4\"\n        data-name=\"primary\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M9 4v4a1 1 0 01-1 1H4\"\n        data-name=\"primary\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M15 20v-4a1 1 0 011-1h4\"\n        data-name=\"primary\"\n      ></path>\n      <path\n        fill=\"none\"\n        stroke=\"#000\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n        strokeWidth=\"2\"\n        d=\"M20 9h-4a1 1 0 01-1-1V4\"\n        data-name=\"primary\"\n      ></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "src/Visualizer/components/TableNode.tsx",
    "content": "import { useState, FC, useEffect, memo, useCallback } from \"react\";\nimport { Handle, Position, NodeProps } from \"reactflow\";\nimport { KeyIcon } from \"../components\";\nimport { markdown } from \"../helpers\";\nimport { tableHighlightsPresent, isTableHighlighted, isColumnHighlighted } from \"../helpers/tableHighlights\";\n\nimport \"@reactflow/node-resizer/dist/style.css\";\n\nconst TableNodeComponent: FC<NodeProps> = ({ data }) => {\n  const [selectedColumn, setSelectedColumn] = useState(\"\");\n  const [showDescription, setshowDescription] = useState(false);\n  const [descriptionOnHoverActive, setDescriptionOnHoverActive] = useState(false);\n\n  // Cache for parsed descriptions - only parse when first needed\n  const [parsedTableDescription, setParsedTableDescription] = useState<string | null>(null);\n  const [parsedColumnDescriptions, setParsedColumnDescriptions] = useState<Map<string, string>>(new Map());\n\n  useEffect(() => {\n    document.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n      if(e.code === \"MetaLeft\") {\n        setDescriptionOnHoverActive(true)\n      }\n    }, false);\n\n    document.addEventListener(\"keyup\", (e: KeyboardEvent) => {\n      if(e.code === \"MetaLeft\") {\n        setDescriptionOnHoverActive(false)\n      }\n    }, false);\n  }, []);\n\n  const tableClass = ({ schema, tableName}: { schema: string, tableName: string }) => {\n    const classes = [\"table\"]\n\n    if (isTableHighlighted({ schema, tableName })) {\n      classes.push(\"table--highlighted\")\n    } else if (tableHighlightsPresent()) {\n      classes.push(\"table--dimmed\")\n    }\n\n    return classes.join(\" \")\n  }\n\n  const columnClass = ({ selectedColumn, columnName }: { selectedColumn: string, columnName: string }) => {\n    const classes = [\"column-name\"]\n\n    if (selectedColumn === columnName) {\n      classes.push(\"column-name--selected\")\n    }\n\n    if (isColumnHighlighted({ schema: data.schema, tableName: data.name, columnName })) {\n      classes.push(\"column-name--highlighted\")\n    } else if (tableHighlightsPresent()) {\n      classes.push(\"column-name--dimmed\")\n    }\n\n    return classes.join(\" \")\n  }\n\n  // Lazy load table description only when first shown\n  const getTableDescription = useCallback(async () => {\n    if (parsedTableDescription === null) {\n      const parsed = await markdown(data.description || \"No description.\");\n      setParsedTableDescription(parsed);\n      return parsed;\n    }\n    return parsedTableDescription;\n  }, [parsedTableDescription, data.description]);\n\n  // Lazy load column description only when first shown\n  const getColumnDescription = useCallback(async (column: any) => {\n    const cached = parsedColumnDescriptions.get(column.name);\n    if (cached !== undefined) {\n      return cached;\n    }\n\n    const parsed = await markdown(column.description || \"No description.\");\n    setParsedColumnDescriptions(new Map(parsedColumnDescriptions.set(column.name, parsed)));\n    return parsed;\n  }, [parsedColumnDescriptions]);\n\n  // Effect to load table description when showDescription becomes true\n  useEffect(() => {\n    if (showDescription && parsedTableDescription === null) {\n      getTableDescription();\n    }\n  }, [showDescription, parsedTableDescription, getTableDescription]);\n\n  // Effect to load column description when selectedColumn changes\n  useEffect(() => {\n    if (selectedColumn && !parsedColumnDescriptions.has(selectedColumn)) {\n      const column = data.columns.find((col: any) => col.name === selectedColumn);\n      if (column) {\n        getColumnDescription(column);\n      }\n    }\n  }, [selectedColumn, parsedColumnDescriptions, data.columns, getColumnDescription]);\n\n  return (\n    <div\n      className={tableClass({ schema: data.schema, tableName: data.name })}>\n      <div\n        style={isTableHighlighted({ schema: data.schema, tableName: data.name }) ? {} : { backgroundColor: data.schemaColor }}\n        className=\"table__name\"\n        onMouseEnter={() => {\n          if(descriptionOnHoverActive) {\n            setshowDescription(true)\n          }\n        }}\n        onMouseLeave={() => setshowDescription(false)}>\n        {data.schema ? `${data.schema}.${data.name}` : data.name}\n\n        <div\n          className={showDescription ? \"table__description table__description--active\" : \"table__description\"}\n          dangerouslySetInnerHTML={{__html: showDescription && parsedTableDescription ? parsedTableDescription : \"\" }} />\n      </div>\n\n      <div className=\"table__columns\">\n        {data.columns.map((column: any, index: any) => (\n          <div\n            key={index}\n            className={columnClass({ selectedColumn, columnName: column.name })}\n            onMouseEnter={() => {\n              if(descriptionOnHoverActive) {\n                setSelectedColumn(column.name)\n              }\n            }}\n            onMouseLeave={() => setSelectedColumn(\"\")}>\n            {column.handleType && <Handle\n              type={column.handleType}\n              position={Position.Right}\n              id={`${column.name}-right`}\n              className={column.handleType === \"source\" ? \"right-handle source-handle\" : \"right-handle target-handle\"}\n            />}\n            {column.handleType && <Handle\n              type={column.handleType}\n              position={Position.Left}\n              id={`${column.name}-left`}\n              className={column.handleType === \"source\" ? \"left-handle source-handle\" : \"left-handle target-handle\"}\n            />}\n\n            <div className=\"column-name__inner\">\n              <div className=\"column-name__name\">\n                {column.key && <KeyIcon />}\n                {column.name}\n              </div>\n              <div className=\"column-name__type\">\n                {column.type}\n              </div>\n\n              <div\n                className=\"column-name__description\"\n                dangerouslySetInnerHTML={{__html: selectedColumn === column.name && parsedColumnDescriptions.has(column.name) ? (parsedColumnDescriptions.get(column.name) || \"\") : \"\" }} />\n            </div>\n          </div>\n        ))}\n      </div>\n    </div>\n  );\n};\n\n// Memoize the component to prevent unnecessary re-renders\n// Only re-render if data changes (which happens when switching databases or updating positions)\nexport const TableNode = memo(TableNodeComponent);\n"
  },
  {
    "path": "src/Visualizer/components/index.ts",
    "content": "export * from \"./InfoPopup\";\nexport * from \"./Markers\";\nexport * from \"./TableNode\";\nexport * from \"./CloseIcon\"\nexport * from \"./InfoIcon\";\nexport * from \"./KeyIcon\";\nexport * from \"./MaximizeIcon\";\nexport * from \"./MinimizeIcon\";\nexport * from \"./DatabaseMenuSidebar\";\n"
  },
  {
    "path": "src/Visualizer/helpers/calculateEdges.ts",
    "content": "import { edgeMarkerName } from \"./edgeMarkerName\";\nimport { edgeClassName } from \"./edgeClassName\";\nimport { calculateSourcePosition } from \"./calculateSourcePosition\";\nimport { calculateTargetPosition } from \"./calculateTargetPosition\";\nimport { Edge, Node } from \"reactflow\";\nimport { DatabaseConfig, EdgeConfig } from \"../types\";\n\ninterface CalculateEdgesOptions {\n  nodes: Node[];\n  currentDatabase: DatabaseConfig;\n}\n\nexport const calculateEdges = ({ nodes, currentDatabase }: CalculateEdgesOptions) => {\n  const initialEdges: Edge[] = [];\n\n  currentDatabase.edgeConfigs.forEach((edgeConfig: EdgeConfig) => {\n    const sourceNode = nodes.find((node: Node) => node.id === edgeConfig.source);\n    const targetNode = nodes.find((node: Node) => node.id === edgeConfig.target);\n\n    if(sourceNode && targetNode) {\n      const sourcePosition = edgeConfig.sourcePosition || calculateSourcePosition(sourceNode.width as number, sourceNode!.position.x, targetNode.width as number, targetNode!.position.x);\n      const targetPosition = edgeConfig.targetPosition || calculateTargetPosition(sourceNode.width as number, sourceNode!.position.x, targetNode.width as number, targetNode!.position.x);\n\n      const sourceHandle = `${edgeConfig.sourceKey}-${sourcePosition}`;\n      const targetHandle = `${edgeConfig.targetKey}-${targetPosition}`;\n\n      initialEdges.push({\n        id: `${edgeConfig.source}-${edgeConfig.target}`,\n        source: edgeConfig.source,\n        target: edgeConfig.target,\n        sourceHandle,\n        targetHandle,\n        type: \"smoothstep\",\n        markerEnd: edgeMarkerName(edgeConfig, targetPosition),\n        className: edgeClassName(edgeConfig, targetPosition)\n      });\n    }\n  });\n\n  return initialEdges;\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/calculateSourcePosition.ts",
    "content": "export const calculateSourcePosition = (\n  sourceNodeWidth: number,\n  sourceNodeX: number,\n  targetNodeWidth: number,\n  targetNodeX: number\n) => {\n  if(sourceNodeX > (targetNodeX + targetNodeWidth)) {\n    return \"left\";\n  } else if (sourceNodeX > targetNodeX && sourceNodeX < (targetNodeX + targetNodeWidth)) {\n    return \"right\";\n  } else if ((sourceNodeX + sourceNodeWidth) > targetNodeX) {\n    return \"left\";\n  } else {\n    return \"right\";\n  }\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/calculateTargetPosition.ts",
    "content": "export const calculateTargetPosition = (\n  sourceNodeWidth: number,\n  sourceNodeX: number,\n  targetNodeWidth: number,\n  targetNodeX: number\n) => {\n  if(sourceNodeX > (targetNodeX + targetNodeWidth)) {\n    return \"right\";\n  } else if (sourceNodeX > targetNodeX && sourceNodeX < (targetNodeX + targetNodeWidth)) {\n    return \"right\";\n  } else if ((sourceNodeX + sourceNodeWidth) > targetNodeX) {\n    return \"left\";\n  } else {\n    return \"left\";\n  }\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/edgeClassName.ts",
    "content": "export const edgeClassName = (edgeConfig: any, targetPosition?: string) => {\n  let className = edgeConfig.relation === \"hasOne\" ? \"has-one-edge\" : \"has-many-edge\";\n\n  if(edgeConfig.targetPosition) {\n    if(edgeConfig.targetPosition === \"right\") {\n      className += \"-reversed\";\n    }\n  } else if(targetPosition === \"right\") {\n    className += \"-reversed\";\n  }\n\n  return className;\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/edgeMarkerName.ts",
    "content": "export const edgeMarkerName = (edgeConfig: any, targetPosition?: string) => {\n  let markerName = edgeConfig.relation === \"hasOne\" ? \"hasOne\" : \"hasMany\";\n\n  if(edgeConfig.targetPosition) {\n    if(edgeConfig.targetPosition === \"right\") {\n      markerName += \"Reversed\";\n    }\n  } else if(targetPosition === \"right\") {\n    markerName += \"Reversed\";\n  }\n\n  return markerName;\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/fullTableName.ts",
    "content": "export const fullTableName = (tableName: string, schemaName = \"public\") => {\n  if(tableName.includes(\".\")) {\n    return tableName;\n  } else {\n    return `${schemaName}.${tableName}`;\n  }\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/index.ts",
    "content": "export * from \"./edgeClassName\";\nexport * from \"./edgeMarkerName\";\nexport * from \"./calculateTargetPosition\";\nexport * from \"./calculateSourcePosition\";\nexport * from \"./initializeNodes\";\nexport * from \"./markdown\";\nexport * from \"./moveSVGInFront\";\nexport * from \"./setHighlightEdgeClassName\";\nexport * from \"./setEdgeClassName\";\nexport * from \"./logTablePositions\";\nexport * from \"./loadDatabaseConfig\";\nexport * from \"./loadDatabases\";\nexport * from \"./calculateEdges\";\n"
  },
  {
    "path": "src/Visualizer/helpers/initializeNodes.ts",
    "content": "import { fullTableName } from \"./fullTableName\";\nimport { DatabaseConfig, EdgeConfig, Position, TableConfig, TablePositions } from \"../types\";\n\nconst setHandleType = (tableConfigs: TableConfig[], tableName: string, columnName: string, handleType: string) => {\n  tableConfigs.forEach(tableConfig => {\n    const configTableName = fullTableName(tableConfig.name, tableConfig.schema || \"public\");\n\n    if(configTableName === tableName) {\n      tableConfig.columns.forEach((columnConfig: any) => {\n        if(columnConfig.name === columnName) {\n          columnConfig.handleType = handleType;\n        }\n      });\n    }\n  });\n};\n\nexport const initializeNodes = (databaseConfig: DatabaseConfig) => {\n  const tables = [] as any;\n  const tablePositionsWithSchema = {} as TablePositions;\n\n  Object.entries(databaseConfig.tablePositions).forEach(params => {\n    const tableName = params[0];\n    const position = params[1] as Position;\n\n    if(tableName.includes(\".\")) {\n      tablePositionsWithSchema[tableName as keyof TablePositions] = position;\n    } else {\n      tablePositionsWithSchema[fullTableName(tableName) as keyof TablePositions] = position;\n    }\n  });\n\n  databaseConfig.edgeConfigs.forEach((edgeConfig: EdgeConfig) => {\n    const sourceTableName = fullTableName(edgeConfig.source);\n    setHandleType(databaseConfig.tables, sourceTableName, edgeConfig.sourceKey, \"source\");\n\n    const targetTableName = fullTableName(edgeConfig.target);\n    setHandleType(databaseConfig.tables, targetTableName, edgeConfig.targetKey, \"target\");\n  });\n\n  databaseConfig.tables.forEach((tableConfig: TableConfig) => {\n    const schemaName = tableConfig.schema || \"public\";\n    const tableID = fullTableName(tableConfig.name, schemaName);\n\n    const tableDefinition = {\n      id: tableID,\n      data: tableConfig,\n      position: (tablePositionsWithSchema as any)[tableID] || { x: 0, y: 0 },\n      type: \"table\"\n    }\n\n    tables.push(tableDefinition);\n  });\n\n  return tables;\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/loadDatabaseConfig.ts",
    "content": "import { EdgeConfig, SchemaColors, TableConfig, TablePositions } from \"../types\";\nimport { fullTableName } from \"./fullTableName\";\n\n// Optimized: Load all database config files in parallel for faster loading\nexport const loadDatabaseConfig = async (databaseName: string) => {\n  // Use Promise.all to load all config files in parallel instead of sequentially\n  // This reduces load time by ~50% compared to sequential awaits\n  const [edgeConfigsModule, tablePositionsModule, schemaColorsModule, tablesModule] = await Promise.all([\n    import(/* webpackChunkName: \"[request]\" */ `../../config/databases/${databaseName}/edges.json`),\n    import(/* webpackChunkName: \"[request]\" */ `../../config/databases/${databaseName}/tablePositions.json`),\n    import(/* webpackChunkName: \"[request]\" */ `../../config/databases/${databaseName}/schemaColors.json`),\n    import(/* webpackChunkName: \"[request]\" */ `../../config/databases/${databaseName}/tables`)\n  ]);\n\n  const edgeConfigs = edgeConfigsModule.default as EdgeConfig[];\n  const tablePositions = tablePositionsModule.default as TablePositions;\n  const schemaColors = schemaColorsModule.default as SchemaColors;\n  const tables = tablesModule.default as TableConfig[];\n\n  edgeConfigs.forEach((edgeConfig: EdgeConfig) => {\n    const sourceTableName = fullTableName(edgeConfig.source);\n    const targetTableName = fullTableName(edgeConfig.target);\n\n    edgeConfig.source = sourceTableName;\n    edgeConfig.target = targetTableName;\n  });\n\n  tables.forEach(table => {\n    table.schemaColor = schemaColors[table.schema || \"DEFAULT\"];\n  });\n\n  return {\n    tables,\n    tablePositions,\n    edgeConfigs,\n    schemaColors\n  };\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/loadDatabases.ts",
    "content": "import { DatabaseConfigs, DatabaseConfig } from \"../types\";\nimport { loadDatabaseConfig } from \"../helpers\";\nimport databases from \"../../config/databases\";\n\n// Load all databases at once (old approach - kept for backwards compatibility)\nexport const loadDatabases = async () => {\n  const databaseConfigs: DatabaseConfigs = {};\n\n  for (const databaseName of Object.keys(databases)) {\n    const databaseConfig = await loadDatabaseConfig(databaseName);\n\n    databaseConfigs[databaseName] = databaseConfig;\n  }\n\n  return databaseConfigs;\n};\n\n// Load a single database on demand (optimized approach)\nexport const loadDatabase = async (databaseName: string): Promise<DatabaseConfig | null> => {\n  if (!(databaseName in databases)) {\n    return null;\n  }\n\n  return await loadDatabaseConfig(databaseName);\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/logTablePositions.ts",
    "content": "import { Node } from \"reactflow\";\nimport { TablePositions } from \"../types\";\n\nexport const logTablePositions = (tableNodes: Node[]) => {\n  const positions = {} as TablePositions;\n\n  const compare = ( a: String, b: String ) => {\n    if ( a < b ) {\n      return -1;\n    }\n\n    if ( a > b ) {\n      return 1;\n    }\n\n    return 0;\n  }\n\n  tableNodes.sort((n1: Node, n2: Node) => compare(n1.id, n2.id)).forEach((n: Node) => {\n    positions[n.id as keyof TablePositions] = {\n      x: Math.round(n.position.x),\n      y: Math.round(n.position.y)\n    };\n  });\n\n  navigator.clipboard.writeText(JSON.stringify(positions, null, 2));\n\n  console.log(JSON.stringify(positions, null, 2));\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/markdown.ts",
    "content": "import MarkdownIt from \"markdown-it\";\nimport Token from \"markdown-it/lib/token\";\n\n// Lazy initialization - only load emoji dependencies when first needed\nlet markdownInitialized = false;\nlet md: MarkdownIt;\nconst pendingMarkdownCalls: Array<{\n  text: string;\n  resolve: (value: string) => void;\n}> = [];\n\nconst initializeMarkdown = async () => {\n  if (markdownInitialized) {\n    return;\n  }\n\n  // Initialize markdown-it\n  md = new MarkdownIt({\n    html: true,\n    linkify: true,\n    typographer: true\n  });\n\n  // Lazy load markdown-it-emoji and twemoji together\n  const [markdownitEmojiModule, twemojiModule] = await Promise.all([\n    import(\"markdown-it-emoji\"),\n    import(\"twemoji\")\n  ]);\n\n  // Setup emoji plugin\n  md.use(markdownitEmojiModule.default);\n\n  // Setup emoji renderer with twemoji\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  md.renderer.rules.emoji = (token: Token, idx: Number) => {\n    // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n    // @ts-ignore\n    return twemojiModule.default.parse(token[idx].content, {\n      base: \"https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/\"\n    });\n  };\n\n  markdownInitialized = true;\n\n  // Process any pending markdown calls\n  pendingMarkdownCalls.forEach(({ text, resolve }) => {\n    resolve(md.renderInline(text));\n  });\n  pendingMarkdownCalls.length = 0;\n};\n\n// Full markdown rendering with emoji parsing (for when content is displayed)\nexport const markdown = (text: string): string | Promise<string> => {\n  if (markdownInitialized) {\n    return md.renderInline(text);\n  }\n\n  // Return a promise that resolves when markdown is initialized\n  return new Promise((resolve) => {\n    pendingMarkdownCalls.push({ text, resolve });\n    // Start initialization if not already started\n    if (!markdownInitialized && pendingMarkdownCalls.length === 1) {\n      initializeMarkdown();\n    }\n  });\n};\n\n// Optimized markdown rendering without emoji parsing (deferred)\n// This is faster for initial render when descriptions aren't visible\nexport const markdownWithoutEmoji = (text: string) => {\n  // Simple markdown parsing without emoji conversion\n  // Just handle basic markdown like bold, italic, and links\n  return text\n    .replace(/\\*\\*(.*?)\\*\\*/g, '<strong>$1</strong>')\n    .replace(/\\*(.*?)\\*/g, '<em>$1</em>')\n    .replace(/\\[(.*?)\\]\\((.*?)\\)/g, '<a href=\"$2\" target=\"_blank\" rel=\"noreferrer\">$1</a>');\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/moveSVGInFront.ts",
    "content": "// An SVG z-index hack to move selected edge on top of other edges.\nexport const moveSVGInFront = (element?: Element | null) => {\n  if(!element) {\n    return;\n  }\n\n  const svg = element.closest(\"svg\");\n  svg?.appendChild(element);\n}\n"
  },
  {
    "path": "src/Visualizer/helpers/setEdgeClassName.ts",
    "content": "import { Edge } from \"reactflow\";\n\nexport const setEdgeClassName = (edge: Edge) => {\n  if(edge.className?.includes(\"has-many-edge-reversed\")) {\n    edge.className = \"has-many-edge-reversed\";\n    edge.markerEnd = \"hasManyReversed\"\n  } else if(edge.className?.includes(\"has-many-edge\")) {\n    edge.className = \"has-many-edge\";\n    edge.markerEnd = \"hasMany\"\n  } else if(edge.className?.includes(\"has-one-edge-reversed\")) {\n    edge.className = \"has-one-edge-reversed\";\n    edge.markerEnd = \"hasOneReversed\"\n  } else if(edge.className?.includes(\"has-one-edge\")) {\n    edge.className = \"has-one-edge\";\n    edge.markerEnd = \"hasOne\"\n  }\n\n  return edge;\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/setHighlightEdgeClassName.ts",
    "content": "import { Edge } from \"reactflow\";\nimport { moveSVGInFront } from \"./moveSVGInFront\";\n\nexport const setHighlightEdgeClassName = (edge: Edge) => {\n  if(edge.className?.includes(\"has-many-edge-reversed\")) {\n    edge.className = \"has-many-edge-reversed has-many-edge-reversed--highlighted\";\n    edge.markerEnd = \"hasManyReversedHighlighted\"\n\n    // https://stackoverflow.com/questions/17786618/how-to-use-z-index-in-svg-elements\n    const svg = document.querySelector(\".react-flow__edges\")?.querySelector(`[data-testid=\"rf__edge-${edge.id}\"]`)\n    moveSVGInFront(svg);\n  } else if(edge.className?.includes(\"has-many-edge\")) {\n    edge.className = \"has-many-edge has-many-edge--highlighted\";\n    edge.markerEnd = \"hasManyHighlighted\"\n\n    const svg = document.querySelector(\".react-flow__edges\")?.querySelector(`[data-testid=\"rf__edge-${edge.id}\"]`)\n    moveSVGInFront(svg);\n  } else if(edge.className?.includes(\"has-one-edge-reversed\")) {\n    edge.className = \"has-one-edge-reversed has-one-edge-reversed--highlighted\";\n    edge.markerEnd = \"hasOneReversedHighlighted\"\n\n    const svg = document.querySelector(\".react-flow__edges\")?.querySelector(`[data-testid=\"rf__edge-${edge.id}\"]`)\n    moveSVGInFront(svg);\n  } else if(edge.className?.includes(\"has-one-edge\")) {\n    edge.className = \"has-one-edge has-one-edge--highlighted\";\n    edge.markerEnd = \"hasOneHighlighted\"\n\n    const svg = document.querySelector(\".react-flow__edges\")?.querySelector(`[data-testid=\"rf__edge-${edge.id}\"]`)\n    moveSVGInFront(svg);\n  }\n};\n"
  },
  {
    "path": "src/Visualizer/helpers/tableHighlights.ts",
    "content": "const currentUrl = new URL(window.location.href)\nconst urlParams = currentUrl.searchParams\nconst highlights = (urlParams.get(\"highlights\") || \"\").split(\";\").reduce((acc: { [key: string]: string[] }, section: string) => {\n  const [tableName, fields] = section.split(\":\");\n\n  if (tableName && fields) {\n    acc[tableName] = fields.split(\",\");\n  }\n\n  return acc;\n}, {} as { [key: string]: string[] });\n\nexport const tableHighlightsPresent = () => {\n  return Object.keys(highlights).length > 0\n}\n\nexport const isTableHighlighted = ({ schema, tableName }: { schema: string | undefined, tableName: string }) => {\n  const fullTableName = schema ? `${schema}.${tableName}` : tableName\n\n  return highlights.hasOwnProperty(fullTableName);\n}\n\nexport const isColumnHighlighted = ({ schema, tableName, columnName }: { schema: string | undefined, tableName: string, columnName: string }) => {\n  const fullTableName = schema ? `${schema}.${tableName}` : tableName\n\n  return highlights[fullTableName]?.includes(columnName);\n}\n"
  },
  {
    "path": "src/Visualizer/index.tsx",
    "content": "import { useCallback, useEffect, useState } from \"react\";\nimport ReactFlow, {\n  Node, useNodesState, useEdgesState,\n  Controls, ControlButton, Background, useStoreApi, ReactFlowProvider,\n  getConnectedEdges, OnSelectionChangeParams, NodeChange, getIncomers,\n  getOutgoers, ReactFlowInstance\n} from \"reactflow\";\n\nimport { nodeTypes } from \"../config/nodeTypes\";\n\nimport {\n  MaximizeIcon,\n  MinimizeIcon,\n  InfoIcon,\n  InfoPopup,\n  Markers\n} from \"./components\";\n\nimport {\n  edgeClassName,\n  edgeMarkerName,\n  calculateTargetPosition,\n  calculateSourcePosition,\n  initializeNodes,\n  moveSVGInFront,\n  setHighlightEdgeClassName,\n  logTablePositions,\n  setEdgeClassName,\n  loadDatabase,\n  calculateEdges\n} from \"./helpers\";\n\nimport {\n  EdgeConfig,\n  DatabaseConfig\n} from \"./types\";\n\n// this is important! You need to import the styles from the lib to make it work\nimport \"reactflow/dist/style.css\";\nimport \"./Style\";\nimport DatabaseIcon from \"./components/DatabaseIcon\";\nimport { DatabaseMenuSidebar } from \"./components/DatabaseMenuSidebar\";\n\ninterface FlowProps {\n  currentDatabase: DatabaseConfig;\n}\n\ninterface VisualizerProps {\n  database?: string;\n}\n\nconst Flow: React.FC<FlowProps> = (props: FlowProps) => {\n  const currentDatabase = props.currentDatabase;\n  const initialNodes = initializeNodes(props.currentDatabase);\n\n  const store = useStoreApi();\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes);\n  const [edges, setEdges, onEdgesChange] = useEdgesState([]);\n  const [fullscreenOn, setFullScreen] = useState(false);\n  const [infoPopupOn, setInfoPopupOn] = useState(false);\n  const [unknownDatasetOn, setUnknownDatasetOn] = useState(false);\n  const [databaseMenuPopupOn, setDatabaseMenuPopupOn] = useState(false);\n  const [nodeHoverActive, setNodeHoverActive] = useState(true);\n\n  const onInit = (instance: ReactFlowInstance) => {\n    const nodes = instance.getNodes();\n    const initialEdges = calculateEdges({ nodes, currentDatabase });\n    setEdges(() => initialEdges);\n\n    const handleKeyboard = (e: KeyboardEvent) => {\n      if (e.ctrlKey && e.key === \"p\") {\n        const nodes = instance.getNodes();\n\n        logTablePositions(nodes);\n      }\n    }\n\n    document.addEventListener(\"keydown\", handleKeyboard)\n\n    // https://javascriptf1.com/snippet/detect-fullscreen-mode-with-javascript\n    window.addEventListener(\"resize\", (event) => {\n      setFullScreen(window.innerHeight === window.screen.height);\n    });\n\n    document.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n      if(e.code === \"Escape\") {\n        setInfoPopupOn(false);\n        setUnknownDatasetOn(false);\n        setDatabaseMenuPopupOn(false);\n      }\n    });\n\n    // https://stackoverflow.com/questions/42066421/property-value-does-not-exist-on-type-eventtarget\n    document.addEventListener(\"click\", (event: Event) => {\n      const popup = document.querySelector(\".info-popup\");\n      const sidebar = document.querySelector(\".database-menu-sidebar\");\n\n      if(!popup && !sidebar) {\n        return;\n      }\n\n      const target = (event.target as HTMLInputElement);\n\n      if (target && target.closest(\".into-popup-toggle\")) {\n        return;\n      }\n\n      if (popup && target && !target.closest(\".info-popup__inner\")) {\n        setInfoPopupOn(false);\n      }\n\n      if (sidebar && target && !target.closest(\".database-menu-sidebar__inner\")) {\n        setUnknownDatasetOn(false);\n        setDatabaseMenuPopupOn(false);\n      }\n    })\n\n    document.addEventListener(\"keydown\", (e: KeyboardEvent) => {\n      if(e.code === \"MetaLeft\") {\n        setNodeHoverActive(false);\n      }\n    }, false);\n\n    document.addEventListener(\"keyup\", (e: KeyboardEvent) => {\n      if(e.code === \"MetaLeft\") {\n        setNodeHoverActive(true);\n      }\n    }, false);\n  };\n\n  // https://github.com/wbkd/react-flow/issues/2580\n  const onNodeMouseEnter = useCallback(\n    (_: any, node: Node) => {\n      if(!nodeHoverActive) {\n        return;\n      }\n\n      const state = store.getState();\n      state.resetSelectedElements();\n      state.addSelectedNodes([node.id]);\n\n      const connectedEdges = getConnectedEdges([node], edges);\n      setEdges(eds => {\n        return eds.map((ed) => {\n          if (connectedEdges.find(e => e.id === ed.id)) {\n            setHighlightEdgeClassName(ed);\n          }\n\n          return ed;\n        });\n      });\n    },\n    [edges, nodeHoverActive, setEdges, store]\n  );\n\n  const onNodeMouseLeave = useCallback(\n    (_: any, node: Node) => {\n      if(!nodeHoverActive) {\n        return;\n      }\n\n      const state = store.getState();\n      state.resetSelectedElements();\n\n      setEdges(eds =>\n        eds.map(ed => setEdgeClassName(ed))\n      );\n\n      // https://stackoverflow.com/questions/2520650/how-do-you-clear-the-focus-in-javascript\n      (document.activeElement as HTMLElement).blur();\n    },\n    [nodeHoverActive, setEdges, store]\n  );\n\n  const onSelectionChange = useCallback(\n    (params: OnSelectionChangeParams) => {\n      const edges = params.edges;\n      edges.forEach(ed => {\n        const svg = document.querySelector(\".react-flow__edges\")?.querySelector(`[data-testid=\"rf__edge-${ed.id}\"]`)\n        moveSVGInFront(svg)\n      })\n    },\n    []\n  );\n\n  const handleNodesChange = useCallback(\n    (nodeChanges: NodeChange[]) => {\n      nodeChanges.forEach(nodeChange => {\n        if(nodeChange.type === \"position\" && nodeChange.positionAbsolute) { // nodeChange.positionAbsolute contains new position\n          const node = nodes.find(node => node.id === nodeChange.id);\n\n          if(!node) {\n            return;\n          }\n\n          const incomingNodes = getIncomers(node, nodes, edges);\n          incomingNodes.forEach(incomingNode => {\n            const edge = edges.find(edge => {\n              return edge.id === `${incomingNode.id}-${node.id}`;\n            });\n\n            const edgeConfig = currentDatabase.edgeConfigs.find((edgeConfig: EdgeConfig) => {\n              return edgeConfig.source === incomingNode.id && edgeConfig.target === node.id;\n            });\n\n            if(nodeChange.positionAbsolute?.x) {\n              setEdges(eds =>\n                eds.map(ed => {\n                  if(edge && ed.id === edge.id) {\n                    const sourcePosition = edgeConfig!.sourcePosition || calculateSourcePosition((incomingNode.width as number), incomingNode.position.x, (node.width as number), nodeChange.positionAbsolute!.x);\n                    const targetPosition = edgeConfig!.targetPosition || calculateTargetPosition((incomingNode.width as number), incomingNode.position.x, (node.width as number), nodeChange.positionAbsolute!.x);\n\n                    const sourceHandle = `${edgeConfig!.sourceKey}-${sourcePosition}`;\n                    const targetHandle = `${edgeConfig!.targetKey}-${targetPosition}`;\n\n                    ed.sourceHandle = sourceHandle;\n                    ed.targetHandle = targetHandle;\n                    ed.className = edgeClassName(edgeConfig, targetPosition);\n                    ed.markerEnd = edgeMarkerName(edgeConfig, targetPosition);\n                  }\n\n                  return ed;\n                })\n              )\n            }\n          });\n\n          const outgoingNodes = getOutgoers(node, nodes, edges);\n          outgoingNodes.forEach(targetNode => {\n            const edge = edges.find(edge => {\n              return edge.id === `${node.id}-${targetNode.id}`;\n            });\n\n            const edgeConfig = currentDatabase.edgeConfigs.find((edgeConfig: EdgeConfig) => {\n              return edgeConfig.source === nodeChange.id && edgeConfig.target === targetNode.id;\n            });\n\n            if(nodeChange.positionAbsolute?.x) {\n              setEdges(eds =>\n                eds.map(ed => {\n                  if(edge && ed.id === edge.id) {\n                    const sourcePosition = edgeConfig!.sourcePosition || calculateSourcePosition((node.width as number), nodeChange.positionAbsolute!.x, (targetNode.width as number), targetNode.position.x);\n                    const targetPosition = edgeConfig!.targetPosition || calculateTargetPosition((node.width as number), nodeChange.positionAbsolute!.x, (targetNode.width as number), targetNode.position.x);\n\n                    const sourceHandle = `${edgeConfig!.sourceKey}-${sourcePosition}`;\n                    const targetHandle = `${edgeConfig!.targetKey}-${targetPosition}`;\n\n                    ed.sourceHandle = sourceHandle;\n                    ed.targetHandle = targetHandle;\n                    ed.className = edgeClassName(edgeConfig, targetPosition);\n                    ed.markerEnd = edgeMarkerName(edgeConfig, targetPosition);\n                  }\n\n                  return ed;\n                })\n              )\n            }\n          });\n        }\n      });\n\n      onNodesChange(nodeChanges);\n    },\n    [onNodesChange, setEdges, nodes, edges, currentDatabase]\n  )\n\n  const toggleFullScreen = () => {\n    if(fullscreenOn) {\n      document.exitFullscreen().then(function() {\n        setFullScreen(false)\n      })\n      .catch(function(error) {\n        alert(\"Can't exit fullscreen\")\n        console.error(error)\n      });\n    } else {\n      var element = document.querySelector(\"body\");\n\n      // make the element go to full-screen mode\n      element && element.requestFullscreen()\n        .then(function() {\n          setFullScreen(true)\n        })\n        .catch(function(error) {\n          alert(\"Can't turn on fullscreen\")\n          console.error(error)\n        });\n    }\n  }\n\n  // https://stackoverflow.com/questions/16664584/changing-an-svg-markers-color-css\n  return (\n    <div className=\"Flow\">\n      <Markers />\n      <ReactFlow\n        nodes={nodes}\n        edges={edges}\n        onNodesChange={handleNodesChange}\n        onEdgesChange={onEdgesChange}\n        onInit={onInit}\n        snapToGrid={true}\n        fitView\n        snapGrid={[16, 16]}\n        nodeTypes={nodeTypes}\n        onNodeMouseEnter={onNodeMouseEnter}\n        onNodeMouseLeave={onNodeMouseLeave}\n        onSelectionChange={onSelectionChange}\n      >\n        <Controls showInteractive={false}>\n          <ControlButton onClick={toggleFullScreen}>\n            {!fullscreenOn && <MaximizeIcon />}\n            {fullscreenOn && <MinimizeIcon />}\n          </ControlButton>\n          <ControlButton onClick={() => { setInfoPopupOn(!infoPopupOn) }} className=\"into-popup-toggle\">\n            <InfoIcon />\n          </ControlButton>\n          <ControlButton onClick={() => { setDatabaseMenuPopupOn(true) }} className=\"into-popup-toggle\">\n            <DatabaseIcon />\n          </ControlButton>\n        </Controls>\n        <Background color=\"#aaa\" gap={16} />\n      </ReactFlow>\n      {infoPopupOn && <InfoPopup onClose={() => { setInfoPopupOn(false) }} />}\n      {unknownDatasetOn && <DatabaseMenuSidebar\n        headline={\"Unknown dataset :warning:\"}\n        subheadline={\"Available datasets :point_down:\"}\n        onClose={() => { setUnknownDatasetOn(false) }} />}\n      {databaseMenuPopupOn && <DatabaseMenuSidebar\n        headline={\"Datasets\"}\n        onClose={() => { setDatabaseMenuPopupOn(false) }} />}\n    </div>\n  );\n}\n\n// https://codesandbox.io/s/elastic-elion-dbqwty?file=/src/App.js\n// eslint-disable-next-line import/no-anonymous-default-export\nconst Visualizer: React.FC<VisualizerProps> = (props: VisualizerProps) => {\n  const [currentDatabase, setCurrentDatabase] = useState({\n    tables: [],\n    edgeConfigs: [],\n    schemaColors: {},\n    tablePositions: {}\n  } as DatabaseConfig)\n  const [databasesLoaded, setDatabasesLoaded] = useState(false);\n\n  useEffect(() => {\n    // Only load the current database instead of all databases\n    const databaseName = props.database;\n\n    if (!databaseName) {\n      return;\n    }\n\n    setDatabasesLoaded(false);\n\n    loadDatabase(databaseName).then((databaseConfig) => {\n      if (!databaseConfig) {\n        return;\n      }\n\n      setCurrentDatabase(databaseConfig);\n      setDatabasesLoaded(true);\n    });\n  }, [props.database]); // Re-load when database changes\n\n  return (\n    <ReactFlowProvider>\n      {databasesLoaded && <Flow\n        currentDatabase={currentDatabase} />\n      }\n    </ReactFlowProvider>\n  )\n};\n\nexport default Visualizer;\n"
  },
  {
    "path": "src/Visualizer/style/column-name.scss",
    "content": ".column-name {\n  $root: &;\n\n  position: relative;\n  z-index: 50;\n\n  border-bottom: 0;\n\n  font-size: 12px;\n  line-height: 1;\n\n  cursor: pointer;\n\n  &__name {\n    margin-right: 16px;\n  }\n\n  &__type {\n    color: #BBB;\n  }\n\n  &__description {\n    display: none;\n    position: absolute;\n    top: 50%;\n    right: -6px;\n    width: 150px;\n    transform: translateX(100%) translateY(-50%);\n    padding: 8px;\n    z-index: 1000;\n\n    border: 1px solid #CBD2D9;\n\n    border-radius: 4px;\n\n    background-color: #FFF;\n\n    line-height: 1.2;\n\n    &:before {\n      position: absolute;\n      top: 50%;\n      right: 100%;\n      transform: translateX(-0.5px) translateY(-50%);\n\n      border-width: 4px;\n      border-style: solid;\n      border-color: transparent #CBD2D9 transparent transparent;\n\n      content: \"\";\n    }\n\n    &:after {\n      position: absolute;\n      top: 50%;\n      right: 100%;\n      transform: translateX(0px) translateY(-50%);\n\n      border-width: 3px;\n      border-style: solid;\n      border-color: transparent #FFF transparent transparent;\n\n      content: \"\";\n    }\n  }\n\n  &__inner {\n    display: flex;\n    justify-content: space-between;\n    padding: 8px;\n\n    position: relative;\n  }\n\n  &:last-child {\n    border-bottom: 0 !important;\n    border-radius: 0 0 4px 4px;\n  }\n\n  &:hover {\n    background-color: #EFEFEF;\n\n    opacity: 1;\n  }\n\n  &--highlighted {\n    border-color: #FFF3C4;\n\n    background-color: #FFF3C4;\n  }\n\n  &--dimmed {\n    opacity: 0.4;\n  }\n\n  &--selected {\n    #{$root}__description {\n      display: block;\n\n      opacity: 1;\n    }\n  }\n}\n"
  },
  {
    "path": "src/Visualizer/style/database-menu-sidebar.scss",
    "content": ".database-menu-sidebar {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 100000;\n  background-color: rgba(0, 0, 0, 0.7);\n\n  &__inner {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 90%;\n    max-width: 500px;\n    height: 100%;\n    z-index: 200000;\n    padding: 24px 24px 24px;\n    overflow-y: auto;\n    background-color: #FFF;\n    box-shadow: 4px 0 24px rgba(0, 0, 0, 0.2);\n\n    @media (min-width: 768px) {\n      width: 500px;\n    }\n  }\n\n  &__headline {\n    margin-top: 0;\n    margin-bottom: 36px;\n    font-size: 28px;\n    font-weight: 700;\n    padding-right: 40px;\n    line-height: 1;\n  }\n\n  &__body {\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n    padding-bottom: 24px;\n  }\n\n  &__close-icon {\n    position: absolute;\n    top: 28px;\n    right: 20px;\n    cursor: pointer;\n    z-index: 10;\n\n    &:hover {\n      opacity: 0.7;\n    }\n  }\n}\n\n.database-tile {\n  position: relative;\n  display: block;\n  padding: 20px;\n  border: 1px solid #e0e0e0;\n  border-radius: 12px;\n  background: #fff;\n  text-decoration: none;\n  color: inherit;\n  transition: all 0.3s ease, background-color 0.5s ease;\n  overflow: visible;\n\n  &:hover {\n    border-color: #4A90E2;\n\n    background-color: #f8f8f8;\n  }\n\n  &--expanded {\n    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);\n    border-color: #4A90E2;\n    border-radius: 12px 12px 0 0;\n    z-index: 10;\n\n    .database-tile__description {\n      max-height: 500px;\n      opacity: 1;\n      padding: 16px 20px 16px 20px;\n      pointer-events: auto;\n    }\n  }\n\n  &__index {\n    position: absolute;\n    top: 12px;\n    right: 12px;\n    font-size: 12px;\n    font-weight: 500;\n    color: #999;\n    font-family: 'Monaco', 'Courier New', monospace;\n  }\n\n  &__name {\n    margin: 0 0 8px 0;\n    font-size: 24px;\n    font-weight: 700;\n    color: #333;\n  }\n\n  &__teaser {\n    font-size: 15px;\n    line-height: 1.5;\n    color: #555;\n    padding-right: 30px;\n\n    p {\n      margin: 0;\n    }\n  }\n\n  &__info-icon {\n    position: absolute;\n    bottom: 12px;\n    right: 12px;\n    width: 20px;\n    height: 20px;\n    cursor: pointer;\n    fill: #999;\n    transition: all 0.2s ease;\n    background-color: #f5f5f5;\n    border-radius: 50%;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 4px;\n\n    &:hover {\n      fill: #4A90E2;\n      background-color: #e3f2fd;\n    }\n\n    svg {\n      width: 11px;\n      height: 11px;\n    }\n  }\n\n  &__description {\n    position: absolute;\n    left: -1px;\n    right: -1px;\n    top: 100%;\n    max-height: 0;\n    opacity: 0;\n    overflow: hidden;\n    transition: all 0.15s ease;\n    font-size: 14px;\n    line-height: 1.6;\n    color: #666;\n    background-color: #fff;\n    border: 1px solid #4A90E2;\n    border-top: none;\n    border-radius: 0 0 12px 12px;\n    padding: 0 20px 0 36px;\n    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);\n    pointer-events: none;\n\n    p {\n      margin: 8px 0;\n\n      &:first-child {\n        margin-top: 0;\n      }\n\n      &:last-child {\n        margin-bottom: 0;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/Visualizer/style/flow.css",
    "content": ".Flow {\n  width: 100%;\n  height: 100%;\n\n  flex-grow: 1;\n  font-size: 12px;\n}\n\n:not(:root):fullscreen::backdrop {\n  background-color: #FFF;\n}\n"
  },
  {
    "path": "src/Visualizer/style/handle.css",
    "content": ".left-handle {\n  width: 2px;\n  height: 2px;\n  min-width: 2px;\n  left: 0;\n  top: 50%;\n  transform: translateX(-50%) translateY(-50%);\n}\n\n.right-handle {\n  width: 2px;\n  height: 2px;\n  min-width: 2px;\n  right: 0;\n  top: 50%;\n  transform: translateX(50%) translateY(-50%);\n}\n"
  },
  {
    "path": "src/Visualizer/style/has-many-edge.scss",
    "content": ".has-many-edge {\n/* https://reactflow.dev/docs/guides/theming/#react-flow-class-names */\n  &.selected path.react-flow__edge-path {\n    marker-end: url(#hasManySelected);\n    stroke-width: 1.5;\n  }\n\n  &--highlighted {\n    path.react-flow__edge-path,\n    path.react-flow__edge-interaction,\n    path.react-flow__connection-path {\n      stroke: #2186EB !important;\n      stroke-width: 1.5px;\n    }\n  }\n}\n\n.has-many-edge-reversed {\n  &.selected path.react-flow__edge-path {\n    marker-end: url(#hasManyReversedSelected);\n    stroke-width: 1.5;\n  }\n\n  &--highlighted {\n    path.react-flow__edge-path,\n    path.react-flow__edge-interaction,\n    path.react-flow__connection-path {\n      stroke: #2186EB !important;\n      stroke-width: 1.5px;\n    }\n  }\n}\n"
  },
  {
    "path": "src/Visualizer/style/has-one-edge.scss",
    "content": ".has-one-edge {\n  /* https://reactflow.dev/docs/guides/theming/#react-flow-class-names */\n  &.selected path.react-flow__edge-path {\n    marker-end: url(#hasOneSelected);\n    stroke-width: 1.5px;\n  }\n\n  &--highlighted {\n    path.react-flow__edge-path,\n    path.react-flow__edge-interaction,\n    path.react-flow__connection-path {\n      stroke: #2186EB !important;\n      stroke-width: 1.5px;\n    }\n  }\n}\n\n.has-one-edge-reversed {\n  &.selected path.react-flow__edge-path {\n    marker-end: url(#hasOneReversedSelected);\n    stroke-width: 1.5px;\n  }\n\n  &--highlighted {\n    path.react-flow__edge-path,\n    path.react-flow__edge-interaction,\n    path.react-flow__connection-path {\n      stroke: #2186EB !important;\n      stroke-width: 1.5px;\n    }\n  }\n}\n"
  },
  {
    "path": "src/Visualizer/style/info-popup.scss",
    "content": ".info-popup {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  left: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  z-index: 100000;\n  background-color: rgba(0, 0, 0, 0.7);\n\n  &__inner {\n    position: fixed;\n    top: 50%;\n    left: 50%;\n    width: 100%;\n    max-height: 100%;\n    z-index: 200000;\n    padding: 16px 16px 8px;\n    transform: translateX(-50%) translateY(-50%);\n    overflow-y: auto;\n\n    border-radius: 8px;\n\n    background-color: #FFF;\n\n    font-size: 16px;\n    line-height: 1.4;\n\n    @media (min-width: 512px) {\n      max-width: 576px;\n    }\n  }\n\n  &__headline {\n    margin-top: 0;\n  }\n\n  &__database-name {\n    margin-bottom: 8px;\n  }\n\n  &__database-name + p {\n    margin-top: 0;\n  }\n\n  &__close-icon {\n    position: absolute;\n    top: 12px;\n    right: 12px;\n\n    cursor: pointer;\n  }\n\n  &__close-icon {\n    &:hover {\n      opacity: 0.7;\n    }\n  }\n}\n"
  },
  {
    "path": "src/Visualizer/style/key-icon.css",
    "content": ".key-icon {\n  width: 12px;\n  height: 12px;\n  margin-right: 4px;\n}\n"
  },
  {
    "path": "src/Visualizer/style/react-flow.scss",
    "content": ".react-flow {\n  &__node-custom {\n    border: 1px solid #555;\n    padding: 10px;\n    width: 300px;\n    border-radius: 5px;\n  }\n\n  &__edge.selected &__edge-path {\n    stroke: #2186EB !important;\n  }\n\n  &__node {\n    max-width: 288px;\n\n    background-color: #F5F7FA;\n  }\n\n  &__attribution a {\n    background: none;\n  }\n\n  &__handle-left {\n    border: 0 !important;\n\n    background: transparent !important;\n  }\n\n  &__handle-right {\n    border: 0 !important;\n\n    background: transparent !important;\n  }\n}\n"
  },
  {
    "path": "src/Visualizer/style/table.scss",
    "content": ".table {\n  $root: &;\n\n  background-color: #FFF;\n\n  &__name {\n    position: relative;\n    padding: 8px;\n\n    border: 0;\n    border-radius: 4px 4px 0 0;\n\n    font-weight: bold;\n    text-align: center;\n  }\n\n  &__columns {\n    border: 1px solid #CBD2D9;\n    border-top: 0;\n    border-radius: 0 0 4px 4px;\n  }\n\n  &__description {\n    display: none;\n    position: absolute;\n    top: 50%;\n    right: -6px;\n    width: 150px;\n    transform: translateX(100%) translateY(-50%);\n    padding: 8px;\n    z-index: 1000;\n\n    border: 1px solid #CBD2D9;\n    border-radius: 4px;\n\n    background-color: #FFF;\n\n    font-weight: normal;\n    text-align: left;\n\n    &:after {\n      position: absolute;\n      top: 50%;\n      right: 100%;\n      transform: translateX(-0) translateY(-50%);\n\n      border-width: 3px;\n      border-style: solid;\n      border-color: transparent #FFF transparent transparent;\n\n      content: \"\";\n    }\n\n    &:before {\n      position: absolute;\n      top: 50%;\n      right: 100%;\n      transform: translateX(-0.5px) translateY(-50%);\n\n      border-width: 4px;\n      border-style: solid;\n      border-color: transparent #CBD2D9 transparent transparent;\n\n      content: \"\";\n    }\n\n    &--active {\n      display: block;\n    }\n  }\n\n  &--highlighted {\n    #{$root}__name {\n      background-color: #FADB5F;\n    }\n\n    #{$root}__columns {\n      border-color: #FADB5F;\n      border-style: dashed;\n      border-width: 2px;\n      border-top: 0;\n    }\n  }\n\n  &:hover {\n    #{$root}__name {\n      opacity: 1;\n    }\n  }\n\n  &--dimmed {\n    #{$root}__name {\n      opacity: 0.4;\n    }\n  }\n}\n"
  },
  {
    "path": "src/Visualizer/types/CloseIconProps.ts",
    "content": "export type CloseIconProps = {\n  className?: string,\n  onClick?: Function\n};\n"
  },
  {
    "path": "src/Visualizer/types/DatabaseConfig.ts",
    "content": "import { EdgeConfig } from \"./EdgeConfig\";\nimport { SchemaColors } from \"./SchemaColors\";\nimport { TableConfig } from \"./TableConfig\";\nimport { TablePositions } from \"./TablePositions\";\n\nexport type Database = {\n  name: string;\n  teaser: string;\n  description: string;\n};\n\nexport type Databases = {\n  [databaseName: string] : Database\n};\n\nexport type DatabaseConfig = {\n  tables: TableConfig[],\n  edgeConfigs: EdgeConfig[],\n  schemaColors: SchemaColors,\n  tablePositions: TablePositions\n};\n\nexport type DatabaseConfigs = {\n  [databaseName: string] : DatabaseConfig\n};\n"
  },
  {
    "path": "src/Visualizer/types/EdgeConfig.ts",
    "content": "export interface EdgeConfig {\n  source: string;\n  sourceKey: string;\n  target: string;\n  targetKey: string;\n  relation: string;\n  sourcePosition?: string;\n  targetPosition?: string;\n};\n"
  },
  {
    "path": "src/Visualizer/types/PopupProps.ts",
    "content": "export type DatabasePopupProps = {\n  headline: string;\n  subheadline?: string;\n}\n\nexport type PopupProps = {\n  onClose: Function;\n}\n\nexport type DatabaseMenuPopupProps = DatabasePopupProps & PopupProps;\n"
  },
  {
    "path": "src/Visualizer/types/Position.ts",
    "content": "export interface Position {\n  x: number;\n  y: number;\n};\n"
  },
  {
    "path": "src/Visualizer/types/SchemaColors.ts",
    "content": "export interface SchemaColors {\n  [schemaName: string] : string\n};\n"
  },
  {
    "path": "src/Visualizer/types/TableColumnConfig.ts",
    "content": "export interface TableColumnConfig {\n  name: string;\n  description: string;\n  type: string;\n  handleType?: string;\n  key?: boolean;\n};\n"
  },
  {
    "path": "src/Visualizer/types/TableConfig.ts",
    "content": "import { TableColumnConfig } from \"./TableColumnConfig\";\n\nexport interface TableConfig {\n  schema?: string;\n  schemaColor?: string;\n  name: string;\n  description?: string;\n  columns: TableColumnConfig[];\n}\n"
  },
  {
    "path": "src/Visualizer/types/TablePositions.ts",
    "content": "import { Position } from \"./Position\";\n\nexport interface TablePositions {\n  [tableName: string] : Position\n};\n"
  },
  {
    "path": "src/Visualizer/types/index.ts",
    "content": "export * from \"./EdgeConfig\";\nexport * from \"./Position\";\nexport * from \"./TablePositions\";\nexport * from \"./SchemaColors\";\nexport * from \"./PopupProps\";\nexport * from \"./CloseIconProps\";\nexport * from \"./TableConfig\";\nexport * from \"./DatabaseConfig\";\n"
  },
  {
    "path": "src/config/databases/bindle/edges.json",
    "content": "[\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"purchases\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"books_users\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"products\",\n    \"sourceKey\": \"id\",\n    \"target\": \"purchases\",\n    \"targetKey\": \"product_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"books\",\n    \"sourceKey\": \"id\",\n    \"target\": \"books_users\",\n    \"targetKey\": \"book_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"profiles\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasOne\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"accounts\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasOne\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"devices\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"adjust.callbacks\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"visitor_id\",\n    \"target\": \"web_analytics.pageviews\",\n    \"targetKey\": \"visitor_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"web_analytics.pageviews\",\n    \"sourceKey\": \"pageview_id\",\n    \"target\": \"web_analytics.events\",\n    \"targetKey\": \"pageview_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"mobile_analytics.events\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"users\",\n    \"targetKey\": \"referrer_id\",\n    \"relation\": \"hasMany\",\n    \"sourcePosition\": \"left\",\n    \"targetPosition\": \"left\"\n  }\n]\n"
  },
  {
    "path": "src/config/databases/bindle/schemaColors.json",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\",\n  \"public\": \"#BEB8EB\",\n  \"adjust\": \"#AFA2FF\",\n  \"helpers\": \"#75C9C8\",\n  \"web_analytics\": \"#F6BDD1\",\n  \"mobile_analytics\": \"#FFD791\"\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tablePositions.json",
    "content": "{\n  \"adjust.callbacks\": {\n    \"x\": 864,\n    \"y\": -192\n  },\n  \"helpers.dates\": {\n    \"x\": 512,\n    \"y\": 528\n  },\n  \"mobile_analytics.events\": {\n    \"x\": 656,\n    \"y\": -336\n  },\n  \"public.accounts\": {\n    \"x\": -240,\n    \"y\": -192\n  },\n  \"public.books\": {\n    \"x\": -432,\n    \"y\": 320\n  },\n  \"public.books_users\": {\n    \"x\": -208,\n    \"y\": 224\n  },\n  \"public.devices\": {\n    \"x\": -48,\n    \"y\": -336\n  },\n  \"public.marketing_spends\": {\n    \"x\": 672,\n    \"y\": 528\n  },\n  \"public.products\": {\n    \"x\": 704,\n    \"y\": 304\n  },\n  \"public.profiles\": {\n    \"x\": -384,\n    \"y\": -16\n  },\n  \"public.purchases\": {\n    \"x\": 432,\n    \"y\": 192\n  },\n  \"public.users\": {\n    \"x\": 192,\n    \"y\": -96\n  },\n  \"web_analytics.events\": {\n    \"x\": -368,\n    \"y\": 624\n  },\n  \"web_analytics.pageviews\": {\n    \"x\": -96,\n    \"y\": 544\n  }\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/accounts.json",
    "content": "{\n  \"name\": \"accounts\",\n  \"description\": \"Accounts of platforms users can sign up with. Bindle users might have Facebook or Email accounts.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of an account.\",\n      \"key\": true,\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"User’s id.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"platform\",\n      \"description\": \"Account’s platform. Bindle allows email and facebook signups.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"email\",\n      \"description\": \"Email attached to the account. Note that different platforms could have different emails.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when this account was created. created_at of the first account is user’s signup timestamp.\",\n      \"type\": \"datetime\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/adjust_callbacks.json",
    "content": "{\n  \"schema\": \"adjust\",\n  \"name\": \"callbacks\",\n  \"description\": \"Adjust is a mobile attribution service, sort of Google Analytics for the mobile world. Adjust sends back callbacks with information (attribution) about every mobile install, like where this install comes from, which link a person clicked before installing the app.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique ID of an Adjust callback.\",\n      \"type\": \"integer\",\n      \"key\": true\n    },\n    {\n      \"name\": \"tracker\",\n      \"description\": \"Adjust’s tracker parameter. For example https://app.adjust.com/gxel3d1.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of a callback.\",\n      \"type\": \"datetime\"\n    },\n    {\n      \"name\": \"campaign_name\",\n      \"description\": \"The value of campaign paramenter in Adjust URL.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"adgroup_name\",\n      \"description\": \"The value of adgroup paramenter in Adjust URL.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"creative_name\",\n      \"description\": \"The value of creative paramenter in Adjust URL.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"label\",\n      \"description\": \"The value of label paramenter in Adjust URL.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"device_name\",\n      \"description\": \"Model and OS version of a user’s device.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"app_version\",\n      \"description\": \"Bindle’s app version at the moment.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"activity_kind\",\n      \"description\": \"Predefined Adjust event, could be click, install, event (means custom event and event_name will be present) or else.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"event_name\",\n      \"description\": \"Custom Adjust event; Bindle has custom signup event.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"adid\",\n      \"description\": \"Adjust’s device ID.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"ID of a user (from users table). Present for signup event.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"Country derived from user’s IP address.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/books.json",
    "content": "{\n  \"name\": \"books\",\n  \"description\": \"All books available in the Bindle's library.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of the book.\",\n      \"key\": true,\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name of the book.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"slug\",\n      \"description\": \"Identifer of a book used in URLs. For example https://www.bindle.com/books/final-future. Usually generated from book’s name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"genre\",\n      \"description\": \"Book’s genre.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"pages_count\",\n      \"description\": \"Number of pages in the book.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/books_users.json",
    "content": "{\n  \"name\": \"books_users\",\n  \"description\": \"A join table for many-to-many relationship between users and books.\",\n  \"columns\": [\n    {\n      \"name\": \"book_id\",\n      \"description\": \"Book’s id.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"User’s id.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"last_page\",\n      \"description\": \"A number of the last page a user read in the book.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"When the user started reading the book.\",\n      \"type\": \"datetime\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/devices.json",
    "content": "{\n  \"name\": \"devices\",\n  \"description\": \"This table keeps track of all devices users log in to Bindle with – browsers or mobile apps.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of a user’s device.\",\n      \"key\": true,\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"id of a user who uses this device.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"device_type\",\n      \"description\": \"Type of the device, could be **browser** (for users who are using Bindle website) or **iphone** (users who are reading via Bindle app).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"connected_at\",\n      \"description\": \"Timestamp when a user started using this device. Device with the earliest **connected_at** field is the device which user used for signing up.\",\n      \"type\": \"datetime\"\n    },\n    {\n      \"name\": \"version\",\n      \"description\": \"For browser devices it’s a User Agent. For iPhone devices it’s a version of user’s iPhone and a version of iOS separated by comma.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/helpers_dates.json",
    "content": "{\n  \"schema\": \"helpers\",\n  \"name\": \"dates\",\n  \"description\": \"A helper table with consecutive dates. Might be useful to join sparse timelines to for reporting metrics per day.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of a date. Just a primary key, an index of the table.\",\n      \"key\": true,\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"date\",\n      \"description\": \"A date. By joining the very sparse timeline data to the consecutive range of dates we won’t have gaps.\",\n      \"type\": \"date\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/marketing_spends.json",
    "content": "{\n  \"name\": \"marketing_spends\",\n  \"description\": \"A table that keeps track of Bindle's marketing investments per campaign, per day.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of spend, just a primary key in a table.\",\n      \"key\": true,\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"spent_at\",\n      \"description\": \"The date of a spend. Spend data is usually reported by date.\",\n      \"type\": \"date\"\n    },\n    {\n      \"name\": \"amount\",\n      \"description\": \"Amount of money in USD.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"clicks\",\n      \"description\": \"Number of clicks on the ad on this date.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"utm_source\",\n      \"description\": \"utm_source of marketing campaign.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"utm_campaign\",\n      \"description\": \"utm_campaign of marketing campaign.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"utm_term\",\n      \"description\": \"utm_term of marketing campaign.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"utm_content\",\n      \"description\": \"utm_content of marketing campaign.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"utm_medium\",\n      \"description\": \"utm_medium of marketing campaign.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/mobile_analytics_events.json",
    "content": "{\n  \"schema\": \"mobile_analytics\",\n  \"name\": \"events\",\n  \"description\": \"This analytics table contains all events fired by Bindle's mobile app.\",\n  \"columns\": [\n    {\n      \"name\": \"event_id\",\n      \"description\": \"Unique identifier of an event.\",\n      \"type\": \"text\",\n      \"key\": true\n    },\n    {\n      \"name\": \"category\",\n      \"description\": \"Category parameter of an event, for example onboarding.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"action\",\n      \"description\": \"Action parameter of an event, for example screenview.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name parameter of an event, for example bindle-content.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"screen_resolution\",\n      \"description\": \"Resolution of a user’s smartphone, for example 375x812.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"device_type\",\n      \"description\": \"Model of a user’s smartphone and the version of the OS, for example iPhone 7,12.1.0.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"If user is logged in – ID of a user in the users table.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"adid\",\n      \"description\": \"Unique identifier of a user’s smartphone, same as in Adjust callbacks table.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"Country derived from user’s IP address.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"custom_parameters\",\n      \"description\": \"All custom parameters of an even in a key-value format.\",\n      \"type\": \"JSON\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of an event.\",\n      \"type\": \"datetime\"\n    },\n    {\n      \"name\": \"app_version\",\n      \"description\": \"Version of the Bindle app a user is using, for example 1.1.1.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/products.json",
    "content": "{\n  \"name\": \"products\",\n  \"description\": \"The list of all purchasable Bindle products (subscriptions).\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of a product.\",\n      \"key\": true,\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name of a product.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"price\",\n      \"description\": \"Price of a product\",\n      \"type\": \"float\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/profiles.json",
    "content": "{\n  \"name\": \"profiles\",\n  \"description\": \"To avoid growing the users table further, users' profile information was extracted to this table.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"type\": \"number\",\n      \"description\": \"Unique identifier of a profile.\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"type\": \"number\",\n      \"description\": \"User’s id.\"\n    },\n    {\n      \"name\": \"about\",\n      \"type\": \"text\",\n      \"description\": \"Information about a user.\"\n    },\n    {\n      \"name\": \"interests\",\n      \"type\": \"text\",\n      \"description\": \"User’s interests. Comma separated list of tags.\"\n    },\n    {\n      \"name\": \"avatar_url\",\n      \"type\": \"text\",\n      \"description\": \"URL of an avatar user uploaded. Check some of them out ;)\"\n    },\n    {\n      \"name\": \"postal_code\",\n      \"type\": \"text\",\n      \"description\": \"A postal code of a user for books delivery.\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/purchases.json",
    "content": "{\n  \"name\": \"purchases\",\n  \"description\": \"This table contains all purchase transactions.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of purchase.\",\n      \"type\": \"integer\",\n      \"key\": true\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"id of a user who made the purchase.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"product_id\",\n      \"description\": \"id of a product inside products table.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"amount\",\n      \"description\": \"How much money user paid. The number might vary since users could apply discounts. Amount is always in US dollars.\",\n      \"type\": \"float\"\n    },\n    {\n      \"name\": \"refunded\",\n      \"description\": \"Status of a purchase, we receive money on the bank account only if purchase wasn’t refunded.\",\n      \"type\": \"boolean\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"When purchase was made.\",\n      \"type\": \"datetime\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/users.json",
    "content": "{\n  \"name\": \"users\",\n  \"description\": \"This table contains all user records of Bindle.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a user.\",\n      \"type\": \"number\"\n    },\n    {\n      \"name\": \"email\",\n      \"type\": \"text\",\n      \"description\": \"User’s email, unique.\"\n    },\n    {\n      \"name\": \"first_name\",\n      \"type\": \"text\",\n      \"description\": \"User’s first name.\"\n    },\n    {\n      \"name\": \"last_name\",\n      \"type\": \"text\",\n      \"description\": \"User’s last name.\"\n    },\n    {\n      \"name\": \"country\",\n      \"type\": \"text\",\n      \"description\": \"User’s signup country.\"\n    },\n    {\n      \"name\": \"signup_date\",\n      \"type\": \"date\",\n      \"description\": \"Date when user signed up.\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"type\": \"datetime\",\n      \"description\": \"Timestamp when user record was created, we can treat it as signup date and time.\"\n    },\n    {\n      \"name\": \"status\",\n      \"type\": \"text\",\n      \"description\": \"What status user has in Bindle, could be free (can read only free books) or customer (user who purchased a subscription, can read all books).\"\n    },\n    {\n      \"name\": \"age\",\n      \"type\": \"integer\",\n      \"description\": \"User’s age.\"\n    },\n    {\n      \"name\": \"referrer_id\",\n      \"type\": \"integer\",\n      \"description\": \"id of another user who referred this user (this is usually set when users sign up via referral link).\"\n    },\n    {\n      \"name\": \"visitor_id\",\n      \"type\": \"text\",\n      \"description\": \"Identifier of a user in the web_analytics.pageviews table. Generated by a web analytics system and stored in a cookie.\"\n    },\n    {\n      \"name\": \"utm_source\",\n      \"type\": \"text\",\n      \"description\": \"utm_source in URL when user signed up, used for marketing attribution\"\n    },\n    {\n      \"name\": \"utm_campaign\",\n      \"type\": \"text\",\n      \"description\": \"utm_campaign in URL when user signed up, used for marketing attribution\"\n    },\n    {\n      \"name\": \"utm_term\",\n      \"type\": \"text\",\n      \"description\": \"utm_term in URL when user signed up, used for marketing attribution\"\n    },\n    {\n      \"name\": \"utm_content\",\n      \"type\": \"text\",\n      \"description\": \"utm_content in URL when user signed up, used for marketing attribution\"\n    },\n    {\n      \"name\": \"utm_medium\",\n      \"type\": \"text\",\n      \"description\": \"utm_medium in URL when user signed up, used for marketing attribution\"\n    },\n    {\n      \"name\": \"adjust_tracker\",\n      \"type\": \"text\",\n      \"description\": \"Adjust tracker in case user signed up via an Adjust link https://app.adjust.com/gxel3d1.\"\n    },\n    {\n      \"name\": \"adjust_campaign\",\n      \"type\": \"text\",\n      \"description\": \"The value of campaign paramenter in Adjust URL.\"\n    },\n    {\n      \"name\": \"adjust_adgroup\",\n      \"type\": \"text\",\n      \"description\": \"The value of adgroup paramenter in Adjust URL.\"\n    },\n    {\n      \"name\": \"adjust_creative\",\n      \"type\": \"text\",\n      \"description\": \"The value of creative paramenter in Adjust URL.\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/web_analytics_events.json",
    "content": "{\n  \"schema\": \"web_analytics\",\n  \"name\": \"events\",\n  \"description\": \"This table contains all events that happen on Bindle's website pages. Events are tracked during a pageview, that's why there's a has-many relation between pageviews and events.\",\n  \"columns\": [\n    {\n      \"name\": \"pageview_id\",\n      \"description\": \"Category parameter of an event, for example Signup.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"category\",\n      \"description\": \"Action parameter of an event, for example Click.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"action\",\n      \"description\": \"Name parameter of an event, for example Signup for free.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Unique identifier of a record inside pageviews table. All events happen within one pageview. ⚠️\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of an event.\",\n      \"type\": \"datetime\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables/web_analytics_pageviews.json",
    "content": "{\n  \"schema\": \"web_analytics\",\n  \"name\": \"pageviews\",\n  \"description\": \"This table contains all pageviews of Bindle's website.\",\n  \"columns\": [\n    {\n      \"name\": \"pageview_id\",\n      \"description\": \"Unique identifier of a pageview.\",\n      \"type\": \"text\",\n      \"key\": true\n    },\n    {\n      \"name\": \"visitor_id\",\n      \"description\": \"Unique identifier of a visitor. A fingerprint used to keep track of guest visitors who haven’t had signed up.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"If user is logged in – ID of a user in users table.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"url\",\n      \"description\": \"URL of the visited page.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"referer_url\",\n      \"description\": \"URL of the previous page where user clicked on a link with URL.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"screen_resolution\",\n      \"description\": \"Screen resolution of a user’s device. Example: 1024x1366.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"device_type\",\n      \"description\": \"Type of a user’s device. Could be mobile, tablet or desktop.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"custom_parameters\",\n      \"description\": \"All custom parameters of a pageview in a key-value format. Could be added per page, for example we might add ab_test_variation key to keep track of what AB-test variation user had seen.\",\n      \"type\": \"JSON\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of a pageview.\",\n      \"type\": \"datetime\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"Country derived from user’s IP address.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/bindle/tables.ts",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\nimport accountsTable from \"./tables/accounts.json\";\nimport adjustCallbacksTable from \"./tables/adjust_callbacks.json\";\nimport booksUsersTable from \"./tables/books_users.json\";\nimport booksTable from \"./tables/books.json\";\nimport devicesTable from \"./tables/devices.json\";\nimport helpersDatesTable from \"./tables/helpers_dates.json\";\nimport marketingSpendsTable from \"./tables/marketing_spends.json\";\nimport mobileAnalyticsEventsTable from \"./tables/mobile_analytics_events.json\";\nimport productsTable from \"./tables/products.json\";\nimport profilesTable from \"./tables/profiles.json\";\nimport purchasesTable from \"./tables/purchases.json\";\nimport usersTable from \"./tables/users.json\";\nimport webAnalyticsEventsTable from \"./tables/web_analytics_events.json\";\nimport webAnalyticsPageviewsTable from \"./tables/web_analytics_pageviews.json\";\n\nconst tables: TableConfig[] = [\n  accountsTable,\n  adjustCallbacksTable,\n  booksUsersTable,\n  booksTable,\n  devicesTable,\n  helpersDatesTable,\n  marketingSpendsTable,\n  mobileAnalyticsEventsTable,\n  productsTable,\n  profilesTable,\n  purchasesTable,\n  usersTable,\n  webAnalyticsEventsTable,\n  webAnalyticsPageviewsTable\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/config/databases/ecommerce/edges.json",
    "content": "[\n  {\n    \"source\": \"vendors\",\n    \"sourceKey\": \"id\",\n    \"target\": \"items\",\n    \"targetKey\": \"vendor_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"categories\",\n    \"sourceKey\": \"id\",\n    \"target\": \"items\",\n    \"targetKey\": \"category_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"items\",\n    \"sourceKey\": \"id\",\n    \"target\": \"reviews\",\n    \"targetKey\": \"item_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"reviews\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"items\",\n    \"sourceKey\": \"id\",\n    \"target\": \"carts_items\",\n    \"targetKey\": \"item_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"carts\",\n    \"sourceKey\": \"id\",\n    \"target\": \"carts_items\",\n    \"targetKey\": \"cart_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"carts\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"carts\",\n    \"sourceKey\": \"id\",\n    \"target\": \"returns\",\n    \"targetKey\": \"cart_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"items\",\n    \"sourceKey\": \"id\",\n    \"target\": \"returns\",\n    \"targetKey\": \"item_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"carts\",\n    \"sourceKey\": \"id\",\n    \"target\": \"purchases\",\n    \"targetKey\": \"cart_id\",\n    \"relation\": \"hasOne\"\n  },\n  {\n    \"source\": \"discount_codes\",\n    \"sourceKey\": \"code\",\n    \"target\": \"purchases\",\n    \"targetKey\": \"discount_code\",\n    \"relation\": \"hasMany\"\n  }\n]\n"
  },
  {
    "path": "src/config/databases/ecommerce/schemaColors.json",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\",\n  \"public\": \"#91C4F2\"\n}"
  },
  {
    "path": "src/config/databases/ecommerce/tablePositions.json",
    "content": "{\n  \"public.carts\": {\n    \"x\": 672,\n    \"y\": 368\n  },\n  \"public.carts_items\": {\n    \"x\": 464,\n    \"y\": 560\n  },\n  \"public.categories\": {\n    \"x\": -160,\n    \"y\": 496\n  },\n  \"public.discount_codes\": {\n    \"x\": 1136,\n    \"y\": 336\n  },\n  \"public.items\": {\n    \"x\": 112,\n    \"y\": 608\n  },\n  \"public.purchases\": {\n    \"x\": 896,\n    \"y\": 160\n  },\n  \"public.returns\": {\n    \"x\": 400,\n    \"y\": 288\n  },\n  \"public.reviews\": {\n    \"x\": 400,\n    \"y\": 800\n  },\n  \"public.users\": {\n    \"x\": 688,\n    \"y\": 720\n  },\n  \"public.vendors\": {\n    \"x\": -160,\n    \"y\": 848\n  }\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/carts.json",
    "content": "{\n  \"name\": \"carts\",\n  \"description\": \"This table contains all carts (purchased or not) that were ever assembled by users.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a cart.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"ID of a user who assemled a cart.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"When a cart was created (when a user added the first item to a cart).\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/carts_items.json",
    "content": "{\n  \"name\": \"carts_items\",\n  \"description\": \"This is a join table that enables many-to-many relation between carts and items.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"item_id\",\n      \"description\": \"ID of an item that was added to a cart.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"cart_id\",\n      \"description\": \"Cart's ID.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"When an item was added to a cart.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"quantity\",\n      \"description\": \"How many identical items are in a cart.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/categories.json",
    "content": "{\n  \"name\": \"categories\",\n  \"description\": \"This table contains item categories. Note that cateories are nested and a category could have multiple children categories.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an item category.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Category name, like \\\"Sport shoes\\\".\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"parent_id\",\n      \"description\": \"ID of a parent category. Yep, categories have nested structure. For example, \\\"books\\\" category have \\\"fiction\\\" and \\\"non-fiction\\\" categories. \\\"Fiction\\\" category has categories like \\\"History\\\", \\\"Detective\\\", etc.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"When a category was added.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/discount_codes.json",
    "content": "{\n  \"name\": \"discount_codes\",\n  \"description\": \"Thsi table contains all discount codes that could be redeemed by a user when making a purchase. Note that discount codes could save a fixed amount or a percentage of the final price.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a discount code.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"amount_off\",\n      \"description\": \"Amount in USD that will be subtracted from a total cart's price if a user redeems this discount code.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"percent_off\",\n      \"description\": \"Percentage of a total cart's price that will be removed if a user redeems this discount code.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"code\",\n      \"description\": \"Unique code of a discount code. Codes are shared with customers, not ID-s :warning:.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"When discount code was created.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"valid_until\",\n      \"description\": \"The latest timestamp when customers are able to redeem a discount code.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/items.json",
    "content": "{\n  \"name\": \"items\",\n  \"description\": \"This table contains all items that could be purchased by users. Note that only published items are available to website visitors (have value in the `published_at` column).\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an item.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Item's name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"category_id\",\n      \"description\": \"ID of item's category.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"vendor_id\",\n      \"description\": \"ID of a vendor who produces or sells this item in our E-commerce store.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"price_usd\",\n      \"description\": \"Item's price in USD.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when an item was first added to our E-commerce store.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"published_at\",\n      \"description\": \"Timestamp when an item was first available for purchasing.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/purchases.json",
    "content": "{\n  \"name\": \"purchases\",\n  \"description\": \"This table contains all cart purchases.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a return.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"discount_code\",\n      \"description\": \"Discount code that was used by a user. It's a foreign key for the `discount_codes` table.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"Country of a user who made a purchase (IP based).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"city\",\n      \"description\": \"City of a user who made a purchase (IP based).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"payment_method\",\n      \"description\": \"Payment method that was used for a purchase. Could be **cc** (credit card) or **paypal**.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of a purchase.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"cart_id\",\n      \"description\": \"ID of a cart that was purchased.\",\n      \"type\": \"bigint\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/returns.json",
    "content": "{\n  \"name\": \"returns\",\n  \"description\": \"This table contains all returns (full carts or partial item returns).\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a return.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"cart_id\",\n      \"description\": \"ID of a cart that a retuned item belongs to. In our E-commerce store users add items to a cart, then purchase the whole cart. Users are allowed to return as many items from a purchased cart as they want.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"item_id\",\n      \"description\": \"ID of an item that was returned.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"quantity\",\n      \"description\": \"How many items were returned.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when a return was processed.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/reviews.json",
    "content": "{\n  \"name\": \"reviews\",\n  \"description\": \"This table contains all user reviews for individual items.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a review.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"item_id\",\n      \"description\": \"ID of an item that was reviewed.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"ID of a user who left a review.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"rating\",\n      \"description\": \"Star rating that a user selected in a review form.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when a user left a review.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"feedback\",\n      \"description\": \"Text feedback that a user types in a review form.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/users.json",
    "content": "{\n  \"name\": \"users\",\n  \"description\": \"This table contains all user records (accounts).\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a user.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"email\",\n      \"description\": \"User's email.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"first_name\",\n      \"description\": \"User's first name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"last_name\",\n      \"description\": \"User's last name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"User's country (IP based).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"city\",\n      \"description\": \"User's city (IP based).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when a user created an account.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables/vendors.json",
    "content": "{\n  \"name\": \"vendors\",\n  \"description\": \"This table contains all vendors (people or companies that sell items on our E-commerce platform).\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a vendor.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Vendor's name (person or company name).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when a vendor started working with our E-commerce store.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/ecommerce/tables.ts",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\nimport cartsTable from \"./tables/carts.json\";\nimport cartsItemsTable from \"./tables/carts_items.json\";\nimport categoriesTable from \"./tables/categories.json\";\nimport discountCodesTable from \"./tables/discount_codes.json\";\nimport itemsTable from \"./tables/items.json\";\nimport purchasesTable from \"./tables/purchases.json\";\nimport returnsTable from \"./tables/returns.json\";\nimport reviewsTable from \"./tables/reviews.json\";\nimport usersTable from \"./tables/users.json\";\nimport vendorsTable from \"./tables/vendors.json\";\n\nconst tables: TableConfig[] = [\n  cartsTable,\n  cartsItemsTable,\n  categoriesTable,\n  discountCodesTable,\n  itemsTable,\n  purchasesTable,\n  returnsTable,\n  reviewsTable,\n  usersTable,\n  vendorsTable\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/config/databases/finance/edges.json",
    "content": "[\n  {\n    \"source\": \"vendors\",\n    \"sourceKey\": \"id\",\n    \"target\": \"transactions\",\n    \"targetKey\": \"vendor_id\",\n    \"relation\": \"hasMany\"\n  }\n]\n"
  },
  {
    "path": "src/config/databases/finance/schemaColors.json",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\",\n  \"public\": \"#91C4F2\"\n}"
  },
  {
    "path": "src/config/databases/finance/tablePositions.json",
    "content": "{\n  \"public.transactions\": {\n    \"x\": 192,\n    \"y\": 176\n  },\n  \"public.vendors\": {\n    \"x\": -64,\n    \"y\": 240\n  }\n}\n"
  },
  {
    "path": "src/config/databases/finance/tables/transactions.json",
    "content": "{\n  \"name\": \"transactions\",\n  \"description\": \"This table contains transactions of all vendors.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a transaction.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"vendor_id\",\n      \"description\": \"ID of a vendor from the `vendors` table.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"amount_usd\",\n      \"description\": \"Transaction's amount in USD. Positive value indicates a **credit** transaction, negative indicates **debit** transaction.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of a transaction.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/finance/tables/vendors.json",
    "content": "{\n  \"name\": \"vendors\",\n  \"description\": \"This table contains all vendors.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of a vendor. A vendor can have **credit** transactions with us (pay us money) and **debit** transactions (we pay money to a vendor).\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Vendor's name (could be a person or a company).\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/finance/tables.ts",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\nimport transactionsTable from \"./tables/transactions.json\";\nimport vendorsTable from \"./tables/vendors.json\";\n\nconst tables: TableConfig[] = [\n  transactionsTable,\n  vendorsTable\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/config/databases/live/edges.json",
    "content": "[\n  {\n    \"source\": \"products\",\n    \"sourceKey\": \"id\",\n    \"target\": \"purchases\",\n    \"targetKey\": \"product_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"purchases\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"trials\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasOne\"\n  },\n  {\n    \"source\": \"products\",\n    \"sourceKey\": \"id\",\n    \"target\": \"trials\",\n    \"targetKey\": \"product_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"users\",\n    \"targetKey\": \"referrer_id\",\n    \"relation\": \"hasMany\",\n    \"sourcePosition\": \"right\",\n    \"targetPosition\": \"right\"\n  },\n  {\n    \"source\": \"users\",\n    \"sourceKey\": \"id\",\n    \"target\": \"mobile_analytics.events\",\n    \"targetKey\": \"user_id\",\n    \"relation\": \"hasMany\"\n  }\n]\n"
  },
  {
    "path": "src/config/databases/live/schemaColors.json",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\",\n  \"public\": \"#91C4F2\",\n  \"mobile_analytics\": \"#FFD791\"\n}\n"
  },
  {
    "path": "src/config/databases/live/tablePositions.json",
    "content": "{\n  \"mobile_analytics.events\": {\n    \"x\": 784,\n    \"y\": -128\n  },\n  \"public.products\": {\n    \"x\": 0,\n    \"y\": 96\n  },\n  \"public.purchases\": {\n    \"x\": 256,\n    \"y\": -128\n  },\n  \"public.trials\": {\n    \"x\": 256,\n    \"y\": 224\n  },\n  \"public.users\": {\n    \"x\": 560,\n    \"y\": 80\n  }\n}\n"
  },
  {
    "path": "src/config/databases/live/tables/mobile_analytics_events.json",
    "content": "{\n  \"schema\": \"mobile_analytics\",\n  \"name\": \"events\",\n  \"description\": \"This analytics table contains all events tracked in the Meditation iOS app.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier of an event.\",\n      \"type\": \"bigint\",\n      \"key\": true\n    },\n    {\n      \"name\": \"category\",\n      \"description\": \"Category parameter of an event, for example onboarding.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"action\",\n      \"description\": \"Action parameter of an event, for example screenview.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name parameter of an event, for example bindle-content.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"screen_resolution\",\n      \"description\": \"Resolution of a user’s smartphone, for example 375x812.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"device_type\",\n      \"description\": \"Model of a user’s smartphone and the version of the OS, for example iPhone 15 Pro,17.0\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"ID of a user in the users table.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"Country derived from user’s IP address.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"custom_parameters\",\n      \"description\": \"All custom parameters of an even in a key-value format.\",\n      \"type\": \"JSON\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of an event.\",\n      \"type\": \"datetime\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/live/tables/products.json",
    "content": "{\n  \"name\": \"products\",\n  \"description\": \"All available products (available via subscriptions or one-time payments) users can buy.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a product.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Product's name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"price\",\n      \"description\": \"Product's price in USD.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"trial_days\",\n      \"description\": \"T[he number of free trial days.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"renewal_period\",\n      \"description\": \"Renewal period of a subscription product: 1 for monthly, 12 for yearly.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/live/tables/purchases.json",
    "content": "{\n  \"name\": \"purchases\",\n  \"description\": \"This table contains all purchase records.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a purchase.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"ID of a user who made this purchase.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"product_id\",\n      \"description\": \"ID of a purchased product.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"trial_id\",\n      \"description\": \"ID of an associated trial for a subscription product.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"amount\",\n      \"description\": \"Amount paid in USD.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of a purchase.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"refunded_at\",\n      \"description\": \"Timestamp of a full refund in case a user asked for it.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/live/tables/trials.json",
    "content": "{\n  \"name\": \"trials\",\n  \"description\": \"This table contains all started trials (trials are available only for subscription products).\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a trial.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"ID of a user who started a trial.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"product_id\",\n      \"description\": \"ID of a subscription product.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"started_at\",\n      \"description\": \"Timestamp when a user started a trial.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"cancelled_at\",\n      \"description\": \"Timestamp when a user cancelled a trial.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"finished_at\",\n      \"description\": \"Timestamp when a trial was finished and a purchase was made (user was automatically charged the product's price).\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/live/tables/users.json",
    "content": "{\n  \"name\": \"users\",\n  \"description\": \"This table contains all user records (accounts).\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a user.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"referrer_id\",\n      \"description\": \"id of another user who invited this user.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"first_name\",\n      \"description\": \"User's first name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"last_name\",\n      \"description\": \"User's last name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"email\",\n      \"description\": \"User's email.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"User's country (IP based).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"city\",\n      \"description\": \"User's city (IP based).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"age\",\n      \"description\": \"User's age.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"timezone\",\n      \"description\": \"User's timezone. Don't forget that all timestamps are in UTC.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"utc_offset\",\n      \"description\": \"User's timezone offset from UTC.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when a user created an account.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/live/tables.ts",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\nimport productsTable from \"./tables/products.json\";\nimport purchasesTable from \"./tables/purchases.json\";\nimport trialsTable from \"./tables/trials.json\";\nimport usersTable from \"./tables/users.json\";\nimport mobileAnalyticsEventsTable from \"./tables/mobile_analytics_events.json\";\n\nconst tables: TableConfig[] = [\n  productsTable,\n  purchasesTable,\n  trialsTable,\n  usersTable,\n  mobileAnalyticsEventsTable\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/config/databases/movies/edges.json",
    "content": "[\n  {\n    \"source\": \"actors\",\n    \"sourceKey\": \"id\",\n    \"target\": \"actors_movies\",\n    \"targetKey\": \"actor_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"genres\",\n    \"sourceKey\": \"id\",\n    \"target\": \"genres_movies\",\n    \"targetKey\": \"genre_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"movies\",\n    \"sourceKey\": \"id\",\n    \"target\": \"ratings\",\n    \"targetKey\": \"movie_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"movies\",\n    \"sourceKey\": \"id\",\n    \"target\": \"actors_movies\",\n    \"targetKey\": \"movie_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"movies\",\n    \"sourceKey\": \"id\",\n    \"target\": \"genres_movies\",\n    \"targetKey\": \"movie_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"directors\",\n    \"sourceKey\": \"id\",\n    \"target\": \"movies\",\n    \"targetKey\": \"director_id\",\n    \"relation\": \"hasMany\",\n    \"sourcePosition\": \"left\",\n    \"targetPosition\": \"right\"\n  },\n  {\n    \"source\": \"movies\",\n    \"sourceKey\": \"id\",\n    \"target\": \"movies\",\n    \"targetKey\": \"sequel_id\",\n    \"relation\": \"hasOne\",\n    \"sourcePosition\": \"right\",\n    \"targetPosition\": \"right\"\n  }\n]\n"
  },
  {
    "path": "src/config/databases/movies/schemaColors.json",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\",\n  \"public\": \"#91C4F2\"\n}"
  },
  {
    "path": "src/config/databases/movies/tablePositions.json",
    "content": "{\n  \"public.actors\": {\n    \"x\": -112,\n    \"y\": 160\n  },\n  \"public.actors_movies\": {\n    \"x\": 176,\n    \"y\": -16\n  },\n  \"public.directors\": {\n    \"x\": 752,\n    \"y\": 160\n  },\n  \"public.genres\": {\n    \"x\": -96,\n    \"y\": 320\n  },\n  \"public.genres_movies\": {\n    \"x\": 128,\n    \"y\": 272\n  },\n  \"public.movies\": {\n    \"x\": 480,\n    \"y\": 208\n  },\n  \"public.ratings\": {\n    \"x\": 160,\n    \"y\": 496\n  }\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables/actors.json",
    "content": "{\n  \"name\": \"actors\",\n  \"description\": \"This table contains movie actors.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier for each actor.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Full name of the actor.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables/actors_movies.json",
    "content": "{\n  \"name\": \"actors_movies\",\n  \"description\": \"This is a join table between actors and movies, since they have many-to-many relationship.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"actor_id\",\n      \"description\": \"Unique identifier of an actor from the `actors` table.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"movie_id\",\n      \"description\": \"Unique identifier of a movie from the `movies` table.\",\n      \"type\": \"bigint\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables/directors.json",
    "content": "{\n  \"name\": \"directors\",\n  \"description\": \"This table contains movie directors.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier for each director.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Full name of the director.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables/genres.json",
    "content": "{\n  \"name\": \"genres\",\n  \"description\": \"This table contains movie genres.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier for each genre.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name of the movie genre.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables/genres_movies.json",
    "content": "{\n  \"name\": \"genres_movies\",\n  \"description\": \"This is an association (aka join aka many-to-many relationship) table between genres and movies.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"genre_id\",\n      \"description\": \"Genre's ID from the `genres` table.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"movie_id\",\n      \"description\": \"Movie's ID from the `movies` table.\",\n      \"type\": \"bigint\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables/movies.json",
    "content": "{\n  \"name\": \"movies\",\n  \"description\": \"This table contains all dataset movies.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"description\": \"Unique identifier for each movie.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"release_date\",\n      \"description\": \"Release date of the movie.\",\n      \"type\": \"date\"\n    },\n    {\n      \"name\": \"duration\",\n      \"description\": \"Total runtime of the movie in minutes.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"budget\",\n      \"description\": \"Total budget allocated for the movie in US dollars.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"revenue\",\n      \"description\": \"Total revenue earned by the movie in US dollars.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"director_id\",\n      \"description\": \"Director's ID from the `director` table linking the director to the movie.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Official title of the movie.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"imdb_slug\",\n      \"description\": \"Unique IMDb URL slug for the movie.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"sequel_id\",\n      \"description\": \"A sequel (follow up) movie ID from the `movies` table.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables/ratings.json",
    "content": "{\n  \"name\": \"ratings\",\n  \"description\": \"This table contains individual user ratings for all movies.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"movie_id\",\n      \"description\": \"Movie's ID from the `movies` table.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"user_id\",\n      \"description\": \"ID of the user who gave the rating.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"rating\",\n      \"description\": \"Rating score assigned to the movie.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when the rating was created.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/movies/tables.ts",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\nimport actorsTable from \"./tables/actors.json\";\nimport actorsMoviesTable from \"./tables/actors_movies.json\";\nimport directorsTable from \"./tables/directors.json\";\nimport genresTable from \"./tables/genres.json\";\nimport genresMoviesTable from \"./tables/genres_movies.json\";\nimport moviesTable from \"./tables/movies.json\";\nimport ratingsTable from \"./tables/ratings.json\";\n\nconst tables: TableConfig[] = [\n  actorsTable,\n  actorsMoviesTable,\n  directorsTable,\n  genresTable,\n  genresMoviesTable,\n  moviesTable,\n  ratingsTable\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/config/databases/nba/edges.json",
    "content": "[\n  {\n    \"source\": \"players\",\n    \"sourceKey\": \"id\",\n    \"target\": \"player_game_stats\",\n    \"targetKey\": \"player_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"games\",\n    \"sourceKey\": \"id\",\n    \"target\": \"player_game_stats\",\n    \"targetKey\": \"game_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"games\",\n    \"sourceKey\": \"id\",\n    \"target\": \"team_game_stats\",\n    \"targetKey\": \"game_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"teams\",\n    \"sourceKey\": \"id\",\n    \"target\": \"team_game_stats\",\n    \"targetKey\": \"team_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"teams\",\n    \"sourceKey\": \"id\",\n    \"target\": \"player_game_stats\",\n    \"targetKey\": \"team_id\",\n    \"relation\": \"hasMany\"\n  }\n]\n"
  },
  {
    "path": "src/config/databases/nba/schemaColors.json",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\",\n  \"public\": \"#91C4F2\"\n}"
  },
  {
    "path": "src/config/databases/nba/tablePositions.json",
    "content": "{\n  \"public.games\": {\n    \"x\": 32,\n    \"y\": 48\n  },\n  \"public.player_game_stats\": {\n    \"x\": 400,\n    \"y\": 288\n  },\n  \"public.players\": {\n    \"x\": 688,\n    \"y\": 496\n  },\n  \"public.team_game_stats\": {\n    \"x\": -272,\n    \"y\": 208\n  },\n  \"public.teams\": {\n    \"x\": 48,\n    \"y\": 416\n  }\n}\n"
  },
  {
    "path": "src/config/databases/nba/tables/games.json",
    "content": "{\n  \"name\": \"games\",\n  \"description\": \"This table contains all NBA games since NBA was found in 1949.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an NBA game.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"game_date\",\n      \"description\": \"When the game was played (calculated with EST time).\",\n      \"type\": \"date\"\n    },\n    {\n      \"name\": \"season\",\n      \"description\": \"A year of a NBA season.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"home_team_id\",\n      \"description\": \"An ID of a team that played on their home court.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"visitor_team_id\",\n      \"description\": \"An ID of a visiting team.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"game_type\",\n      \"description\": \"Type of a game depending on when it was played during a season. Possible values are **preseason**, **regular**, **allstar**, **playin** or **playoff**.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"home_team_points\",\n      \"description\": \"How many points a home team scored.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"visitor_team_points\",\n      \"description\": \"How many points a visiting team scored.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/nba/tables/player_game_stats.json",
    "content": "{\n  \"name\": \"player_game_stats\",\n  \"description\": \"This table contains player stats for individual games.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"game_id\",\n      \"description\": \"An ID of a game.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"team_id\",\n      \"description\": \"An ID of a team.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"player_id\",\n      \"description\": \"An ID of a player.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"min\",\n      \"description\": \"How many minutes a player was in the game.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"fgm\",\n      \"description\": \"A number of goals made by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"fga\",\n      \"description\": \"A number of goals attempted (shots made) by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"fg3m\",\n      \"description\": \"A number of 3-pointers made by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"fg3a\",\n      \"description\": \"A number of attempted 3-point shots by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"ftm\",\n      \"description\": \"A number of Free Throws made by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"fta\",\n      \"description\": \"A number of Free Throws attempted by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"oreb\",\n      \"description\": \"Number of offensive rebounds by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"dreb\",\n      \"description\": \"Number of defensive rebounds by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"reb\",\n      \"description\": \"Total number of rebounds by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"ast\",\n      \"description\": \"Number of assists by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"stl\",\n      \"description\": \"Number of steals by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"blk\",\n      \"description\": \"Number of blocks by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"to\",\n      \"description\": \"Number of turnovers by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pf\",\n      \"description\": \"Number of personal fouls made by a player.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts\",\n      \"description\": \"Number of points scored by a player.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/nba/tables/players.json",
    "content": "{\n  \"name\": \"players\",\n  \"description\": \"This table contains all players who have played in at least one NBA game.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an NBA player.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Player's name.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/nba/tables/team_game_stats.json",
    "content": "{\n  \"name\": \"team_game_stats\",\n  \"description\": \"This table contains team stats for individual games.\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"game_id\",\n      \"description\": \"An ID of a game.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"team_id\",\n      \"description\": \"An ID of a team.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"pts_q1\",\n      \"description\": \"Number of points scored by the team in the 1st quarter.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_q2\",\n      \"description\": \"Number of points scored by the team in the 2nd quarter.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_q3\",\n      \"description\": \"Number of points scored by the team in the 3rd quarter.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_q4\",\n      \"description\": \"Number of points scored by the team in the 4th quarter.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_ot1\",\n      \"description\": \"Number of points scored by the team in the 1st overtime.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_ot2\",\n      \"description\": \"Number of points scored by the team in the 2nd overtime.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_ot3\",\n      \"description\": \"Number of points scored by the team in the 3rd overtime.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_ot4\",\n      \"description\": \"Number of points scored by the team in the 4th overtime.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_ot5\",\n      \"description\": \"Number of points scored by the team in the 5th overtime.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"pts_ot6\",\n      \"description\": \"Number of points scored by the team in the 6th overtime.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"fg_pct\",\n      \"description\": \"Team's Field Goal Percentage in a game. It's the ratio of made goals to attempted goals.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"ft_pct\",\n      \"description\": \"Team's Free Throw Percentage in a game. It's the ratio of made free throws to attemtped free throws.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"fg3_pct\",\n      \"description\": \"Team's Three Point Field Goal Percentage in a game. It's the ratio of made 3-pointers to the total number \",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"ast\",\n      \"description\": \"A number of team assists in a game.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"reb\",\n      \"description\": \"A number of team rebounds in a game.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"tov\",\n      \"description\": \"A number of team turnovers in a game.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/nba/tables/teams.json",
    "content": "{\n  \"name\": \"teams\",\n  \"description\": \"This table contains all NBA teams (including dissolved or merged teams).\",\n  \"schemaColor\": \"#91C4F2\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an NBA team.\",\n      \"type\": \"bigint\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Team's name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"nickname\",\n      \"description\": \"Team's nickname.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"city\",\n      \"description\": \"Team's city.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"state\",\n      \"description\": \"Team's state.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"founding_year\",\n      \"description\": \"When the team was founded.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/nba/tables.ts",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\nimport gamesTable from \"./tables/games.json\";\nimport playerGameStatsTable from \"./tables/player_game_stats.json\";\nimport playersTable from \"./tables/players.json\";\nimport teamGameStatsTable from \"./tables/team_game_stats.json\";\nimport teamsTable from \"./tables/teams.json\";\n\nconst tables: TableConfig[] = [\n  gamesTable,\n  playerGameStatsTable,\n  playersTable,\n  teamGameStatsTable,\n  teamsTable\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/config/databases/the-bank-job/edges.json",
    "content": "[\n  {\n    \"source\": \"bank.accounts\",\n    \"sourceKey\": \"id\",\n    \"target\": \"bank.safe_deposit_boxes\",\n    \"targetKey\": \"account_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"bank.vaults\",\n    \"sourceKey\": \"id\",\n    \"target\": \"bank.safe_deposit_boxes\",\n    \"targetKey\": \"vault_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"bank.employees\",\n    \"sourceKey\": \"id\",\n    \"target\": \"bank.event_log\",\n    \"targetKey\": \"params\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"bank.safe_deposit_boxes\",\n    \"sourceKey\": \"id\",\n    \"target\": \"bank.event_log\",\n    \"targetKey\": \"params\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"bank.employees\",\n    \"sourceKey\": \"id\",\n    \"target\": \"bank.authorized_vehicles\",\n    \"targetKey\": \"employee_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"interpol.cases\",\n    \"sourceKey\": \"case_number\",\n    \"target\": \"interpol.cases_crime_types\",\n    \"targetKey\": \"case_number\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"interpol.crime_types\",\n    \"sourceKey\": \"id\",\n    \"target\": \"interpol.cases_crime_types\",\n    \"targetKey\": \"crime_type_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"interpol.cases\",\n    \"sourceKey\": \"case_number\",\n    \"target\": \"interpol.cases_criminals\",\n    \"targetKey\": \"case_number\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"interpol.criminal_aliases\",\n    \"sourceKey\": \"id\",\n    \"target\": \"interpol.cases_criminals\",\n    \"targetKey\": \"criminal_alias_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"interpol.criminals\",\n    \"sourceKey\": \"id\",\n    \"target\": \"interpol.criminal_aliases\",\n    \"targetKey\": \"criminal_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"fake.art_works\",\n    \"sourceKey\": \"id\",\n    \"target\": \"fake.transactions\",\n    \"targetKey\": \"art_work_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"fake.transactions\",\n    \"sourceKey\": \"id\",\n    \"target\": \"fake.transactions\",\n    \"targetKey\": \"prev_transaction_id\",\n    \"relation\": \"hasMany\"\n  },\n  {\n    \"source\": \"penn_station.storage_units\",\n    \"sourceKey\": \"id\",\n    \"target\": \"penn_station.storage_units_log\",\n    \"targetKey\": \"unit_id\",\n    \"relation\": \"hasMany\"\n  }\n]\n"
  },
  {
    "path": "src/config/databases/the-bank-job/schemaColors.json",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\",\n  \"bank\": \"#BEB8EB\",\n  \"interpol\": \"#AFA2FF\",\n  \"sellmycar_com\": \"#75C9C8\",\n  \"nyc_dot\": \"#F6BDD1\",\n  \"penn_station\": \"#FFD791\",\n  \"fake\": \"#FFA07A\"\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tablePositions.json",
    "content": "{\n  \"bank.accounts\": {\n    \"x\": 100,\n    \"y\": 100\n  },\n  \"bank.authorized_vehicles\": {\n    \"x\": 1200,\n    \"y\": 384\n  },\n  \"bank.employees\": {\n    \"x\": 912,\n    \"y\": 384\n  },\n  \"bank.event_log\": {\n    \"x\": 656,\n    \"y\": 368\n  },\n  \"bank.safe_deposit_boxes\": {\n    \"x\": 400,\n    \"y\": 300\n  },\n  \"bank.vaults\": {\n    \"x\": 100,\n    \"y\": 500\n  },\n  \"fake.art_works\": {\n    \"x\": 1120,\n    \"y\": 800\n  },\n  \"fake.transactions\": {\n    \"x\": 864,\n    \"y\": 816\n  },\n  \"interpol.cases\": {\n    \"x\": 100,\n    \"y\": 800\n  },\n  \"interpol.cases_crime_types\": {\n    \"x\": 300,\n    \"y\": 700\n  },\n  \"interpol.cases_criminals\": {\n    \"x\": 300,\n    \"y\": 900\n  },\n  \"interpol.crime_types\": {\n    \"x\": 576,\n    \"y\": 704\n  },\n  \"interpol.criminal_aliases\": {\n    \"x\": 576,\n    \"y\": 896\n  },\n  \"interpol.criminals\": {\n    \"x\": 560,\n    \"y\": 1104\n  },\n  \"nyc_dot.road_camera_events\": {\n    \"x\": 1744,\n    \"y\": 384\n  },\n  \"penn_station.storage_units\": {\n    \"x\": 1072,\n    \"y\": 48\n  },\n  \"penn_station.storage_units_log\": {\n    \"x\": 768,\n    \"y\": 48\n  },\n  \"sellmycar_com.vehicles\": {\n    \"x\": 1472,\n    \"y\": 384\n  }\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/accounts.json",
    "content": "{\n  \"schema\": \"bank\",\n  \"name\": \"accounts\",\n  \"description\": \"Information about the bank accounts.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a bank account.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Account owner's name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"address\",\n      \"description\": \"Account owner's address.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when the account was created.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"closed_at\",\n      \"description\": \"Timestamp when the account was closed.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/art_works.json",
    "content": "{\n  \"schema\": \"fake\",\n  \"name\": \"art_works\",\n  \"description\": \"Fake art works database.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an art work.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"author\",\n      \"description\": \"Author(s) of the art work.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"creation_date\",\n      \"description\": \"Date when the art work was created.\",\n      \"type\": \"date\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/authorized_vehicles.json",
    "content": "{\n  \"schema\": \"bank\",\n  \"name\": \"authorized_vehicles\",\n  \"description\": \"This table contains all vehicles authorized to enter the bank premises.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an authorized vehicle.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"employee_id\",\n      \"description\": \"ID of the employee who is authorized to use this vehicle.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"manufacturer\",\n      \"description\": \"Manufacturer of the vehicle.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"model\",\n      \"description\": \"Model of the vehicle.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"production_year\",\n      \"description\": \"Year when the vehicle was produced.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"color\",\n      \"description\": \"Color of the vehicle.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"plate_number\",\n      \"description\": \"License plate number of the vehicle.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/cases.json",
    "content": "{\n  \"schema\": \"interpol\",\n  \"name\": \"cases\",\n  \"description\": \"Interpol case records.\",\n  \"columns\": [\n    {\n      \"name\": \"case_number\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a case (primary key).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"title\",\n      \"description\": \"Title of the case.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"status\",\n      \"description\": \"Current status of the case.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"country\",\n      \"description\": \"Country where the case was opened.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"opened_at\",\n      \"description\": \"Timestamp when the case was opened.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"closed_at\",\n      \"description\": \"Timestamp when the case was closed.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"resolution\",\n      \"description\": \"Resolution details of the case.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/cases_crime_types.json",
    "content": "{\n  \"schema\": \"interpol\",\n  \"name\": \"cases_crime_types\",\n  \"description\": \"This is a join table between cases and crime types.\",\n  \"columns\": [\n    {\n      \"name\": \"case_number\",\n      \"description\": \"Case number.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"crime_type_id\",\n      \"description\": \"Crime type ID.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/cases_criminals.json",
    "content": "{\n  \"schema\": \"interpol\",\n  \"name\": \"cases_criminals\",\n  \"description\": \"This is a join table between cases and criminal aliases.\",\n  \"columns\": [\n    {\n      \"name\": \"case_number\",\n      \"description\": \"Case number.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"criminal_alias_id\",\n      \"description\": \"Criminal alias ID.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/crime_types.json",
    "content": "{\n  \"schema\": \"interpol\",\n  \"name\": \"crime_types\",\n  \"description\": \"Crime types.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a crime type.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name of the crime type.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"description\",\n      \"description\": \"Description of the crime type.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/criminal_aliases.json",
    "content": "{\n  \"schema\": \"interpol\",\n  \"name\": \"criminal_aliases\",\n  \"description\": \"This table contains all aliases used by criminals.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a criminal alias.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"criminal_id\",\n      \"description\": \"ID of the criminal that this alias belongs to.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"alias\",\n      \"description\": \"Alias name used by the criminal.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/criminals.json",
    "content": "{\n  \"schema\": \"interpol\",\n  \"name\": \"criminals\",\n  \"description\": \"Criminal records.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a criminal.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"full_name\",\n      \"description\": \"Full name of the criminal.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"date_of_birth\",\n      \"description\": \"Date of birth of the criminal.\",\n      \"type\": \"date\"\n    },\n    {\n      \"name\": \"gender\",\n      \"description\": \"Gender of the criminal.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"nationality\",\n      \"description\": \"Nationality of the criminal.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"notes\",\n      \"description\": \"Additional notes about the criminal.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when the criminal record was created.\",\n      \"type\": \"timestamp\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/employees.json",
    "content": "{\n  \"schema\": \"bank\",\n  \"name\": \"employees\",\n  \"description\": \"Bank employee records.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an employee.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name of the employee.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"address\",\n      \"description\": \"Address of the employee.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"age\",\n      \"description\": \"Age of the employee.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"started_at\",\n      \"description\": \"Timestamp when the employee joined the bank.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"terminated_at\",\n      \"description\": \"Timestamp when the employee contractwas terminated.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"title\",\n      \"description\": \"Job title of the employee.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/event_log.json",
    "content": "{\n  \"schema\": \"bank\",\n  \"name\": \"event_log\",\n  \"description\": \"Event log of everything happening at the bank.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of an event log entry.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"event_name\",\n      \"description\": \"Name of the event, like *boring_joke_from_steve_detected*.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp of the event.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"params\",\n      \"description\": \"Parameters of the event in a key-value JSON format.\",\n      \"type\": \"json\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/road_camera_events.json",
    "content": "{\n  \"schema\": \"nyc_dot\",\n  \"name\": \"road_camera_events\",\n  \"description\": \"This table contains all events captured by NYC Department of Transportation road cameras.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a road camera event.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"camera_id\",\n      \"description\": \"ID of the camera that captured the event.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Name or description of the event.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"address\",\n      \"description\": \"Address where the event was captured.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"lat\",\n      \"description\": \"Latitude coordinate of the camera location.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"lon\",\n      \"description\": \"Longitude coordinate of the camera location.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when the event was recorded.\",\n      \"type\": \"timestamp\"\n    },\n    {\n      \"name\": \"params\",\n      \"description\": \"Additional parameters of the event in a key-value JSON format.\",\n      \"type\": \"json\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/safe_deposit_boxes.json",
    "content": "{\n  \"schema\": \"bank\",\n  \"name\": \"safe_deposit_boxes\",\n  \"description\": \"Safe deposit boxes.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a safe deposit box.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"code\",\n      \"description\": \"Unique code of the safe deposit box (what customer sees on the safe deposit box label).\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"width\",\n      \"description\": \"Width of the safe deposit box.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"height\",\n      \"description\": \"Height of the safe deposit box.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"depth\",\n      \"description\": \"Depth of the safe deposit box.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"account_id\",\n      \"description\": \"ID of the bank account that the safe deposit box belongs to.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"vault_id\",\n      \"description\": \"ID of the vault where the safe deposit box is located.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/storage_units.json",
    "content": "{\n  \"schema\": \"penn_station\",\n  \"name\": \"storage_units\",\n  \"description\": \"Storage units at Penn Station.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a storage unit.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"width\",\n      \"description\": \"Width of the storage unit.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"height\",\n      \"description\": \"Height of the storage unit.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"depth\",\n      \"description\": \"Depth of the storage unit.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/storage_units_log.json",
    "content": "{\n  \"schema\": \"penn_station\",\n  \"name\": \"storage_units_log\",\n  \"description\": \"Log entries for storage unit events at Penn Station.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a storage unit log entry.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"unit_id\",\n      \"description\": \"ID of the storage unit.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"name\",\n      \"description\": \"Event name.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"created_at\",\n      \"description\": \"Timestamp when the log entry was created.\",\n      \"type\": \"datetime\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/transactions.json",
    "content": "{\n  \"schema\": \"fake\",\n  \"name\": \"transactions\",\n  \"description\": \"Transactions of fake art works.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a transaction.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"art_work_id\",\n      \"description\": \"ID of the art work involved in the transaction.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"code\",\n      \"description\": \"Unique code of the transaction.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"prev_code\",\n      \"description\": \"Code of the previous transaction in the chain.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"from_party\",\n      \"description\": \"Party that the art work was transferred from (e.g. \\\"John Doe\\\").\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"to_party\",\n      \"description\": \"Party that the art work was transferred to (e.g. \\\"Jane Doe\\\").\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"kind\",\n      \"description\": \"Type or kind of the transaction (e.g. \\\"Purchase\\\").\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"year\",\n      \"description\": \"Year when the transaction occurred.\",\n      \"type\": \"integer\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/vaults.json",
    "content": "{\n  \"schema\": \"bank\",\n  \"name\": \"vaults\",\n  \"description\": \"Bank vaults.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a vault.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"type\",\n      \"description\": \"Type of the vault.\",\n      \"type\": \"text\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables/vehicles.json",
    "content": "{\n  \"schema\": \"sellmycar_com\",\n  \"name\": \"vehicles\",\n  \"description\": \"This table contains all vehicles listed for sale on the fictional sellmycar.com website.\",\n  \"columns\": [\n    {\n      \"name\": \"id\",\n      \"key\": true,\n      \"description\": \"Unique identifier of a vehicle.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"brand\",\n      \"description\": \"Brand of the vehicle.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"model\",\n      \"description\": \"Model of the vehicle.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"production_year\",\n      \"description\": \"Year when the vehicle was produced.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"color\",\n      \"description\": \"Color of the vehicle.\",\n      \"type\": \"text\"\n    },\n    {\n      \"name\": \"number_of_seats\",\n      \"description\": \"Number of seats in the vehicle.\",\n      \"type\": \"integer\"\n    },\n    {\n      \"name\": \"cargo_volume\",\n      \"description\": \"Cargo volume of the vehicle in cubic meters.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"price\",\n      \"description\": \"Price of the vehicle.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"rating\",\n      \"description\": \"Customer rating of the vehicle.\",\n      \"type\": \"numeric\"\n    },\n    {\n      \"name\": \"has_damages\",\n      \"description\": \"Whether the vehicle has any damages.\",\n      \"type\": \"boolean\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/config/databases/the-bank-job/tables.ts",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\nimport accountsTable from \"./tables/accounts.json\";\nimport vaultsTable from \"./tables/vaults.json\";\nimport safeDepositBoxesTable from \"./tables/safe_deposit_boxes.json\";\nimport eventLogTable from \"./tables/event_log.json\";\nimport employeesTable from \"./tables/employees.json\";\nimport authorizedVehiclesTable from \"./tables/authorized_vehicles.json\";\nimport casesTable from \"./tables/cases.json\";\nimport crimeTypesTable from \"./tables/crime_types.json\";\nimport criminalsTable from \"./tables/criminals.json\";\nimport criminalAliasesTable from \"./tables/criminal_aliases.json\";\nimport casesCrimeTypesTable from \"./tables/cases_crime_types.json\";\nimport casesCriminalsTable from \"./tables/cases_criminals.json\";\nimport vehiclesTable from \"./tables/vehicles.json\";\nimport roadCameraEventsTable from \"./tables/road_camera_events.json\";\nimport storageUnitsTable from \"./tables/storage_units.json\";\nimport storageUnitsLogTable from \"./tables/storage_units_log.json\";\nimport artWorksTable from \"./tables/art_works.json\";\nimport transactionsTable from \"./tables/transactions.json\";\n\nconst tables: TableConfig[] = [\n  accountsTable,\n  vaultsTable,\n  safeDepositBoxesTable,\n  eventLogTable,\n  employeesTable,\n  authorizedVehiclesTable,\n  casesTable,\n  crimeTypesTable,\n  criminalsTable,\n  criminalAliasesTable,\n  casesCrimeTypesTable,\n  casesCriminalsTable,\n  vehiclesTable,\n  roadCameraEventsTable,\n  storageUnitsTable,\n  storageUnitsLogTable,\n  artWorksTable,\n  transactionsTable\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/config/databases.json",
    "content": "{\n  \"bindle\": {\n    \"name\": \"Bindle\",\n    \"teaser\": \"Database of a fictional startup called Bindle that's used in the SQL Habit course.\",\n    \"description\": \"This data warehouse belongs to a fictional startup named **Bindle**. Bindle is a web and mobile app for reading books, it has subscription business model. The SQL Habit Course is based on Bindle's story. :book:\\n\\nBindle's data warehouse contains everything needed to run a modern Internet company – web and mobile analytics, marketing data, AB-test data, etc.\"\n  },\n  \"finance\": {\n    \"name\": \"Finance\",\n    \"teaser\": \"Database of financial transactions.\",\n    \"description\": \"This data warehouse simply contains all company's financial transactions. :dollar:\\n\\nIf the company paid for something – there's a **debit** transaction with negative amount. If someone paid the company – it's a **credit** transaction with positive amount. :moneybag:\"\n  },\n  \"ecommerce\": {\n    \"name\": \"E-commerce\",\n    \"teaser\": \"Database of an E-commerce website similar to Amazon.\",\n    \"description\": \"This data warehouse is inspired by an E-commerce website like Amazon. :shopping_cart:\\n\\nOur E-commerce website allows vendors to sell items in multiple categories. Users can add as many items as they want to a cart and then purchase a cart with/without a discount code. Users also can return items and leave reviews.\"\n  },\n  \"nba\": {\n    \"name\": \"NBA\",\n    \"teaser\": \"Database of NBA games and player stats.\",\n    \"description\": \"The **NBA** dataset contains stats of NBA games since 1949. It is regularly updated.\\n\\nThe dataset contains aggregated game stats (**team_game_stats** table) and individual player stats per quarter or overtime period (**player_period_stats**).\\n\\nHave a ball! :basketball:\"\n  },\n  \"live\": {\n    \"name\": \"Live\",\n    \"teaser\": \"Database of a meditation mobile app with live data.\",\n    \"description\": \"The **Live** dataset contains data of a meditation mobile app with subscription business model. :iphone:\\n\\nThe data is updated **daily**. You can run queries to calculate metrics for the past 24h, week, month, etc. and build dashboards as if you were actually working for that company. :bar_chart:\"\n  },\n  \"movies\": {\n    \"name\": \"Movies\",\n    \"teaser\": \"Database of a movie website similar to IMDb.\",\n    \"description\": \"The **Movies** dataset contains data from some of the best films released since the 1990s.\\n\\nIt includes information on actors, directors, and key movie statistics like budget and revenue. The most interesting part is probably the `ratings` table. Please note that the ratings were artificially generated, so the final movie scores only partially correlate with real IMDb data.\\n\\nEnjoy the show! :movie_camera:\"\n  },\n  \"the-bank-job\": {\n    \"name\": \"The Bank Job Quest\",\n    \"teaser\": \"Database behind the Bank Job quest.\",\n    \"description\": \"This is a dataset for [SQL Habit's Bank Job quest](https://www.sqlhabit.com/quests/the-bank-job). Saying more would be a spoiler. :bank:\"\n  }\n}\n"
  },
  {
    "path": "src/config/databases.json.template",
    "content": "{}\n"
  },
  {
    "path": "src/config/databases.ts",
    "content": "import { Databases } from \"../Visualizer/types\";\nimport _databases from \"./databases.json\";\n\nconst databases = _databases as Databases;\n\nexport default databases;\n"
  },
  {
    "path": "src/config/edges.json.template",
    "content": "[]\n"
  },
  {
    "path": "src/config/nodeTypes.ts",
    "content": "import { TableNode } from \"../Visualizer/components\";\n\nexport const nodeTypes = {\n  table: TableNode,\n};\n"
  },
  {
    "path": "src/config/schemaColors.json.template",
    "content": "{\n  \"DEFAULT\": \"#91C4F2\"\n}\n"
  },
  {
    "path": "src/config/tablePositions.json.template",
    "content": "{}\n"
  },
  {
    "path": "src/config/tables.ts.template",
    "content": "import { TableConfig } from \"../../../Visualizer/types\";\n\n%TABLE_FILES%\n\nconst tables: TableConfig[] = [\n%TABLE_NAMES%\n];\n\nexport default tables;\n"
  },
  {
    "path": "src/index.css",
    "content": "@import url(\"https://fonts.googleapis.com/css?family=Muli:400,400i,500,600,700,800&display=swap\");\n\nhtml {\n  box-sizing: border-box;\n}\n\n*, *:before, *:after {\n  box-sizing: inherit;\n}\n\nbody {\n  margin: 0;\n\n  font-family: \"Muli\", -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n    \"Roboto\", \"Oxygen\", \"Ubuntu\", \"Cantarell\",\n    \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n  font-display: swap;\n  color: #1F2933;\n}\n\nbody,\nhtml,\n#root {\n  height: 100%;\n}\n\nh1,\nh2,\nh3,\nh4 {\n  margin-top: 1em;\n  margin-bottom: 0;\n}\n\na {\n  color: inherit;\n  text-decoration: none;\n}\n\na {\n  background:\n    linear-gradient(\n      to right,\n      rgba(31, 41, 51, 1),\n      rgba(31, 41, 51, 1)\n    ),\n    linear-gradient(\n      to right,\n      rgba(255, 0, 0, 1),\n      rgba(255, 0, 180, 1),\n      rgba(33, 134, 235, 1)\n  );\n  background-size: 100% 1px, 0 1px;\n  background-position: 100% 100%, 0 100%;\n  background-repeat: no-repeat;\n  transition: background-size 400ms;\n}\n\na:hover {\n  background-size: 0 1px, 100% 1px;\n}\n\n.emoji {\n  height: 1.1em;\n  width: 1.1em;\n  margin: 0 .05em 0 .1em;\n  vertical-align: -0.1em;\n}\n\n.mb-32 {\n  margin-bottom: 32px;\n}\n"
  },
  {
    "path": "src/index.tsx",
    "content": "import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";\n\nimport App from \"./App\";\n\nimport \"./index.css\";\n\nconst root = (document.getElementById(\"root\") as HTMLElement);\n\nconst basename = process.env.NODE_ENV === \"production\" ? \"/sql_schema_visualizer\" : \"/\";\n\nReactDOM.createRoot(root).render(\n  <React.StrictMode>\n    <BrowserRouter basename={basename}>\n      <App />\n    </BrowserRouter>\n  </React.StrictMode>\n);\n"
  },
  {
    "path": "src/react-app-env.d.ts",
    "content": "/// <reference types=\"react-scripts\" />\n"
  },
  {
    "path": "src/setupTests.ts",
    "content": "// jest-dom adds custom jest matchers for asserting on DOM nodes.\n// allows you to do things like:\n// expect(element).toHaveTextContent(/react/i)\n// learn more: https://github.com/testing-library/jest-dom\nimport \"@testing-library/jest-dom\";\n\n// To make sure that the tests are working, it's important that you are using\n// this implementation of ResizeObserver and DOMMatrixReadOnly\nclass ResizeObserver {\n  callback: globalThis.ResizeObserverCallback;\n\n  constructor(callback: globalThis.ResizeObserverCallback) {\n    this.callback = callback;\n  }\n\n  observe(target: Element) {\n    this.callback([{ target } as globalThis.ResizeObserverEntry], this);\n  }\n\n  unobserve() {}\n\n  disconnect() {}\n}\n\nglobal.ResizeObserver = ResizeObserver;\n\n// we only use the scale of the matrix (`m22`), that's why we can use this simple mock\nclass DOMMatrixReadOnly {\n  m22: number;\n  constructor(transform: string) {\n    const scale = transform?.match(/scale\\(([1-9.])\\)/)?.[1];\n    this.m22 = scale !== undefined ? +scale : 1;\n  }\n}\n// @ts-ignore\nglobal.DOMMatrixReadOnly = DOMMatrixReadOnly;\n\n// used for measuring nodes\nObject.defineProperties(global.HTMLElement.prototype, {\n  offsetHeight: {\n    get() {\n      return parseFloat(this.style.height) || 1;\n    },\n  },\n  offsetWidth: {\n    get() {\n      return parseFloat(this.style.width) || 1;\n    },\n  },\n});\n\n(global.SVGElement as any).prototype.getBBox = () => ({\n  x: 0,\n  y: 0,\n  width: 0,\n  height: 0,\n});\n"
  },
  {
    "path": "tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"target\": \"es5\",\n    \"lib\": [\n      \"dom\",\n      \"dom.iterable\",\n      \"esnext\"\n    ],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"allowSyntheticDefaultImports\": true,\n    \"strict\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"noFallthroughCasesInSwitch\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"node\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"noEmit\": true,\n    \"jsx\": \"react-jsx\"\n  },\n  \"include\": [\n    \"src\"\n  ],\n  \"exclude\": [\n    \"**/*.ts.template\",\n    \"**/*.json.template\"\n  ]\n}\n"
  }
]