diff --git a/.github/workflows/ci-workflow.yml b/.github/workflows/ci-workflow.yml
index 0a039c3..8926c40 100644
--- a/.github/workflows/ci-workflow.yml
+++ b/.github/workflows/ci-workflow.yml
@@ -7,17 +7,22 @@ jobs:
name: Build and run tests
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
with:
lfs: true
- - uses: actions/setup-java@v1
+
+ - uses: actions/setup-java@v3
with:
- java-version: '17'
+ distribution: 'zulu'
+ java-version: '21'
- name: Build && Run
run: |
deployer_url="https://raw.githubusercontent.com/Insality/defold-deployer/1/deployer.sh"
curl -s ${deployer_url} | bash -s lbd --headless --settings ./test/test.ini
- - name: Upload test report
- run: bash <(curl -s https://codecov.io/bash)
\ No newline at end of file
+ - name: Upload coverage reports to Codecov
+ uses: codecov/codecov-action@v4.0.1
+ with:
+ token: ${{ secrets.CODECOV_TOKEN }}
+ slug: insality/druid
diff --git a/.gitignore b/.gitignore
index 9389f94..6dced02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,4 +15,5 @@ deployer_version_settings.txt
bob*.jar
manifest.private.der
manifest.public.der
+/.editor_settings
/.deployer_cache
diff --git a/.luacov b/.luacov
new file mode 100644
index 0000000..d94b4d2
--- /dev/null
+++ b/.luacov
@@ -0,0 +1,76 @@
+local reporter = require("luacov.reporter.defold")
+
+--- Default values for configuration options.
+-- For project specific configuration create '.luacov' file in your project
+-- folder. It should be a Lua script setting various options as globals
+-- or returning table of options.
+-- @class module
+-- @name deftest.coverage.configuration
+return {
+
+ --- Reporter class to use when creating a report. Default: DefaultReporter from reporter.lua
+ reporter = reporter,
+
+ --- Filename to store collected stats. Default: "luacov.stats.out".
+ statsfile = "luacov.stats.out",
+
+ --- Filename to store report. Default: "luacov.report.out".
+ reportfile = "luacov.report.out",
+
+ --- Enable saving coverage data after every `savestepsize` lines?
+ -- Setting this flag to `true` in config is equivalent to running LuaCov
+ -- using `luacov.tick` module. Default: false.
+ tick = false,
+
+ --- Stats file updating frequency for `luacov.tick`.
+ -- The lower this value - the more frequently results will be written out to the stats file.
+ -- You may want to reduce this value (to, for example, 2) to avoid losing coverage data in
+ -- case your program may terminate without triggering luacov exit hooks that are supposed
+ -- to save the data. Default: 100.
+ savestepsize = 100,
+
+ --- Run reporter on completion? Default: true.
+ runreport = true,
+
+ --- Delete stats file after reporting? Default: false.
+ deletestats = true,
+
+ --- Process Lua code loaded from raw strings?
+ -- That is, when the 'source' field in the debug info
+ -- does not start with '@'. Default: true.
+ codefromstrings = true,
+
+ --- Lua patterns for files to include when reporting.
+ -- All will be included if nothing is listed.
+ -- Do not include the '.lua' extension. Path separator is always '/'.
+ -- Overruled by `exclude`.
+ -- @usage
+ -- include = {
+ -- "mymodule$", -- the main module
+ -- "mymodule%/.+$", -- and everything namespaced underneath it
+ -- }
+ include = {},
+
+ --- Lua patterns for files to exclude when reporting.
+ -- Nothing will be excluded if nothing is listed.
+ -- Do not include the '.lua' extension. Path separator is always '/'.
+ -- Overrules `include`.
+ exclude = {
+ "^test%/.+$",
+ "^druid/system/utf8.lua$",
+ },
+
+ --- Table mapping names of modules to be included to their filenames.
+ -- Has no effect if empty.
+ -- Real filenames mentioned here will be used for reporting
+ -- even if the modules have been installed elsewhere.
+ -- Module name can contain '*' wildcard to match groups of modules,
+ -- in this case corresponding path will be used as a prefix directory
+ -- where modules from the group are located.
+ -- @usage
+ -- modules = {
+ -- ["some_rock"] = "src/some_rock.lua",
+ -- ["some_rock.*"] = "src"
+ -- }
+ modules = {},
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 28a4386..277b66a 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -29,14 +29,13 @@
"utils/annotations_manual.lua"
],
"Lua.runtime.pathStrict": true,
- "Lua.diagnostics.libraryFiles": "Enable",
+ "Lua.diagnostics.libraryFiles": "Disable",
"Lua.runtime.version": "Lua 5.1",
"Lua.workspace.library": [
- "~/Library/Application Support/Code/User/globalStorage/astronachos.defold",
- "~/Library/Application Support/Code/User/workspaceStorage/72e25b7e0fdc873ee6f7baa61edbd6b1/astronachos.defold",
- "~/Library/Application Support/Code/User/workspaceStorage/1446075a23c89451a63f0e82b2291def/astronachos.defold"
+ "~/Library/Application Support/Cursor/User/globalStorage/astronachos.defold",
+ "~/Library/Application Support/Cursor/User/workspaceStorage/1446075a23c89451a63f0e82b2291def/astronachos.defold"
],
"files.exclude": {
"**/*.gui": true
}
-}
\ No newline at end of file
+}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..d3415e9
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,116 @@
+# Contributing to Druid
+
+Thank you for your interest in contributing to **Druid**! We welcome contributions of all sizes - even small fixes make a big difference.
+
+## Table of Contents
+- [How to Report Issues](#how-to-report-issues)
+- [Small Fixes](#small-fixes)
+- [Larger Contributions](#larger-contributions)
+- [Documentation Updates](#documentation-updates)
+- [Adding or Updating Examples](#adding-or-updating-examples)
+- [Unit Tests](#unit-tests)
+
+## How to Report Issues
+
+Found a bug? Please report it to our [issue tracker](https://github.com/druid-js/druid/issues) with:
+- A clear description of the problem
+- Steps to reproduce the issue
+- Expected vs. actual behavior
+- Your environment (Defold version, OS, etc.)
+
+## Small Fixes
+
+**We highly encourage small improvements!** For bug fixes, typo corrections, or minor improvements, you can create a pull request directly to the `master` or `develop` branch.
+
+When making these contributions, you **must**:
+
+1. Update the patch version number in both:
+ - `README.md` file (in the dependency section)
+ - `game.project` file (in the project section)
+2. Add your changes to `wiki/changelog.md`
+3. These steps are required to properly tag a new release
+
+**Example of version updates:**
+
+For README.md:
+```
+# Before
+https://github.com/Insality/druid/archive/refs/tags/1.1.0.zip
+
+# After (patch version increased)
+https://github.com/Insality/druid/archive/refs/tags/1.1.1.zip
+```
+
+For game.project:
+```
+# Before
+[project]
+title = Druid
+version = 1.1.0
+
+# After (patch version increased)
+[project]
+title = Druid
+version = 1.1.1
+```
+
+## Larger Contributions
+
+For new features, major improvements, or complex fixes:
+
+1. Fork the repository
+2. Create a branch from `develop`
+3. Make your changes
+4. Ensure code follows project style guidelines
+5. Test your changes thoroughly
+6. Submit a pull request to the `develop` branch
+7. Include references to any related issues (e.g., "Fixes #123")
+
+Please keep changes focused on addressing specific issues or features, and maintain the existing code style.
+
+## Documentation Updates
+
+To improve documentation:
+
+1. Fork the repository
+2. Create a branch for your changes
+3. Update the relevant documentation files
+4. Submit a pull request to the `master` or `develop` branch
+
+Clear, accurate documentation helps everyone, so documentation improvements are always appreciated!
+
+## Adding or Updating Examples
+
+Examples are vital for helping users understand how to use Druid. Each example should include:
+
+1. A GUI scene with a Druid widget
+2. Information about the example in `examples_list.lua`
+
+To add a new example:
+
+1. Create a new GUI file in the `/example/examples` directory
+2. Add the example information to `examples_list.lua`
+3. Include your GUI template in `/example/druid.gui`
+ - Place it inside the proper hierarchy: `root -> container_center -> examples -> widgets`
+4. Test your example by running the game
+5. Submit a pull request to the `develop` branch
+
+## Unit Tests
+
+Unit tests help ensure Druid works correctly. If you're facing an issue, unit tests can be a good starting point to understand or reproduce it.
+
+All tests are located in the `/test/tests` directory.
+
+To run tests:
+1. Set the bootstrap collection to `/test/test.collection`
+2. Run the project
+
+To submit new or updated tests:
+1. Create a branch for your changes
+2. Add or modify tests
+3. Verify your tests pass
+4. Submit a pull request to the `develop` branch
+
+---
+
+Thank you for contributing to making Druid better for everyone! ❤️
diff --git a/LICENSE b/LICENSE
index da6215f..3ecc9b3 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2021 Maxim Tuprikov
+Copyright (c) 2025 Maxim Tuprikov
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/README.md b/README.md
index dad3928..573830b 100644
--- a/README.md
+++ b/README.md
@@ -7,166 +7,167 @@
[](https://github.com/sponsors/insality) [](https://ko-fi.com/insality) [](https://www.buymeacoffee.com/insality)
-**Druid** - powerful **Defold** component UI framework that empowers developers to create stunning and customizable GUIs by leveraging a wide range of embedded components or effortlessly designing their own game-specific components.
+**Druid** - a powerful, flexible and easy to use **Defold** component UI framework. Contains a wide range of UI components that you can use to create a beautiful, responsive and customizable GUIs. Provides a powerful way to create, compose and manage your custom components and scenes.
## Druid Example
-Check the [**HTML5 version**](https://insality.github.io/druid/druid/) of the **Druid** example app.
+Check the [**HTML5 version**](https://insality.github.io/druid/) of the **Druid** example app.
In this example you can inspect a variety of **Druid** components and see how they work. Each example page provides a direct link to the corresponding example code, making it easier for you to understand how to use **Druid**.
+## Features
+
+- **Components Rich** - Provides a extensive set of components, from basic buttons to infinity data lists and rich texts
+- **Customizable** - You can customize components appearance and behaviour with their API and styles
+- **Widgets** - Powerful way to create your own reusable components
+- **Input Handling** - Handles input in a stack-based manner and manage input priority
+- **Event Based** - Uses [Defold Event](https://github.com/Insality/defold-event) for components callbacks and communication between components
+
+## Quick Links
+
+- [Basic Usage](wiki/basic_usage.md)
+- [Quick API Reference](api/quick_api_reference.md)
+- [List of Components](#druid-components)
+- [Contributors](#contributors)
## Setup
-### Dependency
+### [Dependency](https://defold.com/manuals/libraries/#setting-up-library-dependencies)
-To integrate the **Druid** extension into your own project, add this project as a [dependency](https://www.defold.com/manuals/libraries/) in your **Defold** game. Open your `game.project` file and add the following line to the dependencies field under the project section:
+Open your `game.project` file and add the following lines to the dependencies field under the project section:
-**Druid v1.0.1**
-> [https://github.com/Insality/druid/archive/refs/tags/1.0.1.zip](https://github.com/Insality/druid/archive/refs/tags/1.0.1.zip)
+**[Druid](https://github.com/Insality/druid/)**
+
+```
+https://github.com/Insality/druid/archive/refs/tags/1.1.0.zip
+```
+
+**[Defold Event](https://github.com/Insality/defold-event)**
+
+```
+https://github.com/Insality/defold-event/archive/refs/tags/11.zip
+```
+
+After that, select `Project ▸ Fetch Libraries` to update [library dependencies]((https://defold.com/manuals/libraries/#setting-up-library-dependencies)). This happens automatically whenever you open a project so you will only need to do this if the dependencies change without re-opening the project.
Here is a list of [all releases](https://github.com/Insality/druid/releases).
### Library Size
-> **Note:** The library size is calculated based on the build report per platform. The extended components are exlcuded, which are including only on demand.
+> **Note:** The library size is calculated based on the build report per platform. Full size contains all components, they can be stripped out in the build process if you don't need them.
-| Platform | Library Size |
+| Platform | Full Size |
| ---------------- | ------------- |
-| HTML5 | **38.00 KB** |
-| Desktop / Mobile | **65.74 KB** |
+| HTML5 | **84.52 KB** |
+| Desktop / Mobile | **141.03 KB** |
### Input Bindings
-**Druid** utilizes the `/builtins/input/all.input_binding` input bindings. Either use this file for your project by setting the `Runtime -> Input -> Game Binding` field in the `game.project` input section to `/builtins/input/all.input_binding`, or add the specific bindings you need to your game's input binding file. For custom input bindings, refer to the Input Binding section in the [Advanced Setup](https://github.com/Insality/druid/blob/master/docs_md/advanced-setup.md#input-bindings).
+**Druid** utilizes the `/builtins/input/all.input_binding` input bindings. Either use this file for your project by setting the `Runtime -> Input -> Game Binding` field in the `game.project` input section to `/builtins/input/all.input_binding`, or add the specific bindings you need to your game's input binding file. For custom input bindings, refer to the Input Binding section in the [Advanced Setup](https://github.com/Insality/druid/blob/master/wiki/advanced-setup.md#input-bindings).
## Usage
### Basic usage
-To utilize **Druid**, begin by creating a **Druid** instance to instantiate components and include the main functions of **Druid**: *update*, *final*, *on_message*, and *on_input*.
-
-When using **Druid** components, provide a node name string as an argument. If you don't have the node name available in some cases, you can pass `gui.get_node()` instead.
-
-All **Druid** and component methods are invoked using the `:` operator, such as `self.druid:new_button()`.
+The basic template for `gui_script` is:
```lua
local druid = require("druid.druid")
--- All component callbacks pass "self" as first argument
--- This "self" is a context data passed in `druid.new(context)`
-local function on_button_callback(self)
- print("The button clicked!")
-end
-
function init(self)
self.druid = druid.new(self)
- self.button = self.druid:new_button("button_node_name", on_button_callback)
end
--- "final" is a required function for the correct Druid workflow
function final(self)
self.druid:final()
end
--- "update" is used in progress bar, scroll, and timer basic components
function update(self, dt)
self.druid:update(dt)
end
--- "on_message" is used for specific Druid events, like language change or layout change
function on_message(self, message_id, message, sender)
self.druid:on_message(message_id, message, sender)
end
--- "on_input" is used in almost all Druid components
--- The return value from `druid:on_input` is required!
function on_input(self, action_id, action)
return self.druid:on_input(action_id, action)
end
-
```
-For all **Druid** instance functions, [see here](https://insality.github.io/druid/modules/DruidInstance.html).
+Read the [Basic Usage](wiki/basic_usage.md) to learn how to use **Druid**, how to create your own components and how to use widgets.
### API Documentation
-**Druid** offers a wide range of components and functions. To facilitate usage, **Druid** provides comprehensive API documentation with examples and annotations.
+Best start is from the [Quick API Reference](api/quick_api_reference.md)
-Start reading the API documentation [here](https://insality.github.io/druid/modules/Druid.html).
+With next quick links:
-**Druid** provide the *EmmyLua* annotations to add autocomplete inside your IDE. Check [EmmyLua Setup here](docs_md/advanced-setup.md#emmylua-annotations).
-
-
-### Create custom components
-
-If you want to create your own components, refer to the [Create Custom Components](docs_md/02-creating_custom_components.md) section in the documentation.
-
-Custom components are one of the most powerful features of **Druid**. They allow you to create your own components effortlessly and utilize them in your game.
+- [Druid Instance](api/druid_instance_api.md) - **Druid** instance returned from `druid.new(self)`
+- [Helper](api/druid_helper_api.md) - A lot of useful functions
+- [Widgets](wiki/widgets.md) - About widgets and how to use them
## Druid Components
Here is full **Druid** components list.
-### Basic Components
-
-> Basic components always included in the build and available for use.
+### Components
| Name | Description | Example |
Preview
|
|------|-------------|---------|---------|
-| **[Button](https://insality.github.io/druid/modules/Button.html)** | Logic over GUI Node. Handle the user click interactions: click, long click, double click, etc. | [Button Example](https://insality.github.io/druid/druid/?example=general_buttons) |
|
-| **[Text](https://insality.github.io/druid/modules/Text.html)** | Logic over GUI Text. By default Text component fit the text inside text node size area with different adjust modes. | [Text Example](https://insality.github.io/druid/druid/?example=texts_general) |
|
-| **[Scroll](https://insality.github.io/druid/modules/Scroll.html)** | Logic over two GUI Nodes: input and content. Provides basic behaviour for scrollable content. | [Scroll Example](https://insality.github.io/druid/druid/?example=general_scroll) |
|
-| **[Blocker](https://insality.github.io/druid/modules/Blocker.html)** | Logic over GUI Node. Don't pass any user input below node area size. | [Blocker Example](https://insality.github.io/druid/druid/?example=timer) |
|
-| **[Back Handler](https://insality.github.io/druid/modules/BackHandler.html)** | Call callback on user "Back" action. It's a Android back button or keyboard backspace key | [Back Handler Example](https://insality.github.io/druid/druid/?example=timer) |
|
-| **[Static Grid](https://insality.github.io/druid/modules/StaticGrid.html)** | Logic over GUI Node. Component to manage node positions with all equal node sizes. | [Static Gid Example](https://insality.github.io/druid/druid/?example=general_grid) |
|
-| **[Hover](https://insality.github.io/druid/modules/Hover.html)** | Logic over GUI Node. Handle hover action over node. For both: mobile touch and mouse cursor. | [Hover Example](https://insality.github.io/druid/druid/?example=timer) |
|
-| **[Swipe](https://insality.github.io/druid/modules/Swipe.html)** | Logic over GUI Node. Handle swipe gestures over node. | [Swipe Example](https://insality.github.io/druid/druid/?example=general_swipe) |
|
-| **[Drag](https://insality.github.io/druid/modules/Drag.html)** | Logic over GUI Node. Handle drag input actions. Can be useful to make on screen controlls. | [Drag Example](https://insality.github.io/druid/druid/?example=general_drag) |
|
-
-
-### Extended components
-
-> Extended components before usage should be registered in **Druid** with [`druid.register()`](https://insality.github.io/druid/modules/Druid.html#druid.register) function.
-> On usage of unregistered **Druid** component the next log will be shown in the console.
-```
-local data_list = require("druid.extended.data_list")
-druid.register("data_list", data_list)
-```
-
-| Name | Description | Example | Preview
|
-|------|-------------|---------|---------|
-| **[Data List](https://insality.github.io/druid/modules/DataList.html)** | Logic over Scroll and Grid components. Create only visible GUI nodes or components to make "infinity" scroll befaviour | [Data List Example](https://insality.github.io/druid/druid/?example=general_data_list) |
|
-| **[Input](https://insality.github.io/druid/modules/Input.html)** | Logic over GUI Node and GUI Text (or Text component). Provides basic user text input. | [Input Example](https://insality.github.io/druid/druid/?example=general_input) |
|
-| **[Lang text](https://insality.github.io/druid/modules/LangText.html)** | Logic over Text component to handle localization. Can be translated in real-time with `druid.on_language_change` | [Lang Text Example](https://insality.github.io/druid/druid/?example=timer) |
|
-| **[Progress](https://insality.github.io/druid/modules/Progress.html)** | Logic over GUI Node. Handle node size and scale to handle progress node size. | [Progress Example](https://insality.github.io/druid/druid/?example=general_progress_bar) |
|
-| **[Slider](https://insality.github.io/druid/modules/Slider.html)** | Logic over GUI Node. Handle draggable node with position restrictions. | [Slider Example](https://insality.github.io/druid/druid/?example=general_sliders) |
|
-| **[Timer](https://insality.github.io/druid/modules/Timer.html)** | Logic over GUI Text. Handle basic timer functions. | [Timer Example](https://insality.github.io/druid/druid/?example=timer) |
|
-| **[Hotkey](https://insality.github.io/druid/modules/Hotkey.html)** | Allow to set callbacks for keyboard hotkeys with key modificators. | [Hotkey Example](https://insality.github.io/druid/druid/?example=general_hotkey) |
|
-| **[Layout](https://insality.github.io/druid/modules/Layout.html)** | Logic over GUI Node. Arrange nodes inside layout node with margin/paddings settings. | [Layout Example](https://insality.github.io/druid/druid/?example=general_layout) |
|
-| **[Rich Input](https://insality.github.io/druid/modules/RichInput.html)** | Logic over GUI Node and GUI Text (or Text component). Provides rich text input with different styles and text formatting. | [Rich Input Example](https://insality.github.io/druid/druid/?example=general_rich_input) |
|
-| **[Rich Text](https://insality.github.io/druid/modules/RichText.html)** | Logic over GUI Text. Provides rich text formatting with different styles and text formatting. | [Rich Text Example](https://insality.github.io/druid/druid/?example=general_rich_text) |
|
-
-For a complete overview, see: **_[components.md](docs_md/01-components.md)_**.
+| **[Button](/api/components/base/button_api.md)** | Logic over GUI Node. Handle the user click interactions: click, long click, double click, etc. | [Button Example](https://insality.github.io/druid/?example=ui_example_basic_button) |
|
+| **[Text](/api/components/base/text_api.md)** | Logic over GUI Text. By default Text component fit the text inside text node size area with different adjust modes. | [Text Example](https://insality.github.io/druid/?example=ui_example_basic_text) |
|
+| **[Scroll](/api/components/base/scroll_api.md)** | Logic over two GUI Nodes: input and content. Provides basic behaviour for scrollable content. | [Scroll Example](https://insality.github.io/druid/?example=ui_example_basic_scroll) |
|
+| **[Blocker](/api/components/base/blocker_api.md)** | Logic over GUI Node. Don't pass any user input below node area size. | [Blocker Example](https://insality.github.io/druid/?example=ui_example_basic_blocker) |
|
+| **[Back Handler](/api/components/base/back_handler_api.md)** | Call callback on user "Back" action. It's a Android back button or keyboard backspace key | [Back Handler Example](https://insality.github.io/druid/?example=ui_example_basic_back_handler) |
|
+| **[Static Grid](/api/components/base/static_grid_api.md)** | Logic over GUI Node. Component to manage node positions with all equal node sizes. | [Static Gid Example](https://insality.github.io/druid/?example=ui_example_basic_grid) |
|
+| **[Hover](/api/components/base/hover_api.md)** | Logic over GUI Node. Handle hover action over node. For both: mobile touch and mouse cursor. | [Hover Example](https://insality.github.io/druid/?example=ui_example_basic_hover) |
|
+| **[Swipe](/api/components/extended/swipe_api.md)** | Logic over GUI Node. Handle swipe gestures over node. | [Swipe Example](https://insality.github.io/druid/?example=ui_example_basic_swipe) |
|
+| **[Drag](/api/components/base/drag_api.md)** | Logic over GUI Node. Handle drag input actions. Can be useful to make on screen controlls. | [Drag Example](https://insality.github.io/druid/?example=ui_example_basic_drag) |
|
+| **[Data List](/api/components/extended/data_list_api.md)** | Logic over Scroll and Grid components. Create only visible GUI nodes or components to make "infinity" scroll befaviour | [Data List Example](https://insality.github.io/druid/?example=ui_example_data_list_basic) |
|
+| **[Input](/api/components/extended/input_api.md)** | Logic over GUI Node and GUI Text (or Text component). Provides basic user text input. | [Input Example](https://insality.github.io/druid/?example=ui_example_basic_input) |
|
+| **[Lang text](/api/components/extended/lang_text_api.md)** | Logic over Text component to handle localization. Can be translated in real-time with `druid.on_language_change` | [Lang Text Example](https://insality.github.io/druid/?example=ui_example_window_language) |
|
+| **[Progress](/api/components/extended/progress_api.md)** | Logic over GUI Node. Handle node size and scale to handle progress node size. | [Progress Example](https://insality.github.io/druid/?example=ui_example_basic_progress_bar) |
|
+| **[Slider](/api/components/extended/slider_api.md)** | Logic over GUI Node. Handle draggable node with position restrictions. | [Slider Example](https://insality.github.io/druid/?example=ui_example_basic_slider) |
|
+| **[Timer](/api/components/extended/timer_api.md)** | Logic over GUI Text. Handle basic timer functions. | [Timer Example](https://insality.github.io/druid/?example=ui_example_basic_timer) |
|
+| **[Hotkey](/api/components/extended/hotkey_api.md)** | Allow to set callbacks for keyboard hotkeys with key modificators. | [Hotkey Example](https://insality.github.io/druid/?example=ui_example_basic_hotkey) |
|
+| **[Layout](/api/components/extended/layout_api.md)** | Logic over GUI Node. Arrange nodes inside layout node with margin/paddings settings. | [Layout Example](https://insality.github.io/druid/?example=ui_example_layout_basic) |
|
+| **[Rich Input](/api/components/custom/rich_input_api.md)** | Logic over GUI Node and GUI Text (or Text component). Provides rich text input with different styles and text formatting. | [Rich Input Example](https://insality.github.io/druid/?example=ui_example_basic_rich_input) |
|
+| **[Rich Text](/api/components/custom/rich_text_api.md)** | Logic over GUI Text. Provides rich text formatting with different styles and text formatting. | [Rich Text Example](https://insality.github.io/druid/?example=ui_example_basic_rich_text) |
|
## Druid Events
-Any **Druid** components as callbacks use [Druid Events](https://insality.github.io/druid/modules/DruidEvent.html). In component API ([button example](https://insality.github.io/druid/modules/Button.html#on_click)) pointed list of component events. You can manually subscribe to these events with the following API:
+All **Druid** components using [Defold Event](https://github.com/Insality/defold-event) for components callbacks. In component API ([button example](/api/components/base/button_api.md#fields)) pointed list of component events. You can manually subscribe to these events with the following API:
- **event:subscribe**(callback)
- **event:unsubscribe**(callback)
-- **event:clear**()
-
You can subscribe several callbacks to a single event.
+Examples:
+
+```lua
+button.on_click:subscribe(function(self, args)
+ print("Button clicked!")
+end)
+
+scroll.on_scroll:subscribe(function(self, position)
+ print("Scroll scrolled!")
+end)
+
+input.on_input_unselect:subscribe(function(self, text)
+ print("User enter input:", text)
+end)
+```
+
+
## Details
- **Druid** processes input in a stack-based manner. The most recently created button will be checked first. Create your input GUI components from back to front.
@@ -174,49 +175,56 @@ You can subscribe several callbacks to a single event.
- Druid automatically calls `acquire_input_focus` if you have input components. Therefore, manual calling of `acquire_input_focus` is not required.
- When deleting a **Druid** component node, make sure to remove it using `druid:remove(component)`.
-
## Examples
-Try the [**HTML5 version**](https://insality.github.io/druid/druid/) of the **Druid** example app.
+Try the [**HTML5 version**](https://insality.github.io/druid/) of the **Druid** example app.
Each example page provides a direct link to the corresponding example code, making it easier for you to understand how to use **Druid**.
Or refer directly to the [**example folder**](https://github.com/Insality/druid/tree/develop/example) for code examples demonstrating how to use **Druid**.
+
## Documentation
-To better understand **Druid**, read the following documentation:
-- [How To GUI in Defold](https://forum.defold.com/t/how-to-gui-in-defold/73256)
-- [Druid components](docs_md/01-components.md)
-- [Create custom components](docs_md/02-creating_custom_components.md)
-- [See FAQ article](docs_md/FAQ.md)
-- [Druid styles](docs_md/03-styles.md)
+You can find the full **Druid** functions at [Quick API Reference](api/quick_api_reference.md)
-You can find the full **Druid** [documentation here](https://insality.github.io/druid/modules/Druid.html).
+To better understand **Druid**, read the following documentation:
+
+- [How To GUI in Defold](https://forum.defold.com/t/how-to-gui-in-defold/73256)
+- [Widgets](wiki/widgets.md)
+- [Druid styles](wiki/styles.md)
+- [Advanced Setup](wiki/advanced-setup.md)
+- [Optimize Druid Size](wiki/optimize_druid_size.md)
+- [Creating Custom Components](wiki/creating_custom_components.md)
+- [Changelog](wiki/changelog.md)
## Licenses
-- Developed and supported by [Insality](https://github.com/Insality)
-- Original idea by [AGulev](https://github.com/AGulev)
-- Assets from [Kenney](http://www.kenney.nl/)
+This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Issues and suggestions
-If you have any issues, questions or suggestions please [create an issue](https://github.com/Insality/druid/issues) or contact me: [insality@gmail.com](mailto:insality@gmail.com)
+If you have any issues, questions or suggestions please [create an issue](https://github.com/Insality/druid/issues)
## History
-For a complete history of the development of **Druid**, please check the [changelog](docs_md/changelog.md).
+For a complete history of the development of **Druid**, please check the [changelog](wiki/changelog.md).
-## 👏 Contributors
+## Contributors
+
+Original Druid idea by [AGulev](https://github.com/AGulev)
+
+Special thanks to all the contributors who have helped make **Druid** better!
+Read the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information.
+
## ❤️ Support project ❤️
diff --git a/api/components/base/back_handler_api.md b/api/components/base/back_handler_api.md
new file mode 100644
index 0000000..60804fd
--- /dev/null
+++ b/api/components/base/back_handler_api.md
@@ -0,0 +1,45 @@
+# druid.back_handler API
+
+> at /druid/base/back_handler.lua
+
+Component to handle back button. It handles Android back button and Backspace key.
+
+### Setup
+Create back handler component with druid: `druid:new_back_handler(callback)`
+
+### Notes
+- Key triggers in `input.binding` should be setup for correct working
+- It uses a key_back and key_backspace action ids
+
+## Functions
+
+- [init](#init)
+
+## Fields
+
+- [on_back](#on_back)
+- [params](#params)
+
+
+
+### init
+
+---
+```lua
+back_handler:init([callback], [params])
+```
+
+The Back Handler constructor
+
+- **Parameters:**
+ - `[callback]` *(function|nil)*: The callback to call when the back handler is triggered
+ - `[params]` *(any)*: Custom args to pass in the callback
+
+
+## Fields
+
+- **on_back** (_event_): fun(self: druid.back_handler, params: any?) Trigger on back handler action
+
+
+- **params** (_any_): Custom args to pass in the callback
+
diff --git a/api/components/base/blocker_api.md b/api/components/base/blocker_api.md
new file mode 100644
index 0000000..7068f05
--- /dev/null
+++ b/api/components/base/blocker_api.md
@@ -0,0 +1,70 @@
+# druid.blocker API
+
+> at /druid/base/blocker.lua
+
+Druid component for block input. Use it to block input in special zone.
+
+### Setup
+Create blocker component with druid: `druid:new_blocker(node_name)`
+
+### Notes
+- Blocker can be used to create safe zones, where you have big buttons
+- Blocker will capture all input events that hit the node, preventing them from reaching other components
+- Blocker works placed as usual component in stack, so any other component can be placed on top of it and will work as usual
+
+## Functions
+
+- [init](#init)
+- [set_enabled](#set_enabled)
+- [is_enabled](#is_enabled)
+
+## Fields
+
+- [node](#node)
+
+
+
+### init
+
+---
+```lua
+blocker:init(node)
+```
+
+The Blocker constructor
+
+- **Parameters:**
+ - `node` *(string|node)*: The node to use as a blocker
+
+### set_enabled
+
+---
+```lua
+blocker:set_enabled(state)
+```
+
+Set blocker enabled state
+
+- **Parameters:**
+ - `state` *(boolean)*: The new enabled state
+
+- **Returns:**
+ - `self` *(druid.blocker)*: The blocker instance
+
+### is_enabled
+
+---
+```lua
+blocker:is_enabled()
+```
+
+Get blocker enabled state
+
+- **Returns:**
+ - `is_enabled` *(boolean)*: True if the blocker is enabled
+
+
+## Fields
+
+- **node** (_node_): The node that will block input
+
diff --git a/api/components/base/button_api.md b/api/components/base/button_api.md
new file mode 100644
index 0000000..a3034be
--- /dev/null
+++ b/api/components/base/button_api.md
@@ -0,0 +1,271 @@
+# druid.button API
+
+> at /druid/base/button.lua
+
+Basic Druid input component. Handle input on node and provide different callbacks on touch events.
+
+### Setup
+Create button with druid: `button = druid:new_button(node_name, callback, [params], [animation_node])`
+Where node_name is name of node from GUI scene. You can use `node_name` as input trigger zone and point another node for animation via `animation_node`
+
+### Notes
+- Button callback have next params: (self, params, button_instance)
+- - **self** - Druid self context
+- - **params** - Additional params, specified on button creating
+- - **button_instance** - button itself
+- You can set _params_ on button callback on button creating: `druid:new_button("node_name", callback, params)`.
+- Button have several events like on_click, on_repeated_click, on_long_click, on_hold_click, on_double_click
+- Click event will not trigger if between pressed and released state cursor was outside of node zone
+- Button can have key trigger to use them by key: `button:set_key_trigger`
+-
+
+## Functions
+
+- [init](#init)
+- [set_animations_disabled](#set_animations_disabled)
+- [set_enabled](#set_enabled)
+- [is_enabled](#is_enabled)
+- [set_click_zone](#set_click_zone)
+- [set_key_trigger](#set_key_trigger)
+- [get_key_trigger](#get_key_trigger)
+- [set_check_function](#set_check_function)
+- [set_web_user_interaction](#set_web_user_interaction)
+
+## Fields
+
+- [on_click](#on_click)
+- [on_pressed](#on_pressed)
+- [on_repeated_click](#on_repeated_click)
+- [on_long_click](#on_long_click)
+- [on_double_click](#on_double_click)
+- [on_hold_callback](#on_hold_callback)
+- [on_click_outside](#on_click_outside)
+- [node](#node)
+- [node_id](#node_id)
+- [anim_node](#anim_node)
+- [params](#params)
+- [hover](#hover)
+- [click_zone](#click_zone)
+- [start_scale](#start_scale)
+- [start_pos](#start_pos)
+- [disabled](#disabled)
+- [key_trigger](#key_trigger)
+- [style](#style)
+- [druid](#druid)
+- [is_repeated_started](#is_repeated_started)
+- [last_pressed_time](#last_pressed_time)
+- [last_released_time](#last_released_time)
+- [click_in_row](#click_in_row)
+- [can_action](#can_action)
+
+
+
+### init
+
+---
+```lua
+button:init(node_or_node_id, [callback], [custom_args], [anim_node])
+```
+
+The constructor for the button component
+
+- **Parameters:**
+ - `node_or_node_id` *(string|node)*: Node name or GUI Node itself
+ - `[callback]` *(fun()|nil)*: Callback on button click
+ - `[custom_args]` *(any)*: Custom args for any Button event, will be passed to callbacks
+ - `[anim_node]` *(string|node|nil)*: Node to animate instead of trigger node, useful for animating small icons on big panels
+
+### set_animations_disabled
+
+---
+```lua
+button:set_animations_disabled()
+```
+
+Remove default button style animations
+
+- **Returns:**
+ - `self` *(druid.button)*: The current button instance
+
+### set_enabled
+
+---
+```lua
+button:set_enabled([state])
+```
+
+Set button enabled state.
+The style.on_set_enabled will be triggered.
+Disabled button is not clickable.
+
+- **Parameters:**
+ - `[state]` *(boolean|nil)*: Enabled state
+
+- **Returns:**
+ - `self` *(druid.button)*: The current button instance
+
+### is_enabled
+
+---
+```lua
+button:is_enabled()
+```
+
+Get button enabled state.
+By default all Buttons are enabled on creating.
+
+- **Returns:**
+ - `is_enabled` *(boolean)*: True, if button is enabled now, False otherwise
+
+### set_click_zone
+
+---
+```lua
+button:set_click_zone([zone])
+```
+
+Set additional button click area.
+Useful to restrict click outside of stencil node or scrollable content.
+If button node placed inside stencil node, it will be automatically set to this stencil node.
+
+- **Parameters:**
+ - `[zone]` *(string|node|nil)*: Gui node
+
+- **Returns:**
+ - `self` *(druid.button)*: The current button instance
+
+### set_key_trigger
+
+---
+```lua
+button:set_key_trigger(key)
+```
+
+Set key name to trigger this button by keyboard.
+
+- **Parameters:**
+ - `key` *(string|hash)*: The action_id of the input key. Example: "key_space"
+
+- **Returns:**
+ - `self` *(druid.button)*: The current button instance
+
+### get_key_trigger
+
+---
+```lua
+button:get_key_trigger()
+```
+
+Get current key name to trigger this button.
+
+- **Returns:**
+ - `key_trigger` *(hash)*: The action_id of the input key
+
+### set_check_function
+
+---
+```lua
+button:set_check_function([check_function], [failure_callback])
+```
+
+Set function for additional check for button click availability.
+
+- **Parameters:**
+ - `[check_function]` *(function|nil)*: Should return true or false. If true - button can be pressed.
+ - `[failure_callback]` *(function|nil)*: Function will be called on button click, if check function returns false
+
+- **Returns:**
+ - `self` *(druid.button)*: The current button instance
+
+### set_web_user_interaction
+
+---
+```lua
+button:set_web_user_interaction([is_web_mode])
+```
+
+Set Button mode to work inside user HTML5 interaction event.
+It's required to make protected things like copy & paste text, show mobile keyboard, etc
+The HTML5 button doesn't call any events except on_click event.
+If the game is not HTML, html mode will be not enabled
+
+- **Parameters:**
+ - `[is_web_mode]` *(boolean|nil)*: If true - button will be called inside html5 callback
+
+- **Returns:**
+ - `self` *(druid.button)*: The current button instance
+
+
+## Fields
+
+- **on_click** (_event_): fun(self, custom_args, button_instance)
+
+
+- **on_pressed** (_event_): fun(self, custom_args, button_instance)
+
+
+- **on_repeated_click** (_event_): fun(self, custom_args, button_instance, click_count) Repeated click callback, while holding the button
+
+
+- **on_long_click** (_event_): fun(self, custom_args, button_instance, hold_time) Callback on long button tap
+
+
+- **on_double_click** (_event_): fun(self, custom_args, button_instance, click_amount) Different callback, if tap button 2+ in row
+
+
+- **on_hold_callback** (_event_): fun(self, custom_args, button_instance, press_time) Hold callback, before long_click trigger
+
+
+- **on_click_outside** (_event_): fun(self, custom_args, button_instance)
+
+
+- **node** (_node_): Clickable node
+
+
+- **node_id** (_hash_): Node id
+
+
+- **anim_node** (_node_): Animation node. In default case equals to clickable node
+
+
+- **params** (_any_): Custom arguments for any Button event
+
+
+- **hover** (_druid.hover_): Hover component for this button
+
+
+- **click_zone** (_node_): Click zone node to restrict click area
+
+
+- **start_scale** (_vector3_): Start scale of the button
+
+
+- **start_pos** (_vector3_): Start position of the button
+
+
+- **disabled** (_boolean_): Is button disabled
+
+
+- **key_trigger** (_hash_): Key trigger for this button
+
+
+- **style** (_table_): Style for this button
+
+
+- **druid** (_druid.instance_): The Druid Factory used to create components
+
+
+- **is_repeated_started** (_boolean_)
+
+
+- **last_pressed_time** (_integer_)
+
+
+- **last_released_time** (_integer_)
+
+
+- **click_in_row** (_integer_)
+
+
+- **can_action** (_boolean_): Can't interact, if touch outside of button
+
diff --git a/api/components/base/component_api.md b/api/components/base/component_api.md
new file mode 100644
index 0000000..8cf0370
--- /dev/null
+++ b/api/components/base/component_api.md
@@ -0,0 +1,445 @@
+# druid.component API
+
+> at /druid/component.lua
+
+## Functions
+
+- [create](#create)
+- [create_widget](#create_widget)
+
+- [init](#init)
+- [update](#update)
+- [on_remove](#on_remove)
+- [on_input](#on_input)
+- [on_input_interrupt](#on_input_interrupt)
+- [on_message](#on_message)
+- [on_late_init](#on_late_init)
+- [on_focus_lost](#on_focus_lost)
+- [on_focus_gained](#on_focus_gained)
+- [on_style_change](#on_style_change)
+- [on_layout_change](#on_layout_change)
+- [on_window_resized](#on_window_resized)
+- [on_language_change](#on_language_change)
+- [set_style](#set_style)
+- [set_template](#set_template)
+- [get_template](#get_template)
+- [set_nodes](#set_nodes)
+- [get_context](#get_context)
+- [get_node](#get_node)
+- [get_druid](#get_druid)
+- [get_name](#get_name)
+- [get_parent_name](#get_parent_name)
+- [get_input_priority](#get_input_priority)
+- [set_input_priority](#set_input_priority)
+- [reset_input_priority](#reset_input_priority)
+- [get_uid](#get_uid)
+- [set_input_enabled](#set_input_enabled)
+- [get_input_enabled](#get_input_enabled)
+- [get_parent_component](#get_parent_component)
+- [get_nodes](#get_nodes)
+- [get_childrens](#get_childrens)
+
+## Fields
+
+- [druid](#druid)
+
+
+
+### create
+
+---
+```lua
+component.create([name], [input_priority])
+```
+
+Сreate a new component class, which will inherit from the base Druid component.
+
+- **Parameters:**
+ - `[name]` *(string|nil)*: The name of the component
+ - `[input_priority]` *(number|nil)*: The input priority. The bigger number processed first. Default value: 10
+
+- **Returns:**
+ - `` *(druid.component)*:
+
+### create_widget
+
+---
+```lua
+component.create_widget(self, widget_class, context)
+```
+
+Create the Druid component instance
+
+- **Parameters:**
+ - `self` *(druid.instance)*: The Druid Factory used to create components
+ - `widget_class` *(druid.widget)*:
+ - `context` *(table)*:
+
+- **Returns:**
+ - `` *(druid.widget)*:
+
+### init
+
+---
+```lua
+component:init()
+```
+
+Called when component is created
+
+### update
+
+---
+```lua
+component:update()
+```
+
+Called every frame
+
+### on_remove
+
+---
+```lua
+component:on_remove()
+```
+
+Called when component is removed
+
+### on_input
+
+---
+```lua
+component:on_input()
+```
+
+Called when input event is triggered
+
+### on_input_interrupt
+
+---
+```lua
+component:on_input_interrupt()
+```
+
+Called when input event is consumed before
+
+### on_message
+
+---
+```lua
+component:on_message()
+```
+
+Called when message is received
+
+### on_late_init
+
+---
+```lua
+component:on_late_init()
+```
+
+Called before update once time after GUI init
+
+### on_focus_lost
+
+---
+```lua
+component:on_focus_lost()
+```
+
+Called when app lost focus
+
+### on_focus_gained
+
+---
+```lua
+component:on_focus_gained()
+```
+
+Called when app gained focus
+
+### on_style_change
+
+---
+```lua
+component:on_style_change()
+```
+
+Called when style is changed
+
+### on_layout_change
+
+---
+```lua
+component:on_layout_change()
+```
+
+Called when GUI layout is changed
+
+### on_window_resized
+
+---
+```lua
+component:on_window_resized()
+```
+
+Called when window is resized
+
+### on_language_change
+
+---
+```lua
+component:on_language_change()
+```
+
+Called when language is changed
+
+### set_style
+
+---
+```lua
+component:set_style([druid_style])
+```
+
+Set component style. Pass nil to clear style
+
+- **Parameters:**
+ - `[druid_style]` *(table|nil)*:
+
+- **Returns:**
+ - `self` *()*: The component itself for chaining
+
+### set_template
+
+---
+```lua
+component:set_template([template])
+```
+
+Set component template name. Pass nil to clear template.
+This template id used to access nodes inside the template on GUI scene.
+Parent template will be added automatically if exist.
+
+- **Parameters:**
+ - `[template]` *(string|nil)*:
+
+- **Returns:**
+ - `self` *()*: The component itself for chaining
+
+### get_template
+
+---
+```lua
+component:get_template()
+```
+
+Get full template name.
+
+- **Returns:**
+ - `` *(string)*:
+
+### set_nodes
+
+---
+```lua
+component:set_nodes([nodes])
+```
+
+Set current component nodes, returned from `gui.clone_tree` function.
+
+- **Parameters:**
+ - `[nodes]` *(string|node|table|nil)*: The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone
+
+- **Returns:**
+ - `` *(druid.component)*:
+
+### get_context
+
+---
+```lua
+component:get_context()
+```
+
+Return current component context
+
+- **Returns:**
+ - `context` *(any)*: Usually it's self of script but can be any other Druid component
+
+### get_node
+
+---
+```lua
+component:get_node(node_id)
+```
+
+Get component node by node_id. Respect to current template and nodes.
+
+- **Parameters:**
+ - `node_id` *(string|node)*:
+
+- **Returns:**
+ - `` *(node)*:
+
+### get_druid
+
+---
+```lua
+component:get_druid([template], [nodes])
+```
+
+Get Druid instance for inner component creation.
+
+- **Parameters:**
+ - `[template]` *(string|nil)*:
+ - `[nodes]` *(string|node|table|nil)*: The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone
+
+- **Returns:**
+ - `` *(druid.instance)*:
+
+### get_name
+
+---
+```lua
+component:get_name()
+```
+
+Get component name
+
+- **Returns:**
+ - `name` *(string)*: The component name + uid
+
+### get_parent_name
+
+---
+```lua
+component:get_parent_name()
+```
+
+Get parent component name
+
+- **Returns:**
+ - `parent_name` *(string|nil)*: The parent component name if exist or nil
+
+### get_input_priority
+
+---
+```lua
+component:get_input_priority()
+```
+
+Get component input priority, the bigger number processed first. Default value: 10
+
+- **Returns:**
+ - `` *(number)*:
+
+### set_input_priority
+
+---
+```lua
+component:set_input_priority(value, [is_temporary])
+```
+
+Set component input priority, the bigger number processed first. Default value: 10
+
+- **Parameters:**
+ - `value` *(number)*:
+ - `[is_temporary]` *(boolean|nil)*: If true, the reset input priority will return to previous value
+
+- **Returns:**
+ - `self` *(druid.component)*: The component itself for chaining
+
+### reset_input_priority
+
+---
+```lua
+component:reset_input_priority()
+```
+
+Reset component input priority to it's default value, that was set in `create` function or `set_input_priority`
+
+- **Returns:**
+ - `self` *(druid.component)*: The component itself for chaining
+
+### get_uid
+
+---
+```lua
+component:get_uid()
+```
+
+Get component UID, unique identifier created in component creation order.
+
+- **Returns:**
+ - `uid` *(number)*: The component uid
+
+### set_input_enabled
+
+---
+```lua
+component:set_input_enabled(state)
+```
+
+Set component input state. By default it's enabled.
+If input is disabled, the component will not receive input events.
+Recursive for all children components.
+
+- **Parameters:**
+ - `state` *(boolean)*:
+
+- **Returns:**
+ - `self` *(druid.component)*: The component itself for chaining
+
+### get_input_enabled
+
+---
+```lua
+component:get_input_enabled()
+```
+
+Get component input state. By default it's enabled. Can be disabled by `set_input_enabled` function.
+
+- **Returns:**
+ - `` *(boolean)*:
+
+### get_parent_component
+
+---
+```lua
+component:get_parent_component()
+```
+
+Get parent component
+
+- **Returns:**
+ - `parent_component` *(druid.component|nil)*: The parent component if exist or nil
+
+### get_nodes
+
+---
+```lua
+component:get_nodes()
+```
+
+Get current component nodes
+
+- **Returns:**
+ - `` *(table|nil)*:
+
+### get_childrens
+
+---
+```lua
+component:get_childrens()
+```
+
+Return all children components, recursive
+
+- **Returns:**
+ - `Array` *(table)*: of childrens if the Druid component instance
+
+
+## Fields
+
+- **druid** (_druid.instance_): Druid instance to create inner components
+
diff --git a/api/components/base/drag_api.md b/api/components/base/drag_api.md
new file mode 100644
index 0000000..18974de
--- /dev/null
+++ b/api/components/base/drag_api.md
@@ -0,0 +1,176 @@
+# druid.drag API
+
+> at /druid/base/drag.lua
+
+A component that allows you to subscribe to drag events over a node
+
+## Functions
+
+- [init](#init)
+- [set_drag_cursors](#set_drag_cursors)
+- [set_click_zone](#set_click_zone)
+- [set_enabled](#set_enabled)
+- [is_enabled](#is_enabled)
+
+## Fields
+
+- [node](#node)
+- [on_touch_start](#on_touch_start)
+- [on_touch_end](#on_touch_end)
+- [on_drag_start](#on_drag_start)
+- [on_drag](#on_drag)
+- [on_drag_end](#on_drag_end)
+- [style](#style)
+- [click_zone](#click_zone)
+- [is_touch](#is_touch)
+- [is_drag](#is_drag)
+- [can_x](#can_x)
+- [can_y](#can_y)
+- [dx](#dx)
+- [dy](#dy)
+- [touch_id](#touch_id)
+- [x](#x)
+- [y](#y)
+- [screen_x](#screen_x)
+- [screen_y](#screen_y)
+- [touch_start_pos](#touch_start_pos)
+- [druid](#druid)
+- [hover](#hover)
+
+
+
+### init
+
+---
+```lua
+drag:init(node_or_node_id, [on_drag_callback])
+```
+
+The constructor for Drag component
+
+- **Parameters:**
+ - `node_or_node_id` *(string|node)*: The node to subscribe to drag events over
+ - `[on_drag_callback]` *(fun(self: any, touch: any))*: The callback to call when a drag occurs
+
+### set_drag_cursors
+
+---
+```lua
+drag:set_drag_cursors(is_enabled)
+```
+
+Set Drag component enabled state.
+
+- **Parameters:**
+ - `is_enabled` *(boolean)*: True if Drag component is enabled
+
+### set_click_zone
+
+---
+```lua
+drag:set_click_zone([node])
+```
+
+Set Drag click zone
+
+- **Parameters:**
+ - `[node]` *(string|node|nil)*: Node or node id
+
+- **Returns:**
+ - `self` *(druid.drag)*: Current instance
+
+### set_enabled
+
+---
+```lua
+drag:set_enabled(is_enabled)
+```
+
+Set Drag component enabled state.
+
+- **Parameters:**
+ - `is_enabled` *(boolean)*:
+
+- **Returns:**
+ - `self` *(druid.drag)*: Current instance
+
+### is_enabled
+
+---
+```lua
+drag:is_enabled()
+```
+
+Check if Drag component is capture input
+
+- **Returns:**
+ - `is_enabled` *(boolean)*: True if Drag component is enabled
+
+
+## Fields
+
+- **node** (_node_): The node to subscribe to drag events over
+
+
+- **on_touch_start** (_event_): fun(self, touch) The event triggered when a touch starts
+
+
+- **on_touch_end** (_event_): fun(self, touch) The event triggered when a touch ends
+
+
+- **on_drag_start** (_event_): fun(self, touch) The event triggered when a drag starts
+
+
+- **on_drag** (_event_): fun(self, touch) The event triggered when a drag occurs
+
+
+- **on_drag_end** (_event_): fun(self, touch) The event triggered when a drag ends
+
+
+- **style** (_druid.drag.style_): The style of Drag component
+
+
+- **click_zone** (_node_): The click zone of Drag component
+
+
+- **is_touch** (_boolean_): True if a touch is active
+
+
+- **is_drag** (_boolean_): True if a drag is active
+
+
+- **can_x** (_boolean_): True if Drag can move horizontally
+
+
+- **can_y** (_boolean_): True if Drag can move vertically
+
+
+- **dx** (_number_): The horizontal drag distance
+
+
+- **dy** (_number_): The vertical drag distance
+
+
+- **touch_id** (_number_): The touch id
+
+
+- **x** (_number_): The current x position
+
+
+- **y** (_number_): The current y position
+
+
+- **screen_x** (_number_): The current screen x position
+
+
+- **screen_y** (_number_): The current screen y position
+
+
+- **touch_start_pos** (_vector3_): The touch start position
+
+
+- **druid** (_druid.instance_): The Druid Factory used to create components
+
+
+- **hover** (_druid.hover_): The component for handling hover events on a node
+
diff --git a/api/components/base/hover_api.md b/api/components/base/hover_api.md
new file mode 100644
index 0000000..eb96672
--- /dev/null
+++ b/api/components/base/hover_api.md
@@ -0,0 +1,144 @@
+# druid.hover API
+
+> at /druid/base/hover.lua
+
+The component for handling hover events on a node
+
+## Functions
+
+- [init](#init)
+- [set_hover](#set_hover)
+- [is_hovered](#is_hovered)
+- [set_mouse_hover](#set_mouse_hover)
+- [is_mouse_hovered](#is_mouse_hovered)
+- [set_click_zone](#set_click_zone)
+- [set_enabled](#set_enabled)
+- [is_enabled](#is_enabled)
+
+## Fields
+
+- [node](#node)
+- [on_hover](#on_hover)
+- [on_mouse_hover](#on_mouse_hover)
+- [style](#style)
+- [click_zone](#click_zone)
+
+
+
+### init
+
+---
+```lua
+hover:init(node, on_hover_callback, on_mouse_hover)
+```
+
+The constructor for the hover component
+
+- **Parameters:**
+ - `node` *(node)*: Gui node
+ - `on_hover_callback` *(function)*: Hover callback
+ - `on_mouse_hover` *(function)*: On mouse hover callback
+
+### set_hover
+
+---
+```lua
+hover:set_hover([state])
+```
+
+Set hover state
+
+- **Parameters:**
+ - `[state]` *(boolean|nil)*: The hover state
+
+### is_hovered
+
+---
+```lua
+hover:is_hovered()
+```
+
+Return current hover state. True if touch action was on the node at current time
+
+- **Returns:**
+ - `is_hovered` *(boolean)*: The current hovered state
+
+### set_mouse_hover
+
+---
+```lua
+hover:set_mouse_hover([state])
+```
+
+Set mouse hover state
+
+- **Parameters:**
+ - `[state]` *(boolean|nil)*: The mouse hover state
+
+### is_mouse_hovered
+
+---
+```lua
+hover:is_mouse_hovered()
+```
+
+Return current hover state. True if nil action_id (usually desktop mouse) was on the node at current time
+
+- **Returns:**
+ - `The` *(boolean)*: current hovered state
+
+### set_click_zone
+
+---
+```lua
+hover:set_click_zone([zone])
+```
+
+Strict hover click area. Useful for no click events outside stencil node
+
+- **Parameters:**
+ - `[zone]` *(string|node|nil)*: Gui node
+
+### set_enabled
+
+---
+```lua
+hover:set_enabled([state])
+```
+
+Set enable state of hover component.
+If hover is not enabled, it will not generate
+any hover events
+
+- **Parameters:**
+ - `[state]` *(boolean|nil)*: The hover enabled state
+
+### is_enabled
+
+---
+```lua
+hover:is_enabled()
+```
+
+Return current hover enabled state
+
+- **Returns:**
+ - `The` *(boolean)*: hover enabled state
+
+
+## Fields
+
+- **node** (_node_): Gui node
+
+
+- **on_hover** (_event_): fun(self: druid.hover, is_hover: boolean) Hover event
+
+
+- **on_mouse_hover** (_event_): fun(self: druid.hover, is_hover: boolean) Mouse hover event
+
+
+- **style** (_druid.hover.style_): Style of the hover component
+
+
+- **click_zone** (_node_): Click zone of the hover component
+
diff --git a/api/components/base/scroll_api.md b/api/components/base/scroll_api.md
new file mode 100644
index 0000000..7790377
--- /dev/null
+++ b/api/components/base/scroll_api.md
@@ -0,0 +1,395 @@
+# druid.scroll API
+
+> at /druid/base/scroll.lua
+
+Basic Druid scroll component. Handles all scrolling behavior in Druid GUI.
+
+### Setup
+Create scroll component with druid: `druid:new_scroll(view_node, content_node)`
+
+### Notes
+- View_node is the static part that captures user input and recognizes scrolling touches
+- Content_node is the dynamic part that will change position according to the scroll system
+- Initial scroll size will be equal to content_node size
+- The initial view box will be equal to view_node size
+- Scroll by default style has inertia and extra size for stretching effect
+- You can setup "points of interest" to make scroll always center on closest point
+- Scroll events:
+- - on_scroll(self, position): On scroll move callback
+- - on_scroll_to(self, position, is_instant): On scroll_to function callback
+- - on_point_scroll(self, item_index, position): On scroll_to_index function callback
+- Multitouch is required for scroll. Scroll correctly handles touch_id swap while dragging
+
+## Functions
+
+- [init](#init)
+- [scroll_to](#scroll_to)
+- [scroll_to_index](#scroll_to_index)
+- [scroll_to_percent](#scroll_to_percent)
+- [get_percent](#get_percent)
+- [set_size](#set_size)
+- [set_view_size](#set_view_size)
+- [update_view_size](#update_view_size)
+- [set_inert](#set_inert)
+- [is_inert](#is_inert)
+- [set_extra_stretch_size](#set_extra_stretch_size)
+- [get_scroll_size](#get_scroll_size)
+- [set_points](#set_points)
+- [set_horizontal_scroll](#set_horizontal_scroll)
+- [set_vertical_scroll](#set_vertical_scroll)
+- [is_node_in_view](#is_node_in_view)
+- [bind_grid](#bind_grid)
+- [set_click_zone](#set_click_zone)
+
+## Fields
+
+- [node](#node)
+- [click_zone](#click_zone)
+- [on_scroll](#on_scroll)
+- [on_scroll_to](#on_scroll_to)
+- [on_point_scroll](#on_point_scroll)
+- [view_node](#view_node)
+- [view_border](#view_border)
+- [content_node](#content_node)
+- [view_size](#view_size)
+- [position](#position)
+- [target_position](#target_position)
+- [available_pos](#available_pos)
+- [available_size](#available_size)
+- [drag](#drag)
+- [selected](#selected)
+- [is_animate](#is_animate)
+- [style](#style)
+- [druid](#druid)
+- [hover](#hover)
+- [points](#points)
+- [available_pos_extra](#available_pos_extra)
+- [available_size_extra](#available_size_extra)
+
+
+
+### init
+
+---
+```lua
+scroll:init(view_node, content_node)
+```
+
+The Scroll constructor
+
+- **Parameters:**
+ - `view_node` *(string|node)*: GUI view scroll node - the static part that captures user input
+ - `content_node` *(string|node)*: GUI content scroll node - the dynamic part that will change position
+
+### scroll_to
+
+---
+```lua
+scroll:scroll_to(point, [is_instant])
+```
+
+Start scroll to target point.
+
+- **Parameters:**
+ - `point` *(vector3)*: Target point
+ - `[is_instant]` *(boolean|nil)*: Instant scroll flag
+
+### scroll_to_index
+
+---
+```lua
+scroll:scroll_to_index(index, [skip_cb])
+```
+
+Scroll to item in scroll by point index.
+
+- **Parameters:**
+ - `index` *(number)*: Point index
+ - `[skip_cb]` *(boolean|nil)*: If true, skip the point callback
+
+### scroll_to_percent
+
+---
+```lua
+scroll:scroll_to_percent(percent, [is_instant])
+```
+
+Start scroll to target scroll percent
+
+- **Parameters:**
+ - `percent` *(vector3)*: target percent
+ - `[is_instant]` *(boolean|nil)*: instant scroll flag
+
+### get_percent
+
+---
+```lua
+scroll:get_percent()
+```
+
+Return current scroll progress status.
+ Values will be in [0..1] interval
+
+- **Returns:**
+ - `New` *(vector3)*: vector with scroll progress values
+
+### set_size
+
+---
+```lua
+scroll:set_size(size, [offset])
+```
+
+Set scroll content size.
+ It will change content gui node size
+
+- **Parameters:**
+ - `size` *(vector3)*: The new size for content node
+ - `[offset]` *(vector3|nil)*: Offset value to set, where content is starts
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### set_view_size
+
+---
+```lua
+scroll:set_view_size(size)
+```
+
+Set new scroll view size in case the node size was changed.
+
+- **Parameters:**
+ - `size` *(vector3)*: The new size for view node
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### update_view_size
+
+---
+```lua
+scroll:update_view_size()
+```
+
+Refresh scroll view size, used when view node size is changed
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### set_inert
+
+---
+```lua
+scroll:set_inert(state)
+```
+
+Enable or disable scroll inert
+ If disabled, scroll through points (if exist)
+ If no points, just simple drag without inertion
+
+- **Parameters:**
+ - `state` *(boolean)*: Inert scroll state
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### is_inert
+
+---
+```lua
+scroll:is_inert()
+```
+
+Return if scroll have inertion
+
+- **Returns:**
+ - `is_inert` *(boolean)*: If scroll have inertion
+
+### set_extra_stretch_size
+
+---
+```lua
+scroll:set_extra_stretch_size([stretch_size])
+```
+
+Set extra size for scroll stretching
+ Set 0 to disable stretching effect
+
+- **Parameters:**
+ - `[stretch_size]` *(number|nil)*: Size in pixels of additional scroll area
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### get_scroll_size
+
+---
+```lua
+scroll:get_scroll_size()
+```
+
+Return vector of scroll size with width and height.
+
+- **Returns:**
+ - `Available` *(vector3)*: scroll size
+
+### set_points
+
+---
+```lua
+scroll:set_points(points)
+```
+
+Set points of interest.
+ Scroll will always centered on closer points
+
+- **Parameters:**
+ - `points` *(table)*: Array of vector3 points
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### set_horizontal_scroll
+
+---
+```lua
+scroll:set_horizontal_scroll(state)
+```
+
+Lock or unlock horizontal scroll
+
+- **Parameters:**
+ - `state` *(boolean)*: True, if horizontal scroll is enabled
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### set_vertical_scroll
+
+---
+```lua
+scroll:set_vertical_scroll(state)
+```
+
+Lock or unlock vertical scroll
+
+- **Parameters:**
+ - `state` *(boolean)*: True, if vertical scroll is enabled
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### is_node_in_view
+
+---
+```lua
+scroll:is_node_in_view(node)
+```
+
+Check node if it visible now on scroll.
+ Extra border is not affected. Return true for elements in extra scroll zone
+
+- **Parameters:**
+ - `node` *(node)*: The node to check
+
+- **Returns:**
+ - `True` *(boolean)*: if node in visible scroll area
+
+### bind_grid
+
+---
+```lua
+scroll:bind_grid([grid])
+```
+
+Bind the grid component (Static or Dynamic) to recalculate
+ scroll size on grid changes
+
+- **Parameters:**
+ - `[grid]` *(druid.grid|nil)*: Druid grid component
+
+- **Returns:**
+ - `self` *(druid.scroll)*: Current scroll instance
+
+### set_click_zone
+
+---
+```lua
+scroll:set_click_zone(node)
+```
+
+Strict drag scroll area. Useful for
+ restrict events outside stencil node
+
+- **Parameters:**
+ - `node` *(string|node)*: Gui node
+
+
+## Fields
+
+- **node** (_node_): The root node
+
+
+- **click_zone** (_node_): Optional click zone to restrict scroll area
+
+
+- **on_scroll** (_event_): fun(self: druid.scroll, position: vector3) Triggered on scroll move
+
+
+- **on_scroll_to** (_event_): fun(self: druid.scroll, target: vector3, is_instant: boolean) Triggered on scroll_to
+
+
+- **on_point_scroll** (_event_): fun(self: druid.scroll, index: number, point: vector3) Triggered on scroll_to_index
+
+
+- **view_node** (_node_): The scroll view node (static part)
+
+
+- **view_border** (_vector4_): The scroll view borders
+
+
+- **content_node** (_node_): The scroll content node (moving part)
+
+
+- **view_size** (_vector3_): Size of the view node
+
+
+- **position** (_vector3_): Current scroll position
+
+
+- **target_position** (_vector3_): Target scroll position for animations
+
+
+- **available_pos** (_vector4_): Available content position (min_x, max_y, max_x, min_y)
+
+
+- **available_size** (_vector3_): Size of available positions (width, height, 0)
+
+
+- **drag** (_druid.drag_): The drag component instance
+
+
+- **selected** (_number_): Current selected point of interest index
+
+
+- **is_animate** (_boolean_): True if scroll is animating
+
+
+- **style** (_druid.scroll.style_): Component style parameters
+
+
+- **druid** (_druid.instance_): The Druid Factory used to create components
+
+
+- **hover** (_druid.hover_): The component for handling hover events on a node
+
+
+- **points** (_table_)
+
+
+- **available_pos_extra** (_vector4_)
+
+
+- **available_size_extra** (_vector3_)
+
diff --git a/api/components/base/static_grid_api.md b/api/components/base/static_grid_api.md
new file mode 100644
index 0000000..82e7dd2
--- /dev/null
+++ b/api/components/base/static_grid_api.md
@@ -0,0 +1,387 @@
+# druid.grid API
+
+> at /druid/base/static_grid.lua
+
+The component for manage the nodes position in the grid with various options
+
+## Functions
+
+- [init](#init)
+- [get_pos](#get_pos)
+- [get_index](#get_index)
+- [get_index_by_node](#get_index_by_node)
+- [set_anchor](#set_anchor)
+- [refresh](#refresh)
+- [set_pivot](#set_pivot)
+- [add](#add)
+- [set_items](#set_items)
+- [remove](#remove)
+- [get_size](#get_size)
+- [get_size_for](#get_size_for)
+- [get_borders](#get_borders)
+- [get_all_pos](#get_all_pos)
+- [set_position_function](#set_position_function)
+- [clear](#clear)
+- [get_offset](#get_offset)
+- [set_in_row](#set_in_row)
+- [set_item_size](#set_item_size)
+- [sort_nodes](#sort_nodes)
+
+## Fields
+
+- [on_add_item](#on_add_item)
+- [on_remove_item](#on_remove_item)
+- [on_change_items](#on_change_items)
+- [on_clear](#on_clear)
+- [on_update_positions](#on_update_positions)
+- [parent](#parent)
+- [nodes](#nodes)
+- [first_index](#first_index)
+- [last_index](#last_index)
+- [anchor](#anchor)
+- [pivot](#pivot)
+- [node_size](#node_size)
+- [border](#border)
+- [in_row](#in_row)
+- [style](#style)
+- [node_pivot](#node_pivot)
+
+
+
+### init
+
+---
+```lua
+grid:init(parent, element, [in_row])
+```
+
+The constructor for the grid component
+
+- **Parameters:**
+ - `parent` *(string|node)*: The GUI Node container, where grid's items will be placed
+ - `element` *(node)*: Element prefab. Need to get it size
+ - `[in_row]` *(number|nil)*: How many nodes in row can be placed. By default 1
+
+### get_pos
+
+---
+```lua
+grid:get_pos(index)
+```
+
+Return pos for grid node index
+
+- **Parameters:**
+ - `index` *(number)*: The grid element index
+
+- **Returns:**
+ - `position` *(vector3)*: Node position
+
+### get_index
+
+---
+```lua
+grid:get_index(pos)
+```
+
+Return grid index by position
+
+- **Parameters:**
+ - `pos` *(vector3)*: The node position in the grid
+
+- **Returns:**
+ - `index` *(number)*: The node index
+
+### get_index_by_node
+
+---
+```lua
+grid:get_index_by_node(node)
+```
+
+Return grid index by node
+
+- **Parameters:**
+ - `node` *(node)*: The gui node in the grid
+
+- **Returns:**
+ - `index` *(number|nil)*: The node index
+
+### set_anchor
+
+---
+```lua
+grid:set_anchor(anchor)
+```
+
+Set grid anchor. Default anchor is equal to anchor of grid parent node
+
+- **Parameters:**
+ - `anchor` *(vector3)*: Anchor
+
+### refresh
+
+---
+```lua
+grid:refresh()
+```
+
+Instantly update the grid content
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### set_pivot
+
+---
+```lua
+grid:set_pivot(pivot)
+```
+
+Set grid pivot
+
+- **Parameters:**
+ - `pivot` *(constant)*: The new pivot
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### add
+
+---
+```lua
+grid:add(item, [index], [shift_policy], [is_instant])
+```
+
+Add new item to the grid
+
+- **Parameters:**
+ - `item` *(node)*: GUI node
+ - `[index]` *(number|nil)*: The item position. By default add as last item
+ - `[shift_policy]` *(number|nil)*: How shift nodes, if required. Default: const.SHIFT.RIGHT
+ - `[is_instant]` *(boolean|nil)*: If true, update node positions instantly
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### set_items
+
+---
+```lua
+grid:set_items(nodes, [is_instant])
+```
+
+Set new items to the grid. All previous items will be removed
+
+- **Parameters:**
+ - `nodes` *(node[])*: The new grid nodes
+ - `[is_instant]` *(boolean|nil)*: If true, update node positions instantly
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### remove
+
+---
+```lua
+grid:remove(index, [shift_policy], [is_instant])
+```
+
+Remove the item from the grid. Note that gui node will be not deleted
+
+- **Parameters:**
+ - `index` *(number)*: The grid node index to remove
+ - `[shift_policy]` *(number|nil)*: How shift nodes, if required. Default: const.SHIFT.RIGHT
+ - `[is_instant]` *(boolean|nil)*: If true, update node positions instantly
+
+- **Returns:**
+ - `node` *(node)*: The deleted gui node from grid
+
+### get_size
+
+---
+```lua
+grid:get_size()
+```
+
+Return grid content size
+
+- **Returns:**
+ - `size` *(vector3)*: The grid content size
+
+### get_size_for
+
+---
+```lua
+grid:get_size_for(count)
+```
+
+Return grid content size for given count of nodes
+
+- **Parameters:**
+ - `count` *(number)*: The count of nodes
+
+- **Returns:**
+ - `size` *(vector3)*: The grid content size
+
+### get_borders
+
+---
+```lua
+grid:get_borders()
+```
+
+Return grid content borders
+
+- **Returns:**
+ - `borders` *(vector4)*: The grid content borders
+
+### get_all_pos
+
+---
+```lua
+grid:get_all_pos()
+```
+
+Return array of all node positions
+
+- **Returns:**
+ - `positions` *(vector3[])*: All grid node positions
+
+### set_position_function
+
+---
+```lua
+grid:set_position_function(callback)
+```
+
+Change set position function for grid nodes. It will call on
+ update poses on grid elements. Default: gui.set_position
+
+- **Parameters:**
+ - `callback` *(function)*: Function on node set position
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### clear
+
+---
+```lua
+grid:clear()
+```
+
+Clear grid nodes array. GUI nodes will be not deleted!
+ If you want to delete GUI nodes, use static_grid.nodes array before grid:clear
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### get_offset
+
+---
+```lua
+grid:get_offset()
+```
+
+Return StaticGrid offset, where StaticGrid content starts.
+
+- **Returns:**
+ - `offset` *(vector3)*: The StaticGrid offset
+
+### set_in_row
+
+---
+```lua
+grid:set_in_row(in_row)
+```
+
+Set new in_row elements for grid
+
+- **Parameters:**
+ - `in_row` *(number)*: The new in_row value
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### set_item_size
+
+---
+```lua
+grid:set_item_size([width], [height])
+```
+
+Set new node size for grid
+
+- **Parameters:**
+ - `[width]` *(number|nil)*: The new node width
+ - `[height]` *(number|nil)*: The new node height
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+### sort_nodes
+
+---
+```lua
+grid:sort_nodes(comparator)
+```
+
+Sort grid nodes by custom comparator function
+
+- **Parameters:**
+ - `comparator` *(function)*: The comparator function. (a, b) -> boolean
+
+- **Returns:**
+ - `self` *(druid.grid)*: Current grid instance
+
+
+## Fields
+
+- **on_add_item** (_event_): fun(self: druid.grid, item: node, index: number) Trigger on add item event
+
+
+- **on_remove_item** (_event_): fun(self: druid.grid, index: number) Trigger on remove item event
+
+
+- **on_change_items** (_event_): fun(self: druid.grid, index: number) Trigger on change items event
+
+
+- **on_clear** (_event_): fun(self: druid.grid) Trigger on clear event
+
+
+- **on_update_positions** (_event_): fun(self: druid.grid) Trigger on update positions event
+
+
+- **parent** (_node_): Parent node
+
+
+- **nodes** (_node[]_): Nodes array
+
+
+- **first_index** (_number_): First index
+
+
+- **last_index** (_number_): Last index
+
+
+- **anchor** (_vector3_): Anchor
+
+
+- **pivot** (_vector3_): Pivot
+
+
+- **node_size** (_vector3_): Node size
+
+
+- **border** (_vector4_): Border
+
+
+- **in_row** (_number_): In row
+
+
+- **style** (_druid.grid.style_): Style
+
+
+- **node_pivot** (_unknown_)
+
diff --git a/api/components/base/text_api.md b/api/components/base/text_api.md
new file mode 100644
index 0000000..3f53635
--- /dev/null
+++ b/api/components/base/text_api.md
@@ -0,0 +1,349 @@
+# druid.text API
+
+> at /druid/base/text.lua
+
+Basic Druid text component. Text components by default have the text size adjusting.
+
+### Setup
+Create text node with druid: `text = druid:new_text(node_name, [initial_value], [text_adjust_type])`
+
+### Notes
+- Text component by default have auto adjust text sizing. Text never will be bigger, than text node size, which you can setup in GUI scene.
+- Text pivot can be changed with `text:set_pivot`, and text will save their position inside their text size box
+- There are several text adjust types:
+- - **"downscale"** - Change text's scale to fit in the text node size (default)
+- - **"trim"** - Trim the text with postfix (default - "...") to fit in the text node size
+- - **"no_adjust"** - No any adjust, like default Defold text node
+- - **"downscale_limited"** - Change text's scale like downscale, but there is limit for text's scale
+- - **"scroll"** - Change text's pivot to imitate scrolling in the text box. Use with stencil node for better effect.
+- - **"scale_then_scroll"** - Combine two modes: first limited downscale, then scroll
+- - **"trim_left"** - Trim the text with postfix (default - "...") to fit in the text node size
+- - **"scale_then_trim"** - Combine two modes: first limited downscale, then trim
+- - **"scale_then_trim_left"** - Combine two modes: first limited downscale, then trim left
+
+## Functions
+
+- [init](#init)
+- [get_text_size](#get_text_size)
+- [get_text_index_by_width](#get_text_index_by_width)
+- [set_to](#set_to)
+- [set_text](#set_text)
+- [get_text](#get_text)
+- [set_size](#set_size)
+- [set_color](#set_color)
+- [set_alpha](#set_alpha)
+- [set_scale](#set_scale)
+- [set_pivot](#set_pivot)
+- [is_multiline](#is_multiline)
+- [set_text_adjust](#set_text_adjust)
+- [set_minimal_scale](#set_minimal_scale)
+- [get_text_adjust](#get_text_adjust)
+
+## Fields
+
+- [node](#node)
+- [on_set_text](#on_set_text)
+- [on_update_text_scale](#on_update_text_scale)
+- [on_set_pivot](#on_set_pivot)
+- [style](#style)
+- [start_pivot](#start_pivot)
+- [start_scale](#start_scale)
+- [scale](#scale)
+- [pos](#pos)
+- [node_id](#node_id)
+- [start_size](#start_size)
+- [text_area](#text_area)
+- [adjust_type](#adjust_type)
+- [color](#color)
+- [last_value](#last_value)
+- [last_scale](#last_scale)
+
+
+
+### init
+
+---
+```lua
+text:init(node, [value], adjust_type)
+```
+
+The Text constructor
+```lua
+adjust_type:
+ | "downscale"
+ | "trim"
+ | "no_adjust"
+ | "downscale_limited"
+ | "scroll"
+ | "scale_then_scroll"
+ | "trim_left"
+ | "scale_then_trim"
+ | "scale_then_trim_left"
+```
+
+- **Parameters:**
+ - `node` *(string|node)*: Node name or GUI Text Node itself
+ - `[value]` *(string|nil)*: Initial text. Default value is node text from GUI scene. Default: nil
+ - `adjust_type` *("downscale"|"downscale_limited"|"no_adjust"|"scale_then_scroll"|"scale_then_trim"...(+5))*: Adjust type for text. By default is "downscale". Options: "downscale", "trim", "no_adjust", "downscale_limited", "scroll", "scale_then_scroll", "trim_left", "scale_then_trim", "scale_then_trim_left"
+
+### get_text_size
+
+---
+```lua
+text:get_text_size([text])
+```
+
+Calculate text width with font with respect to trailing space
+
+- **Parameters:**
+ - `[text]` *(string|nil)*: The text to calculate the size of, if nil - use current text
+
+- **Returns:**
+ - `width` *(number)*: The text width
+ - `height` *(number)*: The text height
+
+### get_text_index_by_width
+
+---
+```lua
+text:get_text_index_by_width(width)
+```
+
+Get chars count by width
+
+- **Parameters:**
+ - `width` *(number)*: The width to get the chars count of
+
+- **Returns:**
+ - `index` *(number)*: The chars count
+
+### set_to
+
+---
+```lua
+text:set_to(set_to)
+```
+
+Set text to text field
+
+- **Parameters:**
+ - `set_to` *(string)*: Text for node
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### set_text
+
+---
+```lua
+text:set_text([new_text])
+```
+
+- **Parameters:**
+ - `[new_text]` *(any)*:
+
+- **Returns:**
+ - `` *(druid.text)*:
+
+### get_text
+
+---
+```lua
+text:get_text()
+```
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### set_size
+
+---
+```lua
+text:set_size(size)
+```
+
+Set text area size
+
+- **Parameters:**
+ - `size` *(vector3)*: The new text area size
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### set_color
+
+---
+```lua
+text:set_color(color)
+```
+
+Set color
+
+- **Parameters:**
+ - `color` *(vector4)*: Color for node
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### set_alpha
+
+---
+```lua
+text:set_alpha(alpha)
+```
+
+Set alpha
+
+- **Parameters:**
+ - `alpha` *(number)*: Alpha for node
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### set_scale
+
+---
+```lua
+text:set_scale(scale)
+```
+
+Set scale
+
+- **Parameters:**
+ - `scale` *(vector3)*: Scale for node
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### set_pivot
+
+---
+```lua
+text:set_pivot(pivot)
+```
+
+Set text pivot. Text will re-anchor inside text area
+
+- **Parameters:**
+ - `pivot` *(userdata)*: The gui.PIVOT_* constant
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### is_multiline
+
+---
+```lua
+text:is_multiline()
+```
+
+Return true, if text with line break
+
+- **Returns:**
+ - `Is` *(boolean)*: text node with line break
+
+### set_text_adjust
+
+---
+```lua
+text:set_text_adjust(adjust_type, [minimal_scale])
+```
+
+Set text adjust, refresh the current text visuals, if needed
+```lua
+adjust_type:
+ | "downscale"
+ | "trim"
+ | "no_adjust"
+ | "downscale_limited"
+ | "scroll"
+ | "scale_then_scroll"
+ | "trim_left"
+ | "scale_then_trim"
+ | "scale_then_trim_left"
+```
+
+- **Parameters:**
+ - `adjust_type` *("downscale"|"downscale_limited"|"no_adjust"|"scale_then_scroll"|"scale_then_trim"...(+5))*: The adjust type to set, values: "downscale", "trim", "no_adjust", "downscale_limited", "scroll", "scale_then_scroll", "trim_left", "scale_then_trim", "scale_then_trim_left"
+ - `[minimal_scale]` *(number|nil)*: To remove minimal scale, use `text:set_minimal_scale(nil)`, if pass nil - not change minimal scale
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### set_minimal_scale
+
+---
+```lua
+text:set_minimal_scale(minimal_scale)
+```
+
+Set minimal scale for "downscale_limited" or "scale_then_scroll" adjust types
+
+- **Parameters:**
+ - `minimal_scale` *(number)*: If pass nil - not use minimal scale
+
+- **Returns:**
+ - `self` *(druid.text)*: Current text instance
+
+### get_text_adjust
+
+---
+```lua
+text:get_text_adjust()
+```
+
+Return current text adjust type
+
+- **Returns:**
+ - `adjust_type` *(string)*: The current text adjust type
+
+
+## Fields
+
+- **node** (_node_): The text node
+
+
+- **on_set_text** (_event_): fun(self: druid.text, text: string) The event triggered when the text is set
+
+
+- **on_update_text_scale** (_event_): fun(self: druid.text, scale: vector3, metrics: table) The event triggered when the text scale is updated
+
+
+- **on_set_pivot** (_event_): fun(self: druid.text, pivot: userdata) The event triggered when the text pivot is set
+
+
+- **style** (_druid.text.style_): The style of the text
+
+
+- **start_pivot** (_userdata_): The start pivot of the text
+
+
+- **start_scale** (_vector3_): The start scale of the text
+
+
+- **scale** (_vector3_): The current scale of the text
+
+
+- **pos** (_unknown_)
+
+
+- **node_id** (_unknown_)
+
+
+- **start_size** (_unknown_)
+
+
+- **text_area** (_unknown_)
+
+
+- **adjust_type** (_string|"downscale"|"downscale_limited"|"no_adjust"|"scale_then_scroll"...(+6)_)
+
+
+- **color** (_unknown_)
+
+
+- **last_value** (_unknown_)
+
+
+- **last_scale** (_vector3_)
+
diff --git a/api/components/custom/rich_input_api.md b/api/components/custom/rich_input_api.md
new file mode 100644
index 0000000..1412c21
--- /dev/null
+++ b/api/components/custom/rich_input_api.md
@@ -0,0 +1,168 @@
+# druid.rich_input API
+
+> at /druid/custom/rich_input/rich_input.lua
+
+The component that handles a rich text input field, it's a wrapper around the druid.input component
+
+## Functions
+
+- [init](#init)
+- [set_placeholder](#set_placeholder)
+- [select](#select)
+- [set_text](#set_text)
+- [set_font](#set_font)
+- [get_text](#get_text)
+- [set_allowed_characters](#set_allowed_characters)
+
+## Fields
+
+- [root](#root)
+- [input](#input)
+- [cursor](#cursor)
+- [cursor_text](#cursor_text)
+- [cursor_position](#cursor_position)
+- [druid](#druid)
+- [is_lshift](#is_lshift)
+- [is_lctrl](#is_lctrl)
+- [is_button_input_enabled](#is_button_input_enabled)
+- [drag](#drag)
+- [placeholder](#placeholder)
+- [text_position](#text_position)
+
+
+
+### init
+
+---
+```lua
+rich_input:init(template, nodes)
+```
+
+- **Parameters:**
+ - `template` *(string)*: The template string name
+ - `nodes` *(table)*: Nodes table from gui.clone_tree
+
+### set_placeholder
+
+---
+```lua
+rich_input:set_placeholder(placeholder_text)
+```
+
+Set placeholder text
+
+- **Parameters:**
+ - `placeholder_text` *(string)*: The placeholder text
+
+- **Returns:**
+ - `self` *(druid.rich_input)*: Current instance
+
+### select
+
+---
+```lua
+rich_input:select()
+```
+
+Select input field
+
+- **Returns:**
+ - `self` *(druid.rich_input)*: Current instance
+
+### set_text
+
+---
+```lua
+rich_input:set_text(text)
+```
+
+Set input field text
+
+- **Parameters:**
+ - `text` *(string)*: The input text
+
+- **Returns:**
+ - `self` *(druid.rich_input)*: Current instance
+
+### set_font
+
+---
+```lua
+rich_input:set_font(font)
+```
+
+Set input field font
+
+- **Parameters:**
+ - `font` *(hash)*: The font hash
+
+- **Returns:**
+ - `self` *(druid.rich_input)*: Current instance
+
+### get_text
+
+---
+```lua
+rich_input:get_text()
+```
+
+Set input field text
+
+- **Returns:**
+ - `` *(string)*:
+
+### set_allowed_characters
+
+---
+```lua
+rich_input:set_allowed_characters(characters)
+```
+
+Set allowed charaters for input field.
+ See: https://defold.com/ref/stable/string/
+ ex: [%a%d] for alpha and numeric
+
+- **Parameters:**
+ - `characters` *(string)*: Regular expression for validate user input
+
+- **Returns:**
+ - `self` *(druid.rich_input)*: Current instance
+
+
+## Fields
+
+- **root** (_node_): The root node of the rich input
+
+
+- **input** (_druid.input_): The input component
+
+
+- **cursor** (_node_): The cursor node
+
+
+- **cursor_text** (_node_): The cursor text node
+
+
+- **cursor_position** (_vector3_): The position of the cursor
+
+
+- **druid** (_druid.instance_): The Druid Factory used to create components
+
+
+- **is_lshift** (_boolean_)
+
+
+- **is_lctrl** (_boolean_)
+
+
+- **is_button_input_enabled** (_unknown_)
+
+
+- **drag** (_druid.drag_): A component that allows you to subscribe to drag events over a node
+
+
+- **placeholder** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **text_position** (_unknown_)
+
diff --git a/api/components/custom/rich_text_api.md b/api/components/custom/rich_text_api.md
new file mode 100644
index 0000000..4bbaa65
--- /dev/null
+++ b/api/components/custom/rich_text_api.md
@@ -0,0 +1,153 @@
+# druid.rich_text API
+
+> at /druid/custom/rich_text/rich_text.lua
+
+The component that handles a rich text display, allows to custom color, size, font, etc. of the parts of the text
+
+## Functions
+
+- [init](#init)
+- [set_text](#set_text)
+- [get_text](#get_text)
+- [clear](#clear)
+- [tagged](#tagged)
+- [get_words](#get_words)
+- [get_line_metric](#get_line_metric)
+
+## Fields
+
+- [root](#root)
+- [text_prefab](#text_prefab)
+- [style](#style)
+
+
+
+### init
+
+---
+```lua
+rich_text:init(text_node, [value])
+```
+
+- **Parameters:**
+ - `text_node` *(string|node)*: The text node to make Rich Text
+ - `[value]` *(string|nil)*: The initial text value. Default will be gui.get_text(text_node)
+
+### set_text
+
+---
+```lua
+rich_text:set_text([text])
+```
+
+Set text for Rich Text
+
+- **Parameters:**
+ - `[text]` *(string|nil)*: The text to set
+
+- **Returns:**
+ - `words` *(druid.rich_text.word[])*:
+ - `line_metrics` *(druid.rich_text.lines_metrics)*:
+
+- **Example Usage:**
+
+```lua
+-- Color
+rich_text:set_text("<color=red>Foobar</color>")
+rich_text:set_text("<color=1.0,0,0,1.0>Foobar</color>")
+rich_text:set_text("<color=#ff0000>Foobar</color>")
+rich_text:set_text("<color=#ff0000ff>Foobar</color>")
+-- Shadow
+rich_text:set_text("<shadow=red>Foobar</shadow>")
+rich_text:set_text("<shadow=1.0,0,0,1.0>Foobar</shadow>")
+rich_text:set_text("<shadow=#ff0000>Foobar</shadow>")
+rich_text:set_text("<shadow=#ff0000ff>Foobar</shadow>")
+-- Outline
+rich_text:set_text("<outline=red>Foobar</outline>")
+rich_text:set_text("<outline=1.0,0,0,1.0>Foobar</outline>")
+rich_text:set_text("<outline=#ff0000>Foobar</outline>")
+rich_text:set_text("<outline=#ff0000ff>Foobar</outline>")
+-- Font
+rich_text:set_text("<font=MyCoolFont>Foobar</font>")
+-- Size
+rich_text:set_text("<size=2>Twice as large</size>")
+-- Line break
+rich_text:set_text("<br/>Insert a line break")
+-- No break
+rich_text:set_text("<nobr>Prevent the text from breaking")
+-- Image
+rich_text:set_text("<img=texture:image>Display image")
+rich_text:set_text("<img=texture:image,size>Display image with size")
+rich_text:set_text("<img=texture:image,width,height>Display image with width and height")
+```
+### get_text
+
+---
+```lua
+rich_text:get_text()
+```
+
+Get the current text of the rich text
+
+- **Returns:**
+ - `text` *(string)*: The current text of the rich text
+
+### clear
+
+---
+```lua
+rich_text:clear()
+```
+
+Clear all created words.
+
+### tagged
+
+---
+```lua
+rich_text:tagged(tag)
+```
+
+Get all words, which has a passed tag.
+
+- **Parameters:**
+ - `tag` *(string)*: The tag to get the words for
+
+- **Returns:**
+ - `words` *(druid.rich_text.word[])*: The words with the passed tag
+
+### get_words
+
+---
+```lua
+rich_text:get_words()
+```
+
+Get all current created words, each word is a table that contains the information about the word
+
+- **Returns:**
+ - `` *(druid.rich_text.word[])*:
+
+### get_line_metric
+
+---
+```lua
+rich_text:get_line_metric()
+```
+
+Get the current line metrics
+
+- **Returns:**
+ - `lines_metrics` *(druid.rich_text.lines_metrics)*: The line metrics of the rich text
+
+
+## Fields
+
+- **root** (_node_): The root node of the rich text
+
+
+- **text_prefab** (_node_): The text prefab node
+
+
+- **style** (_table_)
+
diff --git a/api/components/extended/container_api.md b/api/components/extended/container_api.md
new file mode 100644
index 0000000..5c5a58f
--- /dev/null
+++ b/api/components/extended/container_api.md
@@ -0,0 +1,370 @@
+# druid.container API
+
+> at /druid/extended/container.lua
+
+Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
+
+### Setup
+Create container component with druid: `container = druid:new_container(node, mode, callback)`
+
+### Notes
+- Container can be used to create adaptable layouts that respond to window size changes
+- Container supports different layout modes: FIT, STRETCH, STRETCH_X, STRETCH_Y
+- Container can be nested inside other containers
+- Container supports fixed margins and percentage-based sizing
+- Container can be positioned using pivot points
+- Container supports minimum size constraints
+- Container can be fitted into window or custom size
+
+## Functions
+
+- [init](#init)
+- [refresh_origins](#refresh_origins)
+- [set_pivot](#set_pivot)
+- [set_size](#set_size)
+- [get_position](#get_position)
+- [set_position](#set_position)
+- [get_size](#get_size)
+- [get_scale](#get_scale)
+- [fit_into_size](#fit_into_size)
+- [fit_into_window](#fit_into_window)
+- [add_container](#add_container)
+- [remove_container_by_node](#remove_container_by_node)
+- [set_parent_container](#set_parent_container)
+- [refresh](#refresh)
+- [refresh_scale](#refresh_scale)
+- [update_child_containers](#update_child_containers)
+- [create_draggable_corners](#create_draggable_corners)
+- [clear_draggable_corners](#clear_draggable_corners)
+- [fit_into_node](#fit_into_node)
+- [set_min_size](#set_min_size)
+
+## Fields
+
+- [node](#node)
+- [druid](#druid)
+- [node_offset](#node_offset)
+- [origin_size](#origin_size)
+- [size](#size)
+- [origin_position](#origin_position)
+- [position](#position)
+- [pivot_offset](#pivot_offset)
+- [center_offset](#center_offset)
+- [mode](#mode)
+- [fit_size](#fit_size)
+- [min_size_x](#min_size_x)
+- [min_size_y](#min_size_y)
+- [on_size_changed](#on_size_changed)
+- [node_fill_x](#node_fill_x)
+- [node_fill_y](#node_fill_y)
+- [x_koef](#x_koef)
+- [y_koef](#y_koef)
+- [x_anchor](#x_anchor)
+- [y_anchor](#y_anchor)
+- [style](#style)
+
+
+
+### init
+
+---
+```lua
+container:init(node, mode, [callback])
+```
+
+The Container constructor
+
+- **Parameters:**
+ - `node` *(node)*: Gui node
+ - `mode` *(string)*: Layout mode
+ - `[callback]` *(fun(self: druid.container, size: vector3)|nil)*: Callback on size changed
+
+### refresh_origins
+
+---
+```lua
+container:refresh_origins()
+```
+
+Refresh the origins of the container, origins is the size and position of the container when it was created
+
+### set_pivot
+
+---
+```lua
+container:set_pivot(pivot)
+```
+
+Set the pivot of the container
+
+- **Parameters:**
+ - `pivot` *(constant)*: The pivot to set
+
+### set_size
+
+---
+```lua
+container:set_size([width], [height], [anchor_pivot])
+```
+
+Set new size of layout node
+
+- **Parameters:**
+ - `[width]` *(number|nil)*: The width to set
+ - `[height]` *(number|nil)*: The height to set
+ - `[anchor_pivot]` *(constant|nil)*: If set will keep the corner position relative to the new size
+
+- **Returns:**
+ - `Container` *(druid.container)*:
+
+### get_position
+
+---
+```lua
+container:get_position()
+```
+
+Get the position of the container
+
+- **Returns:**
+ - `position` *(vector3)*: The position of the container
+
+### set_position
+
+---
+```lua
+container:set_position(pos_x, pos_y)
+```
+
+Set the position of the container
+
+- **Parameters:**
+ - `pos_x` *(number)*: The x position to set
+ - `pos_y` *(number)*: The y position to set
+
+### get_size
+
+---
+```lua
+container:get_size()
+```
+
+Get the current size of the layout node
+
+- **Returns:**
+ - `size` *(vector3)*: The current size of the layout node
+
+### get_scale
+
+---
+```lua
+container:get_scale()
+```
+
+Get the current scale of the layout node
+
+- **Returns:**
+ - `scale` *(vector3)*: The current scale of the layout node
+
+### fit_into_size
+
+---
+```lua
+container:fit_into_size(target_size)
+```
+
+Set size for layout node to fit inside it
+
+- **Parameters:**
+ - `target_size` *(vector3)*: The target size to fit into
+
+- **Returns:**
+ - `self` *(druid.container)*: Current container instance
+
+### fit_into_window
+
+---
+```lua
+container:fit_into_window()
+```
+
+Set current size for layout node to fit inside it
+
+- **Returns:**
+ - `self` *(druid.container)*: Current container instance
+
+### add_container
+
+---
+```lua
+container:add_container(node_or_container, [mode], [on_resize_callback])
+```
+
+- **Parameters:**
+ - `node_or_container` *(string|table|druid.container|node)*: The node or container to add
+ - `[mode]` *(string|nil)*: stretch, fit, stretch_x, stretch_y. Default: Pick from node, "fit" or "stretch"
+ - `[on_resize_callback]` *(fun(self: userdata, size: vector3)|nil)*:
+
+- **Returns:**
+ - `Container` *(druid.container)*: New created layout instance
+
+### remove_container_by_node
+
+---
+```lua
+container:remove_container_by_node([node])
+```
+
+- **Parameters:**
+ - `[node]` *(any)*:
+
+- **Returns:**
+ - `` *(druid.container|nil)*:
+
+### set_parent_container
+
+---
+```lua
+container:set_parent_container([parent_container])
+```
+
+- **Parameters:**
+ - `[parent_container]` *(druid.container|nil)*: Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
+
+### refresh
+
+---
+```lua
+container:refresh()
+```
+
+### refresh_scale
+
+---
+```lua
+container:refresh_scale()
+```
+
+### update_child_containers
+
+---
+```lua
+container:update_child_containers()
+```
+
+### create_draggable_corners
+
+---
+```lua
+container:create_draggable_corners()
+```
+
+- **Returns:**
+ - `self` *(druid.container)*: Current container instance
+
+### clear_draggable_corners
+
+---
+```lua
+container:clear_draggable_corners()
+```
+
+- **Returns:**
+ - `self` *(druid.container)*: Current container instance
+
+### fit_into_node
+
+---
+```lua
+container:fit_into_node(node)
+```
+
+Set node for layout node to fit inside it. Pass nil to reset
+
+- **Parameters:**
+ - `node` *(string|node)*: The node_id or gui.get_node(node_id)
+
+- **Returns:**
+ - `self` *(druid.container)*: Current container instance
+
+### set_min_size
+
+---
+```lua
+container:set_min_size([min_size_x], [min_size_y])
+```
+
+Set the minimum size of the container
+
+- **Parameters:**
+ - `[min_size_x]` *(number|nil)*: The minimum size x
+ - `[min_size_y]` *(number|nil)*: The minimum size y
+
+- **Returns:**
+ - `self` *(druid.container)*: Current container instance
+
+
+## Fields
+
+- **node** (_node_): The gui node
+
+
+- **druid** (_druid.instance_): The druid instance
+
+
+- **node_offset** (_vector4_): The node offset
+
+
+- **origin_size** (_vector3_): The origin size
+
+
+- **size** (_vector3_): The current size
+
+
+- **origin_position** (_vector3_): The origin position
+
+
+- **position** (_vector3_): The current position
+
+
+- **pivot_offset** (_vector3_): The pivot offset
+
+
+- **center_offset** (_vector3_): The center offset
+
+
+- **mode** (_string_): The layout mode
+
+
+- **fit_size** (_vector3_): The fit size
+
+
+- **min_size_x** (_number_): The minimum size x
+
+
+- **min_size_y** (_number_): The minimum size y
+
+
+- **on_size_changed** (_event_): fun(self: druid.container, size: vector3) The event triggered when the size changes
+
+
+- **node_fill_x** (_nil_)
+
+
+- **node_fill_y** (_nil_)
+
+
+- **x_koef** (_number_)
+
+
+- **y_koef** (_number_)
+
+
+- **x_anchor** (_unknown_)
+
+
+- **y_anchor** (_unknown_)
+
+
+- **style** (_table_)
+
diff --git a/api/components/extended/data_list_api.md b/api/components/extended/data_list_api.md
new file mode 100644
index 0000000..bd6d37b
--- /dev/null
+++ b/api/components/extended/data_list_api.md
@@ -0,0 +1,239 @@
+# druid.data_list API
+
+> at /druid/extended/data_list.lua
+
+Druid component to manage a list of data with a scrollable view, used to manage huge list data and render only visible elements.
+
+### Setup
+Create data list component with druid: `data_list = druid:new_data_list(scroll, grid, create_function)`
+
+### Notes
+- Data List uses a scroll component for scrolling and a grid component for layout
+- Data List only renders visible elements for better performance
+- Data List supports caching of elements for better performance
+- Data List supports adding, removing and updating elements
+- Data List supports scrolling to specific elements
+- Data List supports custom element creation and cleanup
+
+## Functions
+
+- [init](#init)
+- [set_use_cache](#set_use_cache)
+- [set_data](#set_data)
+- [get_data](#get_data)
+- [add](#add)
+- [remove](#remove)
+- [remove_by_data](#remove_by_data)
+- [clear](#clear)
+- [get_index](#get_index)
+- [get_created_nodes](#get_created_nodes)
+- [get_created_components](#get_created_components)
+- [scroll_to_index](#scroll_to_index)
+
+## Fields
+
+- [scroll](#scroll)
+- [grid](#grid)
+- [on_scroll_progress_change](#on_scroll_progress_change)
+- [on_element_add](#on_element_add)
+- [on_element_remove](#on_element_remove)
+- [top_index](#top_index)
+- [last_index](#last_index)
+- [scroll_progress](#scroll_progress)
+
+
+
+### init
+
+---
+```lua
+data_list:init(scroll, grid, create_function)
+```
+
+The DataList constructor
+
+- **Parameters:**
+ - `scroll` *(druid.scroll)*: The Scroll instance for Data List component
+ - `grid` *(druid.grid)*: The StaticGrid instance for Data List component
+ - `create_function` *(function)*: The create function callback(self, data, index, data_list). Function should return (node, [component])
+
+### set_use_cache
+
+---
+```lua
+data_list:set_use_cache(is_use_cache)
+```
+
+Set use cache version of DataList. Requires make setup of components in on_element_add callback and clean in on_element_remove
+
+- **Parameters:**
+ - `is_use_cache` *(boolean)*: Use cache version of DataList
+
+- **Returns:**
+ - `self` *(druid.data_list)*: Current DataList instance
+
+### set_data
+
+---
+```lua
+data_list:set_data(data)
+```
+
+Set new data set for DataList component
+
+- **Parameters:**
+ - `data` *(table)*: The new data array
+
+- **Returns:**
+ - `self` *(druid.data_list)*: Current DataList instance
+
+### get_data
+
+---
+```lua
+data_list:get_data()
+```
+
+Return current data from DataList component
+
+- **Returns:**
+ - `data` *(table)*: The current data array
+
+### add
+
+---
+```lua
+data_list:add(data, [index], [shift_policy])
+```
+
+Add element to DataList
+
+- **Parameters:**
+ - `data` *(table)*: The data to add
+ - `[index]` *(number|nil)*: The index to add the data at
+ - `[shift_policy]` *(number|nil)*: The constant from const.SHIFT.*
+
+- **Returns:**
+ - `self` *(druid.data_list)*: Current DataList instance
+
+### remove
+
+---
+```lua
+data_list:remove([index], [shift_policy])
+```
+
+Remove element from DataList
+
+- **Parameters:**
+ - `[index]` *(number|nil)*: The index to remove the data at
+ - `[shift_policy]` *(number|nil)*: The constant from const.SHIFT.*
+
+- **Returns:**
+ - `self` *(druid.data_list)*: Current DataList instance
+
+### remove_by_data
+
+---
+```lua
+data_list:remove_by_data(data, [shift_policy])
+```
+
+Remove element from DataList by data value
+
+- **Parameters:**
+ - `data` *(table)*: The data to remove
+ - `[shift_policy]` *(number|nil)*: The constant from const.SHIFT.*
+
+- **Returns:**
+ - `self` *(druid.data_list)*: Current DataList instance
+
+### clear
+
+---
+```lua
+data_list:clear()
+```
+
+Clear the DataList and refresh visuals
+
+- **Returns:**
+ - `self` *(druid.data_list)*: Current DataList instance
+
+### get_index
+
+---
+```lua
+data_list:get_index(data)
+```
+
+Return index for data value
+
+- **Parameters:**
+ - `data` *(table)*:
+
+- **Returns:**
+ - `` *(unknown|nil)*:
+
+### get_created_nodes
+
+---
+```lua
+data_list:get_created_nodes()
+```
+
+Return all currently created nodes in DataList
+
+- **Returns:**
+ - `List` *(node[])*: of created nodes
+
+### get_created_components
+
+---
+```lua
+data_list:get_created_components()
+```
+
+Return all currently created components in DataList
+
+- **Returns:**
+ - `components` *(druid.component[])*: List of created components
+
+### scroll_to_index
+
+---
+```lua
+data_list:scroll_to_index(index)
+```
+
+Instant scroll to element with passed index
+
+- **Parameters:**
+ - `index` *(number)*: The index to scroll to
+
+
+## Fields
+
+- **scroll** (_druid.scroll_): The scroll instance for Data List component
+
+
+- **grid** (_druid.grid_): The StaticGrid or DynamicGrid instance for Data List component
+
+
+- **on_scroll_progress_change** (_event_): fun(self: druid.data_list, progress: number) The event triggered when the scroll progress changes
+
+
+- **on_element_add** (_event_): fun(self: druid.data_list, index: number, node: node, instance: druid.component, data: table) The event triggered when a new element is added
+
+
+- **on_element_remove** (_event_): fun(self: druid.data_list, index: number, node: node, instance: druid.component, data: table) The event triggered when an element is removed
+
+
+- **top_index** (_number_): The top index of the visible elements
+
+
+- **last_index** (_number_): The last index of the visible elements
+
+
+- **scroll_progress** (_number_): The scroll progress
+
diff --git a/api/components/extended/hotkey_api.md b/api/components/extended/hotkey_api.md
new file mode 100644
index 0000000..6252692
--- /dev/null
+++ b/api/components/extended/hotkey_api.md
@@ -0,0 +1,102 @@
+# druid.hotkey API
+
+> at /druid/extended/hotkey.lua
+
+Druid component to manage hotkeys and trigger callbacks when hotkeys are pressed.
+
+### Setup
+Create hotkey component with druid: `hotkey = druid:new_hotkey(keys, callback, callback_argument)`
+
+### Notes
+- Hotkey can be triggered by pressing a single key or a combination of keys
+- Hotkey supports modificator keys (e.g. Ctrl, Shift, Alt)
+- Hotkey can be triggered on key press, release or repeat
+- Hotkey can be added or removed at runtime
+- Hotkey can be enabled or disabled
+- Hotkey can be set to repeat on key hold
+
+## Functions
+
+- [init](#init)
+- [add_hotkey](#add_hotkey)
+- [is_processing](#is_processing)
+- [set_repeat](#set_repeat)
+
+## Fields
+
+- [on_hotkey_pressed](#on_hotkey_pressed)
+- [on_hotkey_released](#on_hotkey_released)
+- [style](#style)
+- [druid](#druid)
+
+
+
+### init
+
+---
+```lua
+hotkey:init(keys, callback, [callback_argument])
+```
+
+The Hotkey constructor
+
+- **Parameters:**
+ - `keys` *(string|string[])*: The keys to be pressed for trigger callback. Should contains one key and any modificator keys
+ - `callback` *(function)*: The callback function
+ - `[callback_argument]` *(any)*: The argument to pass into the callback function
+
+### add_hotkey
+
+---
+```lua
+hotkey:add_hotkey(keys, [callback_argument])
+```
+
+Add hotkey for component callback
+
+- **Parameters:**
+ - `keys` *(string|hash|hash[]|string[])*: that have to be pressed before key pressed to activate
+ - `[callback_argument]` *(any)*: The argument to pass into the callback function
+
+- **Returns:**
+ - `self` *(druid.hotkey)*: Current instance
+
+### is_processing
+
+---
+```lua
+hotkey:is_processing()
+```
+
+- **Returns:**
+ - `` *(boolean)*:
+
+### set_repeat
+
+---
+```lua
+hotkey:set_repeat(is_enabled_repeated)
+```
+
+If true, the callback will be triggered on action.repeated
+
+- **Parameters:**
+ - `is_enabled_repeated` *(boolean)*: The flag value
+
+- **Returns:**
+ - `self` *(druid.hotkey)*: Current instance
+
+
+## Fields
+
+- **on_hotkey_pressed** (_event_): fun(self, context, callback_argument) The event triggered when a hotkey is pressed
+
+
+- **on_hotkey_released** (_event_): fun(self, context, callback_argument) The event triggered when a hotkey is released
+
+
+- **style** (_druid.hotkey.style_): The style of the hotkey component
+
+
+- **druid** (_druid.instance_): The Druid Factory used to create components
+
diff --git a/api/components/extended/input_api.md b/api/components/extended/input_api.md
new file mode 100644
index 0000000..fbfab44
--- /dev/null
+++ b/api/components/extended/input_api.md
@@ -0,0 +1,307 @@
+# druid.input API
+
+> at /druid/extended/input.lua
+
+Basic Druid text input component. Handles user text input via component with button and text.
+
+### Setup
+Create input component with druid: `input = druid:new_input(button_node_name, text_node_name, keyboard_type)`
+
+### Notes
+- Input component handles user text input. Input contains button and text components
+- Button needed for selecting/unselecting input field
+- Click outside of button to unselect input field
+- On focus lost (game minimized) input field will be unselected
+- You can setup max length of the text
+- You can setup allowed characters. On add not allowed characters `on_input_wrong` will be called
+
+## Functions
+
+- [init](#init)
+- [get_text_selected](#get_text_selected)
+- [get_text_selected_replaced](#get_text_selected_replaced)
+- [set_text](#set_text)
+- [select](#select)
+- [unselect](#unselect)
+- [get_text](#get_text)
+- [set_max_length](#set_max_length)
+- [set_allowed_characters](#set_allowed_characters)
+- [reset_changes](#reset_changes)
+- [select_cursor](#select_cursor)
+- [move_selection](#move_selection)
+
+## Fields
+
+- [on_input_select](#on_input_select)
+- [on_input_unselect](#on_input_unselect)
+- [on_input_text](#on_input_text)
+- [on_input_empty](#on_input_empty)
+- [on_input_full](#on_input_full)
+- [on_input_wrong](#on_input_wrong)
+- [on_select_cursor_change](#on_select_cursor_change)
+- [style](#style)
+- [druid](#druid)
+- [text](#text)
+- [is_selected](#is_selected)
+- [value](#value)
+- [previous_value](#previous_value)
+- [current_value](#current_value)
+- [marked_value](#marked_value)
+- [is_empty](#is_empty)
+- [text_width](#text_width)
+- [market_text_width](#market_text_width)
+- [total_width](#total_width)
+- [cursor_index](#cursor_index)
+- [start_index](#start_index)
+- [end_index](#end_index)
+- [max_length](#max_length)
+- [allowed_characters](#allowed_characters)
+- [keyboard_type](#keyboard_type)
+- [button](#button)
+- [marked_text_width](#marked_text_width)
+
+
+
+### init
+
+---
+```lua
+input:init(click_node, text_node, [keyboard_type])
+```
+
+- **Parameters:**
+ - `click_node` *(node)*: Node to enabled input component
+ - `text_node` *(druid.text|node)*: Text node what will be changed on user input. You can pass text component instead of text node name Text
+ - `[keyboard_type]` *(constant|nil)*: Gui keyboard type for input field
+
+### get_text_selected
+
+---
+```lua
+input:get_text_selected()
+```
+
+- **Returns:**
+ - `` *(string|unknown)*:
+
+### get_text_selected_replaced
+
+---
+```lua
+input:get_text_selected_replaced(text)
+```
+
+Replace selected text with new text
+
+- **Parameters:**
+ - `text` *(string)*: The text to replace selected text
+
+- **Returns:**
+ - `new_text` *(string)*: New input text
+
+### set_text
+
+---
+```lua
+input:set_text([input_text])
+```
+
+Set text for input field
+
+- **Parameters:**
+ - `[input_text]` *(string?)*: The string to apply for input field, if nil - will be set to empty string
+
+### select
+
+---
+```lua
+input:select()
+```
+
+Select input field. It will show the keyboard and trigger on_select events
+
+### unselect
+
+---
+```lua
+input:unselect()
+```
+
+Remove selection from input. It will hide the keyboard and trigger on_unselect events
+
+### get_text
+
+---
+```lua
+input:get_text()
+```
+
+Return current input field text
+
+- **Returns:**
+ - `text` *(string)*: The current input field text
+
+### set_max_length
+
+---
+```lua
+input:set_max_length(max_length)
+```
+
+Set maximum length for input field.
+Pass nil to make input field unliminted (by default)
+
+- **Parameters:**
+ - `max_length` *(number)*: Maximum length for input text field
+
+- **Returns:**
+ - `self` *(druid.input)*: Current input instance
+
+### set_allowed_characters
+
+---
+```lua
+input:set_allowed_characters(characters)
+```
+
+Set allowed charaters for input field.
+See: https://defold.com/ref/stable/string/
+ex: [%a%d] for alpha and numeric
+ex: [abcdef] to allow only these characters
+ex: [^%s] to allow only non-space characters
+
+- **Parameters:**
+ - `characters` *(string)*: Regular expression for validate user input
+
+- **Returns:**
+ - `self` *(druid.input)*: Current input instance
+
+### reset_changes
+
+---
+```lua
+input:reset_changes()
+```
+
+Reset current input selection and return previous value
+
+- **Returns:**
+ - `self` *(druid.input)*: Current input instance
+
+### select_cursor
+
+---
+```lua
+input:select_cursor([cursor_index], [start_index], [end_index])
+```
+
+Set cursor position in input field
+
+- **Parameters:**
+ - `[cursor_index]` *(number|nil)*: Cursor index for cursor position, if nil - will be set to the end of the text
+ - `[start_index]` *(number|nil)*: Start index for cursor position, if nil - will be set to the end of the text
+ - `[end_index]` *(number|nil)*: End index for cursor position, if nil - will be set to the start_index
+
+- **Returns:**
+ - `self` *(druid.input)*: Current input instance
+
+### move_selection
+
+---
+```lua
+input:move_selection(delta, is_add_to_selection, is_move_to_end)
+```
+
+Change cursor position by delta
+
+- **Parameters:**
+ - `delta` *(number)*: side for cursor position, -1 for left, 1 for right
+ - `is_add_to_selection` *(boolean)*: (Shift key)
+ - `is_move_to_end` *(boolean)*: (Ctrl key)
+
+- **Returns:**
+ - `self` *(druid.input)*: Current input instance
+
+
+## Fields
+
+- **on_input_select** (_event_): fun(self: druid.input, input: druid.input) The event triggered when the input field is selected
+
+
+- **on_input_unselect** (_event_): fun(self: druid.input, text: string, input: druid.input) The event triggered when the input field is unselected
+
+
+- **on_input_text** (_event_): fun(self: druid.input) The event triggered when the input field is changed
+
+
+- **on_input_empty** (_event_): fun(self: druid.input) The event triggered when the input field is empty
+
+
+- **on_input_full** (_event_): fun(self: druid.input) The event triggered when the input field is full
+
+
+- **on_input_wrong** (_event_): fun(self: druid.input) The event triggered when the input field is wrong
+
+
+- **on_select_cursor_change** (_event_): fun(self: druid.input, cursor_index: number, start_index: number, end_index: number) The event triggered when the cursor index is changed
+
+
+- **style** (_druid.input.style_): The style of the input component
+
+
+- **druid** (_druid.instance_): The Druid Factory used to create components
+
+
+- **text** (_druid.text|node_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **is_selected** (_boolean_)
+
+
+- **value** (_unknown_)
+
+
+- **previous_value** (_unknown_)
+
+
+- **current_value** (_unknown_)
+
+
+- **marked_value** (_string_)
+
+
+- **is_empty** (_boolean_)
+
+
+- **text_width** (_integer_)
+
+
+- **market_text_width** (_integer_)
+
+
+- **total_width** (_integer_)
+
+
+- **cursor_index** (_integer_)
+
+
+- **start_index** (_number_)
+
+
+- **end_index** (_number_)
+
+
+- **max_length** (_nil_)
+
+
+- **allowed_characters** (_nil_)
+
+
+- **keyboard_type** (_constant_)
+
+
+- **button** (_druid.button_): Basic Druid input component. Handle input on node and provide different callbacks on touch events.
+
+
+- **marked_text_width** (_number_)
+
diff --git a/api/components/extended/lang_text_api.md b/api/components/extended/lang_text_api.md
new file mode 100644
index 0000000..4600f61
--- /dev/null
+++ b/api/components/extended/lang_text_api.md
@@ -0,0 +1,122 @@
+# druid.lang_text API
+
+> at /druid/extended/lang_text.lua
+
+The component used for displaying localized text, can automatically update text when locale is changed.
+It wraps the Text component to handle localization using druid's get_text_function to set text by its id.
+
+### Setup
+Create lang text component with druid: `text = druid:new_lang_text(node_name, locale_id)`
+
+### Notes
+- Component automatically updates text when locale is changed
+- Uses druid's get_text_function to get localized text by id
+- Supports string formatting with additional parameters
+
+## Functions
+
+- [init](#init)
+- [set_to](#set_to)
+- [set_text](#set_text)
+- [translate](#translate)
+- [format](#format)
+
+## Fields
+
+- [text](#text)
+- [node](#node)
+- [on_change](#on_change)
+- [druid](#druid)
+
+
+
+### init
+
+---
+```lua
+lang_text:init(node, [locale_id], [adjust_type])
+```
+
+- **Parameters:**
+ - `node` *(string|node)*: The node_id or gui.get_node(node_id)
+ - `[locale_id]` *(string|nil)*: Default locale id or text from node as default. If not provided, will use text from the node
+ - `[adjust_type]` *(string|nil)*: Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference
+
+- **Returns:**
+ - `` *(druid.lang_text)*:
+
+### set_to
+
+---
+```lua
+lang_text:set_to(text)
+```
+
+Setup raw text to lang_text component. This will clear any locale settings.
+
+- **Parameters:**
+ - `text` *(string)*: Text for text node
+
+- **Returns:**
+ - `self` *(druid.lang_text)*: Current instance
+
+### set_text
+
+---
+```lua
+lang_text:set_text(text)
+```
+
+Setup raw text to lang_text component. This will clear any locale settings.
+
+- **Parameters:**
+ - `text` *(string)*: Text for text node
+
+- **Returns:**
+ - `self` *(druid.lang_text)*: Current instance
+
+### translate
+
+---
+```lua
+lang_text:translate(locale_id, ...)
+```
+
+Translate the text by locale_id. The text will be automatically updated when locale changes.
+
+- **Parameters:**
+ - `locale_id` *(string)*: Locale id to get text from
+ - `...` *(...)*: vararg
+
+- **Returns:**
+ - `self` *(druid.lang_text)*: Current instance
+
+### format
+
+---
+```lua
+lang_text:format(...)
+```
+
+Format string with new text params on localized text. Keeps the current locale but updates the format parameters.
+
+- **Parameters:**
+ - `...` *(...)*: vararg
+
+- **Returns:**
+ - `self` *(druid.lang_text)*: Current instance
+
+
+## Fields
+
+- **text** (_druid.text_): The text component
+
+
+- **node** (_node_): The node of the text component
+
+
+- **on_change** (_event_): fun(self: druid.lang_text) The event triggered when the text is changed
+
+
+- **druid** (_druid.instance_): The Druid Factory used to create components
+
diff --git a/api/components/extended/layout_api.md b/api/components/extended/layout_api.md
new file mode 100644
index 0000000..082eebd
--- /dev/null
+++ b/api/components/extended/layout_api.md
@@ -0,0 +1,344 @@
+# druid.layout API
+
+> at /druid/extended/layout.lua
+
+Druid component to manage the layout of nodes, placing them inside the node size with respect to the size and pivot of each node.
+
+### Setup
+Create layout component with druid: `layout = druid:new_layout(node, layout_type)`
+
+### Notes
+- Layout can be horizontal, vertical or horizontal with wrapping
+- Layout can resize parent node to fit content
+- Layout can justify content
+- Layout supports margins and padding
+- Layout automatically updates when nodes are added or removed
+- Layout can be manually updated by calling set_dirty()
+
+## Functions
+
+- [init](#init)
+- [update](#update)
+- [get_entities](#get_entities)
+- [set_node_index](#set_node_index)
+- [set_margin](#set_margin)
+- [set_padding](#set_padding)
+- [set_dirty](#set_dirty)
+- [set_justify](#set_justify)
+- [set_type](#set_type)
+- [set_hug_content](#set_hug_content)
+- [add](#add)
+- [remove](#remove)
+- [get_size](#get_size)
+- [get_content_size](#get_content_size)
+- [refresh_layout](#refresh_layout)
+- [clear_layout](#clear_layout)
+- [get_node_size](#get_node_size)
+- [calculate_rows_data](#calculate_rows_data)
+- [set_node_position](#set_node_position)
+
+## Fields
+
+- [node](#node)
+- [rows_data](#rows_data)
+- [is_dirty](#is_dirty)
+- [entities](#entities)
+- [margin](#margin)
+- [padding](#padding)
+- [type](#type)
+- [is_resize_width](#is_resize_width)
+- [is_resize_height](#is_resize_height)
+- [is_justify](#is_justify)
+- [on_size_changed](#on_size_changed)
+- [size](#size)
+
+
+
+### init
+
+---
+```lua
+layout:init(node_or_node_id, layout_type)
+```
+
+```lua
+layout_type:
+ | "horizontal"
+ | "vertical"
+ | "horizontal_wrap"
+```
+
+- **Parameters:**
+ - `node_or_node_id` *(string|node)*: The node to manage the layout of
+ - `layout_type` *("horizontal"|"horizontal_wrap"|"vertical")*: The type of layout (horizontal, vertical, horizontal_wrap)
+
+### update
+
+---
+```lua
+layout:update()
+```
+
+### get_entities
+
+---
+```lua
+layout:get_entities()
+```
+
+- **Returns:**
+ - `entities` *(node[])*: The entities to manage the layout of
+
+### set_node_index
+
+---
+```lua
+layout:set_node_index(node, index)
+```
+
+- **Parameters:**
+ - `node` *(node)*: The node to set the index of
+ - `index` *(number)*: The index to set the node to
+
+- **Returns:**
+ - `self` *(druid.layout)*: for chaining
+
+### set_margin
+
+---
+```lua
+layout:set_margin([margin_x], [margin_y])
+```
+
+Set the margin of the layout
+
+- **Parameters:**
+ - `[margin_x]` *(number|nil)*: The margin x
+ - `[margin_y]` *(number|nil)*: The margin y
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### set_padding
+
+---
+```lua
+layout:set_padding([padding_x], [padding_y], [padding_z], [padding_w])
+```
+
+- **Parameters:**
+ - `[padding_x]` *(number|nil)*: The padding x
+ - `[padding_y]` *(number|nil)*: The padding y
+ - `[padding_z]` *(number|nil)*: The padding z
+ - `[padding_w]` *(number|nil)*: The padding w
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### set_dirty
+
+---
+```lua
+layout:set_dirty()
+```
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### set_justify
+
+---
+```lua
+layout:set_justify(is_justify)
+```
+
+- **Parameters:**
+ - `is_justify` *(boolean)*:
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### set_type
+
+---
+```lua
+layout:set_type(layout_type)
+```
+
+```lua
+layout_type:
+ | "horizontal"
+ | "vertical"
+ | "horizontal_wrap"
+```
+
+- **Parameters:**
+ - `layout_type` *("horizontal"|"horizontal_wrap"|"vertical")*:
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### set_hug_content
+
+---
+```lua
+layout:set_hug_content(is_hug_width, is_hug_height)
+```
+
+- **Parameters:**
+ - `is_hug_width` *(boolean)*:
+ - `is_hug_height` *(boolean)*:
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### add
+
+---
+```lua
+layout:add(node_or_node_id)
+```
+
+Add node to layout
+
+- **Parameters:**
+ - `node_or_node_id` *(string|node)*: node_or_node_id
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### remove
+
+---
+```lua
+layout:remove(node_or_node_id)
+```
+
+Remove node from layout
+
+- **Parameters:**
+ - `node_or_node_id` *(string|node)*: node_or_node_id
+
+- **Returns:**
+ - `self` *(druid.layout)*: for chaining
+
+### get_size
+
+---
+```lua
+layout:get_size()
+```
+
+- **Returns:**
+ - `` *(vector3)*:
+
+### get_content_size
+
+---
+```lua
+layout:get_content_size()
+```
+
+- **Returns:**
+ - `` *(number)*:
+ - `` *(number)*:
+
+### refresh_layout
+
+---
+```lua
+layout:refresh_layout()
+```
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### clear_layout
+
+---
+```lua
+layout:clear_layout()
+```
+
+- **Returns:**
+ - `self` *(druid.layout)*: Current layout instance
+
+### get_node_size
+
+---
+```lua
+layout:get_node_size(node)
+```
+
+- **Parameters:**
+ - `node` *(node)*:
+
+- **Returns:**
+ - `width` *(number)*: The width of the node
+ - `height` *(number)*: The height of the node
+
+### calculate_rows_data
+
+---
+```lua
+layout:calculate_rows_data()
+```
+
+Calculate rows data for layout. Contains total width, height and rows info (width, height, count of elements in row)
+
+- **Returns:**
+ - `` *(druid.layout.rows_data)*:
+
+### set_node_position
+
+---
+```lua
+layout:set_node_position(node, x, y)
+```
+
+- **Parameters:**
+ - `node` *(node)*:
+ - `x` *(number)*:
+ - `y` *(number)*:
+
+- **Returns:**
+ - `` *(node)*:
+
+
+## Fields
+
+- **node** (_node_): The node to manage the layout of
+
+
+- **rows_data** (_druid.layout.rows_data_): Last calculated rows data
+
+
+- **is_dirty** (_boolean_): True if layout needs to be updated
+
+
+- **entities** (_node[]_): The entities to manage the layout of
+
+
+- **margin** (_{ x: number, y: number }_): The margin of the layout
+
+
+- **padding** (_vector4_): The padding of the layout
+
+
+- **type** (_string_): The type of the layout
+
+
+- **is_resize_width** (_boolean_): True if the layout should resize the width of the node
+
+
+- **is_resize_height** (_boolean_): True if the layout should resize the height of the node
+
+
+- **is_justify** (_boolean_): True if the layout should justify the nodes
+
+
+- **on_size_changed** (_event.on_size_changed_): fun(self: druid.layout, size: vector3) The event triggered when the size of the layout is changed
+
+
+- **size** (_unknown_)
+
diff --git a/api/components/extended/progress_api.md b/api/components/extended/progress_api.md
new file mode 100644
index 0000000..0c1cb37
--- /dev/null
+++ b/api/components/extended/progress_api.md
@@ -0,0 +1,215 @@
+# druid.progress API
+
+> at /druid/extended/progress.lua
+
+Basic Druid progress bar component. Changes the size or scale of a node to represent progress.
+
+### Setup
+Create progress bar component with druid: `progress = druid:new_progress(node_name, key, init_value)`
+
+### Notes
+- Node should have maximum node size in GUI scene, it represents the progress bar's maximum size
+- Key is value from druid const: "x" or "y"
+- Progress works correctly with 9slice nodes, it tries to set size by _set_size_ first until minimum size is reached, then it continues sizing via _set_scale_
+- Progress bar can fill only by vertical or horizontal size. For diagonal progress bar, just rotate the node in GUI scene
+- If you have glitchy or dark texture bugs with progress bar, try to disable mipmaps in your texture profiles
+
+## Functions
+
+- [init](#init)
+- [update](#update)
+- [fill](#fill)
+- [empty](#empty)
+- [set_to](#set_to)
+- [get](#get)
+- [set_steps](#set_steps)
+- [to](#to)
+- [set_max_size](#set_max_size)
+
+## Fields
+
+- [node](#node)
+- [on_change](#on_change)
+- [style](#style)
+- [key](#key)
+- [prop](#prop)
+- [scale](#scale)
+- [size](#size)
+- [max_size](#max_size)
+- [slice](#slice)
+- [last_value](#last_value)
+- [slice_size](#slice_size)
+- [target](#target)
+- [steps](#steps)
+- [step_callback](#step_callback)
+- [target_callback](#target_callback)
+
+
+
+### init
+
+---
+```lua
+progress:init(node, key, [init_value])
+```
+
+- **Parameters:**
+ - `node` *(string|node)*: Node name or GUI Node itself.
+ - `key` *(string)*: Progress bar direction: "x" or "y"
+ - `[init_value]` *(number|nil)*: Initial value of progress bar (0 to 1). Default: 1
+
+### update
+
+---
+```lua
+progress:update(dt)
+```
+
+- **Parameters:**
+ - `dt` *(number)*: Delta time
+
+### fill
+
+---
+```lua
+progress:fill()
+```
+
+Fill the progress bar
+
+- **Returns:**
+ - `self` *(druid.progress)*: Current progress instance
+
+### empty
+
+---
+```lua
+progress:empty()
+```
+
+Empty the progress bar
+
+- **Returns:**
+ - `self` *(druid.progress)*: Current progress instance
+
+### set_to
+
+---
+```lua
+progress:set_to(to)
+```
+
+Instant fill progress bar to value
+
+- **Parameters:**
+ - `to` *(number)*: Progress bar value, from 0 to 1
+
+- **Returns:**
+ - `self` *(druid.progress)*: Current progress instance
+
+### get
+
+---
+```lua
+progress:get()
+```
+
+Return the current value of the progress bar
+
+- **Returns:**
+ - `value` *(number)*: The current value of the progress bar
+
+### set_steps
+
+---
+```lua
+progress:set_steps(steps, callback)
+```
+
+Set points on progress bar to fire the callback
+
+- **Parameters:**
+ - `steps` *(number[])*: Array of progress bar values
+ - `callback` *(function)*: Callback on intersect step value
+
+- **Returns:**
+ - `self` *(druid.progress)*: Current progress instance
+
+### to
+
+---
+```lua
+progress:to(to, [callback])
+```
+
+Start animation of a progress bar
+
+- **Parameters:**
+ - `to` *(number)*: value between 0..1
+ - `[callback]` *(function|nil)*: Callback on animation ends
+
+- **Returns:**
+ - `self` *(druid.progress)*: Current progress instance
+
+### set_max_size
+
+---
+```lua
+progress:set_max_size(max_size)
+```
+
+Set progress bar max node size
+
+- **Parameters:**
+ - `max_size` *(vector3)*: The new node maximum (full) size
+
+- **Returns:**
+ - `self` *(druid.progress)*: Current progress instance
+
+
+## Fields
+
+- **node** (_node_): The progress bar node
+
+
+- **on_change** (_event_): fun(self: druid.progress, value: number) Event triggered when progress value changes
+
+
+- **style** (_druid.progress.style_): Component style parameters
+
+
+- **key** (_string_): Progress bar direction: "x" or "y"
+
+
+- **prop** (_hash_): Property for scaling the progress bar
+
+
+- **scale** (_unknown_)
+
+
+- **size** (_unknown_)
+
+
+- **max_size** (_unknown_)
+
+
+- **slice** (_unknown_)
+
+
+- **last_value** (_number_)
+
+
+- **slice_size** (_unknown_)
+
+
+- **target** (_nil_)
+
+
+- **steps** (_number[]_)
+
+
+- **step_callback** (_function_)
+
+
+- **target_callback** (_function|nil_)
+
diff --git a/api/components/extended/slider_api.md b/api/components/extended/slider_api.md
new file mode 100644
index 0000000..8a97afd
--- /dev/null
+++ b/api/components/extended/slider_api.md
@@ -0,0 +1,135 @@
+# druid.slider API
+
+> at /druid/extended/slider.lua
+
+Basic Druid slider component. Creates a draggable node over a line with progress reporting.
+
+### Setup
+Create slider component with druid: `slider = druid:new_slider(node_name, end_pos, callback)`
+
+### Notes
+- Pin node should be placed in initial position at zero progress
+- It will be available to move Pin node between start pos and end pos
+- You can setup points of interests on slider via `slider:set_steps`. If steps exist, slider values will be only from these steps (notched slider)
+- Start pos and end pos should be on vertical or horizontal line (their x or y value should be equal)
+- To catch input across all slider, you can setup input node via `slider:set_input_node`
+
+## Functions
+
+- [init](#init)
+- [set](#set)
+- [set_steps](#set_steps)
+- [set_input_node](#set_input_node)
+- [set_enabled](#set_enabled)
+- [is_enabled](#is_enabled)
+
+## Fields
+
+- [node](#node)
+- [on_change_value](#on_change_value)
+- [style](#style)
+
+
+
+### init
+
+---
+```lua
+slider:init(node, end_pos, [callback])
+```
+
+The Slider constructor
+
+- **Parameters:**
+ - `node` *(node)*: GUI node to drag as a slider
+ - `end_pos` *(vector3)*: The end position of slider, should be on the same axis as the node
+ - `[callback]` *(function|nil)*: On slider change callback
+
+### set
+
+---
+```lua
+slider:set(value, [is_silent])
+```
+
+Set value for slider
+
+- **Parameters:**
+ - `value` *(number)*: Value from 0 to 1
+ - `[is_silent]` *(boolean|nil)*: Don't trigger event if true
+
+- **Returns:**
+ - `self` *(druid.slider)*: Current slider instance
+
+### set_steps
+
+---
+```lua
+slider:set_steps(steps)
+```
+
+Set slider steps. Pin node will
+apply closest step position
+
+- **Parameters:**
+ - `steps` *(number[])*: Array of steps
+
+- **Returns:**
+ - `self` *(druid.slider)*: Current slider instance
+
+### set_input_node
+
+---
+```lua
+slider:set_input_node([input_node])
+```
+
+Set input zone for slider.
+User can touch any place of node, pin instantly will
+move at this position and node drag will start.
+This function require the Defold version 1.3.0+
+
+- **Parameters:**
+ - `[input_node]` *(string|node|nil)*:
+
+- **Returns:**
+ - `self` *(druid.slider)*: Current slider instance
+
+### set_enabled
+
+---
+```lua
+slider:set_enabled(is_enabled)
+```
+
+Set Slider input enabled or disabled
+
+- **Parameters:**
+ - `is_enabled` *(boolean)*: True if slider is enabled
+
+- **Returns:**
+ - `self` *(druid.slider)*: Current slider instance
+
+### is_enabled
+
+---
+```lua
+slider:is_enabled()
+```
+
+Check if Slider component is enabled
+
+- **Returns:**
+ - `is_enabled` *(boolean)*: True if slider is enabled
+
+
+## Fields
+
+- **node** (_node_): The node to manage the slider
+
+
+- **on_change_value** (_event_): fun(self: druid.slider, value: number) The event triggered when the slider value changes
+
+
+- **style** (_table_): The style of the slider
+
diff --git a/api/components/extended/swipe_api.md b/api/components/extended/swipe_api.md
new file mode 100644
index 0000000..2b5fa1d
--- /dev/null
+++ b/api/components/extended/swipe_api.md
@@ -0,0 +1,57 @@
+# druid.swipe API
+
+> at /druid/extended/swipe.lua
+
+The component to manage swipe events over a node
+
+## Functions
+
+- [init](#init)
+- [set_click_zone](#set_click_zone)
+
+## Fields
+
+- [node](#node)
+- [on_swipe](#on_swipe)
+- [style](#style)
+- [click_zone](#click_zone)
+
+
+
+### init
+
+---
+```lua
+swipe:init(node_or_node_id, on_swipe_callback)
+```
+
+- **Parameters:**
+ - `node_or_node_id` *(string|node)*:
+ - `on_swipe_callback` *(function)*:
+
+### set_click_zone
+
+---
+```lua
+swipe:set_click_zone([zone])
+```
+
+Set the click zone for the swipe, useful for restricting events outside stencil node
+
+- **Parameters:**
+ - `[zone]` *(string|node|nil)*: Gui node
+
+
+## Fields
+
+- **node** (_node_): The node to manage the swipe
+
+
+- **on_swipe** (_event_): fun(context, side, dist, dt) The event triggered when a swipe is detected
+
+
+- **style** (_druid.swipe.style_): The style of the swipe
+
+
+- **click_zone** (_node_): The click zone of the swipe
+
diff --git a/api/components/extended/timer_api.md b/api/components/extended/timer_api.md
new file mode 100644
index 0000000..58a9c91
--- /dev/null
+++ b/api/components/extended/timer_api.md
@@ -0,0 +1,130 @@
+# druid.timer API
+
+> at /druid/extended/timer.lua
+
+Druid component to handle timer work on gui text node. Displays time in a formatted way.
+
+### Setup
+Create timer component with druid: `timer = druid:new_timer(text_node, from_seconds, to_seconds, callback)`
+
+### Notes
+- Timer fires callback when timer value equals to _to_seconds_
+- Timer will set text node with current timer value
+- Timer uses update function to handle time
+
+## Functions
+
+- [init](#init)
+- [set_to](#set_to)
+- [set_state](#set_state)
+- [set_interval](#set_interval)
+
+## Fields
+
+- [on_tick](#on_tick)
+- [on_set_enabled](#on_set_enabled)
+- [on_timer_end](#on_timer_end)
+- [node](#node)
+- [from](#from)
+- [target](#target)
+- [value](#value)
+- [is_on](#is_on)
+- [temp](#temp)
+- [last_value](#last_value)
+
+
+
+### init
+
+---
+```lua
+timer:init(node, [seconds_from], [seconds_to], [callback])
+```
+
+- **Parameters:**
+ - `node` *(node)*: Gui text node
+ - `[seconds_from]` *(number|nil)*: Start timer value in seconds
+ - `[seconds_to]` *(number|nil)*: End timer value in seconds
+ - `[callback]` *(function|nil)*: Function that triggers when timer value equals to seconds_to
+
+- **Returns:**
+ - `` *(druid.timer)*:
+
+### set_to
+
+---
+```lua
+timer:set_to(set_to)
+```
+
+Set the timer to a specific value
+
+- **Parameters:**
+ - `set_to` *(number)*: Value in seconds
+
+- **Returns:**
+ - `self` *(druid.timer)*: Current timer instance
+
+### set_state
+
+---
+```lua
+timer:set_state([is_on])
+```
+
+Set the timer to a specific value
+
+- **Parameters:**
+ - `[is_on]` *(boolean|nil)*: Timer enable state
+
+- **Returns:**
+ - `self` *(druid.timer)*: Current timer instance
+
+### set_interval
+
+---
+```lua
+timer:set_interval(from, to)
+```
+
+Set the timer interval
+
+- **Parameters:**
+ - `from` *(number)*: Start time in seconds
+ - `to` *(number)*: Target time in seconds
+
+- **Returns:**
+ - `self` *(druid.timer)*: Current timer instance
+
+
+## Fields
+
+- **on_tick** (_event_): fun(context, value) The event triggered when the timer ticks
+
+
+- **on_set_enabled** (_event_): fun(context, is_on) The event triggered when the timer is enabled
+
+
+- **on_timer_end** (_event_): fun(context) The event triggered when the timer ends
+
+
+- **node** (_node_): The node to display the timer
+
+
+- **from** (_number_): The start time of the timer
+
+
+- **target** (_number_): The target time of the timer
+
+
+- **value** (_number_): The current value of the timer
+
+
+- **is_on** (_boolean_): True if the timer is on
+
+
+- **temp** (_unknown_)
+
+
+- **last_value** (_number_)
+
diff --git a/api/components/widgets/fps_panel_api.md b/api/components/widgets/fps_panel_api.md
new file mode 100644
index 0000000..abcf84f
--- /dev/null
+++ b/api/components/widgets/fps_panel_api.md
@@ -0,0 +1,93 @@
+# druid.widget.fps_panel API
+
+> at /druid/widget/fps_panel/fps_panel.lua
+
+## Functions
+
+- [init](#init)
+- [on_remove](#on_remove)
+- [update](#update)
+- [push_fps_value](#push_fps_value)
+
+## Fields
+
+- [root](#root)
+- [delta_time](#delta_time)
+- [collect_time](#collect_time)
+- [collect_time_counter](#collect_time_counter)
+- [graph_samples](#graph_samples)
+- [fps_samples](#fps_samples)
+- [mini_graph](#mini_graph)
+- [text_min_fps](#text_min_fps)
+- [text_fps](#text_fps)
+- [timer_id](#timer_id)
+- [previous_time](#previous_time)
+
+
+
+### init
+
+---
+```lua
+fps_panel:init()
+```
+
+### on_remove
+
+---
+```lua
+fps_panel:on_remove()
+```
+
+### update
+
+---
+```lua
+fps_panel:update([dt])
+```
+
+- **Parameters:**
+ - `[dt]` *(any)*:
+
+### push_fps_value
+
+---
+```lua
+fps_panel:push_fps_value()
+```
+
+
+## Fields
+
+- **root** (_node_)
+
+
+- **delta_time** (_number_): in seconds
+
+
+- **collect_time** (_integer_): in seconds
+
+
+- **collect_time_counter** (_integer_)
+
+
+- **graph_samples** (_number_)
+
+
+- **fps_samples** (_table_): Store frame time in seconds last collect_time seconds
+
+
+- **mini_graph** (_druid.widget.mini_graph_): Widget to display a several lines with different height in a row
+
+
+- **text_min_fps** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **text_fps** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **timer_id** (_unknown_)
+
+
+- **previous_time** (_unknown_)
+
diff --git a/api/components/widgets/memory_panel_api.md b/api/components/widgets/memory_panel_api.md
new file mode 100644
index 0000000..0661cce
--- /dev/null
+++ b/api/components/widgets/memory_panel_api.md
@@ -0,0 +1,101 @@
+# druid.widget.memory_panel API
+
+> at /druid/widget/memory_panel/memory_panel.lua
+
+## Functions
+
+- [init](#init)
+- [on_remove](#on_remove)
+- [set_low_memory_limit](#set_low_memory_limit)
+- [push_next_value](#push_next_value)
+- [update_text_memory](#update_text_memory)
+
+## Fields
+
+- [root](#root)
+- [delta_time](#delta_time)
+- [samples_count](#samples_count)
+- [memory_limit](#memory_limit)
+- [mini_graph](#mini_graph)
+- [max_value](#max_value)
+- [text_per_second](#text_per_second)
+- [text_memory](#text_memory)
+- [memory](#memory)
+- [memory_samples](#memory_samples)
+- [timer_id](#timer_id)
+
+
+
+### init
+
+---
+```lua
+memory_panel:init()
+```
+
+### on_remove
+
+---
+```lua
+memory_panel:on_remove()
+```
+
+### set_low_memory_limit
+
+---
+```lua
+memory_panel:set_low_memory_limit([limit])
+```
+
+- **Parameters:**
+ - `[limit]` *(any)*:
+
+### push_next_value
+
+---
+```lua
+memory_panel:push_next_value()
+```
+
+### update_text_memory
+
+---
+```lua
+memory_panel:update_text_memory()
+```
+
+
+## Fields
+
+- **root** (_node_)
+
+
+- **delta_time** (_number_)
+
+
+- **samples_count** (_integer_)
+
+
+- **memory_limit** (_integer_)
+
+
+- **mini_graph** (_druid.widget.mini_graph_): Widget to display a several lines with different height in a row
+
+
+- **max_value** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **text_per_second** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **text_memory** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **memory** (_unknown_)
+
+
+- **memory_samples** (_table_)
+
+
+- **timer_id** (_unknown_)
+
diff --git a/api/components/widgets/mini_graph_api.md b/api/components/widgets/mini_graph_api.md
new file mode 100644
index 0000000..d0bf501
--- /dev/null
+++ b/api/components/widgets/mini_graph_api.md
@@ -0,0 +1,233 @@
+# druid.widget.mini_graph API
+
+> at /druid/widget/mini_graph/mini_graph.lua
+
+Widget to display a several lines with different height in a row
+Init, set amount of samples and max value of value means that the line will be at max height
+Use `push_line_value` to add a new value to the line
+Or `set_line_value` to set a value to the line by index
+Setup colors inside template file (at minimum and maximum)
+
+## Functions
+
+- [init](#init)
+- [on_remove](#on_remove)
+- [clear](#clear)
+- [set_samples](#set_samples)
+- [get_samples](#get_samples)
+- [set_line_value](#set_line_value)
+- [get_line_value](#get_line_value)
+- [push_line_value](#push_line_value)
+- [set_max_value](#set_max_value)
+- [set_line_height](#set_line_height)
+- [get_lowest_value](#get_lowest_value)
+- [get_highest_value](#get_highest_value)
+- [on_drag_widget](#on_drag_widget)
+- [toggle_hide](#toggle_hide)
+
+## Fields
+
+- [root](#root)
+- [text_header](#text_header)
+- [icon_drag](#icon_drag)
+- [content](#content)
+- [layout](#layout)
+- [prefab_line](#prefab_line)
+- [color_zero](#color_zero)
+- [color_one](#color_one)
+- [is_hidden](#is_hidden)
+- [max_value](#max_value)
+- [lines](#lines)
+- [values](#values)
+- [container](#container)
+- [default_size](#default_size)
+- [samples](#samples)
+
+
+
+### init
+
+---
+```lua
+mini_graph:init()
+```
+
+### on_remove
+
+---
+```lua
+mini_graph:on_remove()
+```
+
+### clear
+
+---
+```lua
+mini_graph:clear()
+```
+
+### set_samples
+
+---
+```lua
+mini_graph:set_samples([samples])
+```
+
+- **Parameters:**
+ - `[samples]` *(any)*:
+
+### get_samples
+
+---
+```lua
+mini_graph:get_samples()
+```
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### set_line_value
+
+---
+```lua
+mini_graph:set_line_value(index, value)
+```
+
+Set normalized to control the color of the line
+
+- **Parameters:**
+ - `index` *(number)*:
+ - `value` *(number)*: The normalized value from 0 to 1
+
+- **Example Usage:**
+
+```lua
+for index = 1, mini_graph:get_samples() do
+ mini_graph:set_line_value(index, math.random())
+end
+```
+### get_line_value
+
+---
+```lua
+mini_graph:get_line_value([index])
+```
+
+- **Parameters:**
+ - `[index]` *(any)*:
+
+- **Returns:**
+ - `` *(number)*:
+
+### push_line_value
+
+---
+```lua
+mini_graph:push_line_value([value])
+```
+
+- **Parameters:**
+ - `[value]` *(any)*:
+
+### set_max_value
+
+---
+```lua
+mini_graph:set_max_value([max_value])
+```
+
+- **Parameters:**
+ - `[max_value]` *(any)*:
+
+### set_line_height
+
+---
+```lua
+mini_graph:set_line_height([index])
+```
+
+- **Parameters:**
+ - `[index]` *(any)*:
+
+### get_lowest_value
+
+---
+```lua
+mini_graph:get_lowest_value()
+```
+
+### get_highest_value
+
+---
+```lua
+mini_graph:get_highest_value()
+```
+
+### on_drag_widget
+
+---
+```lua
+mini_graph:on_drag_widget([dx], [dy])
+```
+
+- **Parameters:**
+ - `[dx]` *(any)*:
+ - `[dy]` *(any)*:
+
+### toggle_hide
+
+---
+```lua
+mini_graph:toggle_hide()
+```
+
+- **Returns:**
+ - `` *(druid.widget.mini_graph)*:
+
+
+## Fields
+
+- **root** (_node_)
+
+
+- **text_header** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **icon_drag** (_node_)
+
+
+- **content** (_node_)
+
+
+- **layout** (_druid.layout_): Druid component to manage the layout of nodes, placing them inside the node size with respect to the size and pivot of each node.
+
+
+- **prefab_line** (_node_)
+
+
+- **color_zero** (_unknown_)
+
+
+- **color_one** (_unknown_)
+
+
+- **is_hidden** (_boolean_)
+
+
+- **max_value** (_integer_): in this value line will be at max height
+
+
+- **lines** (_table_)
+
+
+- **values** (_table_)
+
+
+- **container** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
+
+
+- **default_size** (_vector3_)
+
+
+- **samples** (_any_)
+
diff --git a/api/components/widgets/properties_panel_api.md b/api/components/widgets/properties_panel_api.md
new file mode 100644
index 0000000..94ed4a3
--- /dev/null
+++ b/api/components/widgets/properties_panel_api.md
@@ -0,0 +1,366 @@
+# druid.widget.properties_panel API
+
+> at /druid/widget/properties_panel/properties_panel.lua
+
+## Functions
+
+- [properties_constructors](#properties_constructors)
+- [init](#init)
+- [on_remove](#on_remove)
+- [on_drag_widget](#on_drag_widget)
+- [clear_created_properties](#clear_created_properties)
+- [clear](#clear)
+- [on_size_changed](#on_size_changed)
+- [update](#update)
+- [add_checkbox](#add_checkbox)
+- [add_slider](#add_slider)
+- [add_button](#add_button)
+- [add_input](#add_input)
+- [add_text](#add_text)
+- [add_left_right_selector](#add_left_right_selector)
+- [add_vector3](#add_vector3)
+- [add_inner_widget](#add_inner_widget)
+- [add_widget](#add_widget)
+- [remove](#remove)
+- [set_hidden](#set_hidden)
+- [is_hidden](#is_hidden)
+- [set_properties_per_page](#set_properties_per_page)
+- [set_page](#set_page)
+
+## Fields
+
+- [root](#root)
+- [scroll](#scroll)
+- [layout](#layout)
+- [container](#container)
+- [container_content](#container_content)
+- [container_scroll_view](#container_scroll_view)
+- [contaienr_scroll_content](#contaienr_scroll_content)
+- [button_hidden](#button_hidden)
+- [text_header](#text_header)
+- [paginator](#paginator)
+- [properties](#properties)
+- [content](#content)
+- [default_size](#default_size)
+- [current_page](#current_page)
+- [properties_per_page](#properties_per_page)
+- [property_checkbox_prefab](#property_checkbox_prefab)
+- [property_slider_prefab](#property_slider_prefab)
+- [property_button_prefab](#property_button_prefab)
+- [property_input_prefab](#property_input_prefab)
+- [property_text_prefab](#property_text_prefab)
+- [property_left_right_selector_prefab](#property_left_right_selector_prefab)
+- [property_vector3_prefab](#property_vector3_prefab)
+- [is_dirty](#is_dirty)
+
+
+
+### properties_constructors
+
+---
+```lua
+properties_panel:properties_constructors()
+```
+
+List of properties functions to create a new widget. Used to not spawn non-visible widgets but keep the reference
+
+### init
+
+---
+```lua
+properties_panel:init()
+```
+
+### on_remove
+
+---
+```lua
+properties_panel:on_remove()
+```
+
+### on_drag_widget
+
+---
+```lua
+properties_panel:on_drag_widget([dx], [dy])
+```
+
+- **Parameters:**
+ - `[dx]` *(any)*:
+ - `[dy]` *(any)*:
+
+### clear_created_properties
+
+---
+```lua
+properties_panel:clear_created_properties()
+```
+
+### clear
+
+---
+```lua
+properties_panel:clear()
+```
+
+### on_size_changed
+
+---
+```lua
+properties_panel:on_size_changed([new_size])
+```
+
+- **Parameters:**
+ - `[new_size]` *(any)*:
+
+### update
+
+---
+```lua
+properties_panel:update([dt])
+```
+
+- **Parameters:**
+ - `[dt]` *(any)*:
+
+### add_checkbox
+
+---
+```lua
+properties_panel:add_checkbox([on_create])
+```
+
+- **Parameters:**
+ - `[on_create]` *(fun(checkbox: druid.widget.property_checkbox)|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_slider
+
+---
+```lua
+properties_panel:add_slider([on_create])
+```
+
+- **Parameters:**
+ - `[on_create]` *(fun(slider: druid.widget.property_slider)|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_button
+
+---
+```lua
+properties_panel:add_button([on_create])
+```
+
+- **Parameters:**
+ - `[on_create]` *(fun(button: druid.widget.property_button)|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_input
+
+---
+```lua
+properties_panel:add_input([on_create])
+```
+
+- **Parameters:**
+ - `[on_create]` *(fun(input: druid.widget.property_input)|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_text
+
+---
+```lua
+properties_panel:add_text([on_create])
+```
+
+- **Parameters:**
+ - `[on_create]` *(fun(text: druid.widget.property_text)|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_left_right_selector
+
+---
+```lua
+properties_panel:add_left_right_selector([on_create])
+```
+
+- **Parameters:**
+ - `[on_create]` *(fun(selector: druid.widget.property_left_right_selector)|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_vector3
+
+---
+```lua
+properties_panel:add_vector3([on_create])
+```
+
+- **Parameters:**
+ - `[on_create]` *(fun(vector3: druid.widget.property_vector3)|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_inner_widget
+
+---
+```lua
+properties_panel:add_inner_widget(widget_class, [template], [nodes], [on_create])
+```
+
+- **Parameters:**
+ - `widget_class` *()*:
+ - `[template]` *(string|nil)*:
+ - `[nodes]` *(node|table|nil)*:
+ - `[on_create]` *(fun(widget: )|nil)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### add_widget
+
+---
+```lua
+properties_panel:add_widget(create_widget_callback)
+```
+
+- **Parameters:**
+ - `create_widget_callback` *(fun():druid.widget)*:
+
+- **Returns:**
+ - `` *(druid.widget.properties_panel)*:
+
+### remove
+
+---
+```lua
+properties_panel:remove([widget])
+```
+
+- **Parameters:**
+ - `[widget]` *(any)*:
+
+### set_hidden
+
+---
+```lua
+properties_panel:set_hidden([is_hidden])
+```
+
+- **Parameters:**
+ - `[is_hidden]` *(any)*:
+
+### is_hidden
+
+---
+```lua
+properties_panel:is_hidden()
+```
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### set_properties_per_page
+
+---
+```lua
+properties_panel:set_properties_per_page(properties_per_page)
+```
+
+- **Parameters:**
+ - `properties_per_page` *(number)*:
+
+### set_page
+
+---
+```lua
+properties_panel:set_page([page])
+```
+
+- **Parameters:**
+ - `[page]` *(any)*:
+
+
+## Fields
+
+- **root** (_node_)
+
+
+- **scroll** (_druid.scroll_): Basic Druid scroll component. Handles all scrolling behavior in Druid GUI.
+
+
+- **layout** (_druid.layout_): Druid component to manage the layout of nodes, placing them inside the node size with respect to the size and pivot of each node.
+
+
+- **container** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
+
+
+- **container_content** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
+
+
+- **container_scroll_view** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
+
+
+- **contaienr_scroll_content** (_druid.container_): Druid component to manage the size and positions with other containers relations to create a adaptable layouts.
+
+
+- **button_hidden** (_druid.button_): Basic Druid input component. Handle input on node and provide different callbacks on touch events.
+
+
+- **text_header** (_druid.text_): Basic Druid text component. Text components by default have the text size adjusting.
+
+
+- **paginator** (_druid.widget.property_left_right_selector_)
+
+
+- **properties** (_druid.widget[]_): List of created properties
+
+
+- **content** (_node_)
+
+
+- **default_size** (_vector3_)
+
+
+- **current_page** (_integer_)
+
+
+- **properties_per_page** (_integer_)
+
+
+- **property_checkbox_prefab** (_node_)
+
+
+- **property_slider_prefab** (_node_)
+
+
+- **property_button_prefab** (_node_)
+
+
+- **property_input_prefab** (_node_)
+
+
+- **property_text_prefab** (_node_)
+
+
+- **property_left_right_selector_prefab** (_node_)
+
+
+- **property_vector3_prefab** (_node_)
+
+
+- **is_dirty** (_boolean_)
+
diff --git a/api/druid_api.md b/api/druid_api.md
new file mode 100644
index 0000000..52ae0f9
--- /dev/null
+++ b/api/druid_api.md
@@ -0,0 +1,172 @@
+# druid API
+
+> at /druid/druid.lua
+
+Entry point for Druid UI Framework.
+Create a new Druid instance and adjust the Druid settings here.
+
+## Functions
+
+- [new](#new)
+- [register](#register)
+- [set_default_style](#set_default_style)
+- [set_text_function](#set_text_function)
+- [set_sound_function](#set_sound_function)
+- [init_window_listener](#init_window_listener)
+- [on_window_callback](#on_window_callback)
+- [on_language_change](#on_language_change)
+- [get_widget](#get_widget)
+- [register_druid_as_widget](#register_druid_as_widget)
+- [unregister_druid_as_widget](#unregister_druid_as_widget)
+
+
+
+### new
+
+---
+```lua
+druid.new(context, [style])
+```
+
+Create a new Druid instance for creating GUI components.
+
+- **Parameters:**
+ - `context` *(table)*: The Druid context. Usually, this is the self of the gui_script. It is passed into all Druid callbacks.
+ - `[style]` *(table|nil)*: The Druid style table to override style parameters for this Druid instance.
+
+- **Returns:**
+ - `druid_instance` *(druid.instance)*: The new Druid instance
+
+### register
+
+---
+```lua
+druid.register(name, module)
+```
+
+Register a new external Druid component.
+Register component just makes the druid:new_{name} function.
+For example, if you register a component called "my_component", you can create it using druid:new_my_component(...).
+This can be useful if you have your own "basic" components that you don't want to require in every file.
+The default way to create component is `druid_instance:new(component_class, ...)`.
+
+- **Parameters:**
+ - `name` *(string)*: Module name
+ - `module` *(table)*: Lua table with component
+
+### set_default_style
+
+---
+```lua
+druid.set_default_style(style)
+```
+
+Set the default style for all Druid instances.
+
+- **Parameters:**
+ - `style` *(table)*: Default style
+
+### set_text_function
+
+---
+```lua
+druid.set_text_function(callback)
+```
+
+Set the text function for the LangText component.
+
+- **Parameters:**
+ - `callback` *(fun(text_id: string):string)*: Get localized text function
+
+### set_sound_function
+
+---
+```lua
+druid.set_sound_function(callback)
+```
+
+Set the sound function to able components to play sounds.
+
+- **Parameters:**
+ - `callback` *(fun(sound_id: string))*: Sound play callback
+
+### init_window_listener
+
+---
+```lua
+druid.init_window_listener()
+```
+
+Subscribe Druid to the window listener. It will override your previous
+window listener, so if you have one, you should call M.on_window_callback manually.
+
+### on_window_callback
+
+---
+```lua
+druid.on_window_callback(window_event)
+```
+
+Set the window callback to enable Druid window events.
+
+- **Parameters:**
+ - `window_event` *(constant)*: Event param from window listener
+
+### on_language_change
+
+---
+```lua
+druid.on_language_change()
+```
+
+Call this function when the game language changes.
+It will notify all Druid instances to update the lang text components.
+
+### get_widget
+
+---
+```lua
+druid.get_widget(widget_class, gui_url)
+```
+
+Create a widget from the binded Druid GUI instance.
+The widget will be created and all widget functions can be called from Game Object contexts.
+This allow use only `druid_widget.gui_script` for GUI files and call this widget functions from Game Object script file.
+Widget class here is a your lua file for the GUI scene (a widgets in Druid)
+
+- **Parameters:**
+ - `widget_class` *()*: The class of the widget to return
+ - `gui_url` *(url)*: GUI url
+
+- **Returns:**
+ - `widget` *(?)*: The new created widget,
+
+- **Example Usage:**
+
+```lua
+msg.url(nil, nil, "gui_widget") -- current game object
+msg.url(nil, object_url, "gui_widget") -- other game object
+```
+### register_druid_as_widget
+
+---
+```lua
+druid.register_druid_as_widget(druid)
+```
+
+Bind a Druid GUI instance to the current game object.
+This instance now can produce widgets from `druid.get_widget()` function.
+Only one widget can be set per game object.
+
+- **Parameters:**
+ - `druid` *(druid.instance)*: The druid instance to register
+
+### unregister_druid_as_widget
+
+---
+```lua
+druid.unregister_druid_as_widget()
+```
+
+Should be called on final, where druid instance is destroyed.
+
diff --git a/api/druid_helper_api.md b/api/druid_helper_api.md
new file mode 100644
index 0000000..121ea6e
--- /dev/null
+++ b/api/druid_helper_api.md
@@ -0,0 +1,540 @@
+# druid.helper API
+
+> at /druid/helper.lua
+
+The helper module contains various functions that are used in the Druid library.
+You can use these functions in your projects as well.
+
+## Functions
+
+- [centrate_text_with_icon](#centrate_text_with_icon)
+- [centrate_icon_with_text](#centrate_icon_with_text)
+- [centrate_nodes](#centrate_nodes)
+- [get_node](#get_node)
+- [get_screen_aspect_koef](#get_screen_aspect_koef)
+- [get_gui_scale](#get_gui_scale)
+- [step](#step)
+- [clamp](#clamp)
+- [distance](#distance)
+- [sign](#sign)
+- [round](#round)
+- [lerp](#lerp)
+- [contains](#contains)
+- [deepcopy](#deepcopy)
+- [add_array](#add_array)
+- [pick_node](#pick_node)
+- [get_scaled_size](#get_scaled_size)
+- [get_scene_scale](#get_scene_scale)
+- [get_closest_stencil_node](#get_closest_stencil_node)
+- [get_pivot_offset](#get_pivot_offset)
+- [is_desktop](#is_desktop)
+- [is_mobile](#is_mobile)
+- [is_web](#is_web)
+- [is_web_mobile](#is_web_mobile)
+- [is_multitouch_supported](#is_multitouch_supported)
+- [table_to_string](#table_to_string)
+- [get_border](#get_border)
+- [get_text_metrics_from_node](#get_text_metrics_from_node)
+- [insert_with_shift](#insert_with_shift)
+- [remove_with_shift](#remove_with_shift)
+- [get_full_position](#get_full_position)
+- [get_animation_data_from_node](#get_animation_data_from_node)
+
+
+
+### centrate_text_with_icon
+
+---
+```lua
+helper.centrate_text_with_icon([text_node], [icon_node], margin)
+```
+
+Center two nodes.
+Nodes will be center around 0 x position
+text_node will be first (at left side)
+
+- **Parameters:**
+ - `[text_node]` *(node|nil)*: Gui text node
+ - `[icon_node]` *(node|nil)*: Gui box node
+ - `margin` *(number)*: Offset between nodes
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### centrate_icon_with_text
+
+---
+```lua
+helper.centrate_icon_with_text([icon_node], [text_node], [margin])
+```
+
+Center two nodes.
+Nodes will be center around 0 x position
+icon_node will be first (at left side)
+
+- **Parameters:**
+ - `[icon_node]` *(node|nil)*: Gui box node
+ - `[text_node]` *(node|nil)*: Gui text node
+ - `[margin]` *(number|nil)*: Offset between nodes
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### centrate_nodes
+
+---
+```lua
+helper.centrate_nodes([margin], ...)
+```
+
+Centerate nodes by x position with margin.
+This functions calculate total width of nodes and set position for each node.
+The centrate will be around 0 x position.
+
+- **Parameters:**
+ - `[margin]` *(number|nil)*: Offset between nodes
+ - `...` *(...)*: vararg
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### get_node
+
+---
+```lua
+helper.get_node(node_id, [template], [nodes])
+```
+
+- **Parameters:**
+ - `node_id` *(string|node)*:
+ - `[template]` *(string|nil)*: Full Path to the template
+ - `[nodes]` *(table|nil)*: Nodes what created with gui.clone_tree
+
+- **Returns:**
+ - `` *(node)*:
+
+### get_screen_aspect_koef
+
+---
+```lua
+helper.get_screen_aspect_koef()
+```
+
+Get current screen stretch multiplier for each side
+
+- **Returns:**
+ - `stretch_x` *(number)*:
+ - `stretch_y` *(number)*:
+
+### get_gui_scale
+
+---
+```lua
+helper.get_gui_scale()
+```
+
+Get current GUI scale for each side
+
+- **Returns:**
+ - `scale_x` *(number)*:
+
+### step
+
+---
+```lua
+helper.step(current, target, step)
+```
+
+Move value from current to target value with step amount
+
+- **Parameters:**
+ - `current` *(number)*: Current value
+ - `target` *(number)*: Target value
+ - `step` *(number)*: Step amount
+
+- **Returns:**
+ - `New` *(number)*: value
+
+### clamp
+
+---
+```lua
+helper.clamp(value, [v1], [v2])
+```
+
+Clamp value between min and max. Works with nil values and swap min and max if needed.
+
+- **Parameters:**
+ - `value` *(number)*: Value
+ - `[v1]` *(number|nil)*: Min value. If nil, value will be clamped to positive infinity
+ - `[v2]` *(number|nil)*: Max value If nil, value will be clamped to negative infinity
+
+- **Returns:**
+ - `value` *(number)*: Clamped value
+
+### distance
+
+---
+```lua
+helper.distance(x1, y1, x2, y2)
+```
+
+Calculate distance between two points
+
+- **Parameters:**
+ - `x1` *(number)*: First point x
+ - `y1` *(number)*: First point y
+ - `x2` *(number)*: Second point x
+ - `y2` *(number)*: Second point y
+
+- **Returns:**
+ - `distance` *(number)*:
+
+### sign
+
+---
+```lua
+helper.sign(val)
+```
+
+Return sign of value
+
+- **Parameters:**
+ - `val` *(number)*: Value
+
+- **Returns:**
+ - `sign` *(number)*: Sign of value, -1, 0 or 1
+
+### round
+
+---
+```lua
+helper.round(num, [num_decimal_places])
+```
+
+Round number to specified decimal places
+
+- **Parameters:**
+ - `num` *(number)*: Number
+ - `[num_decimal_places]` *(number|nil)*: Decimal places
+
+- **Returns:**
+ - `value` *(number)*: Rounded number
+
+### lerp
+
+---
+```lua
+helper.lerp(a, b, t)
+```
+
+Lerp between two values
+
+- **Parameters:**
+ - `a` *(number)*: First value
+ - `b` *(number)*: Second value
+ - `t` *(number)*: Lerp amount
+
+- **Returns:**
+ - `value` *(number)*: Lerped value
+
+### contains
+
+---
+```lua
+helper.contains([array], [value])
+```
+
+Check if value contains in array
+
+- **Parameters:**
+ - `[array]` *(any[])*: Array to check
+ - `[value]` *(any)*: Value
+
+- **Returns:**
+ - `index` *(number|nil)*: Index of value in array or nil if value not found
+
+### deepcopy
+
+---
+```lua
+helper.deepcopy(orig_table)
+```
+
+Make a copy table with all nested tables
+
+- **Parameters:**
+ - `orig_table` *(table)*: Original table
+
+- **Returns:**
+ - `Copy` *(table)*: of original table
+
+### add_array
+
+---
+```lua
+helper.add_array([target], [source])
+```
+
+Add all elements from source array to the target array
+
+- **Parameters:**
+ - `[target]` *(any[])*: Array to put elements from source
+ - `[source]` *(any[]|nil)*: The source array to get elements from
+
+- **Returns:**
+ - `The` *(any[])*: target array
+
+### pick_node
+
+---
+```lua
+helper.pick_node(node, x, y, [node_click_area])
+```
+
+Make a check with gui.pick_node, but with additional node_click_area check.
+
+- **Parameters:**
+ - `node` *(node)*:
+ - `x` *(number)*:
+ - `y` *(number)*:
+ - `[node_click_area]` *(node|nil)*: Additional node to check for click area. If nil, only node will be checked
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### get_scaled_size
+
+---
+```lua
+helper.get_scaled_size(node)
+```
+
+Get size of node with scale multiplier
+
+- **Parameters:**
+ - `node` *(node)*: GUI node
+
+- **Returns:**
+ - `scaled_size` *(vector3)*:
+
+### get_scene_scale
+
+---
+```lua
+helper.get_scene_scale(node, [include_passed_node_scale])
+```
+
+Get cumulative parent's node scale
+
+- **Parameters:**
+ - `node` *(node)*: Gui node
+ - `[include_passed_node_scale]` *(boolean|nil)*: True if add current node scale to result
+
+- **Returns:**
+ - `The` *(vector3)*: scene node scale
+
+### get_closest_stencil_node
+
+---
+```lua
+helper.get_closest_stencil_node(node)
+```
+
+Return closest non inverted clipping parent node for given node
+
+- **Parameters:**
+ - `node` *(node)*: GUI node
+
+- **Returns:**
+ - `stencil_node` *(node|nil)*: The closest stencil node or nil
+
+### get_pivot_offset
+
+---
+```lua
+helper.get_pivot_offset(pivot_or_node)
+```
+
+Get pivot offset for given pivot or node
+Offset shown in [-0.5 .. 0.5] range, where -0.5 is left or bottom, 0.5 is right or top.
+
+- **Parameters:**
+ - `pivot_or_node` *(number|node)*: GUI pivot or node
+
+- **Returns:**
+ - `offset` *(vector3)*: The pivot offset
+
+### is_desktop
+
+---
+```lua
+helper.is_desktop()
+```
+
+Check if device is desktop
+
+- **Returns:**
+ - `` *(boolean)*:
+
+### is_mobile
+
+---
+```lua
+helper.is_mobile()
+```
+
+Check if device is native mobile (Android or iOS)
+
+- **Returns:**
+ - `Is` *(boolean)*: mobile
+
+### is_web
+
+---
+```lua
+helper.is_web()
+```
+
+Check if device is HTML5
+
+- **Returns:**
+ - `` *(boolean)*:
+
+### is_web_mobile
+
+---
+```lua
+helper.is_web_mobile()
+```
+
+Check if device is HTML5 mobile
+
+- **Returns:**
+ - `` *(boolean)*:
+
+### is_multitouch_supported
+
+---
+```lua
+helper.is_multitouch_supported()
+```
+
+Check if device is mobile and can support multitouch
+
+- **Returns:**
+ - `is_multitouch` *(boolean)*: Is multitouch supported
+
+### table_to_string
+
+---
+```lua
+helper.table_to_string(t)
+```
+
+Simple table to one-line string converter
+
+- **Parameters:**
+ - `t` *(table)*:
+
+- **Returns:**
+ - `` *(string)*:
+
+### get_border
+
+---
+```lua
+helper.get_border(node, [offset])
+```
+
+Distance from node position to his borders
+
+- **Parameters:**
+ - `node` *(node)*: GUI node
+ - `[offset]` *(vector3|nil)*: Offset from node position. Pass current node position to get non relative border values
+
+- **Returns:**
+ - `border` *(vector4)*: Vector4 with border values (left, top, right, down)
+
+### get_text_metrics_from_node
+
+---
+```lua
+helper.get_text_metrics_from_node(text_node)
+```
+
+Get text metric from GUI node.
+
+- **Parameters:**
+ - `text_node` *(node)*:
+
+- **Returns:**
+ - `` *(GUITextMetrics)*:
+
+### insert_with_shift
+
+---
+```lua
+helper.insert_with_shift(array, [item], [index], [shift_policy])
+```
+
+Add value to array with shift policy
+Shift policy can be: left, right, no_shift
+
+- **Parameters:**
+ - `array` *(table)*: Array
+ - `[item]` *(any)*: Item to insert
+ - `[index]` *(number|nil)*: Index to insert. If nil, item will be inserted at the end of array
+ - `[shift_policy]` *(number|nil)*: The druid_const.SHIFT.* constant
+
+- **Returns:**
+ - `Inserted` *(any)*: item
+
+### remove_with_shift
+
+---
+```lua
+helper.remove_with_shift([array], [index], [shift_policy])
+```
+
+Remove value from array with shift policy
+ Shift policy can be: left, right, no_shift
+
+- **Parameters:**
+ - `[array]` *(any[])*: Array
+ - `[index]` *(number|nil)*: Index to remove. If nil, item will be removed from the end of array
+ - `[shift_policy]` *(number|nil)*: The druid_const.SHIFT.* constant
+
+- **Returns:**
+ - `Removed` *(any)*: item
+
+### get_full_position
+
+---
+```lua
+helper.get_full_position(node, [root])
+```
+
+Get full position of node in the GUI tree
+
+- **Parameters:**
+ - `node` *(node)*: GUI node
+ - `[root]` *(node|nil)*: GUI root node to stop search
+
+- **Returns:**
+ - `` *(unknown)*:
+
+### get_animation_data_from_node
+
+---
+```lua
+helper.get_animation_data_from_node(node, atlas_path)
+```
+
+- **Parameters:**
+ - `node` *(node)*:
+ - `atlas_path` *(string)*: Path to the atlas
+
+- **Returns:**
+ - `` *(druid.system.animation_data)*:
+
diff --git a/api/druid_instance_api.md b/api/druid_instance_api.md
new file mode 100644
index 0000000..4ff1195
--- /dev/null
+++ b/api/druid_instance_api.md
@@ -0,0 +1,540 @@
+# druid.instance API
+
+> at /druid/system/druid_instance.lua
+
+The Druid Factory used to create components
+
+## Functions
+
+- [create_druid_instance](#create_druid_instance)
+
+- [new](#new)
+- [final](#final)
+- [remove](#remove)
+- [update](#update)
+- [on_input](#on_input)
+- [on_message](#on_message)
+- [on_window_event](#on_window_event)
+- [set_whitelist](#set_whitelist)
+- [set_blacklist](#set_blacklist)
+- [new_widget](#new_widget)
+- [new_button](#new_button)
+- [new_blocker](#new_blocker)
+- [new_back_handler](#new_back_handler)
+- [new_hover](#new_hover)
+- [new_text](#new_text)
+- [new_grid](#new_grid)
+- [new_scroll](#new_scroll)
+- [new_drag](#new_drag)
+- [new_swipe](#new_swipe)
+- [new_lang_text](#new_lang_text)
+- [new_slider](#new_slider)
+- [new_input](#new_input)
+- [new_data_list](#new_data_list)
+- [new_timer](#new_timer)
+- [new_progress](#new_progress)
+- [new_layout](#new_layout)
+- [new_container](#new_container)
+- [new_hotkey](#new_hotkey)
+- [new_rich_text](#new_rich_text)
+- [new_rich_input](#new_rich_input)
+
+
+
+### create_druid_instance
+
+---
+```lua
+instance.create_druid_instance(context, [style])
+```
+
+Druid class constructor which used to create a Druid's components
+
+- **Parameters:**
+ - `context` *(table)*: Druid context. Usually it is self of gui script
+ - `[style]` *(table?)*: Druid style table
+
+- **Returns:**
+ - `instance` *(druid.instance)*: The new Druid instance
+
+### new
+
+---
+```lua
+instance:new(component, ...)
+```
+
+Create new Druid component instance
+
+- **Parameters:**
+ - `component` *()*: The component class to create
+ - `...` *(...)*: vararg
+
+- **Returns:**
+ - `instance` *()*: The new ready to use component
+
+### final
+
+---
+```lua
+instance:final()
+```
+
+Call this in gui_script final function.
+
+### remove
+
+---
+```lua
+instance:remove(component)
+```
+
+Remove created component from Druid instance.
+Component `on_remove` function will be invoked, if exist.
+
+- **Parameters:**
+ - `component` *()*: Component instance
+
+- **Returns:**
+ - `is_removed` *(boolean)*: True if component was removed
+
+### update
+
+---
+```lua
+instance:update(dt)
+```
+
+Call this in gui_script update function.
+
+- **Parameters:**
+ - `dt` *(number)*: Delta time
+
+### on_input
+
+---
+```lua
+instance:on_input(action_id, action)
+```
+
+Call this in gui_script on_input function.
+
+- **Parameters:**
+ - `action_id` *(hash)*: Action_id from on_input
+ - `action` *(table)*: Action from on_input
+
+- **Returns:**
+ - `is_input_consumed` *(boolean)*: The boolean value is input was consumed
+
+### on_message
+
+---
+```lua
+instance:on_message(message_id, message, sender)
+```
+
+Call this in gui_script on_message function.
+
+- **Parameters:**
+ - `message_id` *(hash)*: Message_id from on_message
+ - `message` *(table)*: Message from on_message
+ - `sender` *(url)*: Sender from on_message
+
+### on_window_event
+
+---
+```lua
+instance:on_window_event(window_event)
+```
+
+Called when the window event occurs
+
+- **Parameters:**
+ - `window_event` *(number)*: The window event
+
+### set_whitelist
+
+---
+```lua
+instance:set_whitelist(whitelist_components)
+```
+
+Set whitelist components for input processing.
+If whitelist is not empty and component not contains in this list,
+component will be not processed on input step
+
+- **Parameters:**
+ - `whitelist_components` *(table|druid.component[])*: The array of component to whitelist
+
+- **Returns:**
+ - `self` *(druid.instance)*: The Druid instance
+
+### set_blacklist
+
+---
+```lua
+instance:set_blacklist(blacklist_components)
+```
+
+Set blacklist components for input processing.
+If blacklist is not empty and component contains in this list,
+component will be not processed on input step DruidInstance
+
+- **Parameters:**
+ - `blacklist_components` *(table|druid.component[])*: The array of component to blacklist
+
+- **Returns:**
+ - `self` *(druid.instance)*: The Druid instance
+
+### new_widget
+
+---
+```lua
+instance:new_widget(widget, [template], [nodes], ...)
+```
+
+Create new Druid widget instance
+
+- **Parameters:**
+ - `widget` *()*: The widget class to create
+ - `[template]` *(string|nil)*: The template name used by widget
+ - `[nodes]` *(string|node|table|nil)*: The nodes table from gui.clone_tree or prefab node to use for clone or node id to clone
+ - `...` *(...)*: vararg
+
+- **Returns:**
+ - `widget` *()*: The new ready to use widget
+
+### new_button
+
+---
+```lua
+instance:new_button(node, [callback], [params], [anim_node])
+```
+
+Create Button component
+
+- **Parameters:**
+ - `node` *(string|node)*: The node_id or gui.get_node(node_id)
+ - `[callback]` *(function|event|nil)*: Button callback
+ - `[params]` *(any)*: Button callback params
+ - `[anim_node]` *(string|node|nil)*: Button anim node (node, if not provided)
+
+- **Returns:**
+ - `button` *(druid.button)*: The new button component
+
+### new_blocker
+
+---
+```lua
+instance:new_blocker(node)
+```
+
+Create Blocker component
+
+- **Parameters:**
+ - `node` *(string|node)*: The node_id or gui.get_node(node_id)
+
+- **Returns:**
+ - `blocker` *(druid.blocker)*: The new blocker component
+
+### new_back_handler
+
+---
+```lua
+instance:new_back_handler([callback], [params])
+```
+
+Create BackHandler component
+
+- **Parameters:**
+ - `[callback]` *(function|event|nil)*: The callback(self, custom_args) to call on back event
+ - `[params]` *(any)*: Callback argument
+
+- **Returns:**
+ - `back_handler` *(druid.back_handler)*: The new back handler component
+
+### new_hover
+
+---
+```lua
+instance:new_hover(node, [on_hover_callback], [on_mouse_hover_callback])
+```
+
+Create Hover component
+
+- **Parameters:**
+ - `node` *(string|node)*: The node_id or gui.get_node(node_id)
+ - `[on_hover_callback]` *(function|nil)*: Hover callback
+ - `[on_mouse_hover_callback]` *(function|nil)*: Mouse hover callback
+
+- **Returns:**
+ - `hover` *(druid.hover)*: The new hover component
+
+### new_text
+
+---
+```lua
+instance:new_text(node, [value], [adjust_type])
+```
+
+Create Text component
+
+- **Parameters:**
+ - `node` *(string|druid.text|node)*: The node_id or gui.get_node(node_id)
+ - `[value]` *(string|nil)*: Initial text. Default value is node text from GUI scene.
+ - `[adjust_type]` *(string|nil)*: Adjust type for text. By default is DOWNSCALE. Look const.TEXT_ADJUST for reference
+
+- **Returns:**
+ - `text` *(druid.text)*: The new text component
+
+### new_grid
+
+---
+```lua
+instance:new_grid(parent_node, item, [in_row])
+```
+
+Create Grid component
+
+- **Parameters:**
+ - `parent_node` *(string|node)*: The node_id or gui.get_node(node_id). Parent of all Grid items.
+ - `item` *(string|node)*: Item prefab. Required to get grid's item size. Can be adjusted separately.
+ - `[in_row]` *(number|nil)*: How many nodes in row can be placed
+
+- **Returns:**
+ - `grid` *(druid.grid)*: The new grid component
+
+### new_scroll
+
+---
+```lua
+instance:new_scroll(view_node, content_node)
+```
+
+Create Scroll component
+
+- **Parameters:**
+ - `view_node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as user input node.
+ - `content_node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as scrollable node inside view_node.
+
+- **Returns:**
+ - `scroll` *(druid.scroll)*: The new scroll component
+
+### new_drag
+
+---
+```lua
+instance:new_drag(node, [on_drag_callback])
+```
+
+Create Drag component
+
+- **Parameters:**
+ - `node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as user input node.
+ - `[on_drag_callback]` *(function|nil)*: Callback for on_drag_event(self, dx, dy)
+
+- **Returns:**
+ - `drag` *(druid.drag)*: The new drag component
+
+### new_swipe
+
+---
+```lua
+instance:new_swipe(node, [on_swipe_callback])
+```
+
+Create Swipe component
+
+- **Parameters:**
+ - `node` *(string|node)*: The node_id or gui.get_node(node_id). Will used as user input node.
+ - `[on_swipe_callback]` *(function|nil)*: Swipe callback for on_swipe_end event
+
+- **Returns:**
+ - `swipe` *(druid.swipe)*: The new swipe component
+
+### new_lang_text
+
+---
+```lua
+instance:new_lang_text(node, [locale_id], [adjust_type])
+```
+
+Create LangText component
+
+- **Parameters:**
+ - `node` *(string|node)*: The_node id or gui.get_node(node_id)
+ - `[locale_id]` *(string|nil)*: Default locale id or text from node as default
+ - `[adjust_type]` *(string|nil)*: Adjust type for text node. Default: "downscale"
+
+- **Returns:**
+ - `lang_text` *(druid.lang_text)*: The new lang text component
+
+### new_slider
+
+---
+```lua
+instance:new_slider(pin_node, end_pos, [callback])
+```
+
+Create Slider component
+
+- **Parameters:**
+ - `pin_node` *(string|node)*: The_node id or gui.get_node(node_id).
+ - `end_pos` *(vector3)*: The end position of slider
+ - `[callback]` *(function|nil)*: On slider change callback
+
+- **Returns:**
+ - `slider` *(druid.slider)*: The new slider component
+
+### new_input
+
+---
+```lua
+instance:new_input(click_node, text_node, [keyboard_type])
+```
+
+Create Input component
+
+- **Parameters:**
+ - `click_node` *(string|node)*: Button node to enabled input component
+ - `text_node` *(string|druid.text|node)*: Text node what will be changed on user input
+ - `[keyboard_type]` *(number|nil)*: Gui keyboard type for input field
+
+- **Returns:**
+ - `input` *(druid.input)*: The new input component
+
+### new_data_list
+
+---
+```lua
+instance:new_data_list(druid_scroll, druid_grid, create_function)
+```
+
+Create DataList component
+
+- **Parameters:**
+ - `druid_scroll` *(druid.scroll)*: The Scroll instance for Data List component
+ - `druid_grid` *(druid.grid)*: The Grid instance for Data List component
+ - `create_function` *(function)*: The create function callback(self, data, index, data_list). Function should return (node, [component])
+
+- **Returns:**
+ - `data_list` *(druid.data_list)*: The new data list component
+
+### new_timer
+
+---
+```lua
+instance:new_timer(node, [seconds_from], [seconds_to], [callback])
+```
+
+Create Timer component
+
+- **Parameters:**
+ - `node` *(string|node)*: Gui text node
+ - `[seconds_from]` *(number|nil)*: Start timer value in seconds
+ - `[seconds_to]` *(number|nil)*: End timer value in seconds
+ - `[callback]` *(function|nil)*: Function on timer end
+
+- **Returns:**
+ - `timer` *(druid.timer)*: The new timer component
+
+### new_progress
+
+---
+```lua
+instance:new_progress(node, key, [init_value])
+```
+
+Create Progress component
+
+- **Parameters:**
+ - `node` *(string|node)*: Progress bar fill node or node name
+ - `key` *(string)*: Progress bar direction: "x" or "y"
+ - `[init_value]` *(number|nil)*: Initial value of progress bar. Default: 1
+
+- **Returns:**
+ - `progress` *(druid.progress)*: The new progress component
+
+### new_layout
+
+---
+```lua
+instance:new_layout(node, [mode])
+```
+
+Create Layout component
+
+- **Parameters:**
+ - `node` *(string|node)*: The_node id or gui.get_node(node_id).
+ - `[mode]` *(string|nil)*: vertical|horizontal|horizontal_wrap. Default: horizontal
+
+- **Returns:**
+ - `layout` *(druid.layout)*: The new layout component
+
+### new_container
+
+---
+```lua
+instance:new_container(node, [mode], [callback])
+```
+
+Create Container component
+
+- **Parameters:**
+ - `node` *(string|node)*: The_node id or gui.get_node(node_id).
+ - `[mode]` *(string|nil)*: Layout mode
+ - `[callback]` *(fun(self: druid.container, size: vector3)|nil)*: Callback on size changed
+
+- **Returns:**
+ - `container` *(druid.container)*: The new container component
+
+### new_hotkey
+
+---
+```lua
+instance:new_hotkey(keys_array, [callback], [callback_argument])
+```
+
+Create Hotkey component
+
+- **Parameters:**
+ - `keys_array` *(string|string[])*: Keys for trigger action. Should contains one action key and any amount of modificator keys
+ - `[callback]` *(function|event|nil)*: The callback function
+ - `[callback_argument]` *(any)*: The argument to pass into the callback function
+
+- **Returns:**
+ - `hotkey` *(druid.hotkey)*: The new hotkey component
+
+### new_rich_text
+
+---
+```lua
+instance:new_rich_text(text_node, [value])
+```
+
+Create RichText component.
+
+- **Parameters:**
+ - `text_node` *(string|node)*: The text node to make Rich Text
+ - `[value]` *(string|nil)*: The initial text value. Default will be gui.get_text(text_node)
+
+- **Returns:**
+ - `rich_text` *(druid.rich_text)*: The new rich text component
+
+### new_rich_input
+
+---
+```lua
+instance:new_rich_input(template, [nodes])
+```
+
+Create RichInput component.
+As a template please check rich_input.gui layout.
+
+- **Parameters:**
+ - `template` *(string)*: The template string name
+ - `[nodes]` *(table|nil)*: Nodes table from gui.clone_tree
+
+- **Returns:**
+ - `rich_input` *(druid.rich_input)*: The new rich input component
+
diff --git a/api/quick_api_reference.md b/api/quick_api_reference.md
new file mode 100644
index 0000000..b882261
--- /dev/null
+++ b/api/quick_api_reference.md
@@ -0,0 +1,642 @@
+# Quick API Reference
+
+# Table of Contents
+1. [Druid](#druid)
+2. [Druid Instance](#druid-instance)
+3. [Components](#components)
+ 1. [Base Component](#base-component)
+ 2. [Blocker](#blocker)
+ 3. [Button](#button)
+ 4. [Container](#container)
+ 5. [Data List](#data-list)
+ 6. [Drag](#drag)
+ 7. [Grid](#grid)
+ 8. [Hotkey](#hotkey)
+ 9. [Hover](#hover)
+ 10. [Input](#input)
+ 11. [Lang Text](#lang-text)
+ 12. [Layout](#layout)
+ 13. [Progress](#progress)
+ 14. [Rich Input](#rich-input)
+ 15. [Rich Text](#rich-text)
+ 16. [Scroll](#scroll)
+ 17. [Slider](#slider)
+ 18. [Swipe](#swipe)
+ 19. [Text](#text)
+ 20. [Timer](#timer)
+4. [Helper](#helper)
+5. [Widgets](#widgets)
+
+# API Reference
+
+## [Druid](druid_api.md)
+
+Inspect [API Here](druid_api.md)
+
+```lua
+local druid = require("druid.druid")
+
+druid.init_window_listener()
+druid.on_language_change()
+druid.on_window_callback(window_event)
+druid.set_default_style(style)
+druid.set_sound_function(callback)
+druid.set_text_function(callback)
+
+self.druid = druid.new(context, [style])
+```
+
+## [Druid Instance](druid_instance_api.md)
+
+Inspect [API Here](druid_instance_api.md)
+
+```lua
+-- Lifecycle
+self.druid:final()
+self.druid:update(dt)
+self.druid:on_input(action_id, action)
+self.druid:on_message(message_id, message, sender)
+
+-- Custom components
+self.druid:new(component, ...)
+self.druid:new_widget(widget, [template], [nodes], ...)
+
+-- Built-in components
+self.druid:new_button(node, [callback], [params], [anim_node])
+self.druid:new_text(node, [value], [no_adjust])
+self.druid:new_grid(parent_node, item, [in_row])
+self.druid:new_scroll(view_node, content_node)
+self.druid:new_data_list(druid_scroll, druid_grid, create_function)
+self.druid:new_progress(node, key, [init_value])
+self.druid:new_lang_text(node, [locale_id], [adjust_type])
+self.druid:new_rich_text(text_node, [value])
+self.druid:new_back_handler([callback], [params])
+self.druid:new_blocker(node)
+self.druid:new_hover(node, [on_hover_callback], [on_mouse_hover_callback])
+self.druid:new_drag(node, [on_drag_callback])
+self.druid:new_swipe(node, [on_swipe_callback])
+self.druid:new_input(click_node, text_node, [keyboard_type])
+self.druid:new_rich_input(template, [nodes])
+self.druid:new_layout(node, [mode])
+self.druid:new_container(node, [mode], [callback])
+self.druid:new_hotkey(keys_array, [callback], [callback_argument])
+self.druid:new_slider(pin_node, end_pos, [callback])
+self.druid:new_timer(node, [seconds_from], [seconds_to], [callback])
+
+-- Operational
+self.druid:remove(component)
+self.druid:set_blacklist(blacklist_components)
+self.druid:set_whitelist(whitelist_components)
+```
+
+## Components
+
+### [Base Component](components/base/component_api.md)
+
+Inspect [API Here](components/base/component_api.md)
+
+Basic methods for all components and widgets.
+
+```lua
+component:get_childrens()
+component:get_context()
+component:get_druid([template], [nodes])
+component:get_input_priority()
+component:get_node(node_id)
+component:get_nodes()
+component:get_parent_component()
+component:get_template()
+component:reset_input_priority()
+component:set_input_enabled(state)
+component:set_input_priority(value, [is_temporary])
+component:set_nodes(nodes)
+component:set_style([druid_style])
+component:set_template([template])
+
+-- All widgets goes with created Druid instance
+-- All other component's functions also exists
+widget.druid
+```
+
+### [Blocker](components/base/blocker_api.md)
+
+Inspect [API Here](components/base/blocker_api.md)
+
+```lua
+local blocker = self.druid:new_blocker(node)
+
+blocker:is_enabled()
+blocker:set_enabled(state)
+```
+
+### [Button](components/base/button_api.md)
+
+Inspect [API Here](components/base/button_api.md)
+
+```lua
+local button = require("druid.base.button")
+
+button:init(node_or_node_id, [callback], [custom_args], [anim_node])
+button:set_animations_disabled()
+button:set_enabled([state])
+button:is_enabled()
+button:set_click_zone([zone])
+button:set_key_trigger(key)
+button:get_key_trigger()
+button:set_check_function([check_function], [failure_callback])
+button:set_web_user_interaction([is_web_mode])
+
+button.on_click
+button.on_pressed
+button.on_repeated_click
+button.on_long_click
+button.on_double_click
+button.on_hold_callback
+button.on_click_outside
+```
+
+### [Container](components/extended/container_api.md)
+
+Inspect [API Here](components/extended/container_api.md)
+
+```lua
+local container = self.druid:new_container(node, [mode], [callback])
+
+container:add_container(node_or_container, [mode], [on_resize_callback])
+container:clear_draggable_corners()
+container:create_draggable_corners()
+container:fit_into_node(node)
+container:fit_into_size(target_size)
+container:fit_into_window()
+container:get_position()
+container:get_scale()
+container:get_size()
+container:on_window_resized()
+container:refresh()
+container:refresh_origins()
+container:refresh_scale()
+container:remove_container_by_node([node])
+container:set_min_size([min_size_x], [min_size_y])
+container:set_parent_container([parent_container])
+container:set_pivot(pivot)
+container:set_position(pos_x, pos_y)
+container:set_size([width], [height], [anchor_pivot])
+container:update_child_containers()
+
+container.on_size_changeed
+```
+
+### [Data List](components/extended/data_list_api.md)
+
+Inspect [API Here](components/extended/data_list_api.md)
+
+```lua
+local data_list = self.druid:new_data_list(druid_scroll, druid_grid, create_function)
+
+data_list:add(data, [index], [shift_policy])
+data_list:clear()
+data_list:get_created_components()
+data_list:get_created_nodes()
+data_list:get_data()
+data_list:get_index(data)
+data_list:remove([index], [shift_policy])
+data_list:remove_by_data(data, [shift_policy])
+data_list:scroll_to_index(index)
+data_list:set_data(data)
+data_list:set_use_cache(is_use_cache)
+
+data_list.on_scroll_progress_change
+data_list.on_element_add
+data_list.on_element_remove
+```
+
+### [Drag](components/base/drag_api.md)
+
+Inspect [API Here](components/base/drag_api.md)
+
+```lua
+local drag = self.druid:new_drag(node, [on_drag_callback])
+
+drag:is_enabled()
+drag:on_window_resized()
+drag:set_click_zone([node])
+drag:set_drag_cursors(is_enabled)
+drag:set_enabled(is_enabled)
+
+drag.on_touch_start
+drag.on_touch_end
+drag.on_drag_start
+drag.on_drag
+drag.on_drag_end
+```
+
+### [Grid](components/base/static_grid_api.md)
+
+Inspect [API Here](components/base/static_grid_api.md)
+
+```lua
+local grid = self.druid:new_grid(parent_node, item, [in_row])
+
+grid:add(item, [index], [shift_policy], [is_instant])
+grid:clear()
+grid:get_all_pos()
+grid:get_borders()
+grid:get_index(pos)
+grid:get_index_by_node(node)
+grid:get_offset()
+grid:get_pos(index)
+grid:get_size()
+grid:get_size_for([count])
+grid:refresh()
+grid:remove(index, [shift_policy], [is_instant])
+grid:set_anchor(anchor)
+grid:set_in_row(in_row)
+grid:set_item_size([width], [height])
+grid:set_items(nodes, [is_instant])
+grid:set_pivot([pivot])
+grid:set_position_function(callback)
+grid:sort_nodes(comparator)
+
+grid.on_add_item
+grid.on_remove_item
+grid.on_change_items
+grid.on_clear
+grid.on_update_positions
+```
+
+### [Hotkey](components/extended/hotkey_api.md)
+
+Inspect [API Here](components/extended/hotkey_api.md)
+
+```lua
+local hotkey = self.druid:new_hotkey(keys_array, [callback], [callback_argument])
+
+hotkey:add_hotkey(keys, [callback_argument])
+hotkey:is_processing()
+hotkey:on_focus_gained()
+hotkey:set_repeat(is_enabled_repeated)
+
+hotkey.on_hotkey_pressed
+hotkey.on_hotkey_released
+```
+
+### [Hover](components/base/hover_api.md)
+
+Inspect [API Here](components/base/hover_api.md)
+
+```lua
+local hover = self.druid:new_hover(node, [on_hover_callback], [on_mouse_hover_callback])
+
+hover:is_enabled()
+hover:is_hovered()
+hover:is_mouse_hovered()
+hover:set_click_zone([zone])
+hover:set_enabled([state])
+hover:set_hover([state])
+hover:set_mouse_hover([state])
+
+hover.on_hover
+hover.on_mouse_hover
+```
+
+### [Input](components/extended/input_api.md)
+
+Inspect [API Here](components/extended/input_api.md)
+
+```lua
+local input = self.druid:new_input(click_node, text_node, [keyboard_type])
+
+input:get_text()
+input:get_text_selected()
+input:get_text_selected_replaced(text)
+input:move_selection(delta, is_add_to_selection, is_move_to_end)
+input:on_focus_lost()
+input:reset_changes()
+input:select()
+input:select_cursor([cursor_index], [start_index], [end_index])
+input:set_allowed_characters(characters)
+input:set_max_length(max_length)
+input:set_text(input_text)
+input:unselect()
+
+input.on_input_select
+input.on_input_unselect
+input.on_input_text
+input.on_input_empty
+input.on_input_full
+input.on_input_wrong
+input.on_select_cursor_change
+```
+
+### [Lang Text](components/extended/lang_text_api.md)
+
+Inspect [API Here](components/extended/lang_text_api.md)
+
+```lua
+local lang_text = self.druid:new_lang_text(node, [locale_id], [adjust_type])
+
+lang_text:format([a], [b], [c], [d], [e], [f], [g])
+lang_text:on_language_change()
+lang_text:set_text(text)
+lang_text:set_to(text)
+lang_text:translate(locale_id, [a], [b], [c], [d], [e], [f], [g])
+
+lang_text.on_change
+```
+
+### [Layout](components/extended/layout_api.md)
+
+Inspect [API Here](components/extended/layout_api.md)
+
+```lua
+local layout = self.druid:new_layout(node, [mode])
+
+layout:add(node_or_node_id)
+layout:calculate_rows_data()
+layout:clear_layout()
+layout:get_content_size()
+layout:get_entities()
+layout:get_node_size(node)
+layout:get_size()
+layout:refresh_layout()
+layout:remove(node_or_node_id)
+layout:set_dirty()
+layout:set_hug_content(is_hug_width, is_hug_height)
+layout:set_justify(is_justify)
+layout:set_margin([margin_x], [margin_y])
+layout:set_node_index([node], [index])
+layout:set_node_position(node, x, y)
+layout:set_padding([padding_x], [padding_y], [padding_z], [padding_w])
+layout:set_type(type)
+layout:update()
+
+layout.on_size_changed
+```
+
+### [Progress](components/extended/progress_api.md)
+
+Inspect [API Here](components/extended/progress_api.md)
+
+```lua
+local progress = self.druid:new_progress(node, key, [init_value])
+
+progress:empty()
+progress:fill()
+progress:get()
+progress:set_max_size(max_size)
+progress:set_steps(steps, callback)
+progress:set_to(to)
+progress:to(to, [callback])
+progress:update([dt])
+
+progress.on_change
+```
+
+### [Rich Input](components/custom/rich_input_api.md)
+
+Inspect [API Here](components/custom/rich_input_api.md)
+
+```lua
+local rich_input = self.druid:new_rich_input(template, [nodes])
+
+rich_input:get_text()
+rich_input:select()
+rich_input:set_allowed_characters(characters)
+rich_input:set_font(font)
+rich_input:set_placeholder(placeholder_text)
+rich_input:set_text(text)
+```
+
+### [Rich Text](components/custom/rich_text_api.md)
+
+Inspect [API Here](components/custom/rich_text_api.md)
+
+```lua
+local rich_text = self.druid:new_rich_text(text_node, [value])
+
+rich_text:characters(word)
+rich_text:clear()
+rich_text:get_line_metric()
+rich_text:get_text()
+rich_text:get_words()
+rich_text:set_text([text])
+rich_text:tagged(tag)
+```
+
+### [Scroll](components/base/scroll_api.md)
+
+Inspect [API Here](components/base/scroll_api.md)
+
+```lua
+local scroll = self.druid:new_scroll(view_node, content_node)
+
+scroll:bind_grid([grid])
+scroll:get_percent()
+scroll:get_scroll_size()
+scroll:is_inert()
+scroll:is_node_in_view(node)
+scroll:scroll_to(point, [is_instant])
+scroll:scroll_to_index(index, [skip_cb])
+scroll:scroll_to_percent(percent, [is_instant])
+scroll:set_click_zone(node)
+scroll:set_extra_stretch_size([stretch_size])
+scroll:set_horizontal_scroll(state)
+scroll:set_inert(state)
+scroll:set_points(points)
+scroll:set_size(size, [offset])
+scroll:set_vertical_scroll(state)
+scroll:set_view_size(size)
+scroll:update([dt])
+scroll:update_view_size()
+
+scroll.on_scroll
+scroll.on_scroll_to
+scroll.on_point_scroll
+```
+
+### [Slider](components/extended/slider_api.md)
+
+Inspect [API Here](components/extended/slider_api.md)
+
+```lua
+local slider = self.druid:new_slider(pin_node, end_pos, [callback])
+
+slider:is_enabled()
+slider:set(value, [is_silent])
+slider:set_enabled(is_enabled)
+slider:set_input_node([input_node])
+slider:set_steps(steps)
+
+slider.on_change_value
+```
+
+### [Swipe](components/extended/swipe_api.md)
+
+Inspect [API Here](components/extended/swipe_api.md)
+
+```lua
+local swipe = self.druid:new_swipe(node, [on_swipe_callback])
+
+swipe:set_click_zone([zone])
+
+swipe.on_swipe
+```
+
+### [Text](components/base/text_api.md)
+
+Inspect [API Here](components/base/text_api.md)
+
+```lua
+local text = self.druid:new_text(node, [value], [no_adjust])
+
+text:get_text()
+text:get_text_adjust()
+text:get_text_index_by_width(width)
+text:get_text_size([text])
+text:is_multiline()
+text:set_alpha(alpha)
+text:set_color(color)
+text:set_minimal_scale(minimal_scale)
+text:set_pivot(pivot)
+text:set_scale(scale)
+text:set_size(size)
+text:set_text([new_text])
+text:set_text_adjust([adjust_type], [minimal_scale])
+text:set_to(set_to)
+
+text.on_set_text
+text.on_update_text_scale
+text.on_set_pivot
+```
+
+### [Timer](components/extended/timer_api.md)
+
+Inspect [API Here](components/extended/timer_api.md)
+
+```lua
+local timer = self.druid:new_timer(node, [seconds_from], [seconds_to], [callback])
+
+timer:set_interval(from, to)
+timer:set_state([is_on])
+timer:set_to(set_to)
+timer:update([dt])
+
+timer.on_tick
+timer.on_set_enabled
+timer.on_timer_end
+```
+
+## [Helper](druid_helper_api.md)
+
+Inspect [API Here](druid_helper_api.md)
+
+```lua
+local helper = require("druid.helper")
+
+helper.add_array([target], [source])
+helper.centrate_icon_with_text([icon_node], [text_node], [margin])
+helper.centrate_nodes([margin], ...)
+helper.centrate_text_with_icon([text_node], [icon_node], margin)
+helper.clamp(value, [v1], [v2])
+helper.contains([array], [value])
+helper.deepcopy(orig_table)
+helper.distance(x1, y1, x2, y2)
+helper.get_animation_data_from_node(node, atlas_path)
+helper.get_border(node, [offset])
+helper.get_closest_stencil_node(node)
+helper.get_full_position(node, [root])
+helper.get_gui_scale()
+helper.get_node(node_id, [template], [nodes])
+helper.get_pivot_offset(pivot_or_node)
+helper.get_scaled_size(node)
+helper.get_scene_scale(node, [include_passed_node_scale])
+helper.get_screen_aspect_koef()
+helper.get_text_metrics_from_node(text_node)
+helper.insert_with_shift(array, [item], [index], [shift_policy])
+helper.is_mobile()
+helper.is_multitouch_supported()
+helper.is_web()
+helper.is_web_mobile()
+helper.lerp(a, b, t)
+helper.pick_node(node, x, y, [node_click_area])
+helper.remove_with_shift([array], [index], [shift_policy])
+helper.round(num, [num_decimal_places])
+helper.sign(val)
+helper.step(current, target, step)
+helper.table_to_string(t)
+```
+
+## [Widgets](widgets_api.md)
+
+Inspect [API Here](widgets_api.md)
+
+### [FPS Panel](/api/components/widgets/fps_panel_api.md)
+
+Inspect [API Here](/api/components/widgets/fps_panel_api.md)
+
+```lua
+local fps_panel = require("druid.widget.fps_panel.fps_panel")
+
+fps_panel:init()
+fps_panel:push_fps_value()
+```
+
+### [Memory Panel](/api/components/widgets/memory_panel_api.md)
+
+Inspect [API Here](/api/components/widgets/memory_panel_api.md)
+
+```lua
+local memory_panel = require("druid.widget.memory_panel.memory_panel")
+
+memory_panel:init()
+memory_panel:set_low_memory_limit([limit])
+memory_panel:push_next_value()
+memory_panel:update_text_memory()
+```
+
+### [Mini Graph](/api/components/widgets/mini_graph_api.md)
+
+Inspect [API Here](/api/components/widgets/mini_graph_api.md)
+
+```lua
+local mini_graph = require("druid.widget.mini_graph.mini_graph")
+
+mini_graph:clear()
+mini_graph:set_samples([samples])
+mini_graph:get_samples()
+mini_graph:set_line_value(index, value)
+mini_graph:get_line_value([index])
+mini_graph:push_line_value([value])
+mini_graph:set_max_value([max_value])
+mini_graph:set_line_height([index])
+mini_graph:get_lowest_value()
+mini_graph:get_highest_value()
+mini_graph:toggle_hide()
+```
+
+### [Properties Panel](/api/components/widgets/properties_panel_api.md)
+
+Inspect [API Here](/api/components/widgets/properties_panel_api.md)
+
+```lua
+local properties_panel = require("druid.widget.properties_panel.properties_panel")
+
+properties_panel:properties_constructors()
+properties_panel:init()
+properties_panel:clear_created_properties()
+properties_panel:clear()
+properties_panel:add_checkbox([on_create])
+properties_panel:add_slider([on_create])
+properties_panel:add_button([on_create])
+properties_panel:add_input([on_create])
+properties_panel:add_text([on_create])
+properties_panel:add_left_right_selector([on_create])
+properties_panel:add_vector3([on_create])
+properties_panel:add_inner_widget(widget_class, [template], [nodes], [on_create])
+properties_panel:add_widget(create_widget_callback)
+properties_panel:remove([widget])
+properties_panel:set_hidden([is_hidden])
+properties_panel:is_hidden()
+properties_panel:set_properties_per_page(properties_per_page)
+properties_panel:set_page([page])
+```
diff --git a/config.ld b/config.ld
deleted file mode 100644
index a487ec9..0000000
--- a/config.ld
+++ /dev/null
@@ -1,18 +0,0 @@
-project='Druid'
-title='Defold Druid UI Framework'
-description='Documentation for Druid Framework'
-file={"./druid",
- exclude = {
- "./druid/styles/",
- "./druid/templates/",
- "./druid/annotations.lua",
- "./druid/custom/rich_text/module",
- }
-}
-package='druid'
-sort=true
-dir='./docs'
-style='!fixed'
-topics={}
-use_markdown_titles=true
-no_space_before_args=true
diff --git a/docs/Druid_asmjs.js b/docs/Druid_asmjs.js
new file mode 100644
index 0000000..0fa2838
--- /dev/null
+++ b/docs/Druid_asmjs.js
@@ -0,0 +1,36 @@
+function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}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 o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _defineProperties(e,r){for(var t=0;tr.length)&&(a=r.length);for(var e=0,n=Array(a);e1&&arguments[1]!==undefined?arguments[1]:true;filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise(function(resolve,reject){fs.readFile(filename,binary?undefined:"utf8",function(err,data){if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}var nodeMajor=process.versions.node.split(".")[0];if(nodeMajor<15){process.on("unhandledRejection",function(reason){throw reason})}quit_=function quit_(status,toThrow){process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function readAsync(url){if(isFileURI(url)){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(function(response){if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var WebAssembly={Memory:function Memory(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function Module(binary){},Instance:function Instance(module,info){this.exports=(
+// EMSCRIPTEN_START_ASM
+function instantiate(aj){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2]<<2)+4|0);J[245749]=b;if(!b){break a}b=sj(J[a+8>>2]);if(b){J[J[245749]+(J[a+12>>2]<<2)>>2]=0;if(!(Bi(J[245749],b|0)|0)){break a}}J[245749]=0}Ui=a+16|0;J[73704]=bj(45222);J[73705]=Yi;J[73706]=bj(50321);J[73707]=Yi;J[73708]=bj(13937);J[73709]=Yi;J[73710]=bj(32861);J[73711]=Yi;J[73712]=bj(111479);J[73713]=Yi;J[73714]=bj(110055);J[73715]=Yi;J[73716]=bj(5264);J[73717]=Yi;J[73718]=bj(71642);J[73719]=Yi;a=bj(50317);J[73739]=0;J[73740]=0;J[73738]=338096;J[73736]=0;J[73734]=82726;J[73733]=48877;J[73732]=0;J[73730]=0;J[73728]=0;J[73726]=0;J[73724]=1;J[73722]=0;J[73723]=3;J[73720]=a;J[73721]=Yi;J[73741]=0;J[73742]=0;J[73743]=0;J[73760]=338096;J[73758]=0;J[73756]=24610;J[73755]=21434;J[73754]=0;J[73752]=0;J[73750]=0;J[73748]=0;J[73746]=1;J[73744]=0;J[73745]=3;J[73765]=0;J[73763]=0;J[73764]=0;J[73761]=0;J[73762]=0;J[73784]=bj(45222);J[73785]=Yi;J[73786]=bj(50321);J[73787]=Yi;J[73788]=bj(13937);J[73789]=Yi;J[73790]=bj(32861);J[73791]=Yi;J[73792]=bj(111479);J[73793]=Yi;J[73794]=bj(110055);J[73795]=Yi;J[73796]=bj(5264);J[73797]=Yi;J[73798]=bj(71642);J[73799]=Yi;J[73800]=bj(50317);J[73801]=Yi;J[73802]=bj(45222);J[73803]=Yi;J[73804]=bj(50321);J[73805]=Yi;J[73806]=bj(13937);J[73807]=Yi;J[73808]=bj(32861);J[73809]=Yi;J[73810]=bj(111479);J[73811]=Yi;J[73812]=bj(110055);J[73813]=Yi;J[73814]=bj(5264);J[73815]=Yi;J[73816]=bj(71642);J[73817]=Yi;J[73818]=bj(50317);J[73819]=Yi;J[73826]=1;J[73824]=1958639865;J[73825]=-771645978;J[73822]=1;J[73829]=0;H[295312]=0;J[73823]=42856;J[73827]=J[73820];J[73829]=J[74432];J[74432]=295288;J[54513]=J[74432];J[74432]=218024;J[73955]=0;J[73956]=0;J[73954]=295848;J[73952]=0;J[73948]=0;J[73946]=0;J[73944]=0;J[73942]=0;J[73940]=1;J[73938]=0;J[73939]=3;J[73950]=151693;J[73949]=48721;J[73957]=0;J[73958]=0;J[73959]=0;J[73978]=0;J[73979]=0;J[73976]=0;J[73972]=0;J[73970]=0;J[73968]=0;J[73966]=0;J[73964]=0;J[73962]=0;J[73963]=0;J[74e3]=295848;J[73998]=0;J[73994]=0;J[73992]=0;J[73990]=0;J[73988]=0;J[73986]=1;J[73984]=0;J[73985]=3;J[73974]=18539;J[73973]=16434;J[73980]=0;J[73981]=0;J[73982]=0;J[73983]=0;J[73996]=65685;J[73995]=24982;J[74005]=0;J[74003]=0;J[74004]=0;J[74001]=0;J[74002]=0;J[74022]=295848;J[74020]=0;J[74018]=65714;J[74017]=73602;J[74016]=0;J[74014]=0;J[74012]=0;J[74010]=0;J[74008]=1;J[74006]=0;J[74007]=3;J[74027]=0;J[74025]=0;J[74026]=0;J[74023]=0;J[74024]=0;J[74028]=Ul(84286,11);J[74029]=Yi;a=bj(81723);J[74032]=0;J[74033]=0;J[74030]=a;J[74031]=Yi;J[74034]=0;J[74035]=0;J[74036]=0;J[74037]=0;J[74038]=bj(45222);J[74039]=Yi;J[74040]=bj(6301);J[74041]=Yi;J[74042]=bj(4440);J[74043]=Yi;J[74044]=bj(1273);J[74045]=Yi;J[74046]=bj(46356);J[74047]=Yi;J[74048]=bj(6312);J[74049]=Yi;J[74050]=bj(4451);J[74051]=Yi;J[74052]=bj(1284);J[74053]=Yi;J[74054]=bj(6937);J[74055]=Yi;J[74056]=bj(34042);J[74057]=Yi;J[74058]=bj(6293);J[74059]=Yi;J[74060]=bj(4432);J[74061]=Yi;J[74062]=bj(1265);J[74063]=Yi;J[74064]=bj(67985);J[74065]=Yi;J[74066]=bj(6340);J[74067]=Yi;J[74068]=bj(4479);J[74069]=Yi;J[74070]=bj(1312);J[74071]=Yi;J[74121]=0;J[74122]=0;J[74120]=295848;J[74118]=0;J[74114]=0;J[74112]=0;J[74110]=0;J[74108]=0;J[74106]=1;J[74104]=0;J[74105]=3;J[74116]=18102;J[74115]=12077;J[74123]=0;J[74124]=0;J[74125]=0;J[54789]=J[74432];J[74432]=219128;J[54841]=J[74432];J[74432]=219336;J[54887]=J[74432];J[74432]=219520;J[54913]=J[74432];J[74432]=219624;J[54941]=J[74432];J[74432]=219736;J[54963]=J[74432];J[74432]=219824;J[55023]=J[74432];J[74432]=220064;J[55083]=J[74432];J[74432]=220304;J[55103]=J[74432];J[74432]=220384;J[55157]=J[74432];J[74432]=220600;J[55209]=J[74432];J[74432]=220808;J[74388]=1;J[74386]=-837310683;J[74387]=-705779925;J[74385]=17573;J[74384]=1;J[74391]=0;H[297560]=0;J[74389]=J[74382];J[74391]=J[74432];J[74432]=297536;J[74398]=1;J[74396]=246251198;J[74397]=718133641;J[74395]=17553;J[74394]=1;J[74401]=0;H[297600]=0;J[74399]=J[74393];J[74401]=J[74432];J[74432]=297576;J[55235]=J[74432];J[74432]=220912;J[74412]=1;J[74410]=772958340;J[74411]=1445875888;J[74409]=67750;J[74408]=1;J[74415]=0;H[297656]=0;J[74413]=J[74406];J[74415]=J[74432];J[74432]=297632;J[74422]=1;J[74420]=-779701654;J[74421]=342456181;J[74419]=67732;J[74418]=1;J[74425]=0;H[297696]=0;J[74423]=J[74417];J[74425]=J[74432];J[74432]=297672;J[55271]=J[74432];J[74432]=221056;J[55289]=J[74432];J[74432]=221128;J[55329]=J[74432];J[74432]=221288;J[55363]=J[74432];J[74432]=221424;J[55431]=J[74432];J[74432]=221696;J[74437]=0;J[74438]=0;J[74433]=0;J[74434]=0;J[74439]=0;J[74440]=0;J[74435]=0;J[74436]=0;J[74438]=-1;J[55463]=J[74432];J[74432]=221824;J[55495]=J[74432];J[74432]=221952;J[55535]=J[74432];J[74432]=222112;J[55567]=J[74432];J[74432]=222240;J[55607]=J[74432];J[74432]=222400;J[55643]=J[74432];J[74432]=222544;J[55679]=J[74432];J[74432]=222688;J[55705]=J[74432];J[74432]=222792;J[55819]=J[74432];J[74432]=223248;J[74520]=0;J[74521]=0;J[74518]=0;J[74514]=0;J[74512]=0;J[74510]=0;J[74508]=0;J[74506]=1;J[74504]=0;J[74505]=3;J[74516]=24447;J[74515]=69930;J[74522]=0;J[74523]=0;J[74524]=0;J[74525]=0;J[55881]=J[74432];J[74432]=223496;J[55919]=J[74432];J[74432]=223648;J[55969]=J[74432];J[74432]=223848;J[55997]=J[74432];J[74432]=223960;J[56031]=J[74432];J[74432]=224096;J[56049]=J[74432];J[74432]=224168;J[74720]=bj(45222);J[74721]=Yi;J[74722]=bj(50321);J[74723]=Yi;J[74724]=bj(13937);J[74725]=Yi;J[74726]=bj(32861);J[74727]=Yi;J[74728]=bj(111479);J[74729]=Yi;J[74730]=bj(110055);J[74731]=Yi;J[74732]=bj(5264);J[74733]=Yi;J[74734]=bj(71642);J[74735]=Yi;J[74736]=bj(50317);J[74737]=Yi;J[74738]=bj(80464);J[74739]=Yi;J[74740]=bj(80935);J[74741]=Yi;J[74742]=bj(80474);J[74743]=Yi;J[74744]=bj(80731);J[74745]=Yi;J[74746]=bj(82213);J[74747]=Yi;J[74748]=bj(81654);J[74749]=Yi;J[74750]=bj(82198);J[74751]=Yi;J[74752]=bj(82442);J[74753]=Yi;J[74754]=bj(80832);J[74755]=Yi;J[74756]=bj(81707);J[74757]=Yi;J[74758]=bj(80845);J[74759]=Yi;J[74760]=bj(80447);J[74761]=Yi;J[74762]=bj(12712);J[74763]=Yi;J[74764]=bj(17780);J[74765]=Yi;J[74766]=bj(68730);J[74767]=Yi;J[74768]=bj(50432);J[74769]=Yi;J[74770]=bj(21018);J[74771]=Yi;J[74772]=bj(111470);J[74773]=Yi;J[74774]=bj(110046);J[74775]=Yi;J[74776]=bj(109270);J[74777]=Yi;J[74778]=bj(108986);J[74779]=Yi;J[74780]=bj(107011);J[74781]=Yi;J[74782]=bj(106038);J[74783]=Yi;J[74784]=bj(103532);J[74785]=Yi;J[74786]=bj(103425);J[74787]=Yi;J[74788]=bj(22361);J[74789]=Yi;a=bj(70008);J[74809]=0;J[74810]=0;J[74808]=306464;J[74806]=0;J[74804]=18102;J[74803]=2915;J[74802]=0;J[74800]=0;J[74798]=0;J[74796]=0;J[74794]=1;J[74792]=0;J[74793]=3;J[74790]=a;J[74791]=Yi;J[74811]=0;J[74812]=0;J[74813]=0;J[74814]=bj(63788);J[74815]=Yi;J[74816]=bj(45222);J[74817]=Yi;J[74818]=bj(50321);J[74819]=Yi;J[74820]=bj(13937);J[74821]=Yi;J[74822]=bj(32861);J[74823]=Yi;J[74824]=bj(111479);J[74825]=Yi;J[74826]=bj(110055);J[74827]=Yi;J[74828]=bj(5264);J[74829]=Yi;J[74830]=bj(71642);J[74831]=Yi;J[74832]=bj(50317);J[74833]=Yi;J[74834]=bj(80464);J[74835]=Yi;J[74836]=bj(80935);J[74837]=Yi;J[74838]=bj(80474);J[74839]=Yi;J[74840]=bj(80731);J[74841]=Yi;J[74842]=bj(82213);J[74843]=Yi;J[74844]=bj(81654);J[74845]=Yi;J[74846]=bj(82198);J[74847]=Yi;J[74848]=bj(82442);J[74849]=Yi;J[74850]=bj(80832);J[74851]=Yi;J[74852]=bj(81707);J[74853]=Yi;J[74854]=bj(80845);J[74855]=Yi;J[74856]=bj(80447);J[74857]=Yi;J[74858]=bj(12712);J[74859]=Yi;J[74860]=bj(17780);J[74861]=Yi;J[74862]=bj(68730);J[74863]=Yi;J[74864]=bj(50432);J[74865]=Yi;J[74866]=bj(21018);J[74867]=Yi;J[74868]=bj(111470);J[74869]=Yi;J[74870]=bj(110046);J[74871]=Yi;J[74872]=bj(109270);J[74873]=Yi;J[74874]=bj(108986);J[74875]=Yi;J[74876]=bj(107011);J[74877]=Yi;J[74878]=bj(106038);J[74879]=Yi;J[74880]=bj(103532);J[74881]=Yi;J[74882]=bj(103425);J[74883]=Yi;J[74884]=bj(22361);J[74885]=Yi;a=bj(70008);J[74905]=0;J[74906]=0;J[74904]=306464;J[74902]=0;J[74900]=18102;J[74899]=1392;J[74898]=0;J[74896]=0;J[74894]=0;J[74892]=0;J[74890]=1;J[74888]=0;J[74889]=3;J[74886]=a;J[74887]=Yi;J[74907]=0;J[74908]=0;J[74909]=0;J[74926]=299552;J[74924]=0;J[74922]=23016;J[74921]=75983;J[74920]=0;J[74918]=0;J[74916]=0;J[74914]=0;J[74912]=1;J[74910]=0;J[74911]=3;J[74931]=0;J[74929]=0;J[74930]=0;J[74927]=0;J[74928]=0;J[74948]=299552;J[74946]=0;J[74944]=22987;J[74943]=75224;J[74942]=0;J[74940]=0;J[74938]=0;J[74936]=0;J[74934]=1;J[74932]=0;J[74933]=3;J[74953]=0;J[74951]=0;J[74952]=0;J[74949]=0;J[74950]=0;J[74954]=bj(76286);J[74955]=Yi;J[74956]=bj(76280);J[74957]=Yi;J[74958]=bj(76187);J[74959]=Yi;J[74960]=bj(14312);J[74961]=Yi;J[74962]=bj(50295);J[74963]=Yi;J[74964]=bj(75910);J[74965]=Yi;J[74966]=bj(75895);J[74967]=Yi;J[74968]=bj(45222);J[74969]=Yi;J[74970]=bj(50321);J[74971]=Yi;J[74972]=bj(13937);J[74973]=Yi;J[74974]=bj(32861);J[74975]=Yi;J[74976]=bj(111479);J[74977]=Yi;J[74978]=bj(110055);J[74979]=Yi;J[74980]=bj(5264);J[74981]=Yi;J[74982]=bj(71642);J[74983]=Yi;J[74984]=bj(50317);J[74985]=Yi;J[74986]=bj(80464);J[74987]=Yi;J[74988]=bj(80935);J[74989]=Yi;J[74990]=bj(80474);J[74991]=Yi;J[74992]=bj(80731);J[74993]=Yi;J[74994]=bj(82213);J[74995]=Yi;J[74996]=bj(81654);J[74997]=Yi;J[74998]=bj(82198);J[74999]=Yi;J[75e3]=bj(82442);J[75001]=Yi;J[75002]=bj(80832);J[75003]=Yi;J[75004]=bj(81707);J[75005]=Yi;J[75006]=bj(80845);J[75007]=Yi;J[75008]=bj(80447);J[75009]=Yi;J[75010]=bj(12712);J[75011]=Yi;J[75012]=bj(17780);J[75013]=Yi;J[75014]=bj(68730);J[75015]=Yi;J[75016]=bj(50432);J[75017]=Yi;J[75018]=bj(21018);J[75019]=Yi;J[75020]=bj(111470);J[75021]=Yi;J[75022]=bj(110046);J[75023]=Yi;J[75024]=bj(109270);J[75025]=Yi;J[75026]=bj(108986);J[75027]=Yi;J[75028]=bj(107011);J[75029]=Yi;J[75030]=bj(106038);J[75031]=Yi;J[75032]=bj(103532);J[75033]=Yi;J[75034]=bj(103425);J[75035]=Yi;J[75036]=bj(22361);J[75037]=Yi;a=bj(70008);J[75057]=0;J[75058]=0;J[75056]=306464;J[75054]=0;J[75052]=18102;J[75051]=16382;J[75050]=0;J[75048]=0;J[75046]=0;J[75044]=0;J[75042]=1;J[75040]=0;J[75041]=3;J[75038]=a;J[75039]=Yi;J[75059]=0;J[75060]=0;J[75061]=0;J[75062]=bj(56720);J[75063]=Yi;J[75064]=bj(56681);J[75065]=Yi;J[75066]=bj(1951);J[75067]=Yi;J[75068]=bj(1910);J[75069]=Yi;J[75070]=bj(18986);J[75071]=Yi;J[75072]=bj(15424);J[75073]=Yi;J[75082]=bj(45222);J[75083]=Yi;J[75084]=bj(50321);J[75085]=Yi;J[75086]=bj(13937);J[75087]=Yi;J[75088]=bj(32861);J[75089]=Yi;J[75090]=bj(111479);J[75091]=Yi;J[75092]=bj(110055);J[75093]=Yi;J[75094]=bj(5264);J[75095]=Yi;J[75096]=bj(71642);J[75097]=Yi;J[75098]=bj(50317);J[75099]=Yi;J[75100]=bj(80464);J[75101]=Yi;J[75102]=bj(80935);J[75103]=Yi;J[75104]=bj(80474);J[75105]=Yi;J[75106]=bj(80731);J[75107]=Yi;J[75108]=bj(82213);J[75109]=Yi;J[75110]=bj(81654);J[75111]=Yi;J[75112]=bj(82198);J[75113]=Yi;J[75114]=bj(82442);J[75115]=Yi;J[75116]=bj(80832);J[75117]=Yi;J[75118]=bj(81707);J[75119]=Yi;J[75120]=bj(80845);J[75121]=Yi;J[75122]=bj(80447);J[75123]=Yi;J[75124]=bj(12712);J[75125]=Yi;J[75126]=bj(17780);J[75127]=Yi;J[75128]=bj(68730);J[75129]=Yi;J[75130]=bj(50432);J[75131]=Yi;J[75132]=bj(21018);J[75133]=Yi;J[75136]=bj(111470);J[75137]=Yi;J[75138]=bj(110046);J[75139]=Yi;J[75140]=bj(109270);J[75141]=Yi;J[75142]=bj(108986);J[75143]=Yi;J[75144]=bj(107011);J[75145]=Yi;J[75146]=bj(106038);J[75147]=Yi;J[75148]=bj(103532);J[75149]=Yi;J[75150]=bj(103425);J[75151]=Yi;J[75152]=bj(22361);J[75153]=Yi;a=bj(70008);J[75173]=0;J[75174]=0;J[75172]=306464;J[75170]=0;J[75168]=18102;J[75167]=2952;J[75166]=0;J[75164]=0;J[75162]=0;J[75160]=0;J[75158]=1;J[75156]=0;J[75157]=3;J[75154]=a;J[75155]=Yi;J[75175]=0;J[75176]=0;J[75177]=0;J[75178]=bj(63788);J[75179]=Yi;J[75180]=bj(45222);J[75181]=Yi;J[75182]=bj(50321);J[75183]=Yi;J[75184]=bj(13937);J[75185]=Yi;J[75186]=bj(32861);J[75187]=Yi;J[75188]=bj(111479);J[75189]=Yi;J[75190]=bj(110055);J[75191]=Yi;J[75192]=bj(5264);J[75193]=Yi;J[75194]=bj(71642);J[75195]=Yi;J[75196]=bj(50317);J[75197]=Yi;J[75198]=bj(80464);J[75199]=Yi;J[75200]=bj(80935);J[75201]=Yi;J[75202]=bj(80474);J[75203]=Yi;J[75204]=bj(80731);J[75205]=Yi;J[75206]=bj(82213);J[75207]=Yi;J[75208]=bj(81654);J[75209]=Yi;J[75210]=bj(82198);J[75211]=Yi;J[75212]=bj(82442);J[75213]=Yi;J[75214]=bj(80832);J[75215]=Yi;J[75216]=bj(81707);J[75217]=Yi;J[75218]=bj(80845);J[75219]=Yi;J[75220]=bj(80447);J[75221]=Yi;J[75222]=bj(12712);J[75223]=Yi;J[75224]=bj(17780);J[75225]=Yi;J[75226]=bj(68730);J[75227]=Yi;J[75228]=bj(50432);J[75229]=Yi;J[75230]=bj(21018);J[75231]=Yi;J[75232]=bj(111470);J[75233]=Yi;J[75234]=bj(110046);J[75235]=Yi;J[75236]=bj(109270);J[75237]=Yi;J[75238]=bj(108986);J[75239]=Yi;J[75240]=bj(107011);J[75241]=Yi;J[75242]=bj(106038);J[75243]=Yi;J[75244]=bj(103532);J[75245]=Yi;J[75246]=bj(103425);J[75247]=Yi;J[75248]=bj(22361);J[75249]=Yi;a=bj(70008);J[75269]=0;J[75270]=0;J[75268]=875744;J[75266]=0;J[75264]=151693;J[75263]=11925;J[75262]=0;J[75260]=0;J[75258]=0;J[75256]=0;J[75254]=1;J[75252]=0;J[75253]=3;J[75250]=a;J[75251]=Yi;J[75271]=0;J[75272]=0;J[75273]=0;J[75280]=2;J[75278]=4;J[75279]=5;J[75276]=1;J[75277]=3;J[75274]=6;J[75275]=0;J[75281]=0;J[75284]=3;J[75285]=4;J[75282]=1;J[75283]=2;J[75330]=bj(45222);J[75331]=Yi;J[75332]=bj(50321);J[75333]=Yi;J[75334]=bj(13937);J[75335]=Yi;J[75336]=bj(32861);J[75337]=Yi;J[75338]=bj(111479);J[75339]=Yi;J[75340]=bj(110055);J[75341]=Yi;J[75342]=bj(5264);J[75343]=Yi;J[75344]=bj(71642);J[75345]=Yi;J[75346]=bj(50317);J[75347]=Yi;J[75348]=bj(80464);J[75349]=Yi;J[75350]=bj(80935);J[75351]=Yi;J[75352]=bj(80474);J[75353]=Yi;J[75354]=bj(80731);J[75355]=Yi;J[75356]=bj(82213);J[75357]=Yi;J[75358]=bj(81654);J[75359]=Yi;J[75360]=bj(82198);J[75361]=Yi;J[75362]=bj(82442);J[75363]=Yi;J[75364]=bj(80832);J[75365]=Yi;J[75366]=bj(81707);J[75367]=Yi;J[75368]=bj(80845);J[75369]=Yi;J[75370]=bj(80447);J[75371]=Yi;J[75372]=bj(12712);J[75373]=Yi;J[75374]=bj(17780);J[75375]=Yi;J[75376]=bj(68730);J[75377]=Yi;J[75378]=bj(50432);J[75379]=Yi;J[75380]=bj(21018);J[75381]=Yi;J[75384]=bj(111470);J[75385]=Yi;J[75386]=bj(110046);J[75387]=Yi;J[75388]=bj(109270);J[75389]=Yi;J[75390]=bj(108986);J[75391]=Yi;J[75392]=bj(107011);J[75393]=Yi;J[75394]=bj(106038);J[75395]=Yi;J[75396]=bj(103532);J[75397]=Yi;J[75398]=bj(103425);J[75399]=Yi;J[75400]=bj(22361);J[75401]=Yi;a=bj(70008);J[75421]=0;J[75422]=0;J[75420]=306464;J[75418]=0;J[75416]=18102;J[75415]=53244;J[75414]=0;J[75412]=0;J[75410]=0;J[75408]=0;J[75406]=1;J[75404]=0;J[75405]=3;J[75402]=a;J[75403]=Yi;J[75423]=0;J[75424]=0;J[75425]=0;J[75442]=301616;J[75440]=0;J[75438]=25045;J[75437]=11945;J[75436]=0;J[75434]=0;J[75432]=0;J[75430]=0;J[75428]=1;J[75426]=0;J[75427]=3;J[75447]=0;J[75445]=0;J[75446]=0;J[75443]=0;J[75444]=0;J[75464]=301616;J[75462]=0;J[75460]=21970;J[75459]=59450;J[75458]=0;J[75456]=0;J[75454]=0;J[75452]=0;J[75450]=1;J[75448]=0;J[75449]=3;J[75469]=0;J[75467]=0;J[75468]=0;J[75465]=0;J[75466]=0;J[75470]=bj(25047);J[75471]=Yi;J[75472]=bj(99547);J[75473]=Yi;J[75522]=bj(45222);J[75523]=Yi;J[75524]=bj(50321);J[75525]=Yi;J[75526]=bj(13937);J[75527]=Yi;J[75528]=bj(32861);J[75529]=Yi;J[75530]=bj(111479);J[75531]=Yi;J[75532]=bj(110055);J[75533]=Yi;J[75534]=bj(5264);J[75535]=Yi;J[75536]=bj(71642);J[75537]=Yi;J[75538]=bj(50317);J[75539]=Yi;J[75540]=bj(80464);J[75541]=Yi;J[75542]=bj(80935);J[75543]=Yi;J[75544]=bj(80474);J[75545]=Yi;J[75546]=bj(80731);J[75547]=Yi;J[75548]=bj(82213);J[75549]=Yi;J[75550]=bj(81654);J[75551]=Yi;J[75552]=bj(82198);J[75553]=Yi;J[75554]=bj(82442);J[75555]=Yi;J[75556]=bj(80832);J[75557]=Yi;J[75558]=bj(81707);J[75559]=Yi;J[75560]=bj(80845);J[75561]=Yi;J[75562]=bj(80447);J[75563]=Yi;J[75564]=bj(12712);J[75565]=Yi;J[75566]=bj(17780);J[75567]=Yi;J[75568]=bj(68730);J[75569]=Yi;J[75570]=bj(50432);J[75571]=Yi;J[75572]=bj(21018);J[75573]=Yi;J[75576]=bj(111470);J[75577]=Yi;J[75578]=bj(110046);J[75579]=Yi;J[75580]=bj(109270);J[75581]=Yi;J[75582]=bj(108986);J[75583]=Yi;J[75584]=bj(107011);J[75585]=Yi;J[75586]=bj(106038);J[75587]=Yi;J[75588]=bj(103532);J[75589]=Yi;J[75590]=bj(103425);J[75591]=Yi;J[75592]=bj(22361);J[75593]=Yi;a=bj(70008);J[75613]=0;J[75614]=0;J[75612]=306464;J[75610]=0;J[75608]=18102;J[75607]=6013;J[75606]=0;J[75604]=0;J[75602]=0;J[75600]=0;J[75598]=1;J[75596]=0;J[75597]=3;J[75594]=a;J[75595]=Yi;J[75615]=0;J[75616]=0;J[75617]=0;J[75634]=302384;J[75632]=0;J[75630]=25045;J[75629]=11989;J[75628]=0;J[75626]=0;J[75624]=0;J[75622]=0;J[75620]=1;J[75618]=0;J[75619]=3;J[75639]=0;J[75637]=0;J[75638]=0;J[75635]=0;J[75636]=0;J[75656]=302384;J[75654]=0;J[75652]=136401;J[75651]=59492;J[75650]=0;J[75648]=0;J[75646]=0;J[75644]=0;J[75642]=1;J[75640]=0;J[75641]=3;J[75661]=0;J[75659]=0;J[75660]=0;J[75657]=0;J[75658]=0;J[75678]=302384;J[75676]=0;J[75674]=136364;J[75673]=85897;J[75672]=0;J[75670]=0;J[75668]=0;J[75666]=0;J[75664]=1;J[75662]=0;J[75663]=3;J[75683]=0;J[75681]=0;J[75682]=0;J[75679]=0;J[75680]=0;J[75686]=bj(45222);J[75687]=Yi;J[75688]=bj(50321);J[75689]=Yi;J[75690]=bj(13937);J[75691]=Yi;J[75692]=bj(32861);J[75693]=Yi;J[75694]=bj(111479);J[75695]=Yi;J[75696]=bj(110055);J[75697]=Yi;J[75698]=bj(5264);J[75699]=Yi;J[75700]=bj(71642);J[75701]=Yi;J[75702]=bj(50317);J[75703]=Yi;J[75704]=bj(45222);J[75705]=Yi;J[75706]=bj(50321);J[75707]=Yi;J[75708]=bj(13937);J[75709]=Yi;J[75710]=bj(32861);J[75711]=Yi;J[75712]=bj(111479);J[75713]=Yi;J[75714]=bj(110055);J[75715]=Yi;J[75716]=bj(5264);J[75717]=Yi;J[75718]=bj(71642);J[75719]=Yi;J[75720]=bj(50317);J[75721]=Yi;J[75722]=bj(80464);J[75723]=Yi;J[75724]=bj(80935);J[75725]=Yi;J[75726]=bj(80474);J[75727]=Yi;J[75728]=bj(80731);J[75729]=Yi;J[75730]=bj(82213);J[75731]=Yi;J[75732]=bj(81654);J[75733]=Yi;J[75734]=bj(82198);J[75735]=Yi;J[75736]=bj(82442);J[75737]=Yi;J[75738]=bj(80832);J[75739]=Yi;J[75740]=bj(81707);J[75741]=Yi;J[75742]=bj(80845);J[75743]=Yi;J[75744]=bj(80447);J[75745]=Yi;J[75746]=bj(12712);J[75747]=Yi;J[75748]=bj(17780);J[75749]=Yi;J[75750]=bj(68730);J[75751]=Yi;J[75752]=bj(50432);J[75753]=Yi;J[75754]=bj(21018);J[75755]=Yi;J[75756]=bj(111470);J[75757]=Yi;J[75758]=bj(110046);J[75759]=Yi;J[75760]=bj(109270);J[75761]=Yi;J[75762]=bj(108986);J[75763]=Yi;J[75764]=bj(107011);J[75765]=Yi;J[75766]=bj(106038);J[75767]=Yi;J[75768]=bj(103532);J[75769]=Yi;J[75770]=bj(103425);J[75771]=Yi;J[75772]=bj(22361);J[75773]=Yi;a=bj(70008);J[75793]=0;J[75794]=0;J[75792]=306464;J[75790]=0;J[75788]=18102;J[75787]=71324;J[75786]=0;J[75784]=0;J[75782]=0;J[75780]=0;J[75778]=1;J[75776]=0;J[75777]=3;J[75774]=a;J[75775]=Yi;J[75795]=0;J[75796]=0;J[75797]=0;J[75814]=303104;J[75812]=0;J[75810]=56130;J[75809]=56147;J[75808]=0;J[75806]=0;J[75804]=0;J[75802]=0;J[75800]=1;J[75798]=0;J[75799]=3;J[75819]=0;J[75817]=0;J[75818]=0;J[75815]=0;J[75816]=0;J[75820]=bj(80496);J[75821]=Yi;J[75822]=bj(82363);J[75823]=Yi;J[75824]=bj(47905);J[75825]=Yi;J[75826]=bj(48239);J[75827]=Yi;J[75828]=bj(75640);J[75829]=Yi;J[75830]=bj(70934);J[75831]=Yi;J[75872]=bj(45222);J[75873]=Yi;J[75874]=bj(50321);J[75875]=Yi;J[75876]=bj(13937);J[75877]=Yi;J[75878]=bj(32861);J[75879]=Yi;J[75880]=bj(111479);J[75881]=Yi;J[75882]=bj(110055);J[75883]=Yi;J[75884]=bj(5264);J[75885]=Yi;J[75886]=bj(71642);J[75887]=Yi;J[75888]=bj(50317);J[75889]=Yi;J[75890]=bj(80464);J[75891]=Yi;J[75892]=bj(80935);J[75893]=Yi;J[75894]=bj(80474);J[75895]=Yi;J[75896]=bj(80731);J[75897]=Yi;J[75898]=bj(82213);J[75899]=Yi;J[75900]=bj(81654);J[75901]=Yi;J[75902]=bj(82198);J[75903]=Yi;J[75904]=bj(82442);J[75905]=Yi;J[75906]=bj(80832);J[75907]=Yi;J[75908]=bj(81707);J[75909]=Yi;J[75910]=bj(80845);J[75911]=Yi;J[75912]=bj(80447);J[75913]=Yi;J[75914]=bj(12712);J[75915]=Yi;J[75916]=bj(17780);J[75917]=Yi;J[75918]=bj(68730);J[75919]=Yi;J[75920]=bj(50432);J[75921]=Yi;J[75922]=bj(21018);J[75923]=Yi;J[75924]=bj(111470);J[75925]=Yi;J[75926]=bj(110046);J[75927]=Yi;J[75928]=bj(109270);J[75929]=Yi;J[75930]=bj(108986);J[75931]=Yi;J[75932]=bj(107011);J[75933]=Yi;J[75934]=bj(106038);J[75935]=Yi;J[75936]=bj(103532);J[75937]=Yi;J[75938]=bj(103425);J[75939]=Yi;J[75940]=bj(22361);J[75941]=Yi;a=bj(70008);J[75961]=0;J[75962]=0;J[75960]=306464;J[75958]=0;J[75956]=18102;J[75955]=83964;J[75954]=0;J[75952]=0;J[75950]=0;J[75948]=0;J[75946]=1;J[75944]=0;J[75945]=3;J[75942]=a;J[75943]=Yi;J[75963]=0;J[75964]=0;J[75965]=0;J[75966]=bj(7054);J[75967]=Yi;J[75968]=bj(1181);J[75969]=Yi;J[75970]=bj(1160);J[75971]=Yi;J[75972]=bj(48674);J[75973]=Yi;J[75974]=bj(46172);J[75975]=Yi;J[75976]=bj(6781);J[75977]=Yi;J[75978]=bj(44081);J[75979]=Yi;J[75980]=bj(45222);J[75981]=Yi;J[75982]=bj(50321);J[75983]=Yi;J[75984]=bj(13937);J[75985]=Yi;J[75986]=bj(32861);J[75987]=Yi;J[75988]=bj(111479);J[75989]=Yi;J[75990]=bj(110055);J[75991]=Yi;J[75992]=bj(5264);J[75993]=Yi;J[75994]=bj(71642);J[75995]=Yi;J[75996]=bj(50317);J[75997]=Yi;J[75998]=bj(45222);J[75999]=Yi;J[76e3]=bj(50321);J[76001]=Yi;J[76002]=bj(13937);J[76003]=Yi;J[76004]=bj(32861);J[76005]=Yi;J[76006]=bj(111479);J[76007]=Yi;J[76008]=bj(110055);J[76009]=Yi;J[76010]=bj(5264);J[76011]=Yi;J[76012]=bj(71642);J[76013]=Yi;J[76014]=bj(50317);J[76015]=Yi;J[76016]=bj(80464);J[76017]=Yi;J[76018]=bj(80935);J[76019]=Yi;J[76020]=bj(80474);J[76021]=Yi;J[76022]=bj(80731);J[76023]=Yi;J[76024]=bj(82213);J[76025]=Yi;J[76026]=bj(81654);J[76027]=Yi;J[76028]=bj(82198);J[76029]=Yi;J[76030]=bj(82442);J[76031]=Yi;J[76032]=bj(80832);J[76033]=Yi;J[76034]=bj(81707);J[76035]=Yi;J[76036]=bj(80845);J[76037]=Yi;J[76038]=bj(80447);J[76039]=Yi;J[76040]=bj(12712);J[76041]=Yi;J[76042]=bj(17780);J[76043]=Yi;J[76044]=bj(68730);J[76045]=Yi;J[76046]=bj(50432);J[76047]=Yi;J[76048]=bj(21018);J[76049]=Yi;J[76052]=bj(111470);J[76053]=Yi;J[76054]=bj(110046);J[76055]=Yi;J[76056]=bj(109270);J[76057]=Yi;J[76058]=bj(108986);J[76059]=Yi;J[76060]=bj(107011);J[76061]=Yi;J[76062]=bj(106038);J[76063]=Yi;J[76064]=bj(103532);J[76065]=Yi;J[76066]=bj(103425);J[76067]=Yi;J[76068]=bj(22361);J[76069]=Yi;a=bj(70008);J[76089]=0;J[76090]=0;J[76088]=306464;J[76086]=0;J[76084]=18102;J[76083]=61244;J[76082]=0;J[76080]=0;J[76078]=0;J[76076]=0;J[76074]=1;J[76072]=0;J[76073]=3;J[76070]=a;J[76071]=Yi;J[76091]=0;J[76092]=0;J[76093]=0;J[76110]=304288;J[76108]=0;J[76106]=25045;J[76105]=11966;J[76104]=0;J[76102]=0;J[76100]=0;J[76098]=0;J[76096]=1;J[76094]=0;J[76095]=3;J[76115]=0;J[76113]=0;J[76114]=0;J[76111]=0;J[76112]=0;J[76118]=1;J[76120]=0;J[76122]=0;J[76124]=0;J[76126]=0;J[76127]=59470;J[76128]=21970;J[76130]=0;J[76132]=304288;J[76116]=0;J[76117]=3;J[76133]=0;J[76134]=0;J[76135]=0;J[76136]=0;J[76137]=0;J[76140]=1;J[76142]=0;J[76144]=0;J[76146]=0;J[76148]=0;J[76149]=59516;J[76150]=21996;J[76152]=0;J[76154]=304288;J[76138]=0;J[76139]=3;J[76159]=0;J[76157]=0;J[76158]=0;J[76155]=0;J[76156]=0;a=bj(67985);b=Yi;c=bj(6340);d=Yi;e=bj(4479);f=Yi;g=bj(1312);H[304672]=0;J[76166]=g;J[76167]=Yi;J[76164]=e;J[76165]=f;J[76162]=c;J[76163]=d;J[76160]=a;J[76161]=b;a=bj(59207);b=Yi;c=bj(6323);d=Yi;e=bj(4462);f=Yi;g=bj(1295);H[304712]=0;J[76176]=g;J[76177]=Yi;J[76174]=e;J[76175]=f;J[76172]=c;J[76173]=d;J[76170]=a;J[76171]=b;a=bj(70587);b=Yi;c=bj(6348);d=Yi;e=bj(4487);f=Yi;g=bj(1320);h=Yi;i=bj(6973);H[304760]=0;J[76188]=i;J[76189]=Yi;J[76186]=g;J[76187]=h;J[76184]=e;J[76185]=f;J[76182]=c;J[76183]=d;J[76180]=a;J[76181]=b;J[76192]=bj(32630);J[76193]=Yi;J[76194]=bj(61778);J[76195]=Yi;J[76196]=bj(46887);J[76197]=Yi;J[76198]=bj(11488);J[76199]=Yi;J[76214]=bj(45222);J[76215]=Yi;J[76216]=bj(50321);J[76217]=Yi;J[76218]=bj(13937);J[76219]=Yi;J[76220]=bj(32861);J[76221]=Yi;J[76222]=bj(111479);J[76223]=Yi;J[76224]=bj(110055);J[76225]=Yi;J[76226]=bj(5264);J[76227]=Yi;J[76228]=bj(71642);J[76229]=Yi;J[76230]=bj(50317);J[76231]=Yi;J[76232]=bj(80464);J[76233]=Yi;J[76234]=bj(80935);J[76235]=Yi;J[76236]=bj(80474);J[76237]=Yi;J[76238]=bj(80731);J[76239]=Yi;J[76240]=bj(82213);J[76241]=Yi;J[76242]=bj(81654);J[76243]=Yi;J[76244]=bj(82198);J[76245]=Yi;J[76246]=bj(82442);J[76247]=Yi;J[76248]=bj(80832);J[76249]=Yi;J[76250]=bj(81707);J[76251]=Yi;J[76252]=bj(80845);J[76253]=Yi;J[76254]=bj(80447);J[76255]=Yi;J[76256]=bj(12712);J[76257]=Yi;J[76258]=bj(17780);J[76259]=Yi;J[76260]=bj(68730);J[76261]=Yi;J[76262]=bj(50432);J[76263]=Yi;J[76264]=bj(21018);J[76265]=Yi;J[76268]=bj(111470);J[76269]=Yi;J[76270]=bj(110046);J[76271]=Yi;J[76272]=bj(109270);J[76273]=Yi;J[76274]=bj(108986);J[76275]=Yi;J[76276]=bj(107011);J[76277]=Yi;J[76278]=bj(106038);J[76279]=Yi;J[76280]=bj(103532);J[76281]=Yi;J[76282]=bj(103425);J[76283]=Yi;J[76284]=bj(22361);J[76285]=Yi;a=bj(70008);J[76305]=0;J[76306]=0;J[76304]=306464;J[76302]=0;J[76300]=18102;J[76299]=43608;J[76298]=0;J[76296]=0;J[76294]=0;J[76292]=0;J[76290]=1;J[76288]=0;J[76289]=3;J[76286]=a;J[76287]=Yi;J[76307]=0;J[76308]=0;J[76309]=0;J[76326]=305152;J[76324]=0;J[76322]=25045;J[76321]=12471;J[76320]=0;J[76318]=0;J[76316]=0;J[76314]=0;J[76312]=1;J[76310]=0;J[76311]=3;J[76331]=0;J[76329]=0;J[76330]=0;J[76327]=0;J[76328]=0;J[76348]=305152;J[76346]=0;J[76344]=25045;J[76343]=11879;J[76342]=0;J[76340]=0;J[76338]=0;J[76336]=0;J[76334]=1;J[76332]=0;J[76333]=3;J[76353]=0;J[76351]=0;J[76352]=0;J[76349]=0;J[76350]=0;J[76370]=305152;J[76368]=0;J[76366]=21970;J[76365]=59406;J[76364]=0;J[76362]=0;J[76360]=0;J[76358]=0;J[76356]=1;J[76354]=0;J[76355]=3;J[76375]=0;J[76373]=0;J[76374]=0;J[76371]=0;J[76372]=0;J[76382]=bj(45222);J[76383]=Yi;J[76384]=bj(50321);J[76385]=Yi;J[76386]=bj(13937);J[76387]=Yi;J[76388]=bj(32861);J[76389]=Yi;J[76390]=bj(111479);J[76391]=Yi;J[76392]=bj(110055);J[76393]=Yi;J[76394]=bj(5264);J[76395]=Yi;J[76396]=bj(71642);J[76397]=Yi;J[76398]=bj(50317);J[76399]=Yi;J[76400]=bj(80464);J[76401]=Yi;J[76402]=bj(80935);J[76403]=Yi;J[76404]=bj(80474);J[76405]=Yi;J[76406]=bj(80731);J[76407]=Yi;J[76408]=bj(82213);J[76409]=Yi;J[76410]=bj(81654);J[76411]=Yi;J[76412]=bj(82198);J[76413]=Yi;J[76414]=bj(82442);J[76415]=Yi;J[76416]=bj(80832);J[76417]=Yi;J[76418]=bj(81707);J[76419]=Yi;J[76420]=bj(80845);J[76421]=Yi;J[76422]=bj(80447);J[76423]=Yi;J[76424]=bj(12712);J[76425]=Yi;J[76426]=bj(17780);J[76427]=Yi;J[76428]=bj(68730);J[76429]=Yi;J[76430]=bj(50432);J[76431]=Yi;J[76432]=bj(21018);J[76433]=Yi;J[76436]=bj(111470);J[76437]=Yi;J[76438]=bj(110046);J[76439]=Yi;J[76440]=bj(109270);J[76441]=Yi;J[76442]=bj(108986);J[76443]=Yi;J[76444]=bj(107011);J[76445]=Yi;J[76446]=bj(106038);J[76447]=Yi;J[76448]=bj(103532);J[76449]=Yi;J[76450]=bj(103425);J[76451]=Yi;J[76452]=bj(22361);J[76453]=Yi;a=bj(70008);J[76473]=0;J[76474]=0;J[76472]=306464;J[76470]=0;J[76468]=18102;J[76467]=49997;J[76466]=0;J[76464]=0;J[76462]=0;J[76460]=0;J[76458]=1;J[76456]=0;J[76457]=3;J[76454]=a;J[76455]=Yi;J[76475]=0;J[76476]=0;J[76477]=0;a=bj(67985);b=Yi;c=bj(6340);d=Yi;e=bj(4479);f=Yi;g=bj(1312);H[305944]=0;J[76484]=g;J[76485]=Yi;J[76482]=e;J[76483]=f;J[76480]=c;J[76481]=d;J[76478]=a;J[76479]=b;a=bj(59207);b=Yi;c=bj(6323);d=Yi;e=bj(4462);f=Yi;g=bj(1295);H[305984]=0;J[76494]=g;J[76495]=Yi;J[76492]=e;J[76493]=f;J[76490]=c;J[76491]=d;J[76488]=a;J[76489]=b;a=bj(32861);b=Yi;c=bj(6285);d=Yi;e=bj(4424);f=Yi;g=bj(1257);h=Yi;i=bj(6910);H[306032]=0;J[76506]=i;J[76507]=Yi;J[76504]=g;J[76505]=h;J[76502]=e;J[76503]=f;J[76500]=c;J[76501]=d;J[76498]=a;J[76499]=b;a=bj(65297);b=Yi;c=bj(6330);d=Yi;e=bj(4469);f=Yi;g=bj(1302);h=Yi;i=bj(6955);H[306080]=0;J[76518]=i;J[76519]=Yi;J[76516]=g;J[76517]=h;J[76514]=e;J[76515]=f;J[76512]=c;J[76513]=d;J[76510]=a;J[76511]=b;a=bj(6674);b=Yi;c=bj(6258);d=Yi;e=bj(4397);f=Yi;g=bj(1243);h=Yi;i=bj(6896);H[306128]=0;J[76530]=i;J[76531]=Yi;J[76528]=g;J[76529]=h;J[76526]=e;J[76527]=f;J[76524]=c;J[76525]=d;J[76522]=a;J[76523]=b;J[76534]=bj(57375);J[76535]=Yi;J[76536]=bj(56937);J[76537]=Yi;J[76538]=bj(52008);J[76539]=Yi;J[76544]=bj(45222);J[76545]=Yi;J[76546]=bj(50321);J[76547]=Yi;J[76548]=bj(13937);J[76549]=Yi;J[76550]=bj(32861);J[76551]=Yi;J[76552]=bj(111479);J[76553]=Yi;J[76554]=bj(110055);J[76555]=Yi;J[76556]=bj(5264);J[76557]=Yi;J[76558]=bj(71642);J[76559]=Yi;J[76560]=bj(50317);J[76561]=Yi;J[76562]=bj(80464);J[76563]=Yi;J[76564]=bj(80935);J[76565]=Yi;J[76566]=bj(80474);J[76567]=Yi;J[76568]=bj(80731);J[76569]=Yi;J[76570]=bj(82213);J[76571]=Yi;J[76572]=bj(81654);J[76573]=Yi;J[76574]=bj(82198);J[76575]=Yi;J[76576]=bj(82442);J[76577]=Yi;J[76578]=bj(80832);J[76579]=Yi;J[76580]=bj(81707);J[76581]=Yi;J[76582]=bj(80845);J[76583]=Yi;J[76584]=bj(80447);J[76585]=Yi;J[76586]=bj(12712);J[76587]=Yi;J[76588]=bj(17780);J[76589]=Yi;J[76590]=bj(68730);J[76591]=Yi;J[76592]=bj(50432);J[76593]=Yi;J[76594]=bj(21018);J[76595]=Yi;J[76596]=bj(111470);J[76597]=Yi;J[76598]=bj(110046);J[76599]=Yi;J[76600]=bj(109270);J[76601]=Yi;J[76602]=bj(108986);J[76603]=Yi;J[76604]=bj(107011);J[76605]=Yi;J[76606]=bj(106038);J[76607]=Yi;J[76608]=bj(103532);J[76609]=Yi;J[76610]=bj(103425);J[76611]=Yi;J[76612]=bj(22361);J[76613]=Yi;a=bj(70008);J[76632]=0;J[76633]=0;J[76630]=0;J[76628]=18197;J[76627]=18181;J[76626]=0;J[76624]=0;J[76622]=0;J[76620]=0;J[76618]=0;J[76616]=0;J[76617]=0;J[76614]=a;J[76615]=Yi;J[76634]=0;J[76635]=0;J[76636]=0;J[76637]=0;J[76638]=bj(45222);J[76639]=Yi;J[76640]=bj(50321);J[76641]=Yi;J[76642]=bj(13937);J[76643]=Yi;J[76644]=bj(32861);J[76645]=Yi;J[76646]=bj(111479);J[76647]=Yi;J[76648]=bj(110055);J[76649]=Yi;J[76650]=bj(5264);J[76651]=Yi;J[76652]=bj(71642);J[76653]=Yi;J[76654]=bj(50317);J[76655]=Yi;J[76656]=bj(80464);J[76657]=Yi;J[76658]=bj(80935);J[76659]=Yi;J[76660]=bj(80474);J[76661]=Yi;J[76662]=bj(80731);J[76663]=Yi;J[76664]=bj(82213);J[76665]=Yi;J[76666]=bj(81654);J[76667]=Yi;J[76668]=bj(82198);J[76669]=Yi;J[76670]=bj(82442);J[76671]=Yi;J[76672]=bj(80832);J[76673]=Yi;J[76674]=bj(81707);J[76675]=Yi;J[76676]=bj(80845);J[76677]=Yi;J[76678]=bj(80447);J[76679]=Yi;J[76680]=bj(12712);J[76681]=Yi;J[76682]=bj(17780);J[76683]=Yi;J[76684]=bj(68730);J[76685]=Yi;J[76686]=bj(50432);J[76687]=Yi;J[76688]=bj(21018);J[76689]=Yi;J[76692]=bj(111470);J[76693]=Yi;J[76694]=bj(110046);J[76695]=Yi;J[76696]=bj(109270);J[76697]=Yi;J[76698]=bj(108986);J[76699]=Yi;J[76700]=bj(107011);J[76701]=Yi;J[76702]=bj(106038);J[76703]=Yi;J[76704]=bj(103532);J[76705]=Yi;J[76706]=bj(103425);J[76707]=Yi;J[76708]=bj(22361);J[76709]=Yi;J[76710]=bj(70008);J[76711]=Yi;J[76712]=bj(45222);J[76713]=Yi;J[76714]=bj(50321);J[76715]=Yi;J[76716]=bj(13937);J[76717]=Yi;J[76718]=bj(32861);J[76719]=Yi;J[76720]=bj(111479);J[76721]=Yi;J[76722]=bj(110055);J[76723]=Yi;J[76724]=bj(5264);J[76725]=Yi;J[76726]=bj(71642);J[76727]=Yi;J[76728]=bj(50317);J[76729]=Yi;J[76730]=bj(80464);J[76731]=Yi;J[76732]=bj(80935);J[76733]=Yi;J[76734]=bj(80474);J[76735]=Yi;J[76736]=bj(80731);J[76737]=Yi;J[76738]=bj(82213);J[76739]=Yi;J[76740]=bj(81654);J[76741]=Yi;J[76742]=bj(82198);J[76743]=Yi;J[76744]=bj(82442);J[76745]=Yi;J[76746]=bj(80832);J[76747]=Yi;J[76748]=bj(81707);J[76749]=Yi;J[76750]=bj(80845);J[76751]=Yi;J[76752]=bj(80447);J[76753]=Yi;J[76754]=bj(12712);J[76755]=Yi;J[76756]=bj(17780);J[76757]=Yi;J[76758]=bj(68730);J[76759]=Yi;J[76760]=bj(50432);J[76761]=Yi;J[76762]=bj(21018);J[76763]=Yi;J[76764]=bj(111470);J[76765]=Yi;J[76766]=bj(110046);J[76767]=Yi;J[76768]=bj(109270);J[76769]=Yi;J[76770]=bj(108986);J[76771]=Yi;J[76772]=bj(107011);J[76773]=Yi;J[76774]=bj(106038);J[76775]=Yi;J[76776]=bj(103532);J[76777]=Yi;J[76778]=bj(103425);J[76779]=Yi;J[76780]=bj(22361);J[76781]=Yi;J[76782]=bj(70008);J[76783]=Yi;J[76784]=bj(45222);J[76785]=Yi;J[76786]=bj(50321);J[76787]=Yi;J[76788]=bj(13937);J[76789]=Yi;J[76790]=bj(32861);J[76791]=Yi;J[76792]=bj(111479);J[76793]=Yi;J[76794]=bj(110055);J[76795]=Yi;J[76796]=bj(5264);J[76797]=Yi;J[76798]=bj(71642);J[76799]=Yi;J[76800]=bj(50317);J[76801]=Yi;J[76802]=bj(80464);J[76803]=Yi;J[76804]=bj(80935);J[76805]=Yi;J[76806]=bj(80474);J[76807]=Yi;J[76808]=bj(80731);J[76809]=Yi;J[76810]=bj(82213);J[76811]=Yi;J[76812]=bj(81654);J[76813]=Yi;J[76814]=bj(82198);J[76815]=Yi;J[76816]=bj(82442);J[76817]=Yi;J[76818]=bj(80832);J[76819]=Yi;J[76820]=bj(81707);J[76821]=Yi;J[76822]=bj(80845);J[76823]=Yi;J[76824]=bj(80447);J[76825]=Yi;J[76826]=bj(12712);J[76827]=Yi;J[76828]=bj(17780);J[76829]=Yi;J[76830]=bj(68730);J[76831]=Yi;J[76832]=bj(50432);J[76833]=Yi;J[76834]=bj(21018);J[76835]=Yi;J[76836]=bj(111470);J[76837]=Yi;J[76838]=bj(110046);J[76839]=Yi;J[76840]=bj(109270);J[76841]=Yi;J[76842]=bj(108986);J[76843]=Yi;J[76844]=bj(107011);J[76845]=Yi;J[76846]=bj(106038);J[76847]=Yi;J[76848]=bj(103532);J[76849]=Yi;J[76850]=bj(103425);J[76851]=Yi;J[76852]=bj(22361);J[76853]=Yi;J[76854]=bj(70008);J[76855]=Yi;J[76888]=bj(45222);J[76889]=Yi;J[76890]=bj(50321);J[76891]=Yi;J[76892]=bj(13937);J[76893]=Yi;J[76894]=bj(32861);J[76895]=Yi;J[76896]=bj(111479);J[76897]=Yi;J[76898]=bj(110055);J[76899]=Yi;J[76900]=bj(5264);J[76901]=Yi;J[76902]=bj(71642);J[76903]=Yi;J[76904]=bj(50317);J[76905]=Yi;J[76906]=bj(45222);J[76907]=Yi;J[76908]=bj(50321);J[76909]=Yi;J[76910]=bj(13937);J[76911]=Yi;J[76912]=bj(32861);J[76913]=Yi;J[76914]=bj(111479);J[76915]=Yi;J[76916]=bj(110055);J[76917]=Yi;J[76918]=bj(5264);J[76919]=Yi;J[76920]=bj(71642);J[76921]=Yi;J[76922]=bj(50317);J[76923]=Yi;J[76924]=bj(45222);J[76925]=Yi;J[76926]=bj(50321);J[76927]=Yi;J[76928]=bj(13937);J[76929]=Yi;J[76930]=bj(32861);J[76931]=Yi;J[76932]=bj(111479);J[76933]=Yi;J[76934]=bj(110055);J[76935]=Yi;J[76936]=bj(5264);J[76937]=Yi;J[76938]=bj(71642);J[76939]=Yi;J[76940]=bj(50317);J[76941]=Yi;J[76942]=bj(45222);J[76943]=Yi;J[76944]=bj(50321);J[76945]=Yi;J[76946]=bj(13937);J[76947]=Yi;J[76948]=bj(32861);J[76949]=Yi;J[76950]=bj(111479);J[76951]=Yi;J[76952]=bj(110055);J[76953]=Yi;J[76954]=bj(5264);J[76955]=Yi;J[76956]=bj(71642);J[76957]=Yi;J[76958]=bj(50317);J[76959]=Yi;J[76960]=bj(45222);J[76961]=Yi;J[76962]=bj(50321);J[76963]=Yi;J[76964]=bj(13937);J[76965]=Yi;J[76966]=bj(32861);J[76967]=Yi;J[76968]=bj(111479);J[76969]=Yi;J[76970]=bj(110055);J[76971]=Yi;J[76972]=bj(5264);J[76973]=Yi;J[76974]=bj(71642);J[76975]=Yi;J[76976]=bj(50317);J[76977]=Yi;J[76978]=bj(45222);J[76979]=Yi;J[76980]=bj(50321);J[76981]=Yi;J[76982]=bj(13937);J[76983]=Yi;J[76984]=bj(32861);J[76985]=Yi;J[76986]=bj(111479);J[76987]=Yi;J[76988]=bj(110055);J[76989]=Yi;J[76990]=bj(5264);J[76991]=Yi;J[76992]=bj(71642);J[76993]=Yi;J[76994]=bj(50317);J[76995]=Yi;J[76996]=bj(45222);J[76997]=Yi;J[76998]=bj(50321);J[76999]=Yi;J[77e3]=bj(13937);J[77001]=Yi;J[77002]=bj(32861);J[77003]=Yi;J[77004]=bj(111479);J[77005]=Yi;J[77006]=bj(110055);J[77007]=Yi;J[77008]=bj(5264);J[77009]=Yi;J[77010]=bj(71642);J[77011]=Yi;J[77012]=bj(50317);J[77013]=Yi;J[77048]=bj(45222);J[77049]=Yi;J[77050]=bj(50321);J[77051]=Yi;J[77052]=bj(13937);J[77053]=Yi;J[77054]=bj(32861);J[77055]=Yi;J[77056]=bj(111479);J[77057]=Yi;J[77058]=bj(110055);J[77059]=Yi;J[77060]=bj(5264);J[77061]=Yi;J[77062]=bj(71642);J[77063]=Yi;J[77064]=bj(50317);J[77065]=Yi;J[77100]=bj(45222);J[77101]=Yi;J[77102]=bj(50321);J[77103]=Yi;J[77104]=bj(13937);J[77105]=Yi;J[77106]=bj(32861);J[77107]=Yi;J[77108]=bj(111479);J[77109]=Yi;J[77110]=bj(110055);J[77111]=Yi;J[77112]=bj(5264);J[77113]=Yi;J[77114]=bj(71642);J[77115]=Yi;J[77116]=bj(50317);J[77117]=Yi;J[77118]=bj(45222);J[77119]=Yi;J[77120]=bj(50321);J[77121]=Yi;J[77122]=bj(13937);J[77123]=Yi;J[77124]=bj(32861);J[77125]=Yi;J[77126]=bj(111479);J[77127]=Yi;J[77128]=bj(110055);J[77129]=Yi;J[77130]=bj(5264);J[77131]=Yi;J[77132]=bj(71642);J[77133]=Yi;J[77134]=bj(50317);J[77135]=Yi;J[77136]=bj(80464);J[77137]=Yi;J[77138]=bj(80935);J[77139]=Yi;J[77140]=bj(80474);J[77141]=Yi;J[77142]=bj(80731);J[77143]=Yi;J[77144]=bj(82213);J[77145]=Yi;J[77146]=bj(81654);J[77147]=Yi;J[77148]=bj(82198);J[77149]=Yi;J[77150]=bj(82442);J[77151]=Yi;J[77152]=bj(80832);J[77153]=Yi;J[77154]=bj(81707);J[77155]=Yi;J[77156]=bj(80845);J[77157]=Yi;J[77158]=bj(80447);J[77159]=Yi;J[77160]=bj(12712);J[77161]=Yi;J[77162]=bj(17780);J[77163]=Yi;J[77164]=bj(68730);J[77165]=Yi;J[77166]=bj(50432);J[77167]=Yi;J[77168]=bj(21018);J[77169]=Yi;J[77172]=bj(111470);J[77173]=Yi;J[77174]=bj(110046);J[77175]=Yi;J[77176]=bj(109270);J[77177]=Yi;J[77178]=bj(108986);J[77179]=Yi;J[77180]=bj(107011);J[77181]=Yi;J[77182]=bj(106038);J[77183]=Yi;J[77184]=bj(103532);J[77185]=Yi;J[77186]=bj(103425);J[77187]=Yi;J[77188]=bj(22361);J[77189]=Yi;J[77190]=bj(70008);J[77191]=Yi;J[77194]=bj(45222);J[77195]=Yi;J[77196]=bj(50321);J[77197]=Yi;J[77198]=bj(13937);J[77199]=Yi;J[77200]=bj(32861);J[77201]=Yi;J[77202]=bj(111479);J[77203]=Yi;J[77204]=bj(110055);J[77205]=Yi;J[77206]=bj(5264);J[77207]=Yi;J[77208]=bj(71642);J[77209]=Yi;J[77210]=bj(50317);J[77211]=Yi;J[77212]=bj(45222);J[77213]=Yi;J[77214]=bj(50321);J[77215]=Yi;J[77216]=bj(13937);J[77217]=Yi;J[77218]=bj(32861);J[77219]=Yi;J[77220]=bj(111479);J[77221]=Yi;J[77222]=bj(110055);J[77223]=Yi;J[77224]=bj(5264);J[77225]=Yi;J[77226]=bj(71642);J[77227]=Yi;J[77228]=bj(50317);J[77229]=Yi;J[77230]=bj(80464);J[77231]=Yi;J[77232]=bj(80935);J[77233]=Yi;J[77234]=bj(80474);J[77235]=Yi;J[77236]=bj(80731);J[77237]=Yi;J[77238]=bj(82213);J[77239]=Yi;J[77240]=bj(81654);J[77241]=Yi;J[77242]=bj(82198);J[77243]=Yi;J[77244]=bj(82442);J[77245]=Yi;J[77246]=bj(80832);J[77247]=Yi;J[77248]=bj(81707);J[77249]=Yi;J[77250]=bj(80845);J[77251]=Yi;J[77252]=bj(80447);J[77253]=Yi;J[77254]=bj(12712);J[77255]=Yi;J[77256]=bj(17780);J[77257]=Yi;J[77258]=bj(68730);J[77259]=Yi;J[77260]=bj(50432);J[77261]=Yi;J[77262]=bj(21018);J[77263]=Yi;J[77264]=bj(111470);J[77265]=Yi;J[77266]=bj(110046);J[77267]=Yi;J[77268]=bj(109270);J[77269]=Yi;J[77270]=bj(108986);J[77271]=Yi;J[77272]=bj(107011);J[77273]=Yi;J[77274]=bj(106038);J[77275]=Yi;J[77276]=bj(103532);J[77277]=Yi;J[77278]=bj(103425);J[77279]=Yi;J[77280]=bj(22361);J[77281]=Yi;J[77282]=bj(70008);J[77283]=Yi;J[77284]=bj(45222);J[77285]=Yi;J[77286]=bj(50321);J[77287]=Yi;J[77288]=bj(13937);J[77289]=Yi;J[77290]=bj(32861);J[77291]=Yi;J[77292]=bj(111479);J[77293]=Yi;J[77294]=bj(110055);J[77295]=Yi;J[77296]=bj(5264);J[77297]=Yi;J[77298]=bj(71642);J[77299]=Yi;J[77300]=bj(50317);J[77301]=Yi;J[77302]=bj(45222);J[77303]=Yi;J[77304]=bj(50321);J[77305]=Yi;J[77306]=bj(13937);J[77307]=Yi;J[77308]=bj(32861);J[77309]=Yi;J[77310]=bj(111479);J[77311]=Yi;J[77312]=bj(110055);J[77313]=Yi;J[77314]=bj(5264);J[77315]=Yi;J[77316]=bj(71642);J[77317]=Yi;J[77318]=bj(50317);J[77319]=Yi;J[77320]=bj(80464);J[77321]=Yi;J[77322]=bj(80935);J[77323]=Yi;J[77324]=bj(80474);J[77325]=Yi;J[77326]=bj(80731);J[77327]=Yi;J[77328]=bj(82213);J[77329]=Yi;J[77330]=bj(81654);J[77331]=Yi;J[77332]=bj(82198);J[77333]=Yi;J[77334]=bj(82442);J[77335]=Yi;J[77336]=bj(80832);J[77337]=Yi;J[77338]=bj(81707);J[77339]=Yi;J[77340]=bj(80845);J[77341]=Yi;J[77342]=bj(80447);J[77343]=Yi;J[77344]=bj(12712);J[77345]=Yi;J[77346]=bj(17780);J[77347]=Yi;J[77348]=bj(68730);J[77349]=Yi;J[77350]=bj(50432);J[77351]=Yi;J[77352]=bj(21018);J[77353]=Yi;J[77356]=bj(111470);J[77357]=Yi;J[77358]=bj(110046);J[77359]=Yi;J[77360]=bj(109270);J[77361]=Yi;J[77362]=bj(108986);J[77363]=Yi;J[77364]=bj(107011);J[77365]=Yi;J[77366]=bj(106038);J[77367]=Yi;J[77368]=bj(103532);J[77369]=Yi;J[77370]=bj(103425);J[77371]=Yi;J[77372]=bj(22361);J[77373]=Yi;J[77374]=bj(70008);J[77375]=Yi;J[77444]=bj(45222);J[77445]=Yi;J[77446]=bj(50321);J[77447]=Yi;J[77448]=bj(13937);J[77449]=Yi;J[77450]=bj(32861);J[77451]=Yi;J[77452]=bj(111479);J[77453]=Yi;J[77454]=bj(110055);J[77455]=Yi;J[77456]=bj(5264);J[77457]=Yi;J[77458]=bj(71642);J[77459]=Yi;J[77460]=bj(50317);J[77461]=Yi;J[77462]=bj(80464);J[77463]=Yi;J[77464]=bj(80935);J[77465]=Yi;J[77466]=bj(80474);J[77467]=Yi;J[77468]=bj(80731);J[77469]=Yi;J[77470]=bj(82213);J[77471]=Yi;J[77472]=bj(81654);J[77473]=Yi;J[77474]=bj(82198);J[77475]=Yi;J[77476]=bj(82442);J[77477]=Yi;J[77478]=bj(80832);J[77479]=Yi;J[77480]=bj(81707);J[77481]=Yi;J[77482]=bj(80845);J[77483]=Yi;J[77484]=bj(80447);J[77485]=Yi;J[77486]=bj(12712);J[77487]=Yi;J[77488]=bj(17780);J[77489]=Yi;J[77490]=bj(68730);J[77491]=Yi;J[77492]=bj(50432);J[77493]=Yi;J[77494]=bj(21018);J[77495]=Yi;J[77496]=bj(111470);J[77497]=Yi;J[77498]=bj(110046);J[77499]=Yi;J[77500]=bj(109270);J[77501]=Yi;J[77502]=bj(108986);J[77503]=Yi;J[77504]=bj(107011);J[77505]=Yi;J[77506]=bj(106038);J[77507]=Yi;J[77508]=bj(103532);J[77509]=Yi;J[77510]=bj(103425);J[77511]=Yi;J[77512]=bj(22361);J[77513]=Yi;J[77514]=bj(70008);J[77515]=Yi;J[77518]=bj(45222);J[77519]=Yi;J[77520]=bj(50321);J[77521]=Yi;J[77522]=bj(13937);J[77523]=Yi;J[77524]=bj(32861);J[77525]=Yi;J[77526]=bj(111479);J[77527]=Yi;J[77528]=bj(110055);J[77529]=Yi;J[77530]=bj(5264);J[77531]=Yi;J[77532]=bj(71642);J[77533]=Yi;J[77534]=bj(50317);J[77535]=Yi;J[77536]=bj(45222);J[77537]=Yi;J[77538]=bj(50321);J[77539]=Yi;J[77540]=bj(13937);J[77541]=Yi;J[77542]=bj(32861);J[77543]=Yi;J[77544]=bj(111479);J[77545]=Yi;J[77546]=bj(110055);J[77547]=Yi;J[77548]=bj(5264);J[77549]=Yi;J[77550]=bj(71642);J[77551]=Yi;J[77552]=bj(50317);J[77553]=Yi;J[77554]=bj(45222);J[77555]=Yi;J[77556]=bj(50321);J[77557]=Yi;J[77558]=bj(13937);J[77559]=Yi;J[77560]=bj(32861);J[77561]=Yi;J[77562]=bj(111479);J[77563]=Yi;J[77564]=bj(110055);J[77565]=Yi;J[77566]=bj(5264);J[77567]=Yi;J[77568]=bj(71642);J[77569]=Yi;J[77570]=bj(50317);J[77571]=Yi;J[77576]=bj(45222);J[77577]=Yi;J[77578]=bj(50321);J[77579]=Yi;J[77580]=bj(13937);J[77581]=Yi;J[77582]=bj(32861);J[77583]=Yi;J[77584]=bj(111479);J[77585]=Yi;J[77586]=bj(110055);J[77587]=Yi;J[77588]=bj(5264);J[77589]=Yi;J[77590]=bj(71642);J[77591]=Yi;J[77592]=bj(50317);J[77593]=Yi;J[77594]=bj(80464);J[77595]=Yi;J[77596]=bj(80935);J[77597]=Yi;J[77598]=bj(80474);J[77599]=Yi;J[77600]=bj(80731);J[77601]=Yi;J[77602]=bj(82213);J[77603]=Yi;J[77604]=bj(81654);J[77605]=Yi;J[77606]=bj(82198);J[77607]=Yi;J[77608]=bj(82442);J[77609]=Yi;J[77610]=bj(80832);J[77611]=Yi;J[77612]=bj(81707);J[77613]=Yi;J[77614]=bj(80845);J[77615]=Yi;J[77616]=bj(80447);J[77617]=Yi;J[77618]=bj(12712);J[77619]=Yi;J[77620]=bj(17780);J[77621]=Yi;J[77622]=bj(68730);J[77623]=Yi;J[77624]=bj(50432);J[77625]=Yi;J[77626]=bj(21018);J[77627]=Yi;J[77628]=bj(111470);J[77629]=Yi;J[77630]=bj(110046);J[77631]=Yi;J[77632]=bj(109270);J[77633]=Yi;J[77634]=bj(108986);J[77635]=Yi;J[77636]=bj(107011);J[77637]=Yi;J[77638]=bj(106038);J[77639]=Yi;J[77640]=bj(103532);J[77641]=Yi;J[77642]=bj(103425);J[77643]=Yi;J[77644]=bj(22361);J[77645]=Yi;J[77646]=bj(70008);J[77647]=Yi;J[77648]=bj(45222);J[77649]=Yi;J[77650]=bj(50321);J[77651]=Yi;J[77652]=bj(13937);J[77653]=Yi;J[77654]=bj(32861);J[77655]=Yi;J[77656]=bj(111479);J[77657]=Yi;J[77658]=bj(110055);J[77659]=Yi;J[77660]=bj(5264);J[77661]=Yi;J[77662]=bj(71642);J[77663]=Yi;J[77664]=bj(50317);J[77665]=Yi;J[77666]=bj(80464);J[77667]=Yi;J[77668]=bj(80935);J[77669]=Yi;J[77670]=bj(80474);J[77671]=Yi;J[77672]=bj(80731);J[77673]=Yi;J[77674]=bj(82213);J[77675]=Yi;J[77676]=bj(81654);J[77677]=Yi;J[77678]=bj(82198);J[77679]=Yi;J[77680]=bj(82442);J[77681]=Yi;J[77682]=bj(80832);J[77683]=Yi;J[77684]=bj(81707);J[77685]=Yi;J[77686]=bj(80845);J[77687]=Yi;J[77688]=bj(80447);J[77689]=Yi;J[77690]=bj(12712);J[77691]=Yi;J[77692]=bj(17780);J[77693]=Yi;J[77694]=bj(68730);J[77695]=Yi;J[77696]=bj(50432);J[77697]=Yi;J[77698]=bj(21018);J[77699]=Yi;J[77700]=bj(111470);J[77701]=Yi;J[77702]=bj(110046);J[77703]=Yi;J[77704]=bj(109270);J[77705]=Yi;J[77706]=bj(108986);J[77707]=Yi;J[77708]=bj(107011);J[77709]=Yi;J[77710]=bj(106038);J[77711]=Yi;J[77712]=bj(103532);J[77713]=Yi;J[77714]=bj(103425);J[77715]=Yi;J[77716]=bj(22361);J[77717]=Yi;J[77718]=bj(70008);J[77719]=Yi;J[77720]=bj(45222);J[77721]=Yi;J[77722]=bj(50321);J[77723]=Yi;J[77724]=bj(13937);J[77725]=Yi;J[77726]=bj(32861);J[77727]=Yi;J[77728]=bj(111479);J[77729]=Yi;J[77730]=bj(110055);J[77731]=Yi;J[77732]=bj(5264);J[77733]=Yi;J[77734]=bj(71642);J[77735]=Yi;J[77736]=bj(50317);J[77737]=Yi;J[77738]=bj(80464);J[77739]=Yi;J[77740]=bj(80935);J[77741]=Yi;J[77742]=bj(80474);J[77743]=Yi;J[77744]=bj(80731);J[77745]=Yi;J[77746]=bj(82213);J[77747]=Yi;J[77748]=bj(81654);J[77749]=Yi;J[77750]=bj(82198);J[77751]=Yi;J[77752]=bj(82442);J[77753]=Yi;J[77754]=bj(80832);J[77755]=Yi;J[77756]=bj(81707);J[77757]=Yi;J[77758]=bj(80845);J[77759]=Yi;J[77760]=bj(80447);J[77761]=Yi;J[77762]=bj(12712);J[77763]=Yi;J[77764]=bj(17780);J[77765]=Yi;J[77766]=bj(68730);J[77767]=Yi;J[77768]=bj(50432);J[77769]=Yi;J[77770]=bj(21018);J[77771]=Yi;J[77772]=bj(111470);J[77773]=Yi;J[77774]=bj(110046);J[77775]=Yi;J[77776]=bj(109270);J[77777]=Yi;J[77778]=bj(108986);J[77779]=Yi;J[77780]=bj(107011);J[77781]=Yi;J[77782]=bj(106038);J[77783]=Yi;J[77784]=bj(103532);J[77785]=Yi;J[77786]=bj(103425);J[77787]=Yi;J[77788]=bj(22361);J[77789]=Yi;J[77790]=bj(70008);J[77791]=Yi;J[77792]=bj(45222);J[77793]=Yi;J[77794]=bj(50321);J[77795]=Yi;J[77796]=bj(13937);J[77797]=Yi;J[77798]=bj(32861);J[77799]=Yi;J[77800]=bj(111479);J[77801]=Yi;J[77802]=bj(110055);J[77803]=Yi;J[77804]=bj(5264);J[77805]=Yi;J[77806]=bj(71642);J[77807]=Yi;J[77808]=bj(50317);J[77809]=Yi;J[77810]=bj(80464);J[77811]=Yi;J[77812]=bj(80935);J[77813]=Yi;J[77814]=bj(80474);J[77815]=Yi;J[77816]=bj(80731);J[77817]=Yi;J[77818]=bj(82213);J[77819]=Yi;J[77820]=bj(81654);J[77821]=Yi;J[77822]=bj(82198);J[77823]=Yi;J[77824]=bj(82442);J[77825]=Yi;J[77826]=bj(80832);J[77827]=Yi;J[77828]=bj(81707);J[77829]=Yi;J[77830]=bj(80845);J[77831]=Yi;J[77832]=bj(80447);J[77833]=Yi;J[77834]=bj(12712);J[77835]=Yi;J[77836]=bj(17780);J[77837]=Yi;J[77838]=bj(68730);J[77839]=Yi;J[77840]=bj(50432);J[77841]=Yi;J[77842]=bj(21018);J[77843]=Yi;J[77844]=bj(111470);J[77845]=Yi;J[77846]=bj(110046);J[77847]=Yi;J[77848]=bj(109270);J[77849]=Yi;J[77850]=bj(108986);J[77851]=Yi;J[77852]=bj(107011);J[77853]=Yi;J[77854]=bj(106038);J[77855]=Yi;J[77856]=bj(103532);J[77857]=Yi;J[77858]=bj(103425);J[77859]=Yi;J[77860]=bj(22361);J[77861]=Yi;J[77862]=bj(70008);J[77863]=Yi;J[77864]=bj(45222);J[77865]=Yi;J[77866]=bj(50321);J[77867]=Yi;J[77868]=bj(13937);J[77869]=Yi;J[77870]=bj(32861);J[77871]=Yi;J[77872]=bj(111479);J[77873]=Yi;J[77874]=bj(110055);J[77875]=Yi;J[77876]=bj(5264);J[77877]=Yi;J[77878]=bj(71642);J[77879]=Yi;J[77880]=bj(50317);J[77881]=Yi;J[77884]=bj(45222);J[77885]=Yi;J[77886]=bj(50321);J[77887]=Yi;J[77888]=bj(13937);J[77889]=Yi;J[77890]=bj(32861);J[77891]=Yi;J[77892]=bj(111479);J[77893]=Yi;J[77894]=bj(110055);J[77895]=Yi;J[77896]=bj(5264);J[77897]=Yi;J[77898]=bj(71642);J[77899]=Yi;J[77900]=bj(50317);J[77901]=Yi;J[77936]=bj(45222);J[77937]=Yi;J[77938]=bj(50321);J[77939]=Yi;J[77940]=bj(13937);J[77941]=Yi;J[77942]=bj(32861);J[77943]=Yi;J[77944]=bj(111479);J[77945]=Yi;J[77946]=bj(110055);J[77947]=Yi;J[77948]=bj(5264);J[77949]=Yi;J[77950]=bj(71642);J[77951]=Yi;J[77952]=bj(50317);J[77953]=Yi;J[77954]=bj(80464);J[77955]=Yi;J[77956]=bj(80935);J[77957]=Yi;J[77958]=bj(80474);J[77959]=Yi;J[77960]=bj(80731);J[77961]=Yi;J[77962]=bj(82213);J[77963]=Yi;J[77964]=bj(81654);J[77965]=Yi;J[77966]=bj(82198);J[77967]=Yi;J[77968]=bj(82442);J[77969]=Yi;J[77970]=bj(80832);J[77971]=Yi;J[77972]=bj(81707);J[77973]=Yi;J[77974]=bj(80845);J[77975]=Yi;J[77976]=bj(80447);J[77977]=Yi;J[77978]=bj(12712);J[77979]=Yi;J[77980]=bj(17780);J[77981]=Yi;J[77982]=bj(68730);J[77983]=Yi;J[77984]=bj(50432);J[77985]=Yi;J[77986]=bj(21018);J[77987]=Yi;J[77988]=bj(111470);J[77989]=Yi;J[77990]=bj(110046);J[77991]=Yi;J[77992]=bj(109270);J[77993]=Yi;J[77994]=bj(108986);J[77995]=Yi;J[77996]=bj(107011);J[77997]=Yi;J[77998]=bj(106038);J[77999]=Yi;J[78e3]=bj(103532);J[78001]=Yi;J[78002]=bj(103425);J[78003]=Yi;J[78004]=bj(22361);J[78005]=Yi;J[78006]=bj(70008);J[78007]=Yi;J[78008]=bj(45222);J[78009]=Yi;J[78010]=bj(50321);J[78011]=Yi;J[78012]=bj(13937);J[78013]=Yi;J[78014]=bj(32861);J[78015]=Yi;J[78016]=bj(111479);J[78017]=Yi;J[78018]=bj(110055);J[78019]=Yi;J[78020]=bj(5264);J[78021]=Yi;J[78022]=bj(71642);J[78023]=Yi;J[78024]=bj(50317);J[78025]=Yi;J[78026]=bj(80464);J[78027]=Yi;J[78028]=bj(80935);J[78029]=Yi;J[78030]=bj(80474);J[78031]=Yi;J[78032]=bj(80731);J[78033]=Yi;J[78034]=bj(82213);J[78035]=Yi;J[78036]=bj(81654);J[78037]=Yi;J[78038]=bj(82198);J[78039]=Yi;J[78040]=bj(82442);J[78041]=Yi;J[78042]=bj(80832);J[78043]=Yi;J[78044]=bj(81707);J[78045]=Yi;J[78046]=bj(80845);J[78047]=Yi;J[78048]=bj(80447);J[78049]=Yi;J[78050]=bj(12712);J[78051]=Yi;J[78052]=bj(17780);J[78053]=Yi;J[78054]=bj(68730);J[78055]=Yi;J[78056]=bj(50432);J[78057]=Yi;J[78058]=bj(21018);J[78059]=Yi;J[78060]=bj(111470);J[78061]=Yi;J[78062]=bj(110046);J[78063]=Yi;J[78064]=bj(109270);J[78065]=Yi;J[78066]=bj(108986);J[78067]=Yi;J[78068]=bj(107011);J[78069]=Yi;J[78070]=bj(106038);J[78071]=Yi;J[78072]=bj(103532);J[78073]=Yi;J[78074]=bj(103425);J[78075]=Yi;J[78076]=bj(22361);J[78077]=Yi;J[78078]=bj(70008);J[78079]=Yi;J[78080]=bj(45222);J[78081]=Yi;J[78082]=bj(50321);J[78083]=Yi;J[78084]=bj(13937);J[78085]=Yi;J[78086]=bj(32861);J[78087]=Yi;J[78088]=bj(111479);J[78089]=Yi;J[78090]=bj(110055);J[78091]=Yi;J[78092]=bj(5264);J[78093]=Yi;J[78094]=bj(71642);J[78095]=Yi;J[78096]=bj(50317);J[78097]=Yi;J[78098]=bj(80464);J[78099]=Yi;J[78100]=bj(80935);J[78101]=Yi;J[78102]=bj(80474);J[78103]=Yi;J[78104]=bj(80731);J[78105]=Yi;J[78106]=bj(82213);J[78107]=Yi;J[78108]=bj(81654);J[78109]=Yi;J[78110]=bj(82198);J[78111]=Yi;J[78112]=bj(82442);J[78113]=Yi;J[78114]=bj(80832);J[78115]=Yi;J[78116]=bj(81707);J[78117]=Yi;J[78118]=bj(80845);J[78119]=Yi;J[78120]=bj(80447);J[78121]=Yi;J[78122]=bj(12712);J[78123]=Yi;J[78124]=bj(17780);J[78125]=Yi;J[78126]=bj(68730);J[78127]=Yi;J[78128]=bj(50432);J[78129]=Yi;J[78130]=bj(21018);J[78131]=Yi;J[78132]=bj(111470);J[78133]=Yi;J[78134]=bj(110046);J[78135]=Yi;J[78136]=bj(109270);J[78137]=Yi;J[78138]=bj(108986);J[78139]=Yi;J[78140]=bj(107011);J[78141]=Yi;J[78142]=bj(106038);J[78143]=Yi;J[78144]=bj(103532);J[78145]=Yi;J[78146]=bj(103425);J[78147]=Yi;J[78148]=bj(22361);J[78149]=Yi;J[78150]=bj(70008);J[78151]=Yi;J[78154]=bj(45222);J[78155]=Yi;J[78156]=bj(50321);J[78157]=Yi;J[78158]=bj(13937);J[78159]=Yi;J[78160]=bj(32861);J[78161]=Yi;J[78162]=bj(111479);J[78163]=Yi;J[78164]=bj(110055);J[78165]=Yi;J[78166]=bj(5264);J[78167]=Yi;J[78168]=bj(71642);J[78169]=Yi;J[78170]=bj(50317);J[78171]=Yi;J[78172]=bj(80464);J[78173]=Yi;J[78174]=bj(80935);J[78175]=Yi;J[78176]=bj(80474);J[78177]=Yi;J[78178]=bj(80731);J[78179]=Yi;J[78180]=bj(82213);J[78181]=Yi;J[78182]=bj(81654);J[78183]=Yi;J[78184]=bj(82198);J[78185]=Yi;J[78186]=bj(82442);J[78187]=Yi;J[78188]=bj(80832);J[78189]=Yi;J[78190]=bj(81707);J[78191]=Yi;J[78192]=bj(80845);J[78193]=Yi;J[78194]=bj(80447);J[78195]=Yi;J[78196]=bj(12712);J[78197]=Yi;J[78198]=bj(17780);J[78199]=Yi;J[78200]=bj(68730);J[78201]=Yi;J[78202]=bj(50432);J[78203]=Yi;J[78204]=bj(21018);J[78205]=Yi;J[78208]=bj(111470);J[78209]=Yi;J[78210]=bj(110046);J[78211]=Yi;J[78212]=bj(109270);J[78213]=Yi;J[78214]=bj(108986);J[78215]=Yi;J[78216]=bj(107011);J[78217]=Yi;J[78218]=bj(106038);J[78219]=Yi;J[78220]=bj(103532);J[78221]=Yi;J[78222]=bj(103425);J[78223]=Yi;J[78224]=bj(22361);J[78225]=Yi;a=bj(70008);J[78230]=0;J[78231]=0;J[78226]=a;J[78227]=Yi;I[156463]=0;I[156464]=0;I[156465]=0;I[156466]=0;J[78234]=bj(45222);J[78235]=Yi;J[78236]=bj(50321);J[78237]=Yi;J[78238]=bj(13937);J[78239]=Yi;J[78240]=bj(32861);J[78241]=Yi;J[78242]=bj(111479);J[78243]=Yi;J[78244]=bj(110055);J[78245]=Yi;J[78246]=bj(5264);J[78247]=Yi;J[78248]=bj(71642);J[78249]=Yi;J[78250]=bj(50317);J[78251]=Yi;J[78252]=bj(80464);J[78253]=Yi;J[78254]=bj(80935);J[78255]=Yi;J[78256]=bj(80474);J[78257]=Yi;J[78258]=bj(80731);J[78259]=Yi;J[78260]=bj(82213);J[78261]=Yi;J[78262]=bj(81654);J[78263]=Yi;J[78264]=bj(82198);J[78265]=Yi;J[78266]=bj(82442);J[78267]=Yi;J[78268]=bj(80832);J[78269]=Yi;J[78270]=bj(81707);J[78271]=Yi;J[78272]=bj(80845);J[78273]=Yi;J[78274]=bj(80447);J[78275]=Yi;J[78276]=bj(12712);J[78277]=Yi;J[78278]=bj(17780);J[78279]=Yi;J[78280]=bj(68730);J[78281]=Yi;J[78282]=bj(50432);J[78283]=Yi;J[78284]=bj(21018);J[78285]=Yi;J[78288]=bj(111470);J[78289]=Yi;J[78290]=bj(110046);J[78291]=Yi;J[78292]=bj(109270);J[78293]=Yi;J[78294]=bj(108986);J[78295]=Yi;J[78296]=bj(107011);J[78297]=Yi;J[78298]=bj(106038);J[78299]=Yi;J[78300]=bj(103532);J[78301]=Yi;J[78302]=bj(103425);J[78303]=Yi;J[78304]=bj(22361);J[78305]=Yi;J[78306]=bj(70008);J[78307]=Yi;J[78308]=bj(45222);J[78309]=Yi;J[78310]=bj(50321);J[78311]=Yi;J[78312]=bj(13937);J[78313]=Yi;J[78314]=bj(32861);J[78315]=Yi;J[78316]=bj(111479);J[78317]=Yi;J[78318]=bj(110055);J[78319]=Yi;J[78320]=bj(5264);J[78321]=Yi;J[78322]=bj(71642);J[78323]=Yi;J[78324]=bj(50317);J[78325]=Yi;J[78326]=bj(80464);J[78327]=Yi;J[78328]=bj(80935);J[78329]=Yi;J[78330]=bj(80474);J[78331]=Yi;J[78332]=bj(80731);J[78333]=Yi;J[78334]=bj(82213);J[78335]=Yi;J[78336]=bj(81654);J[78337]=Yi;J[78338]=bj(82198);J[78339]=Yi;J[78340]=bj(82442);J[78341]=Yi;J[78342]=bj(80832);J[78343]=Yi;J[78344]=bj(81707);J[78345]=Yi;J[78346]=bj(80845);J[78347]=Yi;J[78348]=bj(80447);J[78349]=Yi;J[78350]=bj(12712);J[78351]=Yi;J[78352]=bj(17780);J[78353]=Yi;J[78354]=bj(68730);J[78355]=Yi;J[78356]=bj(50432);J[78357]=Yi;J[78358]=bj(21018);J[78359]=Yi;J[78360]=bj(111470);J[78361]=Yi;J[78362]=bj(110046);J[78363]=Yi;J[78364]=bj(109270);J[78365]=Yi;J[78366]=bj(108986);J[78367]=Yi;J[78368]=bj(107011);J[78369]=Yi;J[78370]=bj(106038);J[78371]=Yi;J[78372]=bj(103532);J[78373]=Yi;J[78374]=bj(103425);J[78375]=Yi;J[78376]=bj(22361);J[78377]=Yi;J[78378]=bj(70008);J[78379]=Yi;J[78380]=bj(45222);J[78381]=Yi;J[78382]=bj(50321);J[78383]=Yi;J[78384]=bj(13937);J[78385]=Yi;J[78386]=bj(32861);J[78387]=Yi;J[78388]=bj(111479);J[78389]=Yi;J[78390]=bj(110055);J[78391]=Yi;J[78392]=bj(5264);J[78393]=Yi;J[78394]=bj(71642);J[78395]=Yi;a=bj(50317);J[78400]=0;J[78401]=0;J[78396]=a;J[78397]=Yi;I[156803]=0;I[156804]=0;I[156805]=0;I[156806]=0;J[78406]=bj(45222);J[78407]=Yi;J[78408]=bj(50321);J[78409]=Yi;J[78410]=bj(13937);J[78411]=Yi;J[78412]=bj(32861);J[78413]=Yi;J[78414]=bj(111479);J[78415]=Yi;J[78416]=bj(110055);J[78417]=Yi;J[78418]=bj(5264);J[78419]=Yi;J[78420]=bj(71642);J[78421]=Yi;J[78422]=bj(50317);J[78423]=Yi;J[78424]=bj(80464);J[78425]=Yi;J[78426]=bj(80935);J[78427]=Yi;J[78428]=bj(80474);J[78429]=Yi;J[78430]=bj(80731);J[78431]=Yi;J[78432]=bj(82213);J[78433]=Yi;J[78434]=bj(81654);J[78435]=Yi;J[78436]=bj(82198);J[78437]=Yi;J[78438]=bj(82442);J[78439]=Yi;J[78440]=bj(80832);J[78441]=Yi;J[78442]=bj(81707);J[78443]=Yi;J[78444]=bj(80845);J[78445]=Yi;J[78446]=bj(80447);J[78447]=Yi;J[78448]=bj(12712);J[78449]=Yi;J[78450]=bj(17780);J[78451]=Yi;J[78452]=bj(68730);J[78453]=Yi;J[78454]=bj(50432);J[78455]=Yi;J[78456]=bj(21018);J[78457]=Yi;J[78460]=bj(111470);J[78461]=Yi;J[78462]=bj(110046);J[78463]=Yi;J[78464]=bj(109270);J[78465]=Yi;J[78466]=bj(108986);J[78467]=Yi;J[78468]=bj(107011);J[78469]=Yi;J[78470]=bj(106038);J[78471]=Yi;J[78472]=bj(103532);J[78473]=Yi;J[78474]=bj(103425);J[78475]=Yi;J[78476]=bj(22361);J[78477]=Yi;J[78478]=bj(70008);J[78479]=Yi;J[78480]=bj(45222);J[78481]=Yi;J[78482]=bj(50321);J[78483]=Yi;J[78484]=bj(13937);J[78485]=Yi;J[78486]=bj(32861);J[78487]=Yi;J[78488]=bj(111479);J[78489]=Yi;J[78490]=bj(110055);J[78491]=Yi;J[78492]=bj(5264);J[78493]=Yi;J[78494]=bj(71642);J[78495]=Yi;J[78496]=bj(50317);J[78497]=Yi;J[56493]=J[74432];J[74432]=225944;J[56509]=J[74432];J[74432]=226008;J[56565]=J[74432];J[74432]=226232;J[56611]=J[74432];J[74432]=226416;J[78514]=1;J[78512]=-1472275375;J[78513]=1862278062;J[78511]=17642;J[78510]=1;J[78517]=0;H[314064]=0;J[78515]=J[78509];J[78517]=J[74432];J[74432]=314040;J[78524]=1;J[78522]=-278759638;J[78523]=-1695457758;J[78521]=17621;J[78520]=1;J[78527]=0;H[314104]=0;J[78525]=J[78519];J[78527]=J[74432];J[74432]=314080;J[56641]=J[74432];J[74432]=226536;J[56669]=J[74432];J[74432]=226648;J[56719]=J[74432];J[74432]=226848;J[56743]=J[74432];J[74432]=226944;J[56767]=J[74432];J[74432]=227040;J[56833]=J[74432];J[74432]=227304;J[56861]=J[74432];J[74432]=227416;J[56889]=J[74432];J[74432]=227528;J[56937]=J[74432];J[74432]=227720;J[56957]=J[74432];J[74432]=227800;J[56973]=J[74432];J[74432]=227864;J[56989]=J[74432];J[74432]=227928;J[57009]=J[74432];J[74432]=228008;J[57025]=J[74432];J[74432]=228072;J[57045]=J[74432];J[74432]=228152;J[78556]=1;J[78554]=-53895322;J[78555]=550923652;J[78553]=4722;J[78552]=1;J[78559]=0;H[314232]=0;J[78557]=J[78550];J[78559]=J[74432];J[74432]=314208;J[57061]=J[74432];J[74432]=228216;J[57095]=J[74432];J[74432]=228352;J[57119]=J[74432];J[74432]=228448;J[57149]=J[74432];J[74432]=228568;J[57165]=J[74432];J[74432]=228632;J[57181]=J[74432];J[74432]=228696;J[57489]=J[74432];J[74432]=229928;J[57511]=J[74432];J[74432]=230016;J[57531]=J[74432];J[74432]=230096;J[57545]=J[74432];J[74432]=230152;J[57567]=J[74432];J[74432]=230240;J[57587]=J[74432];J[74432]=230320;J[57607]=J[74432];J[74432]=230400;J[57627]=J[74432];J[74432]=230480;J[57647]=J[74432];J[74432]=230560;J[57761]=J[74432];J[74432]=231016;J[57783]=J[74432];J[74432]=231104;J[57873]=J[74432];J[74432]=231464;J[57889]=J[74432];J[74432]=231528;J[57939]=J[74432];J[74432]=231728;J[57959]=J[74432];J[74432]=231808;J[58013]=J[74432];J[74432]=232024;J[58035]=J[74432];J[74432]=232112;J[58115]=J[74432];J[74432]=232432;J[58139]=J[74432];J[74432]=232528;J[58181]=J[74432];J[74432]=232696;J[58269]=J[74432];J[74432]=233048;J[58309]=J[74432];J[74432]=233208;J[58343]=J[74432];J[74432]=233344;J[58391]=J[74432];J[74432]=233536;J[58409]=J[74432];J[74432]=233608;J[78650]=1;J[78648]=-1505215520;J[78649]=-1547365408;J[78647]=1851;J[78646]=1;J[78653]=0;H[314608]=0;J[78651]=J[78644];J[78653]=J[74432];J[74432]=314584;J[58431]=J[74432];J[74432]=233696;J[58485]=J[74432];J[74432]=233912;J[58507]=J[74432];J[74432]=234e3;J[58561]=J[74432];J[74432]=234216;J[58595]=J[74432];J[74432]=234352;J[58625]=J[74432];J[74432]=234472;J[58647]=J[74432];J[74432]=234560;J[58671]=J[74432];J[74432]=234656;J[58697]=J[74432];J[74432]=234760;J[58757]=J[74432];J[74432]=235e3;J[58779]=J[74432];J[74432]=235088;J[58869]=J[74432];J[74432]=235448;J[58901]=J[74432];J[74432]=235576;J[58923]=J[74432];J[74432]=235664;J[58941]=J[74432];J[74432]=235736;J[58957]=J[74432];J[74432]=235800;J[59025]=J[74432];J[74432]=236072;J[59101]=J[74432];J[74432]=236376;J[59225]=J[74432];J[74432]=236872;J[59257]=J[74432];J[74432]=237e3;J[59285]=J[74432];J[74432]=237112;J[59347]=J[74432];J[74432]=237360;J[59443]=J[74432];J[74432]=237744;J[59487]=J[74432];J[74432]=237920;J[59529]=J[74432];J[74432]=238088;J[59571]=J[74432];J[74432]=238256;J[59595]=J[74432];J[74432]=238352;J[59613]=J[74432];J[74432]=238424;J[78740]=bj(45222);J[78741]=Yi;J[78742]=bj(50321);J[78743]=Yi;J[78744]=bj(13937);J[78745]=Yi;J[78746]=bj(32861);J[78747]=Yi;J[78748]=bj(111479);J[78749]=Yi;J[78750]=bj(110055);J[78751]=Yi;J[78752]=bj(5264);J[78753]=Yi;J[78754]=bj(71642);J[78755]=Yi;J[78756]=bj(50317);J[78757]=Yi;J[78758]=bj(80464);J[78759]=Yi;J[78760]=bj(80935);J[78761]=Yi;J[78762]=bj(80474);J[78763]=Yi;J[78764]=bj(80731);J[78765]=Yi;J[78766]=bj(82213);J[78767]=Yi;J[78768]=bj(81654);J[78769]=Yi;J[78770]=bj(82198);J[78771]=Yi;J[78772]=bj(82442);J[78773]=Yi;J[78774]=bj(80832);J[78775]=Yi;J[78776]=bj(81707);J[78777]=Yi;J[78778]=bj(80845);J[78779]=Yi;J[78780]=bj(80447);J[78781]=Yi;J[78782]=bj(12712);J[78783]=Yi;J[78784]=bj(17780);J[78785]=Yi;J[78786]=bj(68730);J[78787]=Yi;J[78788]=bj(50432);J[78789]=Yi;J[78790]=bj(21018);J[78791]=Yi;J[78792]=bj(111470);J[78793]=Yi;J[78794]=bj(110046);J[78795]=Yi;J[78796]=bj(109270);J[78797]=Yi;J[78798]=bj(108986);J[78799]=Yi;J[78800]=bj(107011);J[78801]=Yi;J[78802]=bj(106038);J[78803]=Yi;J[78804]=bj(103532);J[78805]=Yi;J[78806]=bj(103425);J[78807]=Yi;J[78808]=bj(22361);J[78809]=Yi;J[78810]=bj(70008);J[78811]=Yi;J[78812]=bj(45222);J[78813]=Yi;J[78814]=bj(50321);J[78815]=Yi;J[78816]=bj(13937);J[78817]=Yi;J[78818]=bj(32861);J[78819]=Yi;J[78820]=bj(111479);J[78821]=Yi;J[78822]=bj(110055);J[78823]=Yi;J[78824]=bj(5264);J[78825]=Yi;J[78826]=bj(71642);J[78827]=Yi;J[78828]=bj(50317);J[78829]=Yi;J[78830]=bj(80464);J[78831]=Yi;J[78832]=bj(80935);J[78833]=Yi;J[78834]=bj(80474);J[78835]=Yi;J[78836]=bj(80731);J[78837]=Yi;J[78838]=bj(82213);J[78839]=Yi;J[78840]=bj(81654);J[78841]=Yi;J[78842]=bj(82198);J[78843]=Yi;J[78844]=bj(82442);J[78845]=Yi;J[78846]=bj(80832);J[78847]=Yi;J[78848]=bj(81707);J[78849]=Yi;J[78850]=bj(80845);J[78851]=Yi;J[78852]=bj(80447);J[78853]=Yi;J[78854]=bj(12712);J[78855]=Yi;J[78856]=bj(17780);J[78857]=Yi;J[78858]=bj(68730);J[78859]=Yi;J[78860]=bj(50432);J[78861]=Yi;J[78862]=bj(21018);J[78863]=Yi;J[78864]=bj(111470);J[78865]=Yi;J[78866]=bj(110046);J[78867]=Yi;J[78868]=bj(109270);J[78869]=Yi;J[78870]=bj(108986);J[78871]=Yi;J[78872]=bj(107011);J[78873]=Yi;J[78874]=bj(106038);J[78875]=Yi;J[78876]=bj(103532);J[78877]=Yi;J[78878]=bj(103425);J[78879]=Yi;J[78880]=bj(22361);J[78881]=Yi;a=bj(70008);J[78901]=0;J[78902]=0;J[78900]=306464;J[78898]=0;J[78896]=18102;J[78895]=49941;J[78894]=0;J[78892]=0;J[78890]=0;J[78888]=0;J[78886]=1;J[78884]=0;J[78885]=3;J[78882]=a;J[78883]=Yi;J[78903]=0;J[78904]=0;J[78905]=0;J[78922]=315536;J[78920]=0;J[78918]=25221;J[78917]=12030;J[78916]=0;J[78914]=0;J[78912]=0;J[78910]=0;J[78908]=1;J[78906]=0;J[78907]=3;J[78927]=0;J[78925]=0;J[78926]=0;J[78923]=0;J[78924]=0;J[78944]=315536;J[78942]=0;J[78940]=25045;J[78939]=11903;J[78938]=0;J[78936]=0;J[78934]=0;J[78932]=0;J[78930]=1;J[78928]=0;J[78929]=3;J[78949]=0;J[78947]=0;J[78948]=0;J[78945]=0;J[78946]=0;J[78966]=315536;J[78964]=0;J[78962]=21970;J[78961]=59429;J[78960]=0;J[78958]=0;J[78956]=0;J[78954]=0;J[78952]=1;J[78950]=0;J[78951]=3;J[78971]=0;J[78969]=0;J[78970]=0;J[78967]=0;J[78968]=0;J[78972]=bj(47767);J[78973]=Yi;J[78974]=bj(46887);J[78975]=Yi;J[78976]=bj(32630);J[78977]=Yi;J[78978]=bj(61778);J[78979]=Yi;J[78990]=bj(45222);J[78991]=Yi;J[78992]=bj(50321);J[78993]=Yi;J[78994]=bj(13937);J[78995]=Yi;J[78996]=bj(32861);J[78997]=Yi;J[78998]=bj(111479);J[78999]=Yi;J[79e3]=bj(110055);J[79001]=Yi;J[79002]=bj(5264);J[79003]=Yi;J[79004]=bj(71642);J[79005]=Yi;J[79006]=bj(50317);J[79007]=Yi;J[79008]=bj(80464);J[79009]=Yi;J[79010]=bj(80935);J[79011]=Yi;J[79012]=bj(80474);J[79013]=Yi;J[79014]=bj(80731);J[79015]=Yi;J[79016]=bj(82213);J[79017]=Yi;J[79018]=bj(81654);J[79019]=Yi;J[79020]=bj(82198);J[79021]=Yi;J[79022]=bj(82442);J[79023]=Yi;J[79024]=bj(80832);J[79025]=Yi;J[79026]=bj(81707);J[79027]=Yi;J[79028]=bj(80845);J[79029]=Yi;J[79030]=bj(80447);J[79031]=Yi;J[79032]=bj(12712);J[79033]=Yi;J[79034]=bj(17780);J[79035]=Yi;J[79036]=bj(68730);J[79037]=Yi;J[79038]=bj(50432);J[79039]=Yi;J[79040]=bj(21018);J[79041]=Yi;J[79044]=bj(111470);J[79045]=Yi;J[79046]=bj(110046);J[79047]=Yi;J[79048]=bj(109270);J[79049]=Yi;J[79050]=bj(108986);J[79051]=Yi;J[79052]=bj(107011);J[79053]=Yi;J[79054]=bj(106038);J[79055]=Yi;J[79056]=bj(103532);J[79057]=Yi;J[79058]=bj(103425);J[79059]=Yi;J[79060]=bj(22361);J[79061]=Yi;J[79062]=bj(70008);J[79063]=Yi;J[59655]=J[74432];J[74432]=238592;J[59687]=J[74432];J[74432]=238720;J[59743]=J[74432];J[74432]=238944;J[59769]=J[74432];J[74432]=239048;J[59785]=J[74432];J[74432]=239112;J[59807]=J[74432];J[74432]=239200;J[59849]=J[74432];J[74432]=239368;J[79120]=1;J[79118]=-166866304;J[79119]=916817987;J[79117]=46746;J[79116]=1;J[79123]=0;H[316488]=0;J[79121]=J[79115];J[79123]=J[74432];J[74432]=316464;J[59871]=J[74432];J[74432]=239456;J[79126]=bj(45222);J[79127]=Yi;J[79128]=bj(50321);J[79129]=Yi;J[79130]=bj(13937);J[79131]=Yi;J[79132]=bj(32861);J[79133]=Yi;J[79134]=bj(111479);J[79135]=Yi;J[79136]=bj(110055);J[79137]=Yi;J[79138]=bj(5264);J[79139]=Yi;J[79140]=bj(71642);J[79141]=Yi;J[79142]=bj(50317);J[79143]=Yi;J[79144]=bj(80464);J[79145]=Yi;J[79146]=bj(80935);J[79147]=Yi;J[79148]=bj(80474);J[79149]=Yi;J[79150]=bj(80731);J[79151]=Yi;J[79152]=bj(82213);J[79153]=Yi;J[79154]=bj(81654);J[79155]=Yi;J[79156]=bj(82198);J[79157]=Yi;J[79158]=bj(82442);J[79159]=Yi;J[79160]=bj(80832);J[79161]=Yi;J[79162]=bj(81707);J[79163]=Yi;J[79164]=bj(80845);J[79165]=Yi;J[79166]=bj(80447);J[79167]=Yi;J[79168]=bj(12712);J[79169]=Yi;J[79170]=bj(17780);J[79171]=Yi;J[79172]=bj(68730);J[79173]=Yi;J[79174]=bj(50432);J[79175]=Yi;J[79176]=bj(21018);J[79177]=Yi;J[79180]=bj(111470);J[79181]=Yi;J[79182]=bj(110046);J[79183]=Yi;J[79184]=bj(109270);J[79185]=Yi;J[79186]=bj(108986);J[79187]=Yi;J[79188]=bj(107011);J[79189]=Yi;J[79190]=bj(106038);J[79191]=Yi;J[79192]=bj(103532);J[79193]=Yi;J[79194]=bj(103425);J[79195]=Yi;J[79196]=bj(22361);J[79197]=Yi;J[79198]=bj(70008);J[79199]=Yi;N[79200]=Q(1)/N[59873];J[79236]=bj(45222);J[79237]=Yi;J[79238]=bj(50321);J[79239]=Yi;J[79240]=bj(13937);J[79241]=Yi;J[79242]=bj(32861);J[79243]=Yi;J[79244]=bj(111479);J[79245]=Yi;J[79246]=bj(110055);J[79247]=Yi;J[79248]=bj(5264);J[79249]=Yi;J[79250]=bj(71642);J[79251]=Yi;J[79252]=bj(50317);J[79253]=Yi;J[79254]=bj(80464);J[79255]=Yi;J[79256]=bj(80935);J[79257]=Yi;J[79258]=bj(80474);J[79259]=Yi;J[79260]=bj(80731);J[79261]=Yi;J[79262]=bj(82213);J[79263]=Yi;J[79264]=bj(81654);J[79265]=Yi;J[79266]=bj(82198);J[79267]=Yi;J[79268]=bj(82442);J[79269]=Yi;J[79270]=bj(80832);J[79271]=Yi;J[79272]=bj(81707);J[79273]=Yi;J[79274]=bj(80845);J[79275]=Yi;J[79276]=bj(80447);J[79277]=Yi;J[79278]=bj(12712);J[79279]=Yi;J[79280]=bj(17780);J[79281]=Yi;J[79282]=bj(68730);J[79283]=Yi;J[79284]=bj(50432);J[79285]=Yi;J[79286]=bj(21018);J[79287]=Yi;J[79288]=bj(111470);J[79289]=Yi;J[79290]=bj(110046);J[79291]=Yi;J[79292]=bj(109270);J[79293]=Yi;J[79294]=bj(108986);J[79295]=Yi;J[79296]=bj(107011);J[79297]=Yi;J[79298]=bj(106038);J[79299]=Yi;J[79300]=bj(103532);J[79301]=Yi;J[79302]=bj(103425);J[79303]=Yi;J[79304]=bj(22361);J[79305]=Yi;J[79306]=bj(70008);J[79307]=Yi;J[79326]=0;J[79327]=0;J[79324]=0;J[79320]=0;J[79318]=0;J[79316]=0;J[79314]=0;J[79312]=0;J[79310]=0;J[79311]=0;J[79348]=317240;J[79346]=0;J[79342]=0;J[79340]=0;J[79338]=0;J[79336]=0;J[79334]=1;J[79332]=0;J[79333]=3;J[79322]=25776;J[79321]=25771;J[79328]=0;J[79329]=0;J[79330]=0;J[79331]=0;J[79344]=25045;J[79343]=20739;J[79353]=0;J[79351]=0;J[79352]=0;J[79349]=0;J[79350]=0;J[79370]=317240;J[79368]=0;J[79366]=23740;J[79365]=20754;J[79364]=0;J[79362]=0;J[79360]=0;J[79358]=0;J[79356]=1;J[79354]=0;J[79355]=3;J[79375]=0;J[79373]=0;J[79374]=0;J[79371]=0;J[79372]=0;J[60139]=J[74432];J[74432]=240528;J[60153]=J[74432];J[74432]=240584;J[60169]=J[74432];J[74432]=240648;J[60259]=J[74432];J[74432]=241008;J[60333]=J[74432];J[74432]=241304;J[60373]=J[74432];J[74432]=241464;J[60413]=J[74432];J[74432]=241624;J[60435]=J[74432];J[74432]=241712;J[60477]=J[74432];J[74432]=241880;J[60499]=J[74432];J[74432]=241968;J[60519]=J[74432];J[74432]=242048;J[60545]=J[74432];J[74432]=242152;J[60585]=J[74432];J[74432]=242312;J[60613]=J[74432];J[74432]=242424;J[60689]=J[74432];J[74432]=242728;J[60735]=J[74432];J[74432]=242912;J[60767]=J[74432];J[74432]=243040;J[60793]=J[74432];J[74432]=243144;mo(335064);VV(335080,10755,0);J[84030]=bj(45222);J[84031]=Yi;J[84032]=bj(50321);J[84033]=Yi;J[84034]=bj(13937);J[84035]=Yi;J[84036]=bj(32861);J[84037]=Yi;J[84038]=bj(111479);J[84039]=Yi;J[84040]=bj(110055);J[84041]=Yi;J[84042]=bj(5264);J[84043]=Yi;J[84044]=bj(71642);J[84045]=Yi;J[84046]=bj(50317);J[84047]=Yi;J[84048]=bj(45222);J[84049]=Yi;J[84050]=bj(50321);J[84051]=Yi;J[84052]=bj(13937);J[84053]=Yi;J[84054]=bj(32861);J[84055]=Yi;J[84056]=bj(111479);J[84057]=Yi;J[84058]=bj(110055);J[84059]=Yi;J[84060]=bj(5264);J[84061]=Yi;J[84062]=bj(71642);J[84063]=Yi;J[84064]=bj(50317);J[84065]=Yi;J[84066]=bj(45222);J[84067]=Yi;J[84068]=bj(50321);J[84069]=Yi;J[84070]=bj(13937);J[84071]=Yi;J[84072]=bj(32861);J[84073]=Yi;J[84074]=bj(111479);J[84075]=Yi;J[84076]=bj(110055);J[84077]=Yi;J[84078]=bj(5264);J[84079]=Yi;J[84080]=bj(71642);J[84081]=Yi;J[84082]=bj(50317);J[84083]=Yi;J[84084]=bj(45222);J[84085]=Yi;J[84086]=bj(50321);J[84087]=Yi;J[84088]=bj(13937);J[84089]=Yi;J[84090]=bj(32861);J[84091]=Yi;J[84092]=bj(111479);J[84093]=Yi;J[84094]=bj(110055);J[84095]=Yi;J[84096]=bj(5264);J[84097]=Yi;J[84098]=bj(71642);J[84099]=Yi;J[84100]=bj(50317);J[84101]=Yi;J[84102]=bj(45222);J[84103]=Yi;J[84104]=bj(50321);J[84105]=Yi;J[84106]=bj(13937);J[84107]=Yi;J[84108]=bj(32861);J[84109]=Yi;J[84110]=bj(111479);J[84111]=Yi;J[84112]=bj(110055);J[84113]=Yi;J[84114]=bj(5264);J[84115]=Yi;J[84116]=bj(71642);J[84117]=Yi;J[84118]=bj(50317);J[84119]=Yi;J[84122]=bj(45222);J[84123]=Yi;J[84124]=bj(50321);J[84125]=Yi;J[84126]=bj(13937);J[84127]=Yi;J[84128]=bj(32861);J[84129]=Yi;J[84130]=bj(111479);J[84131]=Yi;J[84132]=bj(110055);J[84133]=Yi;J[84134]=bj(5264);J[84135]=Yi;J[84136]=bj(71642);J[84137]=Yi;J[84138]=bj(50317);J[84139]=Yi;J[84140]=bj(45222);J[84141]=Yi;J[84142]=bj(50321);J[84143]=Yi;J[84144]=bj(13937);J[84145]=Yi;J[84146]=bj(32861);J[84147]=Yi;J[84148]=bj(111479);J[84149]=Yi;J[84150]=bj(110055);J[84151]=Yi;J[84152]=bj(5264);J[84153]=Yi;J[84154]=bj(71642);J[84155]=Yi;J[84156]=bj(50317);J[84157]=Yi;J[84160]=bj(45222);J[84161]=Yi;J[84162]=bj(50321);J[84163]=Yi;J[84164]=bj(13937);J[84165]=Yi;J[84166]=bj(32861);J[84167]=Yi;J[84168]=bj(111479);J[84169]=Yi;J[84170]=bj(110055);J[84171]=Yi;J[84172]=bj(5264);J[84173]=Yi;J[84174]=bj(71642);J[84175]=Yi;a=bj(50317);J[84195]=0;J[84196]=0;J[84194]=337144;J[84192]=0;J[84190]=21248;J[84189]=12110;J[84188]=0;J[84186]=0;J[84184]=0;J[84182]=0;J[84180]=1;J[84178]=0;J[84179]=3;J[84176]=a;J[84177]=Yi;J[84197]=0;J[84198]=0;J[84199]=0;J[84216]=337144;J[84214]=0;J[84212]=21970;J[84211]=59386;J[84210]=0;J[84208]=0;J[84206]=0;J[84204]=0;J[84202]=1;J[84200]=0;J[84201]=3;J[84221]=0;J[84219]=0;J[84220]=0;J[84217]=0;J[84218]=0;J[84222]=bj(43411);J[84223]=Yi;J[84232]=bj(45222);J[84233]=Yi;J[84234]=bj(50321);J[84235]=Yi;J[84236]=bj(13937);J[84237]=Yi;J[84238]=bj(32861);J[84239]=Yi;J[84240]=bj(111479);J[84241]=Yi;J[84242]=bj(110055);J[84243]=Yi;J[84244]=bj(5264);J[84245]=Yi;J[84246]=bj(71642);J[84247]=Yi;J[84248]=bj(50317);J[84249]=Yi;J[84250]=bj(45222);J[84251]=Yi;J[84252]=bj(50321);J[84253]=Yi;J[84254]=bj(13937);J[84255]=Yi;J[84256]=bj(32861);J[84257]=Yi;J[84258]=bj(111479);J[84259]=Yi;J[84260]=bj(110055);J[84261]=Yi;J[84262]=bj(5264);J[84263]=Yi;J[84264]=bj(71642);J[84265]=Yi;J[84266]=bj(50317);J[84267]=Yi;J[84268]=bj(45222);J[84269]=Yi;J[84270]=bj(50321);J[84271]=Yi;J[84272]=bj(13937);J[84273]=Yi;J[84274]=bj(32861);J[84275]=Yi;J[84276]=bj(111479);J[84277]=Yi;J[84278]=bj(110055);J[84279]=Yi;J[84280]=bj(5264);J[84281]=Yi;J[84282]=bj(71642);J[84283]=Yi;a=bj(50317);J[84302]=0;J[84303]=0;J[84300]=0;J[84298]=33849;J[84297]=35511;J[84296]=0;J[84294]=0;J[84292]=0;J[84290]=0;J[84288]=0;J[84286]=0;J[84287]=0;J[84284]=a;J[84285]=Yi;J[84304]=0;J[84305]=0;J[84306]=0;J[84307]=0;J[84326]=bj(45222);J[84327]=Yi;J[84328]=bj(50321);J[84329]=Yi;J[84330]=bj(13937);J[84331]=Yi;J[84332]=bj(32861);J[84333]=Yi;J[84334]=bj(111479);J[84335]=Yi;J[84336]=bj(110055);J[84337]=Yi;J[84338]=bj(5264);J[84339]=Yi;J[84340]=bj(71642);J[84341]=Yi;J[84342]=bj(50317);J[84343]=Yi;J[84344]=bj(45222);J[84345]=Yi;J[84346]=bj(50321);J[84347]=Yi;J[84348]=bj(13937);J[84349]=Yi;J[84350]=bj(32861);J[84351]=Yi;J[84352]=bj(111479);J[84353]=Yi;J[84354]=bj(110055);J[84355]=Yi;J[84356]=bj(5264);J[84357]=Yi;J[84358]=bj(71642);J[84359]=Yi;J[84360]=bj(50317);J[84361]=Yi;J[84374]=bj(45222);J[84375]=Yi;J[84376]=bj(50321);J[84377]=Yi;J[84378]=bj(13937);J[84379]=Yi;J[84380]=bj(32861);J[84381]=Yi;J[84382]=bj(111479);J[84383]=Yi;J[84384]=bj(110055);J[84385]=Yi;J[84386]=bj(5264);J[84387]=Yi;J[84388]=bj(71642);J[84389]=Yi;J[84390]=bj(50317);J[84391]=Yi;J[84394]=bj(45222);J[84395]=Yi;J[84396]=bj(50321);J[84397]=Yi;J[84398]=bj(13937);J[84399]=Yi;J[84400]=bj(32861);J[84401]=Yi;J[84402]=bj(111479);J[84403]=Yi;J[84404]=bj(110055);J[84405]=Yi;J[84406]=bj(5264);J[84407]=Yi;J[84408]=bj(71642);J[84409]=Yi;J[84410]=bj(50317);J[84411]=Yi;J[62225]=J[74432];J[74432]=248872;J[62347]=J[74432];J[74432]=249360;J[62415]=J[74432];J[74432]=249632;J[62553]=J[74432];J[74432]=250184;J[62659]=J[74432];J[74432]=250608;J[62689]=J[74432];J[74432]=250728;J[62753]=J[74432];J[74432]=250984;J[62829]=J[74432];J[74432]=251288;J[62851]=J[74432];J[74432]=251376;J[62871]=J[74432];J[74432]=251456;J[62897]=J[74432];J[74432]=251560;J[62919]=J[74432];J[74432]=251648;J[62949]=J[74432];J[74432]=251768;J[62977]=J[74432];J[74432]=251880;J[62999]=J[74432];J[74432]=251968;J[63023]=J[74432];J[74432]=252064;J[63041]=J[74432];J[74432]=252136;J[63069]=J[74432];J[74432]=252248;J[63091]=J[74432];J[74432]=252336;J[63105]=J[74432];J[74432]=252392;J[63137]=J[74432];J[74432]=252520;J[63171]=J[74432];J[74432]=252656;J[63191]=J[74432];J[74432]=252736;J[84502]=bj(45222);J[84503]=Yi;J[84504]=bj(50321);J[84505]=Yi;J[84506]=bj(13937);J[84507]=Yi;J[84508]=bj(32861);J[84509]=Yi;J[84510]=bj(111479);J[84511]=Yi;J[84512]=bj(110055);J[84513]=Yi;J[84514]=bj(5264);J[84515]=Yi;J[84516]=bj(71642);J[84517]=Yi;J[84518]=bj(50317);J[84519]=Yi;J[84540]=0;J[84541]=0;J[84538]=0;J[84534]=0;J[84532]=0;J[84530]=0;J[84528]=0;J[84526]=0;J[84524]=0;J[84525]=0;J[84536]=158859;J[84535]=10643;J[84542]=0;J[84543]=0;J[84544]=0;J[84545]=0;J[84546]=Dq(172976,22);J[84547]=ZC(173136,15);J[84554]=0;J[84555]=0;J[84550]=0;J[84551]=0;J[84556]=0;J[84557]=0;J[84552]=0;J[84553]=0;J[84555]=-1;J[215663]=0;J[215664]=0;J[215662]=338096;J[215660]=0;J[215656]=0;J[215654]=0;J[215652]=0;J[215650]=0;J[215648]=1;J[215646]=0;J[215647]=3;J[215658]=19190;J[215657]=12134;J[215665]=0;J[215666]=0;J[215667]=0;a=Dq(173200,18);J[215669]=0;J[215670]=0;J[215668]=a;J[215671]=0;J[215672]=0;J[215732]=1;J[215730]=1119817666;J[215731]=1850475176;J[215728]=1;J[215735]=0;H[862936]=0;J[215729]=36502;J[215733]=J[215727];J[215735]=J[74432];J[74432]=862912;J[64109]=J[74432];J[74432]=256408;J[64143]=J[74432];J[74432]=256544;J[64197]=J[74432];J[74432]=256760;J[64243]=J[74432];J[74432]=256944;J[64257]=J[74432];J[74432]=257e3;J[215750]=1;J[215748]=-990112893;J[215749]=-1808347863;J[215747]=66435;J[215746]=1;J[215753]=0;H[863008]=0;J[215751]=J[215744];J[215753]=J[74432];J[74432]=862984;J[215760]=1;J[215758]=-646628091;J[215759]=-486267828;J[215757]=55885;J[215756]=1;J[215763]=0;H[863048]=0;J[215761]=J[215755];J[215763]=J[74432];J[74432]=863024;J[64293]=J[74432];J[74432]=257144;J[215772]=1;J[215770]=-588138364;J[215771]=-388737994;J[215769]=70767;J[215768]=1;J[215775]=0;H[863096]=0;J[215773]=J[215766];J[215775]=J[74432];J[74432]=863072;J[64339]=J[74432];J[74432]=257328;J[64357]=J[74432];J[74432]=257400;J[64373]=J[74432];J[74432]=257464;J[215790]=1;J[215788]=-1295411253;J[215789]=19635675;J[215787]=56599;J[215786]=1;J[215793]=0;H[863168]=0;J[215791]=J[215784];J[215793]=J[74432];J[74432]=863144;J[215891]=J[43169];J[215890]=J[43168];J[215889]=J[43167];J[215888]=J[43166];J[215887]=J[43165];J[215886]=J[43164];J[215885]=J[43163];J[215884]=J[43162];J[215883]=J[43161];J[215882]=J[43160];J[215881]=J[43159];J[215880]=J[43158];J[215879]=J[43157];J[215878]=J[43156];J[215877]=J[43155];J[215876]=J[43154];J[215892]=bv(97019);J[64785]=J[74432];J[74432]=259112;J[64825]=J[74432];J[74432]=259272;J[64859]=J[74432];J[74432]=259408;J[64873]=J[74432];J[74432]=259464;J[64895]=J[74432];J[74432]=259552;J[64915]=J[74432];J[74432]=259632;J[64935]=J[74432];J[74432]=259712;J[64955]=J[74432];J[74432]=259792;J[64975]=J[74432];J[74432]=259872;J[65013]=J[74432];J[74432]=260024;J[216176]=0;J[216177]=0;J[216174]=0;J[216170]=0;J[216168]=0;J[216166]=0;J[216164]=0;J[216162]=0;J[216160]=0;J[216161]=0;J[216198]=864640;J[216196]=0;J[216192]=0;J[216190]=0;J[216188]=0;J[216186]=0;J[216184]=1;J[216182]=0;J[216183]=3;J[216172]=22952;J[216171]=22947;J[216178]=0;J[216179]=0;J[216180]=0;J[216181]=0;J[216194]=60284;J[216193]=60302;J[216203]=0;J[216201]=0;J[216202]=0;J[216199]=0;J[216200]=0;J[216206]=0;J[216204]=0;J[216205]=1065353216;J[216210]=0;J[216208]=0;J[216209]=1065353216;J[216214]=0;J[216212]=1065353216;J[216213]=0;J[216218]=1065353216;J[216216]=0;J[216217]=0;J[216222]=-2147483648;J[216220]=-1082130432;J[216221]=-2147483648;J[65051]=J[74432];J[74432]=260176;J[65077]=J[74432];J[74432]=260280;J[65117]=J[74432];J[74432]=260440;J[65145]=J[74432];J[74432]=260552;J[65167]=J[74432];J[74432]=260640;J[65329]=J[74432];J[74432]=261288;J[65351]=J[74432];J[74432]=261376;J[216274]=bj(158859);J[216275]=Yi;J[65407]=J[74432];J[74432]=261600;J[65439]=J[74432];J[74432]=261728;J[65491]=J[74432];J[74432]=261936;J[65527]=J[74432];J[74432]=262080;J[65569]=J[74432];J[74432]=262248;J[65609]=J[74432];J[74432]=262408;J[65649]=J[74432];J[74432]=262568;J[65671]=J[74432];J[74432]=262656;J[65685]=J[74432];J[74432]=262712;J[65719]=J[74432];J[74432]=262848;J[65755]=J[74432];J[74432]=262992;J[65787]=J[74432];J[74432]=263120;J[65805]=J[74432];J[74432]=263192;J[65855]=J[74432];J[74432]=263392;J[65993]=J[74432];J[74432]=263944;J[66045]=J[74432];J[74432]=264152;J[66095]=J[74432];J[74432]=264352;J[66115]=J[74432];J[74432]=264432;J[66147]=J[74432];J[74432]=264560;J[66179]=J[74432];J[74432]=264688;J[66199]=J[74432];J[74432]=264768;J[66237]=J[74432];J[74432]=264920;J[66253]=J[74432];J[74432]=264984;J[66269]=J[74432];J[74432]=265048;J[66291]=J[74432];J[74432]=265136;J[66389]=J[74432];J[74432]=265528;J[66423]=J[74432];J[74432]=265664;J[66455]=J[74432];J[74432]=265792;J[66487]=J[74432];J[74432]=265920;J[218567]=0;J[218568]=Co();J[218632]=0;J[218633]=0;J[218630]=0;J[218626]=0;J[218624]=0;J[218622]=0;J[218620]=0;J[218618]=0;J[218616]=0;J[218617]=0;J[218654]=874464;J[218652]=0;J[218648]=0;J[218646]=0;J[218644]=0;J[218642]=0;J[218640]=1;J[218638]=0;J[218639]=3;J[218628]=68456;J[218627]=68586;J[218634]=0;J[218635]=0;J[218636]=0;J[218637]=0;J[218650]=65668;J[218649]=23926;J[218659]=0;J[218657]=0;J[218658]=0;J[218655]=0;J[218656]=0;J[218662]=0;J[218661]=0;J[218918]=bj(45222);J[218919]=Yi;J[218920]=bj(50321);J[218921]=Yi;J[218922]=bj(13937);J[218923]=Yi;J[218924]=bj(32861);J[218925]=Yi;J[218926]=bj(111479);J[218927]=Yi;J[218928]=bj(110055);J[218929]=Yi;J[218930]=bj(5264);J[218931]=Yi;J[218932]=bj(71642);J[218933]=Yi;a=bj(50317);J[218952]=0;J[218953]=0;J[218950]=0;J[218948]=158859;J[218947]=52078;J[218946]=0;J[218944]=0;J[218942]=0;J[218940]=0;J[218938]=1;J[218936]=0;J[218937]=3;J[218934]=a;J[218935]=Yi;J[218954]=0;J[218955]=0;J[218956]=0;J[218957]=0;J[218974]=875744;J[218972]=0;J[218970]=158859;J[218969]=20145;J[218968]=0;J[218966]=0;J[218964]=0;J[218962]=0;J[218960]=1;J[218958]=0;J[218959]=3;J[218979]=0;J[218977]=0;J[218978]=0;J[218975]=0;J[218976]=0;J[218982]=1;J[218984]=0;J[218986]=0;J[218988]=0;J[218990]=0;J[218991]=20164;J[218992]=158859;J[218994]=0;J[218996]=875744;J[218980]=0;J[218981]=3;J[218997]=0;J[218998]=0;J[218999]=0;J[219e3]=0;J[219001]=0;J[219004]=1;J[219006]=0;J[219008]=0;J[219010]=0;J[219012]=0;J[219013]=24091;J[219014]=158859;J[219016]=0;J[219018]=875744;J[219002]=0;J[219003]=3;J[219023]=0;J[219021]=0;J[219022]=0;J[219019]=0;J[219020]=0;J[219040]=875744;J[219038]=0;J[219036]=158859;J[219035]=24105;J[219034]=0;J[219032]=0;J[219030]=0;J[219028]=0;J[219026]=1;J[219024]=0;J[219025]=3;J[219045]=0;J[219043]=0;J[219044]=0;J[219041]=0;J[219042]=0;J[219062]=875744;J[219060]=0;J[219058]=158859;J[219057]=22443;J[219056]=0;J[219054]=0;J[219052]=0;J[219050]=0;J[219048]=1;J[219046]=0;J[219047]=3;J[219067]=0;J[219065]=0;J[219066]=0;J[219063]=0;J[219064]=0;J[219084]=875744;J[219082]=0;J[219080]=158859;J[219079]=22466;J[219078]=0;J[219076]=0;J[219074]=0;J[219072]=0;J[219070]=1;J[219068]=0;J[219069]=3;J[219089]=0;J[219087]=0;J[219088]=0;J[219085]=0;J[219086]=0;J[219106]=875744;J[219104]=0;J[219102]=158859;J[219101]=22384;J[219100]=0;J[219098]=0;J[219096]=0;J[219094]=0;J[219092]=1;J[219090]=0;J[219091]=3;J[219111]=0;J[219109]=0;J[219110]=0;J[219107]=0;J[219108]=0;J[219128]=875744;J[219126]=0;J[219124]=158859;J[219123]=4703;J[219122]=0;J[219120]=0;J[219118]=0;J[219116]=0;J[219114]=1;J[219112]=0;J[219113]=3;J[219133]=0;J[219131]=0;J[219132]=0;J[219129]=0;J[219130]=0;J[219150]=875744;J[219148]=0;J[219146]=82870;J[219145]=82840;J[219144]=0;J[219142]=0;J[219140]=0;J[219138]=0;J[219136]=0;J[219134]=0;J[219135]=4;J[219155]=0;J[219153]=0;J[219154]=0;J[219151]=0;J[219152]=0;J[219156]=bj(158859);J[219157]=Yi;J[219158]=bj(158859);J[219159]=Yi;a=bj(45222);H[876652]=255;J[219162]=0;J[219160]=a;J[219161]=Yi;a=bj(6301);H[876668]=0;J[219166]=0;J[219164]=a;J[219165]=Yi;a=bj(4440);H[876684]=1;J[219170]=0;J[219168]=a;J[219169]=Yi;a=bj(1273);H[876700]=2;J[219174]=0;J[219172]=a;J[219173]=Yi;a=bj(6926);H[876716]=3;J[219178]=0;J[219176]=a;J[219177]=Yi;a=bj(46356);H[876732]=255;J[219182]=1;J[219180]=a;J[219181]=Yi;a=bj(6312);H[876748]=0;J[219186]=1;J[219184]=a;J[219185]=Yi;a=bj(4451);H[876764]=1;J[219190]=1;J[219188]=a;J[219189]=Yi;a=bj(1284);H[876780]=2;J[219194]=1;J[219192]=a;J[219193]=Yi;a=bj(6937);H[876796]=3;J[219198]=1;J[219196]=a;J[219197]=Yi;a=bj(67985);H[876812]=255;J[219202]=2;J[219200]=a;J[219201]=Yi;a=bj(6340);H[876828]=0;J[219206]=2;J[219204]=a;J[219205]=Yi;a=bj(4479);H[876844]=1;J[219210]=2;J[219208]=a;J[219209]=Yi;a=bj(1312);H[876860]=2;J[219214]=2;J[219212]=a;J[219213]=Yi;a=bj(6965);H[876876]=3;J[219218]=2;J[219216]=a;J[219217]=Yi;a=bj(32861);H[876892]=255;J[219222]=3;J[219220]=a;J[219221]=Yi;a=bj(6285);H[876908]=0;J[219226]=3;J[219224]=a;J[219225]=Yi;a=bj(4424);H[876924]=1;J[219230]=3;J[219228]=a;J[219229]=Yi;a=bj(1257);H[876940]=2;J[219234]=3;J[219232]=a;J[219233]=Yi;a=bj(6910);H[876956]=3;J[219238]=3;J[219236]=a;J[219237]=Yi;a=bj(59207);H[876972]=255;J[219242]=4;J[219240]=a;J[219241]=Yi;a=bj(6323);H[876988]=0;J[219246]=4;J[219244]=a;J[219245]=Yi;a=bj(4462);H[877004]=1;J[219250]=4;J[219248]=a;J[219249]=Yi;a=bj(1295);H[877020]=2;J[219254]=4;J[219252]=a;J[219253]=Yi;a=bj(6948);H[877036]=3;J[219258]=4;J[219256]=a;J[219257]=Yi;a=bj(65297);H[877052]=255;J[219262]=5;J[219260]=a;J[219261]=Yi;a=bj(6330);H[877068]=0;J[219266]=5;J[219264]=a;J[219265]=Yi;a=bj(4469);H[877084]=1;J[219270]=5;J[219268]=a;J[219269]=Yi;a=bj(1302);H[877100]=2;J[219274]=5;J[219272]=a;J[219273]=Yi;a=bj(6955);H[877116]=3;J[219278]=5;J[219276]=a;J[219277]=Yi;a=bj(6674);H[877132]=255;J[219282]=6;J[219280]=a;J[219281]=Yi;a=bj(6258);H[877148]=0;J[219286]=6;J[219284]=a;J[219285]=Yi;a=bj(4397);H[877164]=1;J[219290]=6;J[219288]=a;J[219289]=Yi;a=bj(1243);H[877180]=2;J[219294]=6;J[219292]=a;J[219293]=Yi;a=bj(6896);H[877196]=3;J[219298]=6;J[219296]=a;J[219297]=Yi;a=bj(102698);H[877212]=255;J[219302]=7;J[219300]=a;J[219301]=Yi;a=bj(6356);H[877228]=0;J[219306]=7;J[219304]=a;J[219305]=Yi;a=bj(4495);H[877244]=1;J[219310]=7;J[219308]=a;J[219309]=Yi;a=bj(1328);H[877260]=2;J[219314]=7;J[219312]=a;J[219313]=Yi;a=bj(6981);H[877276]=3;J[219318]=7;J[219316]=a;J[219317]=Yi;a=bj(34042);H[877292]=255;J[219322]=10;J[219320]=a;J[219321]=Yi;a=bj(6293);H[877308]=0;J[219326]=10;J[219324]=a;J[219325]=Yi;a=bj(4432);H[877324]=1;J[219330]=10;J[219328]=a;J[219329]=Yi;a=bj(1265);H[877340]=2;J[219334]=10;J[219332]=a;J[219333]=Yi;a=bj(6918);H[877356]=3;J[219338]=10;J[219336]=a;J[219337]=Yi;a=bj(17492);H[877372]=0;J[219342]=8;J[219340]=a;J[219341]=Yi;a=bj(66865);H[877388]=1;J[219346]=8;J[219344]=a;J[219345]=Yi;a=bj(57375);H[877404]=0;J[219350]=9;J[219348]=a;J[219349]=Yi;a=bj(56937);H[877420]=1;J[219354]=9;J[219352]=a;J[219353]=Yi;a=bj(45222);H[877436]=255;J[219358]=0;J[219356]=a;J[219357]=Yi;a=bj(46356);H[877452]=255;J[219362]=1;J[219360]=a;J[219361]=Yi;a=bj(67985);H[877468]=255;J[219366]=2;J[219364]=a;J[219365]=Yi;a=bj(32861);H[877484]=255;J[219370]=3;J[219368]=a;J[219369]=Yi;a=bj(59207);H[877500]=255;J[219374]=4;J[219372]=a;J[219373]=Yi;a=bj(65297);H[877516]=255;J[219378]=5;J[219376]=a;J[219377]=Yi;a=bj(6674);H[877532]=255;J[219382]=6;J[219380]=a;J[219381]=Yi;a=bj(70587);H[877548]=255;J[219386]=7;J[219384]=a;J[219385]=Yi;a=bj(34042);H[877564]=255;J[219390]=10;J[219388]=a;J[219389]=Yi;a=bj(33461);J[245459]=2501;J[245457]=2;J[245458]=16;J[245456]=2502;J[245454]=2;J[245455]=8;J[245453]=2503;J[245451]=1;J[245452]=16;J[245450]=2504;J[245448]=1;J[245449]=8;J[245444]=a;J[245445]=Yi;J[245471]=2505;J[245469]=2;J[245470]=16;J[245468]=2506;J[245466]=2;J[245467]=8;J[245465]=2507;J[245463]=1;J[245464]=16;J[245462]=2508;J[245460]=1;J[245461]=8;J[245847]=983104;J[245829]=42}function $na(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=Q(0),q=0,r=0,s=0,t=0,u=0,v=0,w=Q(0),x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,R=Q(0),T=Q(0),U=0,V=0,W=0,X=0,Y=0,_=0;c=0;a:{if((a|0)<=0){break a}b:{while(1){c=J[(e<<2)+b>>2];g=K[c|0];c:{if((g|0)!=45){f=45-g|0;break c}g=K[c+1|0];if((g|0)!=45){f=45-g|0;break c}f=103-K[c+2|0]|0}if(!f){c=Hk(c,61);if(c){break b}}e=e+1|0;if((e|0)!=(a|0)){continue}break}c=0;break a}c=c+1|0}e=-1;d:{if(!c){break d}e=1;if(!xu(49522,c)){break d}e=2;if(!xu(49750,c)){break d}e=3;if(!xu(48285,c)){break d}e=5;if(!xu(8313,c)){break d}e=4;if(!xu(33008,c)){break d}Z(152587,39550,115,3529);B()}g=e;c=Ui-448|0;Ui=c;f=1;e:{if(J[79488]){break e}f:{f=(e|0)==-1;e=J[79376];if(!(f|!e)){while(1){if((g|0)==J[e+16>>2]){if(Zi[J[e+8>>2]]()|0){break f}}e=J[e>>2];if(e){continue}break}e=J[79376]}g:{if(!e){break g}f=e;while(1){g=Zi[J[f+8>>2]]()|0;e=g?H[f+20|0]>2];if(f){continue}break}if(!e){break g}break f}f=0;dj(4,89301,126535,0);break e}g=c+4|0;Zi[J[e+4>>2]](g);hj(317508,g,444);J[79488]=e;f=1;e=J[e+16>>2]+1|0;if(e>>>0>6){e=102202}else{e=J[(e<<2)+240140>>2]}J[c>>2]=e;dj(2,89301,148937,c)}Ui=c+448|0;h:{if(f){c=J[73766];e=nj(520);ij(e+4|0,0,148);J[e+200>>2]=0;J[e+204>>2]=0;J[e+160>>2]=0;J[e+164>>2]=0;H[e+152|0]=1;g=e+168|0;J[g>>2]=0;J[g+4>>2]=0;J[e+176>>2]=0;J[e+180>>2]=0;J[e+184>>2]=0;J[e+188>>2]=0;J[e+192>>2]=0;J[e+196>>2]=0;J[e+208>>2]=0;J[e+256>>2]=0;J[e+260>>2]=0;J[e+224>>2]=0;J[e+228>>2]=0;J[e+212>>2]=0;J[e+216>>2]=1065353216;J[e+264>>2]=0;J[e+268>>2]=0;J[e+272>>2]=0;J[e+276>>2]=0;J[e+280>>2]=0;J[e+284>>2]=0;J[e+288>>2]=0;J[e+292>>2]=0;J[e+296>>2]=0;J[e+300>>2]=0;J[e+200>>2]=-1;ij(e+312|0,0,128);J[e+440>>2]=0;J[e+444>>2]=0;J[e+500>>2]=0;J[e+504>>2]=0;J[e+488>>2]=982026377;J[e+492>>2]=986500301;J[e+476>>2]=960;J[e+480>>2]=640;H[e+449|0]=0;H[e+450|0]=0;H[e+451|0]=0;H[e+452|0]=0;H[e+448|0]=1;J[e+508>>2]=0;J[e+512>>2]=0;J[e+516>>2]=0;J[e>>2]=c;c=nj(29112);f=c+448|0;j=c+336|0;h=c+224|0;k=c+112|0;d=8;while(1){ij(c+d|0,0,112);ij(d+k|0,0,112);ij(d+h|0,0,112);ij(d+j|0,0,112);ij(d+f|0,0,112);d=d+560|0;if((d|0)!=28568){continue}break}J[c+29084>>2]=0;J[c+29088>>2]=0;J[c+29100>>2]=1024;J[c+29104>>2]=16;J[c>>2]=0;f=c+29092|0;J[f>>2]=0;J[f+4>>2]=0;J[c+29080>>2]=Co();J[e+156>>2]=c;if(H[e+176|0]&1){break h}lj(64,960,e+164|0,e+172|0,g);Rp(e+180|0,31,64);J[e+464>>2]=0;J[e+372>>2]=0;J[e+364>>2]=0;J[e+320>>2]=0;J[e+324>>2]=0;J[e+304>>2]=0;I[e+248>>1]=0;J[e+232>>2]=0;J[e+456>>2]=bl();J[e+460>>2]=Yi;h=0;g=Ui-12208|0;Ui=g;J[g+308>>2]=82534;J[g+304>>2]=103495;dj(2,95703,136438,g+304|0);J[245133]=e;J[245132]=1;J[g+9128>>2]=82534;J[g+9124>>2]=103495;J[g+9120>>2]=82810;H[g+9132|0]=K[269788];i:{j:{k:{c=g+9120|0;if(ek(875260,J[c+4>>2],16)>>>0<16){if(ek(875276,J[c+8>>2],41)>>>0>=41){break k}if(ek(875244,J[c>>2],16)>>>0>=16){break j}H[875317]=K[c+12|0];break i}Z(137464,39119,176,44398);B()}Z(144259,39119,178,44398);B()}Z(137518,39119,180,44398);B()}c=vo(98891);if(c){c=K[c|0]==49}else{c=0}H[e+449|0]=c;c=g+8096|0;ij(c,0,1024);ij(g+7072|0,0,1024);ij(g+6048|0,0,1024);H[g+6048|0]=46;f=g+5024|0;H[f|0]=0;mM(J[b>>2],f);l:{m:{n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{if((a|0)<2){break A}f=J[((a<<2)+b|0)-4>>2];if(K[f|0]==45){break A}ek(c,f,1024);break z}if(vo(88937)){c=vo(88937)}else{c=158859}J[g+288>>2]=c;f=g+11184|0;Gj(f,1024,80889,g+288|0);J[g+272>>2]=c;d=g+10160|0;Gj(d,1024,80905,g+272|0);c=g+9136|0;cm(g+5024|0,80921,c,1024);if(!_k(f)){if(!_k(d)){d=c;if(!_k(c)){break y}}ek(g+8096|0,d,1024);break z}ek(g+8096|0,g+11184|0,1024)}k=e+4|0;c=Ui-2240|0;Ui=c;B:{C:{D:{E:{l=g+8096|0;if(l){if(!k){break E}J[k>>2]=0;F:{G:{if(!ep(l,c)){H:{if(Wj(c,36507,5)){if(Wj(c,19811,6)){break H}}f=c+2232|0;J[f>>2]=0;J[f+4>>2]=0;J[c+2224>>2]=0;J[c+2228>>2]=0;d=c+2188|0;J[d+8>>2]=0;J[d+12>>2]=0;J[d+28>>2]=1;J[d+32>>2]=0;J[d+4>>2]=2273;J[d+16>>2]=0;J[d+20>>2]=0;J[d+24>>2]=0;J[c+2196>>2]=2146;J[c+2192>>2]=2147;J[c+2188>>2]=c+2224;f=-1;d=UM(d,c+72|0,L[c+136>>1],!Wj(c,19811,6));I:{if(!d){break I}j=XM(d,c+140|0);Uu(d);if(j){break I}d=J[c+2228>>2];f=J[c+2224>>2];if((d|0)==(f|0)){break D}f=oS(l,f,d-f|0,a,b,k)}if(H[c+2236|0]&1){break F}d=J[c+2224>>2];if(!d){break F}cj(d);break F}if(!Wj(c,66717,5)){f=nS(c+140|0,a,b,k);break F}if(!Wj(c,83428,5)){break G}if(!Wj(c,9632,5)){break G}break C}if(!_k(l)){break C}}f=nS(l,a,b,k)}if(f){break B}f=0;j=J[216331];if(!j){break B}d=J[k>>2];while(1){k=J[j+4>>2];if(k){Zi[k|0](d)}j=J[j+24>>2];if(j){continue}break}break B}Z(49412,41783,726,76291);B()}Z(57428,41783,727,76291);B()}Z(112533,54052,429,12693);B()}f=-5}Ui=c+2240|0;J:{if(f){if(K[e+450|0]){break J}J[g+260>>2]=f;J[g+256>>2]=l;dj(5,95703,142081,g+256|0);j=0;break r}f=g+6048|0;mM(g+8096|0,f);d=g+7072|0;ek(d,f,1024);c=g+11184|0;ek(c,f,1024);zl(c,K[g+6048|0]?9913:9940,1024);if(_k(c)){ek(d,102670,1024);zl(d,c,1024)}J[70114]=ak(J[e+4>>2],49854,2);cm(g+5024|0,48850,g+11184|0,1024);d=0;c=nn(J[e+4>>2],22324,0);if(c){d=g+10160|0;cm(g+6048|0,c,d,1024)}f=g+11184|0;if(!_k(f)){break u}if(vu(f,g+9136|0)){break u}j=J[g+9136>>2];c=sj(j);J[g+3680>>2]=0;j=wu(f,c,j,g+3680|0);if(!j){break x}J[g+228>>2]=j;J[g+224>>2]=f;dj(4,95703,137782,g+224|0);break w}J[g+244>>2]=f;J[g+240>>2]=g+8096;dj(4,95703,142081,g+240|0)}j=0;dj(5,95703,16170,0);break r}f=J[g+3680>>2];j=J[g+9136>>2];if((f|0)==(j|0)){break v}J[g+212>>2]=f;J[g+208>>2]=j;dj(4,95703,22021,g+208|0)}cj(c);break u}f=oK(c,f);cj(c);if(!f){break t}}if(!d){break s}if(!_k(d)){break s}if(vu(d,g+9136|0)){break s}f=J[g+9136>>2];c=sj(f);J[g+3680>>2]=0;f=wu(d,c,f,g+3680|0);if(f){J[g+196>>2]=f;J[g+192>>2]=d;dj(4,95703,137782,g+192|0);cj(c);break s}f=J[g+3680>>2];d=J[g+9136>>2];if((f|0)!=(d|0)){J[g+180>>2]=f;J[g+176>>2]=d;dj(4,95703,22021,g+176|0);cj(c);break s}f=oK(c,f);cj(c);if(f){break s}}dj(2,95703,75199,0)}if((ak(J[e+4>>2],33900,1)|0)==1){aa(288688,158860,0)|0}c=K[269788];f=ak(J[e+4>>2],20708,1);H[g+5016|0]=K[158888];j=J[39721];d=g+5008|0;J[d>>2]=J[39720];J[d+4>>2]=j;d=J[39719];J[g+5e3>>2]=J[39718];J[g+5004>>2]=d;d=J[39717];J[g+4992>>2]=J[39716];J[g+4996>>2]=d;f=(f|0)!=0&c;if((a|0)>0){j=0;while(1){c=J[(j<<2)+b>>2];K:{if(!$k(g+4992|0,c,24)){c=Hk(c,61);d=c+1|0;if(!$k(60828,d,4)){f=1;break K}if(!$k(62644,d,5)){f=0;break K}J[g+164>>2]=c;J[g+160>>2]=g+4992;dj(3,95703,117878,g+160|0);break K}if(!$k(81750,c,11)){i=1;break K}if(!$k(158896,c,23)){h=1;break K}if($k(62423,c,9)){d=K[c|0];L:{if((d|0)!=45){c=45-d|0;break L}c=118-K[c+1|0]|0}if(c){break K}}J[70114]=0}j=j+1|0;if((j|0)!=(a|0)){continue}break}}a=nj(16);I[a+12>>1]=0;J[a>>2]=Zj(1,512);b=Zj(1,256);J[a+8>>2]=128;J[a+4>>2]=b;J[216330]=a;b=g+4988|0;J[b>>2]=0;y=ak(J[e+4>>2],33744,1);H[b|0]=K[b|0]&239|!y<<4;a=g+4724|0;ij(a,0,264);hx(a);a=J[g+4984>>2];if(a){c=yj(4521);M:{if(K[a|0]){while(1){if(!It(a,4521,c)){break M}d=K[a+1|0];a=a+1|0;if(d){continue}break}}a=0}H[b|0]=K[b|0]&223|((a|0)!=0)<<5}c=nj(3484);ij(c,0,3484);a=K[b|0]<<1;J[c+3480>>2]=J[c+3480>>2]&-127|a&2|a&4|a&8|a&16|a&32|a&64;J[e+420>>2]=c;a=g+4720|0;J[a>>2]=0;J[g+4712>>2]=0;J[g+4716>>2]=0;J[g+4708>>2]=J[e+4>>2];J[g+4712>>2]=0;J[g+4716>>2]=J[e+156>>2];J[a>>2]=J[e+420>>2];d=g+4708|0;b=0;c=Ui-16|0;Ui=c;a=J[215795];N:{if(!a){break N}O:{while(1){b=J[a+20>>2];if(b){J[215796]=a;b=Zi[b|0](d)|0;if(b){break O}H[a+52|0]=K[a+52|0]|1}a=J[a>>2];if(a){continue}break}b=0;break N}J[c>>2]=a+4;dj(4,91468,29038,c)}J[215796]=0;Ui=c+16|0;P:{if(b){J[g+144>>2]=b;dj(5,95703,140006,g+144|0);j=0;break P}d=0;Q:{if(!ak(J[e+4>>2],55947,0)){break Q}a=J[39739];J[g+392>>2]=J[39738];J[g+396>>2]=a;a=J[39737];J[g+384>>2]=J[39736];J[g+388>>2]=a;a=J[39733];J[g+368>>2]=J[39732];J[g+372>>2]=a;a=J[39735];J[g+376>>2]=J[39734];J[g+380>>2]=a;a=nn(J[e+4>>2],33034,0);if(a){b=a;a=g+9136|0;cm(b,g+368|0,a,1024);J[g+428>>2]=a;d=1;a=g+432|0}else{a=g+428|0}b=g+3680|0;if(ek(b,135027,1024)>>>0<1024){c=b;b=g+2656|0;cm(c,g+368|0,b,1024);J[a>>2]=b;d=d+1|0}a=g+1632|0;R:{if(!ix(nn(J[e+4>>2],65964,21257),a)){b=a;a=g+608|0;cm(b,g+368|0,a,1024);J[(g+428|0)+(d<<2)>>2]=a;d=d+1|0;break R}if(!d){break Q}}j=0;while(1){b=J[(g+428|0)+(j<<2)>>2];a=Ui-32|0;Ui=a;c=J[218582];if(c){vk(c);J[218582]=0}c=ol(b,82669);J[218582]=c;S:{if(c){J[a>>2]=b;dj(2,99340,28801,a);break S}J[a+16>>2]=b;dj(5,99340,148539,a+16|0)}Ui=a+32|0;if(c){break Q}j=j+1|0;if((j|0)!=(d|0)){continue}break}}C=nn(J[e+4>>2],35387,0);J[g+604>>2]=0;b=nn(J[e+4>>2],66224,66238);r=+fn(J[e+4>>2],74608,Q(0))*255;T:{if(r<4294967296&r>=0){a=~~r>>>0;break T}a=0}c=a&255;r=+fn(J[e+4>>2],48133,Q(0))*255;U:{if(r<4294967296&r>=0){a=~~r>>>0;break U}a=0}c=c|a<<8&65280;r=+fn(J[e+4>>2],60889,Q(0))*255;V:{if(r<4294967296&r>=0){a=~~r>>>0;break V}a=0}c=c|a<<16&16711680;r=+fn(J[e+4>>2],84078,Q(0))*255;W:{if(r<4294967296&r>=0){a=~~r>>>0;break W}a=0}c=c|a<<24;J[e+484>>2]=c;J[e+476>>2]=ak(J[e+4>>2],52989,960);d=ak(J[e+4>>2],14641,640);J[e+480>>2]=d;a=g+3728|0;J[a>>2]=0;J[a+4>>2]=0;j=g+3712|0;J[j>>2]=0;J[j+4>>2]=0;k=g+3704|0;J[k>>2]=0;J[k+4>>2]=0;l=g+3696|0;J[l>>2]=0;J[l+4>>2]=0;m=g+3688|0;J[m>>2]=0;J[m+4>>2]=0;o=g+3720|0;J[o>>2]=0;J[o+4>>2]=0;n=g+3736|0;J[n>>2]=0;J[n+4>>2]=0;J[a>>2]=47292;J[j>>2]=e;J[k>>2]=e;J[l>>2]=e;J[m>>2]=e;J[g+3680>>2]=0;J[g+3684>>2]=0;J[g+3724>>2]=1;J[g+3708>>2]=2;J[g+3700>>2]=3;J[g+3692>>2]=4;J[g+3684>>2]=5;j=J[e+476>>2];J[o>>2]=d;J[g+3716>>2]=j;d=ak(J[e+4>>2],22712,0);J[a>>2]=b;J[g+3724>>2]=d;H[g+3732|0]=(ak(J[e+4>>2],48205,0)|0)!=0;a=ak(J[e+4>>2],52227,0);J[n>>2]=c;H[g+3734|0]=(a|0)!=0;a=J[79488];if(a){a=J[a+16>>2]}else{a=-1}a=a-1|0;if(a>>>0>=5){break q}J[g+3680>>2]=a;H[g+3740|0]=((ak(J[e+4>>2],9151,0)|0)!=0)<<3;if(J[g+3680>>2]==1){a=ak(J[e+4>>2],13242,33);H[g+3741|0]=K[g+3741|0]&128|a&127;a=ak(J[e+4>>2],13271,1);H[g+3741|0]=K[g+3741|0]&127|((a|0)!=0)<<7}a=0;if(!J[83763]){a=ij(nj(92),0,92);J[218830]=0;J[218831]=0;J[218838]=0;J[218839]=0;J[218846]=0;J[218847]=0;J[218844]=0;J[218845]=1;J[218852]=0;J[218853]=2;J[218854]=0;J[218855]=0;J[218836]=0;J[218837]=0;J[218834]=0;J[218835]=0;J[218832]=0;J[218833]=0;J[218831]=6;J[218839]=6;J[218840]=0;J[218841]=0;J[218842]=0;J[218843]=0;J[218847]=6;J[218848]=0;J[218849]=0;J[218850]=0;J[218851]=0;J[218856]=0;J[218857]=0;J[218858]=0;J[218859]=0;J[218861]=3;J[218860]=0;J[218855]=6;J[218866]=0;J[218867]=0;J[218864]=0;J[218865]=0;J[218862]=0;J[218863]=0;J[218869]=4;J[218868]=0;J[218863]=6;J[218874]=0;J[218875]=0;J[218872]=0;J[218873]=0;J[218870]=0;J[218871]=0;J[218877]=5;J[218876]=0;J[218871]=6;J[218882]=0;J[218883]=0;J[218880]=0;J[218881]=0;J[218878]=0;J[218879]=0;J[218885]=6;J[218884]=0;J[218879]=6;J[218890]=0;J[218891]=0;J[218888]=0;J[218889]=0;J[218886]=0;J[218887]=0;J[218893]=7;J[218892]=0;J[218887]=6;J[218898]=0;J[218899]=0;J[218896]=0;J[218897]=0;J[218894]=0;J[218895]=0;J[218901]=8;J[218900]=0;J[218895]=6;J[218906]=0;J[218907]=0;J[218904]=0;J[218905]=0;J[218902]=0;J[218903]=0;J[218909]=9;J[218908]=0;J[218903]=6;J[218914]=0;J[218915]=0;J[218912]=0;J[218913]=0;J[218910]=0;J[218911]=0;J[218917]=10;J[218916]=0;J[218911]=6;Nb()|0;Gb(2317)|0;J[83763]=a}J[e+8>>2]=a;b=g+3680|0;d=-2;X:{if(H[a+89|0]&1){break X}d=-1;Y:{Z:{_:{$:{switch(J[b>>2]-1|0){case 0:if(K[b+54|0]==1){sa(131097,1)}sa(131098,196609);sa(131091,J[b+44>>2]);if(!(_a(J[b+36>>2],J[b+40>>2],8,8,8,K[b+60|0],32,8,(K[b+52|0]?65538:65537)|0)|0)){break X}c=1536;break _;case 1:case 3:break $;default:break Y}}sa(131098,0);sa(131091,J[b+44>>2]);if(!(_a(J[b+36>>2],J[b+40>>2],8,8,8,8,32,8,(K[b+52|0]?65538:65537)|0)|0)){break X}if(J[b>>2]!=4){break Z}c=1024}I[a+88>>1]=c|L[a+88>>1]}Fb(J[b+56>>2]);Ab(1441);Eb(1442);Db(1443);Cb(1444);Ib(1445)|0;Za(1);$a(a+80|0,a+84|0);if(!(Kb(1446)|0)){dj(5,91680,122318,0)}if(!(Hb(1447)|0)){dj(5,91680,122277,0)}if(!(Jb(1448)|0)){dj(5,91680,122352,0)}J[a>>2]=J[b+4>>2];J[a+4>>2]=J[b+8>>2];J[a+8>>2]=J[b+12>>2];J[a+12>>2]=J[b+16>>2];J[a+16>>2]=J[b+20>>2];J[a+20>>2]=J[b+24>>2];J[a+24>>2]=J[b+28>>2];J[a+28>>2]=J[b+32>>2];c=L[a+88>>1]&-2049|K[b+54|0]<<11;I[a+88>>1]=c;I[a+88>>1]=K[b+44|0]|c&65024|256;d=0;break X}Z(114101,37255,285,6591);B()}aa:{if(d){J[g+128>>2]=d;dj(5,95703,132127,g+128|0);j=0;break aa}d=ak(J[e+4>>2],81772,1);k=ak(J[e+4>>2],50054,1);H[g+600|0]=1;J[g+568>>2]=110065;J[e+220>>2]=HC();a=g+532|0;J[a+24>>2]=0;J[a+28>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+32>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=5;J[a+12>>2]=2;J[a+28>>2]=1;c=nn(J[e+4>>2],33622,36243);b=2;ba:{if(!jj(c,36243)){break ba}b=1;if(!jj(c,9852)){break ba}b=3;if(!jj(c,9815)){break ba}b=4;if(!jj(c,36207)){break ba}b=5;if(!jj(c,9838)){break ba}b=jj(c,36229)?-1:6}J[a+8>>2]=b;J[a+12>>2]=jj(nn(J[e+4>>2],33658,36243),36243)?1:2;j=K[a+32|0]&-2|f;H[a+32|0]=j;b=4;if(!i){b=((ak(J[e+4>>2],81727,0)|0)!=0)<<2;j=K[a+32|0]}j=j&-5|b;H[a+32|0]=j;b=8;if(!h){b=((ak(J[e+4>>2],19075,0)|0)!=0)<<3;j=K[a+32|0]}H[a+32|0]=j&247|b;j=0;J[a+24>>2]=ak(J[e+4>>2],58639,0)<<20;J[a>>2]=J[e+8>>2];J[a+16>>2]=J[e+476>>2];J[a+20>>2]=J[e+480>>2];H[a+32|0]=ak(J[e+4>>2],44289,0)<<1&2|K[a+32|0]&253;b=J[e+220>>2];c=d?k:0;J[a+28>>2]=c;J[a+4>>2]=b;a=Zi[J[79377]](a)|0;J[e+224>>2]=a;if(!a){dj(5,95703,115077,0);break aa}VR(e,c);G=Zi[J[79382]](J[e+224>>2])|0;a=J[(Zi[J[79381]](J[e+224>>2])|0)+80>>2];b=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2];N[e+488>>2]=Q(1)/Q(a>>>0);N[e+492>>2]=Q(1)/Q(b>>>0);J[e+472>>2]=ak(J[e+4>>2],3803,60);N[e+496>>2]=fn(J[e+4>>2],43457,Q(.5));J[78501]=b;J[78500]=a;J[e+468>>2]=ak(J[e+4>>2],3833,0);b=ak(J[e+4>>2],J[55821],1024);a=g+1656|0;J[a>>2]=0;J[a+4>>2]=0;a=g+1648|0;J[a>>2]=0;J[a+4>>2]=0;J[g+1640>>2]=0;J[g+1644>>2]=0;a=g+1632|0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a>>2]=1024;J[a+48>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+12>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[g+1636>>2]=0;J[g+1632>>2]=b;ca:{if(!K[269788]){break ca}J[g+1636>>2]=1;if(!ak(J[e+4>>2],68058,1)){break ca}J[g+1636>>2]=J[g+1636>>2]|4}if(!(!ak(J[e+4>>2],75143,1)|!ak(J[e+4>>2],10350,1))){J[g+1636>>2]=J[g+1636>>2]|8}t=nn(J[e+4>>2],52158,g+7072|0);J[g+112>>2]=t;dj(2,95703,29085,g+112|0);o=g+1632|0;c=Ui-1248|0;Ui=c;J[c+1240>>2]=0;J[c+1244>>2]=0;a=Cq(69783,c+1240|0);da:{if(a){J[c+164>>2]=a;J[c+160>>2]=69783;dj(5,96538,140221,c+160|0);break da}j=nj(8432);f=16;while(1){a=f+j|0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+80>>2]=0;J[a+84>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+96>>2]=0;J[a+100>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;b=a- -64|0;J[b>>2]=0;J[b+4>>2]=0;J[a+72>>2]=0;J[a+76>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+104>>2]=0;J[a+108>>2]=0;J[a+112>>2]=0;J[a+116>>2]=0;J[a+120>>2]=0;J[a+124>>2]=0;J[a+128>>2]=0;J[a+132>>2]=0;J[a+136>>2]=0;J[a+140>>2]=0;J[a+36>>2]=-1;J[a+84>>2]=-1;J[a+176>>2]=0;J[a+180>>2]=0;J[a+144>>2]=0;J[a+148>>2]=0;J[a+132>>2]=-1;J[a+152>>2]=0;J[a+156>>2]=0;J[a+160>>2]=0;J[a+164>>2]=0;J[a+168>>2]=0;J[a+172>>2]=0;J[a+184>>2]=0;J[a+188>>2]=0;J[a+180>>2]=-1;f=f+192|0;if((f|0)!=6160){continue}break}l=ij(j,0,8432);a=l;b=J[c+1244>>2];J[a+6192>>2]=J[c+1240>>2];J[a+6196>>2]=b;a=a+6200|0;if(ep(t,a)){J[c+144>>2]=t;dj(4,96538,29107,c+144|0);Eo(J[c+1240>>2],J[c+1244>>2]);ea:{if(H[l+8404|0]&1){break ea}a=J[l+8392>>2];if(!a){break ea}cj(a)}fa:{if(H[l+6184|0]&1){break fa}a=J[l+6172>>2];if(!a){break fa}cj(a)}cj(l);j=0;break da}J[l+8408>>2]=0;H[c+1236|0]=1;J[c+1204>>2]=76429;J[l+8420>>2]=HC();b=l+6340|0;f=l+6208|0;ga:{ha:{if(Wj(a,36507,5)){break ha}d=bo(bj(36507),Yi);if(!d){break ha}if(!(Zi[J[d+8>>2]](a)|0)){break ha}d=Nn(d,a,0,c+1200|0);if(!d){h=36507;k=223296;break ga}J[c+140>>2]=b;J[c+136>>2]=f;J[c+132>>2]=a;J[c+128>>2]=d;dj(4,96538,25981,c+128|0)}ia:{if(Wj(a,19811,6)){break ia}d=bo(bj(36507),Yi);if(!d){break ia}if(!(Zi[J[d+8>>2]](a)|0)){break ia}d=Nn(d,a,0,c+1200|0);if(!d){h=36507;k=223308;break ga}J[c+124>>2]=b;J[c+120>>2]=f;J[c+116>>2]=a;J[c+112>>2]=d;dj(4,96538,25981,c+112|0)}ja:{if((K[a|0]|K[a+1|0]<<8|(K[a+2|0]<<16|K[a+3|0]<<24))!=1751347809|(K[a+4|0]|K[a+5|0]<<8|(K[a+6|0]<<16|K[a+7|0]<<24))!=6649449){break ja}d=bo(bj(60730),Yi);if(!d){break ja}if(!(Zi[J[d+8>>2]](a)|0)){break ja}d=Nn(d,a,0,c+1200|0);if(!d){h=60730;k=223320;break ga}J[c+108>>2]=b;J[c+104>>2]=f;J[c+100>>2]=a;J[c+96>>2]=d;dj(4,96538,25981,c+96|0)}ka:{if(Wj(a,57616,7)){break ka}d=bo(bj(60730),Yi);if(!d){break ka}if(!(Zi[J[d+8>>2]](a)|0)){break ka}d=Nn(d,a,0,c+1200|0);if(!d){h=60730;k=223332;break ga}J[c+92>>2]=b;J[c+88>>2]=f;J[c+84>>2]=a;J[c+80>>2]=d;dj(4,96538,25981,c+80|0)}la:{if(Wj(a,66717,5)){break la}d=bo(bj(66717),Yi);if(!d){break la}if(!(Zi[J[d+8>>2]](a)|0)){break la}d=Nn(d,a,0,c+1200|0);if(!d){h=66717;k=223344;break ga}J[c+76>>2]=b;J[c+72>>2]=f;J[c+68>>2]=a;J[c+64>>2]=d;dj(4,96538,25981,c- -64|0)}J[c>>2]=t;dj(3,96538,27147,c);SK(l);Eo(J[c+1240>>2],J[c+1244>>2]);j=0;break da}f=J[l+8408>>2];if(!f){d=J[c+1200>>2];f=nj(56);a=f;J[a+32>>2]=0;J[a+36>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;a=a+8|0;J[a>>2]=0;J[a+4>>2]=0;J[f+36>>2]=-1;lj(2,16,f,a,f+4|0);a=Co();J[f+48>>2]=d;J[f+52>>2]=a;J[l+8408>>2]=f}or(f,62686,J[c+1200>>2],-10,0);if(!jj(60730,h)){J[l+8416>>2]=J[c+1200>>2]}ma:{if(K[k+8|0]!=1){break ma}f=yj(b);a=c-(f+16&-16)|0;Ui=a;ek(a,b,f+1|0);b=ul(a,47);na:{if(b){H[b|0]=0;break na}H[a|0]=0}b=a;a=c+176|0;cm(b,J[55820],a,1024);if(!_k(a)){break ma}J[l+8388>>2]=Gk(a)}a=J[l+8416>>2];oa:{if(!a){break oa}if(K[o+4|0]&8){b=J[J[a>>2]+20>>2];if(b){a=Zi[b|0](J[a+4>>2],c+1200|0)|0}else{a=-1}if(a){break oa}a=c+176|0;if(PK(J[c+1200>>2],a)){break oa}u=J[l+8408>>2];k=Ui-3280|0;Ui=k;b=a;a=k- -64|0;cm(b,J[55861],a,1024);if(_k(a)){D=J[u+52>>2];Tj(D);J[k+56>>2]=0;J[k+60>>2]=0;J[k+48>>2]=0;J[k+52>>2]=0;q=k+48|0;d=Ui-2208|0;Ui=d;pa:{v=ol(a,82700);qa:{if(!v){J[d>>2]=a;dj(4,96538,27498,d);h=-9;break qa}a=d+144|0;ij(a,0,2048);h=-19;ra:{if(!xs(a,2048,v)){break ra}z=q+8|0;x=q+4|0;E=-1;while(1){a=fp(d+144|0,J[55862],d+2200|0);sa:{if(!a){break sa}b=0;s=-1e3;i=-1;f=0;m=0;ta:{ua:{while(1){va:{wa:{if(!m){if(!Bm(a,91447)){break wa}i=0;break va}if(!((m|0)!=1|i)){J[d+64>>2]=d+2204;if((Lt(a,80444,d- -64|0)|0)==1){s=J[d+2204>>2];i=0;break va}J[d+52>>2]=a;J[d+48>>2]=91326;dj(4,96538,147475,d+48|0);break ua}A=(i|0)!=1;if(!(A|(m|0)!=1)){J[d+96>>2]=d+2204;if((Lt(a,80444,d+96|0)|0)==1){s=J[d+2204>>2];i=1;break va}J[d+84>>2]=a;J[d+80>>2]=85049;dj(4,96538,147475,d+80|0);break ua}xa:{if((m|0)!=2|A){break xa}n=yj(a);ya:{if(!n){break ya}f=a-1|0;while(1){F=H[f+n|0];if(!((F|0)==32|F-9>>>0<5)){break ya}n=n-1|0;H[n+a|0]=0;if(n){continue}break}}f=a;if(K[a|0]){break xa}J[d+116>>2]=a;J[d+112>>2]=95769;dj(4,96538,147523,d+112|0);break ua}if((m|0)!=3|A){break va}n=yj(a);za:{if(!n){break za}b=a-1|0;while(1){i=H[b+n|0];if(!((i|0)==32|i-9>>>0<5)){break za}n=n-1|0;H[n+a|0]=0;if(n){continue}break}}if(K[a|0]){i=1;b=a;break va}J[d+132>>2]=a;J[d+128>>2]=93389;dj(4,96538,147523,d+128|0);break ua}i=Bm(a,86865)?1:i}m=m+1|0;a=fp(0,J[55862],d+2200|0);if(a){continue}break}if(!i&(m|0)!=2){break ua}if((m|0)==4|(i|0)!=1){break ta}}J[d+16>>2]=d+144;dj(4,96538,149407,d+16|0);break sa}Aa:{switch(i|0){case 0:E=1;if((s|0)==1){break sa}J[d+36>>2]=s;J[d+32>>2]=1;dj(4,96538,77409,d+32|0);break ra;case 1:break Aa;default:break sa}}a=J[x>>2];m=J[z>>2];if((a|0)==(m|0)){if(H[q+12|0]&1){break h}lj(((a-J[q>>2]|0)/12|0)+8|0,12,q,z,x);m=J[q+8>>2];a=J[q+4>>2]}f=Gk(f);b=Gk(b);if((a|0)==(m|0)){break p}J[x>>2]=a+12;J[a+8>>2]=s;J[a+4>>2]=b;J[a>>2]=f}if(xs(d+144|0,2048,v)){continue}break}h=(E|0)!=1?-19:0}vk(v)}Ui=d+2208|0;break pa}Ba:{if(h){dj(4,96538,66521,0);break Ba}a=J[k+52>>2];b=J[k+48>>2];if((a|0)!=(b|0)){a=(a-b|0)/12|0;h=a>>>0<=1?1:a;a=0;while(1){b=J[k+48>>2];if((J[k+52>>2]-b|0)/12>>>0<=a>>>0){break o}b=b+P(a,12)|0;f=J[b>>2];m=J[b+8>>2];b=J[b+4>>2];d=k+1092|0;ep(b,d);i=bo(bj(d),Yi);Ca:{if(!i){J[k+4>>2]=b;J[k>>2]=d;dj(4,96538,145618,k);break Ca}if(!(Zi[J[i+8>>2]](k+1092|0)|0)){J[k+32>>2]=b;dj(4,96538,147746,k+32|0);break Ca}d=Nn(i,k+1092|0,J[u+48>>2],k+1088|0);if(d){J[k+24>>2]=d;J[k+20>>2]=b;J[k+16>>2]=f;dj(4,96538,80307,k+16|0);break Ca}or(u,f,J[k+1088>>2],m,1)}a=a+1|0;if((h|0)!=(a|0)){continue}break}}BK(k+48|0)}Da:{if(H[k+60|0]&1){break Da}a=J[k+48>>2];if(!a){break Da}cj(a)}Lj(D)}Ui=k+3280|0;break oa}dj(2,96538,129383,0)}J[c+48>>2]=t;dj(0,96538,154705,c+48|0);J[l+6160>>2]=0;b=J[o>>2];a=nj(32);J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+20>>2]=-1;J[l>>2]=a;h=a;a=P(b,3)>>>2|0;f=a>>>0<=1?1:a;DN(h,f,b);a=nj(32);J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+20>>2]=-1;J[l+4>>2]=a;NC(a,f,J[o>>2]);Ea:{if(H[o+4|0]&1){a=nj(32);J[a+16>>2]=0;J[a+20>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+20>>2]=-1;J[l+8>>2]=a;zN(a,f,J[o>>2]);a=nj(16);J[a>>2]=0;J[a+4>>2]=0;b=a+8|0;J[b>>2]=0;J[b+4>>2]=0;J[l+12>>2]=a;lj(256,8,a,b,a+4|0);break Ea}J[l+8>>2]=0;J[l+12>>2]=0}J[l+8412>>2]=0;b=J[o+28>>2];Fa:{if(!b){break Fa}k=J[o+12>>2];if(!k){break Fa}m=J[o+20>>2];if(!m){break Fa}J[c+176>>2]=0;f=J[o+24>>2];h=J[o+8>>2];o=J[o+16>>2];d=Ui-16|0;Ui=d;a=nj(2228);i=a+2212|0;J[i>>2]=0;J[i+4>>2]=0;J[a+2188>>2]=0;J[a+2192>>2]=0;i=a+2220|0;J[i>>2]=0;J[i+4>>2]=0;i=a+2204|0;J[i>>2]=0;J[i+4>>2]=0;i=a+2196|0;J[i>>2]=0;J[i+4>>2]=0;J[a+2216>>2]=-1;i=b;a=ij(a,0,2188);b=a+2188|0;f=Qu(f,i,b);Ga:{if(f){J[d>>2]=f;dj(4,96538,8757,d);b=J[b>>2];if(b){co(b)}if(J[a+2192>>2]){Ms(a+2192|0)}Ha:{if(H[a+2224|0]&1){break Ha}b=J[a+2204>>2];if(b){cj(b)}b=J[a+2196>>2];if(!b){break Ha}cj(b)}cj(a);b=-4;break Ga}i=J[b>>2];f=Ui-16|0;Ui=f;b=nj(24);J[b>>2]=0;J[b+4>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[i>>2]=b;H[b+20|0]=1;i=J[h>>2];i=i<<24|(i&65280)<<8|(i>>>8&65280|i>>>24);Ia:{if((i|0)!=5){J[f+4>>2]=i;J[f>>2]=5;dj(4,96538,77677,f);i=-1;break Ia}i=ij(nj(1048),0,1048);J[b+8>>2]=i;H[i+1044|0]=1;J[i+1040>>2]=m;J[i+1036>>2]=o;J[b+16>>2]=k;J[b+4>>2]=h;i=0}Ui=f+16|0;b=-3;if(i){break Ga}J[a+2192>>2]=J[J[a+2188>>2]>>2];vK(a);J[c+176>>2]=a;b=0}Ui=d+16|0;if(b){J[c+32>>2]=b;J[c+176>>2]=0;dj(4,96538,79147,c+32|0);break Fa}b=bo(bj(60730),Yi);f=J[c+176>>2];a=nj(2196);ij(a+8|0,0,2188);J[a+4>>2]=f;J[a>>2]=b;J[l+8412>>2]=a;or(J[l+8408>>2],47722,J[l+8412>>2],-5,0)}J[l+6164>>2]=Co()}Ui=c+1248|0;J[e+300>>2]=j;if(!j){j=0;break aa}J[84548]=0;J[g+524>>2]=J[e+300>>2];a=J[e+4>>2];J[g+520>>2]=a;J[g+528>>2]=J[e+224>>2];o=ak(a,61354,0);a=DB(g+520|0);m=e+400|0;Ja:{if(o){J[e+284>>2]=a;ox(a);a=J[e+284>>2];J[e+296>>2]=a;J[e+292>>2]=a;J[e+288>>2]=a;tE(m,1);a=e+284|0;break Ja}J[e+288>>2]=a;ox(a);a=g+520|0;c=DB(a);J[e+292>>2]=c;ox(c);a=DB(a);J[e+296>>2]=a;ox(a);tE(m,3);uE(m,e+288|0);uE(m,e+292|0);a=e+296|0}uE(m,a);J[g+512>>2]=256;J[g+516>>2]=0;J[g+504>>2]=49152;J[g+508>>2]=768;J[g+496>>2]=16;J[g+500>>2]=32;J[g+488>>2]=1065353216;J[g+492>>2]=128;H[g+516|0]=1;J[g+484>>2]=14272;H[g+516|0]=0;J[g+484>>2]=14272;k=J[e+4>>2];b=0;l=Ui-32|0;Ui=l;J[l+28>>2]=0;J[l+20>>2]=6;J[l+24>>2]=J[g+508>>2];J[l+8>>2]=0;J[l+12>>2]=0;h=J[g+484>>2];i=-11;Ka:{La:{a=J[245447];Ma:{if(!a){break Ma}while(1){if(jj(J[a>>2],h)){a=J[a+36>>2];if(a){continue}break Ma}break}i=Zi[J[a+4>>2]](l+20|0,l+28|0)|0;if(!i){break La}h=J[g+484>>2]}J[l>>2]=h;dj(4,96825,148968,l);J[l+8>>2]=44100;break Ka}Zi[J[a+24>>2]](J[l+28>>2],l+8|0);i=0;b=a}p=N[g+488>>2];c=ij(nj(33968),0,33968);a=c;J[a+92>>2]=0;J[a+96>>2]=0;J[a+20>>2]=0;J[a+24>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+76>>2]=0;J[a+80>>2]=0;J[a+120>>2]=0;J[a+124>>2]=1065353216;J[a+1176>>2]=0;J[a+1180>>2]=1065353216;J[a+2232>>2]=0;J[a+2236>>2]=1065353216;J[a+3288>>2]=0;J[a+3292>>2]=1065353216;J[a+4344>>2]=0;J[a+4348>>2]=1065353216;J[a+5400>>2]=0;J[a+5404>>2]=1065353216;J[a+6456>>2]=0;J[a+6460>>2]=1065353216;J[a+7512>>2]=0;J[a+7516>>2]=1065353216;J[a+8568>>2]=0;J[a+8572>>2]=1065353216;J[a+9624>>2]=0;J[a+9628>>2]=1065353216;J[a+10680>>2]=0;J[a+10684>>2]=1065353216;J[a+11736>>2]=0;J[a+11740>>2]=1065353216;J[a+12792>>2]=0;J[a+12796>>2]=1065353216;J[a+13848>>2]=0;J[a+13852>>2]=1065353216;J[a+14904>>2]=0;J[a+14908>>2]=1065353216;J[a+15960>>2]=0;J[a+15964>>2]=1065353216;J[a+17016>>2]=0;J[a+17020>>2]=1065353216;J[a+18072>>2]=0;J[a+18076>>2]=1065353216;J[a+19128>>2]=0;J[a+19132>>2]=1065353216;J[a+20184>>2]=0;J[a+20188>>2]=1065353216;J[a+21240>>2]=0;J[a+21244>>2]=1065353216;J[a+22296>>2]=0;J[a+22300>>2]=1065353216;J[a+23352>>2]=0;J[a+23356>>2]=1065353216;J[a+24408>>2]=0;J[a+24412>>2]=1065353216;J[a+25464>>2]=0;J[a+25468>>2]=1065353216;J[a+26520>>2]=0;J[a+26524>>2]=1065353216;J[a+27576>>2]=0;J[a+27580>>2]=1065353216;J[a+28632>>2]=0;J[a+28636>>2]=1065353216;J[a+29688>>2]=0;J[a+29692>>2]=1065353216;J[a+30744>>2]=0;J[a+30748>>2]=1065353216;J[a+31800>>2]=0;J[a+31804>>2]=1065353216;J[a+32856>>2]=0;J[a+32860>>2]=1065353216;J[a+32864>>2]=1065353216;J[a+31808>>2]=1065353216;J[a+30752>>2]=1065353216;J[a+29696>>2]=1065353216;J[a+28640>>2]=1065353216;J[a+27584>>2]=1065353216;J[a+26528>>2]=1065353216;J[a+25472>>2]=1065353216;J[a+24416>>2]=1065353216;J[a+23360>>2]=1065353216;J[a+22304>>2]=1065353216;J[a+21248>>2]=1065353216;J[a+20192>>2]=1065353216;J[a+19136>>2]=1065353216;J[a+18080>>2]=1065353216;J[a+17024>>2]=1065353216;J[a+15968>>2]=1065353216;J[a+14912>>2]=1065353216;J[a+13856>>2]=1065353216;J[a+12800>>2]=1065353216;J[a+11744>>2]=1065353216;J[a+10688>>2]=1065353216;J[a+9632>>2]=1065353216;J[a+8576>>2]=1065353216;J[a+7520>>2]=1065353216;J[a+6464>>2]=1065353216;J[a+5408>>2]=1065353216;J[a+4352>>2]=1065353216;J[a+3296>>2]=1065353216;J[a+2240>>2]=1065353216;J[a+1184>>2]=1065353216;J[a+128>>2]=1065353216;J[a+36>>2]=0;J[a+40>>2]=0;J[a+28>>2]=0;J[a+32>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;a=a- -64|0;J[a>>2]=0;J[a+4>>2]=0;J[c+84>>2]=0;J[c+88>>2]=0;J[c+100>>2]=0;J[c+104>>2]=0;H[c+44|0]=K[c+44|0]&254;H[c+72|0]=K[c+72|0]&254;J[c+96>>2]=-1;J[245446]=c;H[c+33960|0]=1;I[c+33958>>1]=0;J[c+4>>2]=b;J[c+8>>2]=J[l+28>>2];J[l+4>>2]=J[g+512>>2];a=0;f=nj(28);b=f;J[b>>2]=0;J[b+4>>2]=0;H[b+24|0]=0;J[b+16>>2]=0;J[b+20>>2]=0;b=b+8|0;J[b>>2]=0;J[b+4>>2]=0;lj(J[l+4>>2],12,f,b,f+4|0);Na:{d=J[f>>2];h=(J[b>>2]-d|0)/12|0;b=J[l+4>>2];if(h>>>0>=b>>>0){J[f+4>>2]=d+P(b,12);if(!b){d=0;break Na}while(1){b=J[f>>2];if((J[f+4>>2]-b|0)/12>>>0<=a>>>0){break o}b=b+P(a,12)|0;J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;a=a+1|0;d=J[l+4>>2];if(a>>>0>>0){continue}break}break Na}break n}Oa:{b=L[f+20>>1];h=d&65535;if(b>>>0<=h>>>0){n=J[f+16>>2];a=sj(h<<1);J[f+16>>2]=a;j=hj(a,n,b<<1);I[f+20>>1]=d;Pa:{if(b>>>0>=h>>>0){break Pa}q=d-b&7;Qa:{if(!q){a=b;break Qa}d=0;a=b;while(1){I[j+(a<<1)>>1]=a;a=a+1|0;d=d+1|0;if((q|0)!=(d|0)){continue}break}}if(b-h>>>0>4294967288){break Pa}while(1){I[j+(a<<1)>>1]=a;b=a+1|0;I[j+(b<<1)>>1]=b;b=a+2|0;I[j+(b<<1)>>1]=b;b=a+3|0;I[j+(b<<1)>>1]=b;b=a+4|0;I[j+(b<<1)>>1]=b;b=a+5|0;I[j+(b<<1)>>1]=b;b=a+6|0;I[j+(b<<1)>>1]=b;b=a+7|0;I[j+(b<<1)>>1]=b;a=a+8|0;if((h|0)!=(a|0)){continue}break}}cj(n);break Oa}break m}J[c>>2]=f;j=J[g+512>>2];d=J[g+492>>2];if(k){a=J[g+496>>2];b=J[g+500>>2];p=pS(k,47899,Q(1));d=ak(k,83329,d);ak(k,19430,b);ak(k,24539,a);j=ak(k,24777,j)}J[c+33916>>2]=J[l+8>>2];a=J[l+12>>2];if(!a){a=J[g+508>>2]}J[c+33920>>2]=a;if(H[c+32|0]&1){break h}lj(j,64,c+20|0,c+28|0,c+24|0);a=J[c+20>>2];if(J[c+28>>2]-a>>6>>>0>>0){break n}J[c+24>>2]=a+(j<<6);b=L[c+40>>1];h=j&65535;if(b>>>0>h>>>0){break m}n=J[c+36>>2];a=sj(h<<1);J[c+36>>2]=a;f=hj(a,n,b<<1);I[c+40>>1]=j;Ra:{if(b>>>0>=h>>>0){break Ra}q=j-b&7;Sa:{if(!q){a=b;break Sa}k=0;a=b;while(1){I[f+(a<<1)>>1]=a;a=a+1|0;k=k+1|0;if((q|0)!=(k|0)){continue}break}}if(b-h>>>0>4294967288){break Ra}while(1){I[f+(a<<1)>>1]=a;b=a+1|0;I[f+(b<<1)>>1]=b;b=a+2|0;I[f+(b<<1)>>1]=b;b=a+3|0;I[f+(b<<1)>>1]=b;b=a+4|0;I[f+(b<<1)>>1]=b;b=a+5|0;I[f+(b<<1)>>1]=b;b=a+6|0;I[f+(b<<1)>>1]=b;b=a+7|0;I[f+(b<<1)>>1]=b;a=a+8|0;if((h|0)!=(a|0)){continue}break}}cj(n);Ta:{if(j){h=0;while(1){a=J[c+20>>2];if(J[c+24>>2]-a>>6>>>0<=h>>>0){break o}a=a+(h<<6)|0;J[a+56>>2]=0;J[a+60>>2]=0;J[a>>2]=0;J[a+4>>2]=0;J[a+48>>2]=0;J[a+52>>2]=0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=0;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[a+56>>2]=-1;J[a+4>>2]=sj(P(J[c+33920>>2],20)+4|0);J[a+40>>2]=1065353216;J[a+44>>2]=0;h=h+1|0;if((j|0)!=(h|0)){continue}break}}if(H[c+60|0]&1){break h}lj(d,40,c+48|0,c+56|0,c+52|0);a=J[c+48>>2];if((J[c+56>>2]-a|0)/40>>>0>>0){break n}J[c+52>>2]=a+P(d,40);b=L[c+68>>1];j=d&65535;if(b>>>0>j>>>0){break m}h=J[c+64>>2];a=sj(j<<1);J[c+64>>2]=a;f=hj(a,h,b<<1);I[c+68>>1]=d;Ua:{if(b>>>0>=j>>>0){break Ua}n=d-b&7;Va:{if(!n){a=b;break Va}k=0;a=b;while(1){I[f+(a<<1)>>1]=a;a=a+1|0;k=k+1|0;if((n|0)!=(k|0)){continue}break}}if(b-j>>>0>4294967288){break Ua}while(1){I[f+(a<<1)>>1]=a;b=a+1|0;I[f+(b<<1)>>1]=b;b=a+2|0;I[f+(b<<1)>>1]=b;b=a+3|0;I[f+(b<<1)>>1]=b;b=a+4|0;I[f+(b<<1)>>1]=b;b=a+5|0;I[f+(b<<1)>>1]=b;b=a+6|0;I[f+(b<<1)>>1]=b;b=a+7|0;I[f+(b<<1)>>1]=b;a=a+8|0;if((j|0)!=(a|0)){continue}break}}cj(h);if(d){b=J[c+48>>2];f=(J[c+52>>2]-b|0)/40|0;a=0;while(1){if((a|0)==(f|0)){break o}I[(b+P(a,40)|0)+24>>1]=65535;a=a+1|0;if((d|0)!=(a|0)){continue}break}}a=J[c+33920>>2]<<2;J[c+33932>>2]=sj(a);J[c+33936>>2]=sj(a);J[c+33940>>2]=sj(a);J[c+33944>>2]=sj(a);J[c+33948>>2]=sj(a);a=sj(a);I[c+33956>>1]=0;J[c+33952>>2]=a;Tx(c+76|0,65,32);a=ij(c+112|0,0,33792)+P(sB(33461),1056)|0;N[a+16>>2]=p;N[a+12>>2]=p;J[a+8>>2]=0;J[c+33904>>2]=1;J[c+33908>>2]=0;J[c+33912>>2]=-14;J[c+12>>2]=0;J[c+16>>2]=0;if(K[g+516|0]){J[c+16>>2]=Co();e=Ui-48|0;Ui=e;a=I[108174];Wa:{if(!a){J[245744]=28;b=-1;break Wa}Xa:{Ya:{if((a|0)>-2){break Ya}b=200809;Za:{switch((a&255)-1|0){case 1:b=131072;break Wa;case 2:b=32768;break Wa;case 3:b=65536;break Wa;case 4:case 10:b=2147483647;break Wa;case 5:case 6:b=1;break Wa;case 7:case 8:b=gi()>>>16|0;break Wa;case 0:break Xa;case 9:break Za;default:break Ya}}b=0;break Wa}b=a}}a=Ui-48|0;Ui=a;g=a+4|0;ij(g,0,44);g=hj(e+4|0,g,44);J[g>>2]=J[72058];J[g+4>>2]=J[72059];Ui=a+48|0;_a:{a=(b|0)==-1?4096:b;a=P((524288/(a>>>0)|0)+1|0,a);if(a-1073743872>>>0>=3221225472){J[e+4>>2]=a;J[e+12>>2]=0;a=0}else{a=28}if(!a){a=nj(12);J[a>>2]=2500;b=Gk(70934);J[a+8>>2]=c;J[a+4>>2]=b;break _a}Z(112887,37050,68,6786);B()}Z(112887,37050,78,6786);B()}Ui=l+32|0;break Ta}$a:{if(!i){J[g+96>>2]=J[g+484>>2];dj(2,95703,148995,g+96|0);break $a}dj(3,95703,121382,0)}b=ak(J[e+4>>2],J[54658],1024);ab:{a=J[e+156>>2];if(a){if(b-32766>>>0>=4294934531){J[a+29100>>2]=b;a=0}else{a=-7}break ab}Z(111247,38296,252,2168);B()}if(a){J[g+84>>2]=b;J[g+88>>2]=a;J[g+80>>2]=J[54658];dj(5,95703,139963,g+80|0);j=0;break aa}a=J[e+156>>2];b=ak(J[e+4>>2],J[54659],16);if(!a){Z(111247,38296,267,2226);B()}J[a+29104>>2]=b;J[g+608>>2]=0;J[g+612>>2]=0;J[g+652>>2]=1024;J[g+656>>2]=0;J[g+640>>2]=0;J[g+644>>2]=0;J[g+632>>2]=0;J[g+636>>2]=0;J[g+624>>2]=0;J[g+628>>2]=0;J[g+616>>2]=0;J[g+620>>2]=0;J[g+624>>2]=16;a=ak(J[e+4>>2],20684,1024);J[g+632>>2]=32;J[g+628>>2]=a;a=ak(J[e+4>>2],19149,8192);J[g+652>>2]=1024;J[g+644>>2]=a;a=J[e+292>>2];J[g+656>>2]=0;J[g+608>>2]=a;J[g+648>>2]=ak(J[e+4>>2],23834,128);f=J[e+224>>2];b=nj(2512);rr(b);rr(b+352|0);rr(b+704|0);rr(b+1056|0);a=b+1992|0;J[a>>2]=0;J[a+4>>2]=0;a=b+1984|0;J[a>>2]=0;J[a+4>>2]=0;a=b+1976|0;J[a>>2]=0;J[a+4>>2]=0;J[b+1968>>2]=0;J[b+1972>>2]=0;J[b+2032>>2]=0;J[b+2036>>2]=0;a=b+2040|0;J[a>>2]=0;J[a+4>>2]=0;a=b+2048|0;J[a>>2]=0;J[a+4>>2]=0;a=b+2056|0;J[a>>2]=0;J[a+4>>2]=0;a=b+2080|0;J[a>>2]=0;J[a+4>>2]=0;d=b+2096|0;c=d;J[c>>2]=0;J[c+4>>2]=0;J[b+2088>>2]=0;J[b+2092>>2]=0;J[b+2232>>2]=0;J[b+2236>>2]=0;c=b+2240|0;J[c>>2]=0;J[c+4>>2]=0;c=b+2248|0;J[c>>2]=0;J[c+4>>2]=0;c=b+2256|0;J[c>>2]=0;J[c+4>>2]=0;ij(b+2112|0,0,112);J[b+2264>>2]=0;J[b+2268>>2]=0;J[b+2252>>2]=-1;c=b+2270|0;I[c>>1]=0;I[c+2>>1]=0;I[c+4>>1]=0;I[c+6>>1]=0;lj(J[g+628>>2],4,b+2088|0,d,b+2092|0);J[b+2480>>2]=f;J[b+2092>>2]=J[b+2088>>2];J[b+2284>>2]=J[g+612>>2];c=b+2364|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2356>>2]=0;J[b+2360>>2]=0;J[b+2372>>2]=1065353216;J[b+2348>>2]=1065353216;J[b+2352>>2]=1065353216;J[b+2376>>2]=0;J[b+2380>>2]=0;c=b+2384|0;J[c>>2]=0;J[c+4>>2]=0;c=b+2340|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2332>>2]=0;J[b+2336>>2]=0;J[b+2328>>2]=1065353216;c=b+2320|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2312>>2]=0;J[b+2316>>2]=0;J[b+2392>>2]=1065353216;J[b+2308>>2]=1065353216;c=b+2300|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2280>>2]=0;J[b+2292>>2]=0;J[b+2296>>2]=0;J[b+2288>>2]=1065353216;J[b+2484>>2]=0;c=b+2404|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2396>>2]=0;J[b+2400>>2]=0;J[b+2412>>2]=1065353216;J[b+2416>>2]=1065353216;J[b+2420>>2]=0;J[b+2424>>2]=0;c=b+2428|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2436>>2]=1065353216;J[b+2440>>2]=0;J[b+2444>>2]=0;c=b+2448|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2456>>2]=1065353216;J[b+2460>>2]=0;J[b+2464>>2]=0;c=b+2468|0;J[c>>2]=0;J[c+4>>2]=0;J[b+2476>>2]=1065353216;d=J[g+608>>2];J[b+2076>>2]=d;J[a+4>>2]=J[g+652>>2];c=a;a=d?J[d+124>>2]:0;J[c>>2]=a;c=J[a+8>>2]-J[a+12>>2]>>4;vm(a,10533,172940,248112);J[84364]=vm(a,70318,172948,248144);J[84365]=vm(a,35081,172956,248224);J[84366]=vm(a,62257,172964,248272);vm(a,4010,172956,248304);uk(a,35504,248336);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86582);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86563);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86599);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96949);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96690);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92319);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96626);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101384);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93443);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92488);if(Zi[J[79453]](f,2)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99362)}if(Zi[J[79453]](f,22)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=22;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94619)}if(Zi[J[79453]](f,23)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=23;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94705)}if(Zi[J[79453]](f,24)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=24;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94641)}if(Zi[J[79453]](f,25)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=25;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94727)}if(Zi[J[79453]](f,26)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=26;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94578)}if(Zi[J[79453]](f,27)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=27;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94598)}if(Zi[J[79453]](f,28)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=28;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94664)}if(Zi[J[79453]](f,29)|0){d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=29;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,94684)}d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90612);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86624);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90402);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96286);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88423);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88403);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90979);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95524);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90157);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90108);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89905);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89856);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101252);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101203);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,100956);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,100907);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=10;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95016);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=11;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90018);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=12;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89959);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=13;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101069);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=14;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,101010);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90212);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88827);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92711);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90244);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92731);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92670);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92689);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88466);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90828);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90963);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96671);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90545);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90866);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90561);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90887);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86773);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87235);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93200);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93235);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87782);d=J[a+8>>2];J[d+8>>2]=3;O[d>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,88016);if(kp(f,0)){f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87975);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87934);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87893)}f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=16;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87842);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87799);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,89182);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,92345);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87881);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86464);f=J[a+8>>2];J[f+8>>2]=3;O[f>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,97465);gj(a,-2);if(J[a+8>>2]-J[a+12>>2]>>4!=(c|0)){Z(143244,37616,3176,9205);B()}c=Ui-32|0;Ui=c;f=c+12|0;a=J[g+608>>2];if(a){a=J[a+124>>2]}else{a=0}f=pj(f,a,0,42776,282);uk(a,83957,248672);gj(a,-2);if(J[84392]){Z(111001,42776,288,9266);B()}J[84392]=b;oj(f);Ui=c+32|0;a=CB(J[b+2076>>2]);J[b+2108>>2]=0;J[b+2104>>2]=a;J[b+1936>>2]=0;i=J[g+616>>2];bb:{if(!i){break bb}f=J[g+636>>2];if(!f){break bb}h=J[g+620>>2];if(!h){break bb}d=J[g+640>>2];if(!d){break bb}a=Ui-416|0;Ui=a;j=J[g+656>>2];J[b+1948>>2]=j;J[b+1936>>2]=b;J[b+1940>>2]=Zi[J[79391]](J[b+2480>>2],j<<7,0,0);c=Fq();xm(c,45222,4,0);xm(c,32861,4,0);J[b+1944>>2]=Zi[J[79404]](J[b+2480>>2],c);ll(c);k=-1;cb:{if(!f){f=-1;break cb}c=dk(i,f,243144,a+412|0,0);if(c){J[a+16>>2]=c;dj(3,90423,140783,a+16|0);f=-1;break cb}f=fP(J[b+2480>>2],J[a+412>>2],0,0);Uj(J[a+412>>2]);if(!d|(f|0)==-1){break cb}c=dk(h,d,243144,a+412|0,0);if(c){J[a>>2]=c;dj(3,90423,140833,a);break cb}k=gP(J[b+2480>>2],J[a+412>>2],0,0);Uj(J[a+412>>2])}d=j<<5;c=gC(b,f,k);Dx(c,bj(52059),Yi,1);J[a+400>>2]=bj(76515);J[a+404>>2]=Yi;eC(c,1,a+400|0);f=gC(b,f,k);Dx(f,bj(52059),Yi,1);J[a+392>>2]=bj(76566);J[a+396>>2]=Yi;eC(f,1,a+392|0);J[a+380>>2]=f;J[a+376>>2]=f;J[a+372>>2]=c;J[a+368>>2]=c;j=a+176|0;f=0;while(1){c=f<<2;i=J[c+172768>>2];h=rr(a+32|0);J[a+272>>2]=i;J[a+204>>2]=J[c+(a+368|0)>>2];J[a+176>>2]=J[b+1940>>2];J[a+188>>2]=J[b+1944>>2];J[a+344>>2]=0;c=b+P(f,352)|0;J[c>>2]=J[h>>2];N[c+16>>2]=N[a+48>>2];N[c+20>>2]=N[a+52>>2];N[c+24>>2]=N[a+56>>2];N[c+28>>2]=N[a+60>>2];N[c+32>>2]=N[a+64>>2];N[c+36>>2]=N[a+68>>2];N[c+40>>2]=N[a+72>>2];N[c+44>>2]=N[a+76>>2];N[c+48>>2]=N[a+80>>2];N[c+52>>2]=N[a+84>>2];N[c+56>>2]=N[a+88>>2];N[c+60>>2]=N[a+92>>2];N[c+64>>2]=N[a+96>>2];N[c+68>>2]=N[a+100>>2];N[c+72>>2]=N[a+104>>2];N[c+76>>2]=N[a+108>>2];N[c+80>>2]=N[a+112>>2];N[c+84>>2]=N[a+116>>2];N[c+88>>2]=N[a+120>>2];N[c+92>>2]=N[a+124>>2];N[c+96>>2]=N[a+128>>2];N[c+100>>2]=N[a+132>>2];N[c+104>>2]=N[a+136>>2];N[c+108>>2]=N[a+140>>2];N[c+112>>2]=N[a+144>>2];N[c+116>>2]=N[a+148>>2];N[c+120>>2]=N[a+152>>2];N[c+124>>2]=N[a+156>>2];N[c+128>>2]=N[a+160>>2];N[c+132>>2]=N[a+164>>2];N[c+136>>2]=N[a+168>>2];N[c+140>>2]=N[a+172>>2];hj(c+144|0,j,177);J[c+336>>2]=nj(d);f=f+1|0;if((f|0)!=4){continue}break}c=bj(76515);J[b+1664>>2]=1;J[b+1408>>2]=c;J[b+1412>>2]=Yi;c=bj(76566);J[b+1952>>2]=0;J[b+1928>>2]=1;J[b+1672>>2]=c;J[b+1676>>2]=Yi;Ui=a+416|0}f=J[g+644>>2];d=J[g+648>>2];a=Ui-352|0;Ui=a;J[b+2012>>2]=nj(4);J[b+2024>>2]=P(f,6);J[b+2072>>2]=-1;J[b+2028>>2]=0;J[b+2020>>2]=0;J[b+2004>>2]=0;J[b+2064>>2]=0;J[b+2068>>2]=0;j=P(J[b+2024>>2],112);c=fo(b+2004|0,16,j);db:{if(c){J[a+4>>2]=c;J[a>>2]=j;dj(4,90423,132155,a);break db}i=J[b+2480>>2];c=Fq();xm(c,45222,4,0);xm(c,111479,2,0);xm(c,32839,4,1);xm(c,32825,4,1);xm(c,32780,4,1);xm(c,20435,4,0);xm(c,50656,3,0);i=Zi[J[79405]](i,c,112)|0;ll(c);J[b+2008>>2]=i;J[b+2e3>>2]=Zi[J[79391]](J[b+2480>>2],j,0,0);if(H[b+1996|0]&1){break h}i=b+1992|0;j=b+1988|0;lj(d,4,b+1984|0,i,j);if(H[b+1980|0]&1){break h}h=b+1968|0;k=b+1976|0;l=b+1972|0;lj(d,336,h,k,l);J[b+2016>>2]=0;if(H[b+2044|0]&1){break h}lj(f,1,b+2032|0,b+2040|0,b+2036|0);if(H[b+2060|0]&1){break h}lj(f>>>3|0,288,b+2048|0,b+2056|0,b+2052|0);if(J[b+1976>>2]==J[b+1968>>2]){break db}f=a+160|0;d=0;while(1){n=rr(a+16|0);J[a+264>>2]=6;J[a+268>>2]=7;H[a+336|0]=K[a+336|0]|1;J[a+160>>2]=J[b+2e3>>2];c=J[b+2008>>2];J[a+256>>2]=1;J[a+172>>2]=c;c=J[b+1972>>2];if((c|0)==J[b+1976>>2]){break p}J[l>>2]=c+336;J[c>>2]=J[n>>2];N[c+16>>2]=N[a+32>>2];N[c+20>>2]=N[a+36>>2];N[c+24>>2]=N[a+40>>2];N[c+28>>2]=N[a+44>>2];N[c+32>>2]=N[a+48>>2];N[c+36>>2]=N[a+52>>2];N[c+40>>2]=N[a+56>>2];N[c+44>>2]=N[a+60>>2];N[c+48>>2]=N[a+64>>2];N[c+52>>2]=N[a+68>>2];N[c+56>>2]=N[a+72>>2];N[c+60>>2]=N[a+76>>2];N[c+64>>2]=N[a+80>>2];N[c+68>>2]=N[a+84>>2];N[c+72>>2]=N[a+88>>2];N[c+76>>2]=N[a+92>>2];N[c+80>>2]=N[a+96>>2];N[c+84>>2]=N[a+100>>2];N[c+88>>2]=N[a+104>>2];N[c+92>>2]=N[a+108>>2];N[c+96>>2]=N[a+112>>2];N[c+100>>2]=N[a+116>>2];N[c+104>>2]=N[a+120>>2];N[c+108>>2]=N[a+124>>2];N[c+112>>2]=N[a+128>>2];N[c+116>>2]=N[a+132>>2];N[c+120>>2]=N[a+136>>2];N[c+124>>2]=N[a+140>>2];N[c+128>>2]=N[a+144>>2];N[c+132>>2]=N[a+148>>2];N[c+136>>2]=N[a+152>>2];N[c+140>>2]=N[a+156>>2];hj(c+144|0,f,177);n=Fx();c=J[j>>2];if((c|0)==J[i>>2]){break p}J[j>>2]=c+4;J[c>>2]=n;d=d+1|0;if(d>>>0<(J[k>>2]-J[h>>2]|0)/336>>>0){continue}break}}Ui=a+352|0;H[b+2504|0]=K[b+2504|0]&232;a=J[79488];if(a){a=J[a+16>>2]}else{a=-1}if(a-3>>>0<=2){H[b+2504|0]=K[b+2504|0]|4}eb:{fb:{if(!(H[b+2140|0]&1)){lj(255,12,b+2128|0,b+2136|0,b+2132|0);rb(b|0,1624);if(Cq(J[62018],b+2496|0)){break fb}break eb}break h}Z(92912,40146,153,9235);B()}J[e+228>>2]=b;a=J[e+288>>2];J[74196]=J[e+156>>2];a=a?J[a+124>>2]:0;b=J[a+8>>2]-J[a+12>>2]|0;J[74198]=vm(a,10655,158976,218688);J[74197]=vm(a,70378,158984,218720);uk(a,44098,218800);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95566);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96757);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96802);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93944);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96735);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96779);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93921);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=0;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90699);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=1;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98128);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=2;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98096);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=3;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98111);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=4;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98142);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=5;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99078);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=6;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99044);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=7;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99060);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=8;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99093);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=9;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86825);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=10;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86791);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=11;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86807);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=12;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,86840);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=13;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87280);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=14;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87246);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=15;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87262);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=16;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,87295);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=17;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95659);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=18;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95627);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=19;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95642);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=20;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,95673);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=21;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91022);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=22;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,90990);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=23;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91005);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=24;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,91036);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=25;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98938);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=26;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98906);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=27;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98921);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=28;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98952);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=29;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99007);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=30;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98969);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=31;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,98987);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=32;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,99024);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=33;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93287);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=34;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93255);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=35;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93270);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=36;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,93301);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=37;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96583);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=38;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96547);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=39;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96564);c=J[a+8>>2];J[c+8>>2]=3;O[c>>3]=40;J[a+8>>2]=J[a+8>>2]+16;ej(a,-2,96599);gj(a,-2);if(b>>4!=J[a+8>>2]-J[a+12>>2]>>4){Z(143244,37509,2269,10588);B()}J[e+256>>2]=J[e+300>>2];J[e+260>>2]=J[e+228>>2];J[e+264>>2]=ak(J[e+4>>2],J[65014],64);J[e+276>>2]=ak(J[e+4>>2],J[65015],64);J[e+272>>2]=ak(J[e+4>>2],J[65016],1024);a=ak(J[e+4>>2],J[65017],1024);H[e+280|0]=0;J[e+268>>2]=a;J[g+472>>2]=J[e+420>>2];N[g+476>>2]=fn(J[e+4>>2],4134,Q(.5));N[g+480>>2]=fn(J[e+4>>2],50008,Q(.20000000298023224));if(!K[864596]){J[216020]=312;J[216018]=310;J[216019]=311;J[216016]=308;J[216017]=309;J[216014]=306;J[216015]=307;J[216012]=304;J[216013]=305;J[216010]=302;J[216011]=303;J[216008]=300;J[216009]=301;J[216006]=298;J[216007]=299;J[216004]=296;J[216005]=297;J[216002]=294;J[216003]=295;J[216e3]=292;J[216001]=293;J[215998]=290;J[215999]=291;J[215996]=288;J[215997]=289;J[215994]=286;J[215995]=287;J[215992]=284;J[215993]=285;J[215990]=282;J[215991]=283;J[215988]=280;J[215989]=281;J[215986]=278;J[215987]=279;J[215984]=276;J[215985]=277;J[215982]=274;J[215983]=275;J[215980]=272;J[215981]=273;J[215978]=270;J[215979]=271;J[215976]=268;J[215977]=269;J[215974]=266;J[215975]=267;J[215972]=264;J[215973]=265;J[215970]=262;J[215971]=263;J[215968]=260;J[215969]=261;J[215966]=258;J[215967]=259;J[215964]=256;J[215965]=257;J[215962]=125;J[215963]=126;J[215960]=123;J[215961]=124;J[215958]=95;J[215959]=96;J[215956]=93;J[215957]=94;J[215954]=91;J[215955]=92;J[215952]=89;J[215953]=90;J[215950]=87;J[215951]=88;J[215948]=85;J[215949]=86;J[215946]=83;J[215947]=84;J[215944]=81;J[215945]=82;J[215942]=79;J[215943]=80;J[215940]=77;J[215941]=78;J[215938]=75;J[215939]=76;J[215936]=73;J[215937]=74;J[215934]=71;J[215935]=72;J[215932]=69;J[215933]=70;J[215930]=67;J[215931]=68;J[215928]=65;J[215929]=66;J[215926]=63;J[215927]=64;J[215924]=61;J[215925]=62;J[215922]=59;J[215923]=60;J[215920]=57;J[215921]=58;J[215918]=55;J[215919]=56;J[215916]=53;J[215917]=54;J[215914]=51;J[215915]=52;J[215912]=49;J[215913]=50;J[215910]=47;J[215911]=48;J[215908]=45;J[215909]=46;J[215906]=43;J[215907]=44;J[215904]=41;J[215905]=42;J[215902]=39;J[215903]=40;J[215900]=36;J[215901]=38;J[215898]=34;J[215899]=35;J[215896]=32;J[215897]=33;J[216036]=7;J[216034]=5;J[216035]=6;J[216032]=3;J[216033]=4;J[216030]=1;J[216031]=2;J[216028]=2;J[216029]=0;J[216026]=0;J[216027]=1;H[864596]=1}b=nj(92);ij(b+4|0,0,88);J[b+56>>2]=0;J[b+60>>2]=0;J[b+40>>2]=0;J[b+44>>2]=0;J[b+28>>2]=-1;J[b+48>>2]=0;J[b+52>>2]=0;a=b- -64|0;J[a>>2]=0;J[a+4>>2]=0;J[b+60>>2]=-1;a=sj(16);H[b+4|0]=16;J[b>>2]=a;H[a+8|0]=8;H[a+9|0]=9;H[a+10|0]=10;H[a+11|0]=11;H[a+12|0]=12;H[a+13|0]=13;H[a+14|0]=14;H[a+15|0]=15;H[a|0]=0;H[a+1|0]=1;H[a+2|0]=2;H[a+3|0]=3;H[a+4|0]=4;H[a+5|0]=5;H[a+6|0]=6;H[a+7|0]=7;KN(b+40|0,7,16);J[b+72>>2]=J[g+472>>2];N[b+80>>2]=N[g+476>>2];p=N[g+480>>2];J[b+88>>2]=1063675494;N[b+84>>2]=p;J[e+424>>2]=b;a=J[e+420>>2];J[a+3468>>2]=b;J[a+3464>>2]=6;J[J[e+420>>2]>>2]=Zi[J[79381]](J[e+224>>2]);d=Ui-32|0;Ui=d;gb:{hb:{b=J[e+420>>2];ib:{if(!b){break ib}a=J[b>>2];if(!a){dj(5,97141,128627,0);break ib}J[a+36>>2]=b;J[a+32>>2]=2127;a=J[b>>2];J[a+44>>2]=b;J[a+40>>2]=2128;a=J[b>>2];J[a+52>>2]=b;J[a+48>>2]=2129;if(J[b+3476>>2]){break hb}a=nj(16);J[a>>2]=0;J[a+4>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;J[b+3476>>2]=a;ij(b+4|0,0,2368);H[b+2368|0]=255;H[b+2220|0]=255;H[b+2072|0]=255;H[b+1924|0]=255;H[b+1776|0]=255;H[b+1628|0]=255;H[b+1480|0]=255;H[b+1332|0]=255;H[b+1184|0]=255;H[b+1036|0]=255;H[b+888|0]=255;H[b+740|0]=255;H[b+592|0]=255;H[b+444|0]=255;H[b+296|0]=255;H[b+148|0]=255;f=nj(40);a=f;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=2121;J[a+12>>2]=2122;J[a+8>>2]=2123;J[a+4>>2]=2124;J[a>>2]=2125;J[a+32>>2]=0;J[a+36>>2]=0;if(J[215872]){Z(112951,37287,396,85781);B()}J[215872]=f;J[f+20>>2]=b;c=J[b+3476>>2];jb:{if(!(Zi[J[f>>2]](b,f)|0)){J[d+16>>2]=85818;dj(4,97141,147072,d+16|0);break jb}j=c+4|0;h=J[c+4>>2];a=J[c+8>>2];if((h|0)==(a|0)){if(H[c+12|0]&1){break h}lj((h-J[c>>2]>>2)+1|0,4,c,c+8|0,j);h=J[c+4>>2];a=J[c+8>>2]}if((a|0)==(h|0)){break p}J[j>>2]=h+4;J[h>>2]=f;J[d>>2]=85818;dj(0,97141,147113,d);Zi[J[f+12>>2]](b,f)}}Ui=d+32|0;break gb}Z(113166,41200,185,14320);B()}if(y){Ss(3,1,0)}a=Cq(48819,e+312|0);if(a){J[g+68>>2]=a;J[g+64>>2]=48819;dj(5,95703,140181,g- -64|0);j=0;break aa}if((ak(J[e+4>>2],11695,-1)|0)!=-1){dj(3,95703,116928,0)}J[g+428>>2]=0;J[g+432>>2]=0;J[g+468>>2]=360;J[g+460>>2]=0;J[g+464>>2]=0;J[g+444>>2]=0;J[g+448>>2]=0;J[g+436>>2]=0;J[g+440>>2]=0;J[g+452>>2]=640;J[g+456>>2]=960;J[g+428>>2]=J[e+296>>2];a=J[e+420>>2];J[g+448>>2]=7;J[g+444>>2]=8;J[g+440>>2]=9;J[g+436>>2]=10;J[g+432>>2]=a;a=J[(Zi[J[79381]](J[e+224>>2])|0)+80>>2];J[g+456>>2]=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2];J[g+452>>2]=a;J[g+460>>2]=J[e+476>>2];a=J[e+480>>2];J[g+468>>2]=G;J[g+464>>2]=a;a=nj(196);b=ij(a+40|0,0,156);J[a>>2]=sO(J[g+428>>2]);J[a+4>>2]=J[g+436>>2];J[a+8>>2]=J[g+440>>2];J[a+12>>2]=J[g+444>>2];J[a+16>>2]=J[g+448>>2];J[a+28>>2]=J[g+460>>2];J[a+32>>2]=J[g+464>>2];J[a+20>>2]=J[g+452>>2];J[a+24>>2]=J[g+456>>2];J[a+36>>2]=J[g+468>>2];J[a+168>>2]=J[g+432>>2];lj(32,4,b,a+48|0,a+44|0);if(H[a+164|0]&1){break h}lj(32,4,a+152|0,a+160|0,a+156|0);J[e+304>>2]=a;a=g+2656|0;J[a+40>>2]=0;J[a+44>>2]=0;J[a+32>>2]=1065353216;J[a+36>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=4;J[a+20>>2]=1065353216;J[a+8>>2]=0;J[a>>2]=0;J[a+4>>2]=-1054867456;H[a+48|0]=K[a+48|0]&254;J[a+16>>2]=ak(J[e+4>>2],11718,4);b=nn(J[e+4>>2],64012,98802);N[a>>2]=fn(J[e+4>>2],5814,Q(0));N[a+4>>2]=fn(J[e+4>>2],4198,Q(-10));N[a+8>>2]=fn(J[e+4>>2],1128,Q(0));N[a+20>>2]=fn(J[e+4>>2],67977,Q(1));J[a+36>>2]=ak(J[e+4>>2],76579,64);J[a+40>>2]=ak(J[e+4>>2],76524,128);J[a+44>>2]=ak(J[e+4>>2],2007,16);N[a+32>>2]=fn(J[e+4>>2],71975,Q(1));p=Q(.009999999776482582);w=N[a+20>>2];kb:{if(!(wQ(1))){break kb}J[g+56>>2]=0;J[g+60>>2]=1072693248;J[g+48>>2]=1073741824;J[g+52>>2]=1065646817;dj(3,95703,129237,g+48|0);w=N[a+20>>2];if(!(wQ(1))){break kb}}N[a+20>>2]=p}N[a+24>>2]=fn(J[e+4>>2],14325,Q(0));c=ak(J[e+4>>2],20316,1);H[a+48|0]=K[a+48|0]&254|(c|0)!=0;lb:{if(!Cn(b,98516)){H[e+249|0]=1;c=Ui-32|0;Ui=c;mb:{p=N[a+20>>2];nb:{ob:{if(pQ(1)){J[c+8>>2]=0;J[c+12>>2]=1072693248;J[c>>2]=1073741824;J[c+4>>2]=1065646817;dj(5,89293,123381,c);break ob}b=nj(104);J[b>>2]=0;J[b+4>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b+40>>2]=1065353216;J[b+28>>2]=1065353216;J[b+32>>2]=1065353216;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+80>>2]=0;J[b+84>>2]=0;J[b+72>>2]=1065353216;J[b+76>>2]=1065353216;J[b+64>>2]=0;J[b+68>>2]=0;J[b+52>>2]=0;J[b+56>>2]=0;J[b+44>>2]=0;J[b+48>>2]=-1054867456;J[b+88>>2]=0;J[b+92>>2]=0;H[b+96|0]=K[b+96|0]&254;w=N[a>>2];R=N[a+4>>2];T=N[a+8>>2];p=N[a+20>>2];J[b+56>>2]=0;N[b+52>>2]=p*T;N[b+48>>2]=p*R;N[b+44>>2]=p*w;if(H[b+12|0]&1){break h}lj(J[a+16>>2],4,b,b+8|0,b+4|0);p=N[a+20>>2];N[b+72>>2]=p;N[b+76>>2]=Q(1)/p;N[b+80>>2]=p*N[a+24>>2];N[b+84>>2]=p*N[a+28>>2];J[b+88>>2]=J[a+40>>2];J[b+92>>2]=J[a+44>>2];H[b+96|0]=K[b+96|0]&254|H[a+48|0]&1;if(!Cq(J[60922],b- -64|0)){break nb}J[c+16>>2]=J[60922];dj(5,89293,134008,c+16|0);gM(b)}b=0}Ui=c+32|0;break mb}J[e+232>>2]=b;break lb}if(!Cn(b,98802)){H[e+249|0]=0;J[e+232>>2]=XL(a);break lb}J[g+32>>2]=b;dj(3,95703,98759,g+32|0);H[e+249|0]=0;J[e+232>>2]=XL(a)}J[e+240>>2]=ak(J[e+4>>2],J[56053],128);J[e+236>>2]=ak(J[e+4>>2],J[56054],64);J[e+244>>2]=ak(J[e+4>>2],J[56055],128);j=0;H[e+250|0]=(ak(J[e+4>>2],J[56056],1)|0)!=0;J[e+252>>2]=ak(J[e+4>>2],J[56057],2);H[e+248|0]=(ak(J[e+4>>2],55906,0)|0)!=0;J[e+320>>2]=J[e+228>>2];J[e+324>>2]=ak(J[e+4>>2],11009,128);a=ak(J[e+4>>2],20789,1);J[e+364>>2]=J[e+228>>2];J[e+368>>2]=J[e+300>>2];H[e+328|0]=K[e+328|0]&254|a&1;J[e+372>>2]=ak(J[e+4>>2],10948,128);J[e+376>>2]=J[e+228>>2];J[e+380>>2]=ak(J[e+4>>2],10964,64);a=ak(J[e+4>>2],20773,1);J[e+388>>2]=J[e+228>>2];H[e+384|0]=K[e+384|0]&254|a&1;J[e+392>>2]=ak(J[e+4>>2],10930,16);J[e+396>>2]=ak(J[e+4>>2],11580,2048);J[e+332>>2]=J[e+300>>2];J[e+336>>2]=ak(J[e+4>>2],J[56052],8);J[e+348>>2]=ak(J[e+4>>2],J[56058],128);J[e+340>>2]=J[e+300>>2];J[e+360>>2]=ak(J[e+4>>2],J[56051],128);J[e+352>>2]=J[e+300>>2];a=J[e+(o?284:288)>>2];J[e+344>>2]=a;J[e+356>>2]=a;J[g+400>>2]=0;J[g+404>>2]=0;J[g+408>>2]=0;J[g+412>>2]=0;J[g+392>>2]=0;J[g+396>>2]=0;J[g+384>>2]=0;J[g+388>>2]=0;J[g+404>>2]=-1;UR(e,g+368|0);c=g+336|0;a=c;J[a>>2]=0;J[a+4>>2]=0;J[a+24>>2]=0;J[a+28>>2]=0;J[a+16>>2]=0;J[a+20>>2]=0;J[a+8>>2]=0;J[a+12>>2]=0;x=vo(88937);a=bj(81723);J[g+9136>>2]=J[e+156>>2];b=e+180|0;f=a;a=g+9136|0;pl(b,f,Yi,a);f=bj(82169);J[g+9136>>2]=J[e+156>>2];pl(b,f,Yi,a);f=bj(82508);J[g+9136>>2]=m;pl(b,f,Yi,a);f=bj(80659);J[g+9136>>2]=J[e+288>>2];pl(b,f,Yi,a);if(J[e+304>>2]){f=bj(80655);J[g+9136>>2]=J[e+296>>2];pl(b,f,Yi,a);f=bj(82235);J[g+9136>>2]=J[e+304>>2];pl(b,f,Yi,a)}i=J[e+300>>2];f=0;a=Ui-32|0;Ui=a;d=J[74548];pb:{if(!d){break pb}while(1){f=J[b+24>>2];if((f|0)==J[b+16>>2]-J[b+8>>2]>>4){f=f+8|0;Rp(b,f>>>1|0,f)}J[a+28>>2]=b;J[a+24>>2]=i;h=J[d>>2];f=Ui-16|0;Ui=f;k=J[i+6160>>2];qb:{if((k|0)==128){k=0;dj(4,96538,153586,0);break qb}if(ul(h,46)){J[f>>2]=h;dj(4,96538,148216,f);k=0;break qb}J[i+6160>>2]=k+1;h=i+P(k,48)|0;k=h+16|0;OV(k);H[h+56|0]=K[i+6160|0]-1}Ui=f+16|0;f=J[d>>2];J[k+8>>2]=f;J[k>>2]=bj(f);J[k+4>>2]=Yi;f=Zi[J[d+4>>2]](a+24|0,k)|0;if(f){d=J[d>>2];b=f+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+20>>2]=b;J[a+16>>2]=d;dj(4,96538,31302,a+16|0);break pb}f=Ui-16|0;Ui=f;l=J[k+8>>2];h=148216;rb:{sb:{if(ul(l,46)){break sb}h=148158;if(!J[k+20>>2]){break sb}h=0;if(J[k+28>>2]){break rb}h=148158}J[f>>2]=l;dj(4,96538,h,f);h=-6}Ui=f+16|0;if(h){f=J[i+6160>>2];if(((i+P(f,48)|0)-32|0)!=(k|0)){Z(84943,42212,478,64672);B()}J[i+6160>>2]=f-1;h=148087}else{h=148284}J[a>>2]=J[d>>2];f=0;dj(0,96538,h,a);d=J[d+12>>2];if(d){continue}break}}Ui=a+32|0;tb:{if(f){break tb}k=J[e+424>>2];l=e+232|0;f=Ui-16|0;Ui=f;i=J[e+228>>2];b=J[i+2480>>2];h=80447;d=J[e+300>>2];a=hl(d,80447,0,0,329,0,328,327);ub:{vb:{if(a){break vb}h=80935;a=hl(d,80935,l,0,332,0,331,330);if(a){break vb}h=82458;a=hl(d,82458,l,0,335,0,334,333);if(a){break vb}h=80483;a=hl(d,80483,0,339,338,0,337,336);if(a){break vb}h=82442;a=hl(d,82442,b,344,343,342,341,340);if(a){break vb}h=81695;a=hl(d,81695,b,348,347,0,346,345);if(a){break vb}h=81699;a=hl(d,81699,b,352,351,0,350,349);if(a){break vb}h=80731;a=hl(d,80731,i,356,355,0,354,353);if(a){break vb}h=81654;a=hl(d,81654,b,360,359,0,358,357);if(a){break vb}h=82329;a=hl(d,82329,b,364,363,0,362,361);if(a){break vb}h=82198;a=hl(d,82198,b,368,367,0,366,365);if(a){break vb}h=82213;a=hl(d,82213,i,372,371,0,370,369);if(a){break vb}h=82374;a=hl(d,82374,i,376,375,0,374,373);if(a){break vb}h=81703;a=hl(d,81703,b,380,379,0,378,377);if(a){break vb}h=82223;a=hl(d,82223,0,384,383,0,382,381);if(a){break vb}h=82481;a=hl(d,82481,0,388,387,0,386,385);if(a){break vb}h=82513;a=hl(d,82513,0,0,391,0,390,389);if(a){break vb}h=82347;a=hl(d,82347,k,0,394,0,393,392);if(a){break vb}h=81633;a=hl(d,81633,0,0,397,0,396,395);if(a){break vb}h=80474;a=hl(d,80474,0,401,400,0,399,398);if(a){break vb}h=80464;a=hl(d,80464,0,405,404,0,403,402);if(a){break vb}h=82205;a=hl(d,82205,0,409,408,0,407,406);if(a){break vb}h=80737;a=hl(d,80737,0,0,412,0,411,410);if(a){break vb}h=80640;a=hl(d,80640,i,0,415,0,414,413);if(a){break vb}h=80845;a=hl(d,80845,i,419,418,0,417,416);if(a){break vb}h=81687;a=hl(d,81687,i,0,422,0,421,420);if(a){break vb}h=82383;a=hl(d,82383,0,426,425,0,424,423);if(a){break vb}h=80832;a=hl(d,80832,l,430,429,0,428,427);if(a){break vb}h=81707;a=hl(d,81707,l,434,433,0,432,431);if(a){break vb}h=80822;a=hl(d,80822,0,438,437,0,436,435);if(a){break vb}h=82147;a=hl(d,82147,0,442,441,0,440,439);if(a){break vb}b=0;h=82471;a=hl(d,82471,0,446,445,0,444,443);if(a){break vb}h=81039;a=hl(d,81039,i,0,449,0,448,447);if(!a){break ub}}b=a+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[f+4>>2]=b;J[f>>2]=h;dj(5,88458,136501,f);b=a}Ui=f+16|0;if(b){break tb}h=J[e+300>>2];k=J[e+156>>2];m=J[e+228>>2];b=e+256|0;o=e+320|0;f=e+332|0;n=e+340|0;q=e+352|0;s=e+364|0;t=e+376|0;u=e+388|0;d=Ui-400|0;Ui=d;a=ij(d+280|0,0,112);i=am(h,80447,d+396|0);wb:{if(i){J[d+164>>2]=i;J[d+160>>2]=80447;dj(3,88458,141963,d+160|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=80447;i=J[d+396>>2];J[a+60>>2]=450;J[a+48>>2]=0;J[a+44>>2]=451;J[a+40>>2]=452;J[a+36>>2]=0;J[a+32>>2]=453;J[a+28>>2]=454;J[a+24>>2]=455;J[a+20>>2]=456;J[a+16>>2]=f;J[a>>2]=i;J[a+96>>2]=0;J[a+92>>2]=457;J[a+84>>2]=0;J[a+88>>2]=0;J[a+76>>2]=0;J[a+72>>2]=458;J[a+68>>2]=459;J[a+64>>2]=460;J[a+56>>2]=0;J[a+52>>2]=461;I[a+104>>1]=100;J[a+100>>2]=J[a+100>>2]&-196609|65536;f=ko(k,a);if(f){break wb}f=am(h,80935,d+396|0);if(f){J[d+148>>2]=f;J[d+144>>2]=80935;dj(3,88458,141963,d+144|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=80935;f=J[d+396>>2];J[a+60>>2]=0;J[a+48>>2]=462;J[a+44>>2]=463;J[a+40>>2]=464;J[a+36>>2]=0;J[a+32>>2]=465;J[a+28>>2]=466;J[a+24>>2]=467;J[a+20>>2]=468;J[a+16>>2]=l;J[a>>2]=f;J[a+96>>2]=469;J[a+92>>2]=0;J[a+88>>2]=470;J[a+84>>2]=471;J[a+76>>2]=472;J[a+72>>2]=0;J[a+68>>2]=473;J[a+64>>2]=474;J[a+56>>2]=475;J[a+52>>2]=476;I[a+104>>1]=400;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}f=am(h,82513,d+396|0);if(f){J[d+132>>2]=f;J[d+128>>2]=82513;dj(3,88458,141963,d+128|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=82513;f=J[d+396>>2];J[a+48>>2]=477;J[a+44>>2]=478;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=479;J[a+28>>2]=480;J[a+24>>2]=481;J[a+20>>2]=482;J[a+16>>2]=m;J[a>>2]=f;J[a+92>>2]=0;J[a+96>>2]=0;J[a+88>>2]=483;J[a+84>>2]=484;J[a+76>>2]=485;J[a+72>>2]=0;J[a+68>>2]=486;J[a+64>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=487;I[a+104>>1]=500;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}f=am(h,82198,d+396|0);if(f){J[d+116>>2]=f;J[d+112>>2]=82198;dj(3,88458,141963,d+112|0);f=-1e3;break wb}i=hj(a,ij(d+168|0,0,112),106);J[i+4>>2]=82198;a=J[d+396>>2];J[i+60>>2]=488;J[i+48>>2]=489;J[i+44>>2]=490;J[i+36>>2]=0;J[i+40>>2]=0;J[i+32>>2]=491;J[i+28>>2]=492;J[i+24>>2]=493;J[i+20>>2]=494;J[i+16>>2]=s;J[i>>2]=a;J[i+96>>2]=495;J[i+92>>2]=0;J[i+88>>2]=496;J[i+84>>2]=497;J[i+72>>2]=0;J[i+76>>2]=0;J[i+68>>2]=498;J[i+64>>2]=0;J[i+56>>2]=0;J[i+52>>2]=499;I[i+104>>1]=700;J[i+100>>2]=J[i+100>>2]&-196609|65536;f=ko(k,i);if(f){break wb}a=am(h,80483,d+396|0);if(a){J[d+100>>2]=a;J[d+96>>2]=80483;dj(3,88458,141963,d+96|0);f=-1e3;break wb}a=hj(i,ij(d+168|0,0,112),106);J[a+4>>2]=80483;f=J[d+396>>2];J[a+60>>2]=500;J[a+48>>2]=501;J[a+44>>2]=502;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=503;J[a+28>>2]=504;J[a+24>>2]=505;J[a+20>>2]=506;J[a+16>>2]=b;J[a>>2]=f;J[a+76>>2]=507;J[a+72>>2]=0;J[a+68>>2]=508;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=509;J[i+92>>2]=0;J[i+96>>2]=0;J[i+84>>2]=0;J[i+88>>2]=0;I[a+104>>1]=800;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,80474,d+396|0);if(b){J[d+84>>2]=b;J[d+80>>2]=80474;dj(3,88458,141963,d+80|0);f=-1e3;break wb}b=hj(a,ij(d+168|0,0,112),106);J[b+4>>2]=80474;f=J[d+396>>2];J[b+48>>2]=510;J[b+44>>2]=511;a=b;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=512;J[a+28>>2]=513;J[a+24>>2]=514;J[a+20>>2]=515;J[a+16>>2]=n;J[a>>2]=f;J[a+96>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+84>>2]=516;J[a+72>>2]=0;J[a+76>>2]=0;J[a+68>>2]=517;J[a+64>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=518;I[a+104>>1]=900;J[a+100>>2]=J[a+100>>2]&-196609|65536;f=ko(k,a);if(f){break wb}a=am(h,80464,d+396|0);if(a){J[d+68>>2]=a;J[d+64>>2]=80464;dj(3,88458,141963,d- -64|0);f=-1e3;break wb}a=hj(b,ij(d+168|0,0,112),106);J[a+4>>2]=80464;f=J[d+396>>2];J[a+48>>2]=0;J[a+44>>2]=519;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=520;J[a+28>>2]=521;J[a+24>>2]=522;J[a+20>>2]=523;J[a+16>>2]=q;J[a>>2]=f;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=524;b=b- -64|0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=0;J[b+4>>2]=0;J[a+96>>2]=0;J[a+88>>2]=0;J[a+92>>2]=0;J[a+84>>2]=525;I[a+104>>1]=950;J[a+100>>2]=J[a+100>>2]&-196609|65536;f=ko(k,a);if(f){break wb}b=am(h,80737,d+396|0);if(b){J[d+52>>2]=b;J[d+48>>2]=80737;dj(3,88458,141963,d+48|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=80737;b=J[d+396>>2];J[a+48>>2]=526;J[a+44>>2]=527;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=528;J[a+28>>2]=529;J[a+24>>2]=530;J[a+20>>2]=531;J[a+16>>2]=m;J[a>>2]=b;J[a+72>>2]=0;J[a+76>>2]=0;J[a+68>>2]=532;J[a+64>>2]=0;J[a+56>>2]=0;J[a+60>>2]=0;J[a+52>>2]=533;J[i+92>>2]=0;J[i+96>>2]=0;J[i+84>>2]=0;J[i+88>>2]=0;I[a+104>>1]=1e3;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,82383,d+396|0);if(b){J[d+36>>2]=b;J[d+32>>2]=82383;dj(3,88458,141963,d+32|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=82383;b=J[d+396>>2];J[a+60>>2]=534;J[a+48>>2]=535;J[a+44>>2]=536;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=537;J[a+28>>2]=538;J[a+24>>2]=539;J[a+20>>2]=540;J[a+16>>2]=o;J[a>>2]=b;J[a+96>>2]=541;J[a+92>>2]=0;J[a+88>>2]=542;J[a+84>>2]=543;J[a+76>>2]=544;J[a+72>>2]=0;J[a+68>>2]=545;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=546;I[a+104>>1]=1100;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,81707,d+396|0);if(b){J[d+20>>2]=b;J[d+16>>2]=81707;dj(3,88458,141963,d+16|0);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=81707;b=J[d+396>>2];J[a+60>>2]=547;J[a+48>>2]=548;J[a+44>>2]=549;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=550;J[a+28>>2]=551;J[a+24>>2]=552;J[a+20>>2]=553;J[a+16>>2]=u;J[a>>2]=b;J[a+96>>2]=554;J[a+92>>2]=0;J[a+88>>2]=555;J[a+84>>2]=556;J[a+76>>2]=557;J[a+72>>2]=0;J[a+68>>2]=558;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=559;I[a+104>>1]=1200;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a);if(f){break wb}b=am(h,82205,d+396|0);if(b){J[d+4>>2]=b;J[d>>2]=82205;dj(3,88458,141963,d);f=-1e3;break wb}a=hj(a,ij(d+168|0,0,112),106);J[a+4>>2]=82205;b=J[d+396>>2];J[a+60>>2]=560;J[a+48>>2]=561;J[a+44>>2]=562;J[a+36>>2]=0;J[a+40>>2]=0;J[a+32>>2]=563;J[a+28>>2]=564;J[a+24>>2]=565;J[a+20>>2]=566;J[a+16>>2]=t;J[a>>2]=b;J[a+96>>2]=567;J[a+92>>2]=0;J[a+88>>2]=568;J[a+84>>2]=569;J[a+76>>2]=570;J[a+72>>2]=0;J[a+68>>2]=571;J[a+64>>2]=0;J[a+56>>2]=0;J[a+52>>2]=572;I[a+104>>1]=1400;J[a+100>>2]=J[a+100>>2]|196608;f=ko(k,a)}Ui=d+400|0;if(f){break tb}d=g+368|0;a=Ui-144|0;Ui=a;b=J[73936];xb:{if(b){while(1){i=ij(a+32|0,0,112);f=am(J[d+4>>2],J[b+12>>2],a+28|0);if(f){d=J[b+12>>2];b=f+21|0;if(b>>>0>21){b=97515}else{b=J[(b<<2)+223356>>2]}J[a+20>>2]=b;J[a+16>>2]=d;dj(3,88293,31061,a+16|0);f=-1e3;break xb}J[a+24>>2]=0;if(My(J[d+8>>2],J[a+28>>2],a+24|0)){J[a>>2]=J[b+12>>2];dj(3,88293,154067,a)}I[a+132>>1]=J[J[d+8>>2]>>2];J[i>>2]=J[a+28>>2];f=J[b+12>>2];J[a+36>>2]=f;J[a+40>>2]=bj(f);J[a+44>>2]=Yi;J[a+132>>2]=J[a+132>>2]|65536;f=Zi[J[b+4>>2]](d,i)|0;if(f){break xb}f=ko(J[d+8>>2],i);if(f){break xb}I[b+16>>1]=J[a+132>>2];b=J[b>>2];if(b){continue}break}}f=0}Ui=a+144|0;if(f){break tb}m=J[e+4>>2];d=0;n=Ui-16|0;Ui=n;yb:{if(K[e+450|0]){break yb}if(!ak(m,20277,1)){break yb}a=J[e+300>>2];b=J[a+8412>>2];if(b){wK(J[a+8408>>2],b);wx(J[a+8412>>2]);J[a+8412>>2]=0}}a=nn(m,25555,0);zb:{if(a){if(wk(J[e+300>>2],a,n+12|0)){break zb}t=J[e+424>>2];b=0;h=0;a=Ui-368|0;Ui=a;Ab:{Bb:{Cb:{Db:{Eb:{Fb:{l=J[n+12>>2];f=J[l+4>>2];if(f){i=J[l>>2];while(1){h=!jj(82813,J[(i+P(b,20)|0)+4>>2])+h|0;b=b+1|0;if((f|0)!=(b|0)){continue}break}if(h){break Fb}}dj(2,86420,48404,0);break Eb}u=t+8|0;b=h+1|0;f=(b>>>0)/3|0;HN(u,f>>>0<=1?1:f,b);J[a+196>>2]=0;b=J[215892];J[a+192>>2]=b;ij(a+200|0,0,168);I[a+362>>1]=65535;I[a+356>>1]=65535;I[a+350>>1]=65535;I[a+344>>1]=65535;I[a+338>>1]=65535;I[a+332>>1]=65535;I[a+326>>1]=65535;I[a+320>>1]=65535;I[a+314>>1]=65535;I[a+308>>1]=65535;I[a+302>>1]=65535;I[a+296>>1]=65535;I[a+290>>1]=65535;I[a+284>>1]=65535;I[a+278>>1]=65535;I[a+272>>1]=65535;I[a+266>>1]=65535;I[a+260>>1]=65535;I[a+254>>1]=65535;I[a+248>>1]=65535;I[a+242>>1]=65535;I[a+236>>1]=65535;I[a+230>>1]=65535;I[a+224>>1]=65535;I[a+218>>1]=65535;I[a+212>>1]=65535;I[a+206>>1]=65535;I[a+200>>1]=65535;IN(u,b,a+192|0);if(!J[l+4>>2]){break Eb}y=a+24|0;i=0;while(1){f=P(i,20);o=f+J[l>>2]|0;Gb:{if(jj(82813,J[o+4>>2])){break Gb}q=bv(J[o>>2]);Hb:{b=J[t+12>>2];Ib:{if(!b){break Ib}b=J[J[u>>2]+((q>>>0)%(b>>>0)<<2)>>2];if((b|0)==-1){break Ib}h=J[t+16>>2];while(1){b=h+P(b,184)|0;if((q|0)==J[b>>2]){break Hb}b=J[b+180>>2];if((b|0)!=-1){continue}break}}p=N[o+8>>2];J[a+16>>2]=q;N[a+20>>2]=p;z=ij(y,0,168);I[a+186>>1]=65535;I[a+180>>1]=65535;I[a+174>>1]=65535;I[a+168>>1]=65535;I[a+162>>1]=65535;I[a+156>>1]=65535;I[a+150>>1]=65535;I[a+144>>1]=65535;I[a+138>>1]=65535;I[a+132>>1]=65535;I[a+126>>1]=65535;I[a+120>>1]=65535;I[a+114>>1]=65535;I[a+108>>1]=65535;I[a+102>>1]=65535;I[a+96>>1]=65535;I[a+90>>1]=65535;I[a+84>>1]=65535;I[a+78>>1]=65535;I[a+72>>1]=65535;I[a+66>>1]=65535;I[a+60>>1]=65535;I[a+54>>1]=65535;I[a+48>>1]=65535;I[a+42>>1]=65535;I[a+36>>1]=65535;I[a+30>>1]=65535;I[a+24>>1]=65535;b=J[o+16>>2];if(b){k=0;while(1){if(b>>>0<=k>>>0){break Db}f=J[o+12>>2]+P(k,24)|0;s=z+P(J[f>>2],6)|0;I[s>>1]=J[f+8>>2];v=K[s+4|0]&-4|K[f+4|0]&3;H[s+4|0]=v;if(J[f+4>>2]==2){I[s+2>>1]=J[f+20>>2]}h=J[f+16>>2];if(h){b=0;while(1){if(b>>>0>=h>>>0){break Cb}h=J[J[f+12>>2]+(b<<2)>>2];if(h>>>0<=2){v=1050628>>>(h<<3&16777208)|v;H[s+4|0]=v}b=b+1|0;h=J[f+16>>2];if(b>>>0>>0){continue}break}}b=J[o+16>>2];k=k+1|0;if(b>>>0>k>>>0){continue}break}}IN(u,q,a+16|0);break Gb}if(M[l+4>>2]<=i>>>0){break Bb}J[a>>2]=J[f+J[l>>2]>>2];dj(3,86420,129130,a)}i=i+1|0;if(i>>>0>2]){continue}break}}Ui=a+368|0;break Ab}Z(12664,54713,274,84789);B()}Z(12664,54713,255,84789);B()}Z(12664,54713,289,84789);B()}vj(J[e+300>>2],J[n+12>>2])}a=nn(m,57032,82335);if(wk(J[e+300>>2],a,e+428|0)){break zb}a=nn(m,35494,81662);if(wk(J[e+300>>2],a,e+436|0)){break zb}a=nn(m,22738,81014);d=!wk(J[e+300>>2],a,e+432|0)}Ui=n+16|0;if(!d){dj(4,95703,130897,0);break tb}J[J[e+304>>2]+172>>2]=J[e+432>>2];Zi[J[79388]](J[e+224>>2]);a=J[e+224>>2];b=J[(Zi[J[79381]](a)|0)+80>>2];V=a,W=0,X=0,Y=b,_=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2],U=J[79431],Zi[U](V|0,W|0,X|0,Y|0,_|0);a=J[e+484>>2];Zi[J[79390]](J[e+224>>2],1,a&255,a>>>8&255,a>>>16&255,a>>>24|0,Q(1),0);Zi[J[79389]](J[e+224>>2]);Zi[J[79388]](J[e+224>>2]);a=J[e+224>>2];b=J[(Zi[J[79381]](a)|0)+80>>2];_=a,Y=0,X=0,W=b,V=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2],U=J[79431],Zi[U](_|0,Y|0,X|0,W|0,V|0);a=J[e+484>>2];Zi[J[79390]](J[e+224>>2],1,a&255,a>>>8&255,a>>>16&255,a>>>24|0,Q(1),0);Zi[J[79389]](J[e+224>>2]);Zi[J[79388]](J[e+224>>2]);a=J[e+224>>2];b=J[(Zi[J[79381]](a)|0)+80>>2];V=a,W=0,X=0,Y=b,_=J[(Zi[J[79381]](J[e+224>>2])|0)+84>>2],U=J[79431],Zi[U](V|0,W|0,X|0,Y|0,_|0);a=J[e+484>>2];Zi[J[79390]](J[e+224>>2],1,a&255,a>>>8&255,a>>>16&255,a>>>24|0,Q(1),0);Zi[J[79389]](J[e+224>>2]);Jb:{a=J[e+436>>2];if(!a){break Jb}if((Ex(J[a+24>>2],0,0)|0)==1){break Jb}dj(5,95703,127485,0);break tb}J[c+4>>2]=J[e+300>>2];J[c+8>>2]=J[e+156>>2];J[c+12>>2]=J[e+420>>2];J[c+16>>2]=J[e+224>>2];J[c+20>>2]=J[e+220>>2];J[c+28>>2]=J[e+4>>2];a=J[e+284>>2];Kb:{if(a){J[c+24>>2]=a;J[c>>2]=a?J[a+124>>2]:0;if(ID(c)){break Kb}break tb}a=J[e+288>>2];J[c+24>>2]=a;J[c>>2]=a?J[a+124>>2]:0;if(!ID(c)){break tb}a=J[e+296>>2];J[c+24>>2]=a;J[c>>2]=a?J[a+124>>2]:0;if(!ID(c)){break tb}}a=Ui-32|0;Ui=a;Lb:{if(!ak(J[e+4>>2],75088,0)){break Lb}b=ak(J[e+4>>2],59034,0);Mb:{if(am(J[e+300>>2],82363,a+28|0)){J[a+16>>2]=82363;dj(3,95703,56758,a+16|0);break Mb}J[J[a+28>>2]+36>>2]=b}if(am(J[e+300>>2],80496,a+28|0)){J[a>>2]=80496;dj(3,95703,56758,a);break Lb}J[J[a+28>>2]+36>>2]=b}Ui=a+32|0;if(wk(J[e+300>>2],nn(J[e+4>>2],45767,82157),e+160|0)){break tb}pv(J[e+160>>2]);J[e+212>>2]=0;J[g+16>>2]=x?114106:158859;c=g+9136|0;Gj(c,512,76230,g+16|0);a=Ui-96|0;Ui=a;b=-2;if(!vG(c,a)){b=J[a+28>>2];J[g+312>>2]=J[a+24>>2];J[g+316>>2]=b;J[g+320>>2]=J[a+4>>2];J[g+324>>2]=J[a+40>>2];J[g+328>>2]=J[a+56>>2];b=0}Ui=a+96|0;if(!b){J[e+212>>2]=J[g+328>>2]}if(C){b=Gk(C);j=fp(b,135341,g+9136|0);if(j){d=0;while(1){Nb:{if(!am(J[e+300>>2],j,g+312|0)){c=J[g+312>>2];f=d&65535;a=J[e+156>>2];j=J[a>>2];Ob:{if(!j){break Ob}i=a+8|0;a=0;while(1){h=i+P(a,112)|0;if((c|0)!=J[h>>2]){a=a+1|0;if((j|0)!=(a|0)){continue}break Ob}break}I[h+104>>1]=f}d=d+1|0;break Nb}J[g>>2]=j;dj(4,95703,28723,g)}j=fp(0,135341,g+9136|0);if(j){continue}break}}cj(b)}a=Ui-16|0;Ui=a;c=J[e+156>>2];b=J[c>>2];J[a+12>>2]=c;c=c+28568|0;RF(c,c+(b<<1)|0,a+12|0,b?62-(S(b)<<1)|0:0,1);Ui=a+16|0;J[g+9136>>2]=J[e+4>>2];J[g+9140>>2]=J[e+300>>2];a=J[e+284>>2];Pb:{if(a){a=a?J[a+124>>2]:0;break Pb}a=J[e+288>>2];if(a){a=J[a+124>>2]}else{a=0}}J[g+9144>>2]=a;J[g+312>>2]=4;Py(g+9136|0,g+312|0);J[e+456>>2]=bl();J[e+460>>2]=Yi;j=1}Qb:{if(H[g+412|0]&1){break Qb}a=J[g+392>>2];if(a){cj(a)}a=J[g+384>>2];if(!a){break Qb}cj(a)}}}a=J[g+4984>>2];if(!a){break r}cj(a)}Ui=g+12208|0;break l}Z(114101,41740,599,93393);B()}Z(112520,53895,557,53220);B()}Z(145396,53895,487,84789);B()}Z(144782,53895,514,59583);B()}Z(2627,54340,112,2284);B()}if(j){return e|0}WR(e)}return 0}Z(151729,53895,501,2284);B()}function en(a,b,c,d,e,f,g,h,i,j,k,l,m){var n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,M=0,O=Q(0),T=Q(0),U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=Q(0),ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=Q(0),wa=0,xa=0,ya=0,za=0,Aa=0,Ba=0,Ca=0,Da=0,Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0,La=0,Ma=0,Na=0,Oa=0,Pa=Q(0),Qa=Q(0),Ra=0,Sa=0,Ta=0,Ua=0,Va=0,Wa=0,Xa=0,Ya=0,Za=0,_a=0,$a=0,ab=0,bb=0,cb=0,db=0,eb=0,fb=0,gb=0,hb=0,ib=0,jb=0,kb=0,lb=0,mb=Q(0),nb=Q(0),ob=Q(0),pb=Q(0),qb=Q(0),rb=Q(0),sb=Q(0),tb=Q(0),ub=Q(0),vb=0,wb=0,xb=0,yb=Q(0);w=Ui-256|0;Ui=w;a:{b:{c:{d:{e:{if(K[318177]){n=f-21|0;f:{if(j){break f}if(n>>>0<9){j=h;break f}j=b;if((f|0)!=15){break f}j=h+7>>>3|0;n=-6}if(P(b,c)<<4>>>0>e>>>0){break c}if((f&-2)==6){break d}if(!c){e=1;break b}e=1;if(!b){break b}if(!(1<>>0>30){break e}Oa=j<<2;V=j<<1;Ka=P(g,j);u=w+216|0;La=(f|0)==24;G=n>>>0<9?k?k:i:k;$=G;while(1){e=($|0)>=4?4:$;ba=e>>>0<=1?1:e;aa=M<<2;U=P(aa,j);i=P(M,Ka)+a|0;ka=j;X=0;while(1){e=(ka|0)>=4?4:ka;q=e>>>0<=1?1:e;g:{h:{i:{j:{k:{l:{m:{n:{o:{p:{q:{switch(f|0){default:e=w+104|0;p=Sm(d,e,0,0);if(p){pn(J[w+208>>2],J[w+212>>2],u,e,w)}if((g|0)!=2){break k}if((G|0)!=(aa|0)){break p}break h;case 24:case 25:e=w+104|0;p=Sm(d,e,0,0);if(p){pn(J[w+208>>2],J[w+212>>2],u,e,w)}if((g|0)!=2){break l}if((G|0)==(aa|0)){break i}e=X<<2;if((e|0)!=(j|0)){break o}break i;case 22:e=w+104|0;s=Sm(d,e,0,0);if(s){pn(J[w+208>>2],J[w+212>>2],u,e,w)}if((g|0)!=4){break m}if((G|0)!=(aa|0)){break n}break j;case 19:e=0;l=(l|0)>0?l:0;k=l;m=(m|0)<0?3:m;h=Ui-224|0;Ui=h;q=Sm(d,h+72|0,0,1);r:{if(!q){break r}n=J[h+176>>2];if((n|0)==8){p=h+184|0;s=K[p+k|0];k=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[i+2|0]=k;o=k>>>8|0;H[i+3|0]=o;x=k>>>16|0;H[i+4|0]=x;t=k>>>24|0;H[i+5|0]=t;n=K[168772]|K[168773]<<8;H[i+6|0]=n;y=n>>>8|0;H[i+7|0]=y;I[i>>1]=s|3328;p=K[m+p|0];H[i+10|0]=k;H[i+11|0]=o;H[i+12|0]=x;H[i+13|0]=t;H[i+14|0]=n;H[i+15|0]=y;I[i+8>>1]=p|3328;break r}o=n;n=h+72|0;pn(o,J[h+180>>2],h+184|0,n,h);s:{if((k|0)==3){nz(n,h,i);break s}oz(i,h+k|0,4)}if((m|0)==3){nz(h+72|0,h,i+8|0);break r}oz(i+8|0,h+m|0,4)}Ui=h+224|0;if(q){break g}break b;case 18:h=w+104|0;if(!Sm(d,h,0,1)){break c}e=(l|0)>0?l:0;k=J[w+208>>2];if((k|0)!=8){pn(k,J[w+212>>2],u,h,w);if((l|0)!=3){oz(i,e+w|0,4);l=e;break g}nz(w+104|0,w,i);l=e;break g}k=K[e+u|0];h=K[168768]|K[168769]<<8|(K[168770]<<16|K[168771]<<24);H[i+2|0]=h;H[i+3|0]=h>>>8;H[i+4|0]=h>>>16;H[i+5|0]=h>>>24;I[i>>1]=k|3328;h=K[168772]|K[168773]<<8;H[i+6|0]=h;H[i+7|0]=h>>>8;l=e;break g;case 12:o=w+104|0;if(!Sm(d,o,1,0)){break c}h=J[w+208>>2];if((h|0)!=8){v=0;D=0;n=Ui-48|0;Ui=n;t:{u:{v:{w:{x:{if(h>>>0<19){C=K[o+20|0];H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+6|0]=0;H[i+7|0]=0;H[i+8|0]=0;H[i+9|0]=0;H[i+8|0]=0;H[i+9|0]=0;H[i+10|0]=0;H[i+11|0]=0;H[i+12|0]=0;H[i+13|0]=0;H[i+14|0]=0;H[i+15|0]=0;e=J[(h<<2)+166096>>2];H[i|0]=e;k=e>>>8|0;H[i+1|0]=k;e=P(J[o>>2],12)+163280|0;if(J[e+4>>2]|J[e+8>>2]){break x}k=k|(K[o+4|0]<<3)-8;H[i+1|0]=k;ca=J[e>>2];y:{if(J[o+4>>2]==1){e=J[o+12>>2];H[i+2|0]=e>>>3;H[i+1|0]=k|e<<5;q=17;break y}p=J[o+8>>2];e=10;q=13;while(1){k=(q>>3)+i|0;r=k;x=K[k|0];k=q&7;H[r|0]=x|p<>>k|0;q=k+q|0;e=e-k|0;if(e){continue}break}e=(q>>3)+i|0;k=q&7;p=(J[o+12>>2]<<2&60)<>>0>=3){H[e+1|0]=K[e+1|0]|p>>>8}q=q+6|0}if(K[o+20|0]==1){e=ca<<(C?5:4);if(e-24>>>0>=73){break w}e=(120-e>>>3|0)+i|0;H[e|0]=K[e|0]|K[o+16|0]<<6}e=P(J[o+4>>2],(J[o+12>>2]>>2)+1|0);if((e|0)>=10){break v}J[n+32>>2]=0;J[n+24>>2]=0;J[n+28>>2]=0;J[n+16>>2]=0;J[n+20>>2]=0;y=e<<1;E=o+21|0;h=P(K[h+163152|0],12)+163280|0;s=J[h>>2];p=J[h+4>>2];if(p){x=5;e=4;break u}if(J[h+8>>2]){x=3;e=2;break u}if((e|0)<=0){break t}if(s>>>0<=9){if(!s){break t}e=0;while(1){h=(n+16|0)+(q>>3)|0;k=q&7;p=K[e+E|0]<>>0>8-k>>>0){H[h+1|0]=K[h+1|0]|p>>>8}q=q+s|0;e=e+1|0;if((y|0)!=(e|0)){continue}break}break t}Z(102793,40075,11733,102734);B()}Z(89151,40075,11932,51097);B()}Z(84836,40075,11947,51097);B()}Z(143983,40075,11970,51097);B()}Z(102774,40075,11977,51097);B()}F=(e+y|0)/(x|0)|0;if((F|0)<=0){break t}Y=s+3|0;e=P(s,3);_=e+5|0;k=s<<1;na=k+5|0;ga=k+3|0;r=-1<>2]=0;e=0;p=0;t=0;v=0;z=0;A=P(x,D);if((A|0)<(y|0)){e=y-A|0;e=(e|0)>(x|0)?x:e;hj(n+8|0,A+E|0,(e|0)<=1?1:e);p=K[n+11|0];v=K[n+9|0];z=K[n+8|0];t=K[n+10|0];e=K[n+12|0]}la=p&255;ma=e&255;e=v&255;p=((P(la>>>s|0,27)+P(ma>>>s|0,81)|0)+P(t>>>s|0,9)+(z>>>s)|0)+P(e>>>s|0,3)|0;if(p>>>0>=243){break B}A=K[p+169152|0];if(k){p=r&z|(e&r)<>3)|0;z=v;ta=K[v|0];v=q&7;H[z|0]=ta|p<>>v|0;q=q+v|0;e=e-v|0;if(e){continue}break}}if(h){p=(r&la)<>>7<<_|(A>>>4&1)<>>5&3)<>>2&3|(r&t)<<2);e=h;while(1){t=(n+16|0)+(q>>3)|0;v=t;z=K[t|0];t=q&7;H[v|0]=z|p<>>t|0;q=q+t|0;e=e-t|0;if(e){continue}break}}D=D+1|0;if((F|0)!=(D|0)){continue}break}break t}h=e+7|0;if(!h){break A}while(1){H[n+12|0]=0;J[n+8>>2]=0;p=0;t=0;e=P(x,v);if((e|0)<(y|0)){k=e+E|0;e=y-e|0;e=(e|0)>(x|0)?x:e;hj(n+8|0,k,(e|0)<=1?1:e);p=K[n+9|0];t=K[n+8|0];e=K[n+10|0]}else{e=0}k=p&255;p=(P(e>>>s|0,25)+(t>>>s|0)|0)+P(k>>>s|0,5)|0;if(p>>>0>124){break z}k=r&t|(e&r)<>>3&3)<>>5&3)<<_;e=h;while(1){k=(n+16|0)+(q>>3)|0;t=k;z=K[k|0];k=q&7;H[t|0]=z|p<>>k|0;q=k+q|0;e=e-k|0;if(e){continue}break}v=v+1|0;if((F|0)!=(v|0)){continue}break}break t}Z(109040,40075,5158,18455);B()}q=0;while(1){H[n+12|0]=0;J[n+8>>2]=0;p=0;t=0;e=P(q,x);if((e|0)<(y|0)){h=e+E|0;e=y-e|0;e=(e|0)>(x|0)?x:e;hj(n+8|0,h,(e|0)<=1?1:e);p=K[n+9|0];t=K[n+8|0];e=K[n+10|0]}else{e=0}if((P(e>>>s|0,25)+(t>>>s|0)|0)+P((p&255)>>>s|0,5)>>>0>124){break z}q=q+1|0;if((F|0)!=(q|0)){continue}break}break t}Z(106761,40075,11872,17786);B()}h=C?32:16;J[i>>2]=J[i>>2]|J[n+16>>2];J[i+4>>2]=J[i+4>>2]|J[n+20>>2];J[i+8>>2]=J[i+8>>2]|J[n+24>>2];J[i+12>>2]=J[i+12>>2]|J[n+28>>2];C:{D:{E:{F:{G:{H:{switch(ca-1|0){case 0:k=o+39|0;e=0;while(1){q=127-e|0;p=(q>>>3|0)+i|0;H[p|0]=K[p|0]|K[e+k|0]<<(q&7);q=e|1;p=127-q|0;s=(p>>>3|0)+i|0;H[s|0]=K[s|0]|K[k+q|0]<<(p&6);e=e+2|0;if((h|0)!=(e|0)){continue}break};break G;case 1:k=o+39|0;e=0;while(1){q=126-(e<<1)|0;p=(q>>>3|0)+i|0;H[p|0]=K[p|0]|K[K[e+k|0]+166172|0]<<(q&6);q=e|1;p=126-(q<<1)|0;s=(p>>>3|0)+i|0;H[s|0]=K[s|0]|K[K[k+q|0]+166172|0]<<(p&4);e=e+2|0;if((h|0)!=(e|0)){continue}break};break G;case 2:p=o+39|0;e=0;while(1){if((e|0)==42){break F}q=P(e,-3)+125|0;k=(q>>>3|0)+i|0;s=K[K[e+p|0]+166176|0]<<(q&7);H[k|0]=s|K[k|0];if(q>>>0<=119){H[k+1|0]=K[k+1|0]|s>>>8}e=e+1|0;if((h|0)!=(e|0)){continue}break};break G;case 3:k=o+39|0;e=0;while(1){if((e|0)==32){break E}q=124-(e<<2)|0;p=(q>>>3|0)+i|0;H[p|0]=K[p|0]|K[K[e+k|0]+166192|0]<<(q&4);e=e+1|0;if((h|0)!=(e|0)){continue}break};break G;case 4:break H;default:break C}}p=o+39|0;e=0;while(1){if((e|0)==25){break D}q=P(e,-5)+123|0;k=(q>>>3|0)+i|0;s=K[K[e+p|0]+166208|0]<<(q&7);H[k|0]=s|K[k|0];if(q>>>0<=119){H[k+1|0]=K[k+1|0]|s>>>8}e=e+1|0;if((h|0)!=(e|0)){continue}break}}Ui=n+48|0;break g}Z(105965,40075,12018,51097);B()}Z(105976,40075,12032,51097);B()}Z(105965,40075,12048,51097);B()}Z(114101,40075,12057,51097);B()}n=K[u+3|0];q=K[u+2|0];p=K[u+1|0];e=K[u|0];J[i+12>>2]=0;J[i+4>>2]=-1;J[i+8>>2]=0;H[i|0]=252;H[i+1|0]=253;H[i+2|0]=255;H[i+3|0]=255;k=e|e<<8;e=16;h=64;while(1){s=(h>>3)+i|0;o=s;r=K[s|0];s=h&7;H[o|0]=r|k<>>s|0;h=h+s|0;e=e-s|0;if(e){continue}break};k=p|p<<8;e=16;while(1){p=(h>>3)+i|0;o=p;r=K[p|0];p=h&7;H[o|0]=r|k<>>p|0;h=h+p|0;e=e-p|0;if(e){continue}break};k=q|q<<8;e=16;while(1){q=(h>>3)+i|0;o=q;p=K[q|0];q=h&7;H[o|0]=p|k<>>q|0;h=h+q|0;e=e-q|0;if(e){continue}break};k=n|n<<8;e=16;while(1){n=(h>>3)+i|0;o=n;p=K[n|0];n=h&7;H[o|0]=p|k<>>n|0;h=h+n|0;e=e-n|0;if(e){continue}break};break g;case 8:case 9:o=w+104|0;if(!Sm(d,o,0,0)){break c}q=0;e=Ui-48|0;Ui=e;n=ij(w,0,96);x=J[o+104>>2];s=K[x+163248|0];y=K[x+163152|0];I:{J:{K:{L:{M:{switch(x|0){case 0:case 5:case 10:case 12:case 14:case 15:case 18:J[n>>2]=6;h=y<<9;T=Q(Q(K[(h+319216|0)+(K[o+21|0]<<1)|0])/Q(255));N[e+32>>2]=T;N:{if(x-15>>>0<=2){h=h+319216|0;k=K[h+(K[o+22|0]<<1)|0];N[e+36>>2]=T;N[e+40>>2]=T;T=Q(Q(k>>>0)/Q(255));N[e+16>>2]=T;N[e+20>>2]=T;N[e+24>>2]=T;N[e+44>>2]=Q(K[h+(K[o+23|0]<<1)|0])/Q(255);s=4;O=Q(Q(K[h+(K[o+24|0]<<1)|0])/Q(255));break N}h=h+319216|0;N[e+36>>2]=Q(K[h+(K[o+23|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[h+(K[o+25|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[h+(K[o+22|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[h+(K[o+24|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[h+(K[o+26|0]<<1)|0])/Q(255);if(x-8>>>0<=6){h=(y<<9)+319216|0;N[e+44>>2]=Q(K[h+(K[o+27|0]<<1)|0])/Q(255);O=Q(Q(K[h+(K[o+28|0]<<1)|0])/Q(255));break N}J[e+44>>2]=1065353216;O=Q(1)}N[e+28>>2]=O;Mv(s,7,e+32|0,e+16|0,e+4|0,e,e+8|0);J[n+40>>2]=J[e+4>>2];J[n+52>>2]=J[e>>2];if(x-18>>>0<=4294967285){H[n+55|0]=127;H[n+43|0]=127}J[n+64>>2]=J[e+8>>2];J[n+68>>2]=J[e+12>>2];O:{P:{switch(x-5|0){case 9:H[n+8|0]=K[K[o+39|0]+166480|0];H[n+9|0]=K[K[o+40|0]+166480|0];H[n+10|0]=K[K[o+41|0]+166480|0];H[n+11|0]=K[K[o+42|0]+166480|0];H[n+12|0]=K[K[o+43|0]+166480|0];H[n+13|0]=K[K[o+44|0]+166480|0];H[n+14|0]=K[K[o+45|0]+166480|0];H[n+15|0]=K[K[o+46|0]+166480|0];H[n+16|0]=K[K[o+47|0]+166480|0];H[n+17|0]=K[K[o+48|0]+166480|0];H[n+18|0]=K[K[o+49|0]+166480|0];H[n+19|0]=K[K[o+50|0]+166480|0];H[n+20|0]=K[K[o+51|0]+166480|0];H[n+21|0]=K[K[o+52|0]+166480|0];H[n+22|0]=K[K[o+53|0]+166480|0];h=K[o+54|0]+166480|0;break O;case 13:H[n+8|0]=K[K[o+39|0]+166448|0];H[n+9|0]=K[K[o+40|0]+166448|0];H[n+10|0]=K[K[o+41|0]+166448|0];H[n+11|0]=K[K[o+42|0]+166448|0];H[n+12|0]=K[K[o+43|0]+166448|0];H[n+13|0]=K[K[o+44|0]+166448|0];H[n+14|0]=K[K[o+45|0]+166448|0];H[n+15|0]=K[K[o+46|0]+166448|0];H[n+16|0]=K[K[o+47|0]+166448|0];H[n+17|0]=K[K[o+48|0]+166448|0];H[n+18|0]=K[K[o+49|0]+166448|0];H[n+19|0]=K[K[o+50|0]+166448|0];H[n+20|0]=K[K[o+51|0]+166448|0];H[n+21|0]=K[K[o+52|0]+166448|0];H[n+22|0]=K[K[o+53|0]+166448|0];h=K[o+54|0]+166448|0;break O;default:H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];h=o+54|0;break O;case 0:case 7:break P}}H[n+8|0]=K[K[o+39|0]+166484|0];H[n+9|0]=K[K[o+40|0]+166484|0];H[n+10|0]=K[K[o+41|0]+166484|0];H[n+11|0]=K[K[o+42|0]+166484|0];H[n+12|0]=K[K[o+43|0]+166484|0];H[n+13|0]=K[K[o+44|0]+166484|0];H[n+14|0]=K[K[o+45|0]+166484|0];H[n+15|0]=K[K[o+46|0]+166484|0];H[n+16|0]=K[K[o+47|0]+166484|0];H[n+17|0]=K[K[o+48|0]+166484|0];H[n+18|0]=K[K[o+49|0]+166484|0];H[n+19|0]=K[K[o+50|0]+166484|0];H[n+20|0]=K[K[o+51|0]+166484|0];H[n+21|0]=K[K[o+52|0]+166484|0];H[n+22|0]=K[K[o+53|0]+166484|0];h=K[o+54|0]+166484|0}H[n+23|0]=K[h|0];break L;case 2:J[n>>2]=1;h=P(J[o+108>>2],6)+161328|0;J[n+4>>2]=K[h|0];C=n- -64|0;ca=n+52|0;Y=n+40|0;_=o+21|0;na=K[h+4|0];h=1;while(1){t=0;x=_+P(q,6)|0;k=K[x+3|0];da=Q(Q((k<<4|k)>>>0)/Q(255));pb=Q(da*Q(127));T=Q(Q(pb*Q(.5))+Q(.5));Q:{if(Q(R(T))=0?(p|0)>=126?126:p:0;T=Q(Q(Q(((r>>>6&1|r<<1)&253)>>>0)/Q(255))-da);T=Q(T*T);k=K[x+2|0];va=Q(Q((k<<4|k)>>>0)/Q(255));qb=Q(va*Q(127));O=Q(Q(qb*Q(.5))+Q(.5));R:{if(Q(R(O))=0?(p|0)>=126?126:p:0;O=Q(Q(Q(((v>>>6&1|v<<1)&253)>>>0)/Q(255))-va);T=Q(Q(O*O)+T);k=K[x|0];mb=Q(Q((k<<4|k)>>>0)/Q(255));rb=Q(mb*Q(127));O=Q(Q(rb*Q(.5))+Q(.5));S:{if(Q(R(O))=0?(p|0)>=126?126:p:0;O=Q(Q(Q(((D>>>6&1|D<<1)&253)>>>0)/Q(255))-mb);Qa=Q(O*O);k=K[x+1|0];nb=Q(Q((k<<4|k)>>>0)/Q(255));sb=Q(nb*Q(127));Pa=Q(Q(sb*Q(.5))+Q(.5));T:{if(Q(R(Pa))=0?(p|0)>=126?126:p:0;O=Q(Q(Q(((E>>>6&1|E<<1)&253)>>>0)/Q(255))-nb);O=Q(Q(Qa+Q(O*O))+T);k=K[x+5|0];Pa=Q(Q((k<<4|k)>>>0)/Q(255));tb=Q(Pa*Q(127));T=Q(Q(tb*Q(.5))+Q(.5));U:{if(Q(R(T))=0?(p|0)>=126?126:p:0;T=Q(Q(Q(((z>>>6&1|z<<1)&253)>>>0)/Q(255))-Pa);yb=Q(T*T);T=Q(1e9);s=0;y=0;k=0;p=0;A=0;Qa=O;x=K[x+4|0];ob=Q(Q((x<<4|x)>>>0)/Q(255));ub=Q(ob*Q(127));O=Q(Q(ub*Q(.5))+Q(.5));V:{if(Q(R(O))=0?(F|0)>=126?126:F:0;O=Q(Q(Q(((x>>>6&1|x<<1)&253)>>>0)/Q(255))-ob);O=Q(Qa+Q(Q(O*O)+yb));if(O>>1|0;s=(x&254)>>>1|0;y=(r&254)>>>1|0;p=(E&254)>>>1|0;A=(D&254)>>>1|0;T=O;k=(v&254)>>>1|0}x=0;O=Q(Q(Q(pb+Q(-1))*Q(.5))+Q(.5));W:{if(Q(R(O))=127?127:v;O=Q(Q(Q(((v>>>6&1|v<<1)&255)>>>0)/Q(255))-da);O=Q(O*O);da=Q(Q(Q(qb+Q(-1))*Q(.5))+Q(.5));X:{if(Q(R(da))=127?127:D;da=Q(Q(Q(((D>>>6&1|D<<1)&255)>>>0)/Q(255))-va);da=Q(da*da);va=Q(Q(Q(sb+Q(-1))*Q(.5))+Q(.5));Y:{if(Q(R(va))=127?127:E;va=Q(Q(Q(((E>>>6&1|E<<1)&255)>>>0)/Q(255))-nb);va=Q(va*va);O=Q(da+O);da=Q(Q(Q(rb+Q(-1))*Q(.5))+Q(.5));Z:{if(Q(R(da))=127?127:z;da=Q(Q(Q(((z>>>6&1|z<<1)&255)>>>0)/Q(255))-mb);O=Q(Q(Q(da*da)+va)+O);da=Q(Q(Q(tb+Q(-1))*Q(.5))+Q(.5));_:{if(Q(R(da))=127?127:F;da=Q(Q(Q(((F>>>6&1|F<<1)&255)>>>0)/Q(255))-Pa);da=Q(da*da);Qa=T;va=Q(Q(Q(ub+Q(-1))*Q(.5))+Q(.5));$:{if(Q(R(va))=127?127:ga;T=Q(Q(Q(((r>>>6&1|r<<1)&255)>>>0)/Q(255))-ob);if(Qa>Q(O+Q(Q(T*T)+da))){x=1;t=(F&254)>>>1|0;y=(v&254)>>>1|0;p=(E&254)>>>1|0;A=(z&254)>>>1|0;s=(r&254)>>>1|0;k=(D&254)>>>1|0}r=q^na;v=r<<2;q=v+Y|0;H[q+2|0]=s;H[q+1|0]=k;H[q|0]=A;k=v+ca|0;H[k+2|0]=t;H[k+1|0]=y;H[k|0]=p;J[C+(r<<3)>>2]=x;q=1;k=h;h=0;if(k){continue}break};H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break L;case 3:J[n>>2]=2;p=P(J[o+108>>2],6)+161648|0;J[n+4>>2]=K[p|0];q=1;h=(y<<9)+319216|0;t=K[h+(K[o+22|0]<<1)|0];k=n+40|0;p=P(K[p+4|0],3)+161728|0;x=K[p|0]<<2;s=k+x|0;H[s|0]=(P(K[h+(K[o+21|0]<<1)|0],31)+127>>>0)/255;r=x;x=n+52|0;y=r+x|0;H[y|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+24|0]<<1)|0];H[s+1|0]=(P(K[h+(K[o+23|0]<<1)|0],31)+127>>>0)/255;H[y+1|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+26|0]<<1)|0];H[s+2|0]=(P(K[h+(K[o+25|0]<<1)|0],31)+127>>>0)/255;H[y+2|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+28|0]<<1)|0];y=K[p+1|0]<<2;s=y+k|0;H[s|0]=(P(K[h+(K[o+27|0]<<1)|0],31)+127>>>0)/255;y=x+y|0;H[y|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+30|0]<<1)|0];H[s+1|0]=(P(K[h+(K[o+29|0]<<1)|0],31)+127>>>0)/255;H[y+1|0]=(P(t,31)+127>>>0)/255;t=K[h+(K[o+32|0]<<1)|0];H[s+2|0]=(P(K[h+(K[o+31|0]<<1)|0],31)+127>>>0)/255;H[y+2|0]=(P(t,31)+127>>>0)/255;s=K[h+(K[o+34|0]<<1)|0];p=K[p+2|0]<<2;k=p+k|0;H[k|0]=(P(K[h+(K[o+33|0]<<1)|0],31)+127>>>0)/255;p=p+x|0;H[p|0]=(P(s,31)+127>>>0)/255;s=K[h+(K[o+36|0]<<1)|0];H[k+1|0]=(P(K[h+(K[o+35|0]<<1)|0],31)+127>>>0)/255;H[p+1|0]=(P(s,31)+127>>>0)/255;s=K[h+(K[o+38|0]<<1)|0];H[k+2|0]=(P(K[h+(K[o+37|0]<<1)|0],31)+127>>>0)/255;H[p+2|0]=(P(s,31)+127>>>0)/255;H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break K;case 4:J[n>>2]=3;k=P(J[o+108>>2],6)+161328|0;J[n+4>>2]=K[k|0];J[e+44>>2]=1065353216;J[e+28>>2]=1065353216;q=1;h=(y<<9)+319216|0;N[e+32>>2]=Q(K[h+(K[o+21|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[h+(K[o+22|0]<<1)|0])/Q(255);N[e+36>>2]=Q(K[h+(K[o+23|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[h+(K[o+24|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[h+(K[o+25|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[h+(K[o+26|0]<<1)|0])/Q(255);J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=0;J[e>>2]=0;x=e+32|0;y=e+16|0;t=e+4|0;r=e+8|0;Mv(3,7,x,y,t,e,r);A=n+40|0;k=K[k+4|0];s=k<<2;p=A+s|0;H[p+2|0]=K[e+6|0];I[p>>1]=L[e+4>>1];v=n+52|0;s=v+s|0;H[s+2|0]=K[e+2|0];I[s>>1]=L[e>>1];H[p+3|0]=127;H[s+3|0]=127;p=n- -64|0;s=p+(k<<3)|0;J[s>>2]=J[e+8>>2];J[s+4>>2]=J[e+12>>2];N[e+32>>2]=Q(K[h+(K[o+27|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[h+(K[o+28|0]<<1)|0])/Q(255);N[e+36>>2]=Q(K[h+(K[o+29|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[h+(K[o+30|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[h+(K[o+31|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[h+(K[o+32|0]<<1)|0])/Q(255);J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=0;J[e>>2]=0;Mv(3,7,x,y,t,e,r);s=k^1;k=s<<2;h=k+A|0;H[h+2|0]=K[e+6|0];I[h>>1]=L[e+4>>1];k=k+v|0;H[k+2|0]=K[e+2|0];I[k>>1]=L[e>>1];H[h+3|0]=127;H[k+3|0]=127;h=p+(s<<3)|0;J[h>>2]=J[e+8>>2];J[h+4>>2]=J[e+12>>2];H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break K;case 6:case 11:case 13:case 17:J[n>>2]=5;h=J[o+16>>2];J[n+92>>2]=h+1&3;aa:{ba:{if(x-15>>>0<=2){if((h|0)!=3){break J}h=(y<<9)+319216|0;k=(P(K[h+(K[o+21|0]<<1)|0],127)+127>>>0)/255|0;H[n+40|0]=k;q=K[h+(K[o+22|0]<<1)|0];H[n+41|0]=k;H[n+42|0]=k;k=(P(q,127)+127>>>0)/255|0;H[n+53|0]=k;H[n+52|0]=k;H[n+54|0]=k;H[n+43|0]=K[h+(K[o+23|0]<<1)|0];H[n+55|0]=K[h+(K[o+24|0]<<1)|0];break ba}q=y<<9;p=q+319216|0;k=K[p+(K[o+22|0]<<1)|0];p=K[p+(K[o+21|0]<<1)|0];if(h){p=(P(p&255,127)+127>>>0)/255|0;k=(P(k&255,127)+127>>>0)/255|0}h=h?0:3;s=n+40|0;H[h+s|0]=p;t=n+52|0;H[t+h|0]=k;h=q+319216|0;q=K[h+(K[o+24|0]<<1)|0];h=K[h+(K[o+23|0]<<1)|0];k=J[o+16>>2]==1;p=k?3:1;r=p+s|0;if(!k){q=(P(q&255,127)+127>>>0)/255|0;h=(P(h,127)+127>>>0)/255|0}H[r|0]=h;H[p+t|0]=q;h=(y<<9)+319216|0;q=K[h+(K[o+26|0]<<1)|0];h=K[h+(K[o+25|0]<<1)|0];k=J[o+16>>2]==2;p=k?3:2;r=p+s|0;if(!k){q=(P(q&255,127)+127>>>0)/255|0;h=(P(h,127)+127>>>0)/255|0}H[r|0]=h;H[p+t|0]=q;h=J[o+16>>2];k=255;p=255;if(x-8>>>0<=6){k=(y<<9)+319216|0;p=K[k+(K[o+28|0]<<1)|0];k=K[k+(K[o+27|0]<<1)|0]}q=h+s|0;if(h>>>0<=2){p=(P(p,127)+127>>>0)/255|0;k=(P(k,127)+127>>>0)/255|0}H[q|0]=k;H[h+t|0]=p;if((x|0)==13){break aa}}H[n+8|0]=K[o+39|0];H[n+24|0]=K[o+40|0];H[n+9|0]=K[o+41|0];H[n+25|0]=K[o+42|0];H[n+10|0]=K[o+43|0];H[n+26|0]=K[o+44|0];H[n+11|0]=K[o+45|0];H[n+27|0]=K[o+46|0];H[n+12|0]=K[o+47|0];H[n+28|0]=K[o+48|0];H[n+13|0]=K[o+49|0];H[n+29|0]=K[o+50|0];H[n+14|0]=K[o+51|0];H[n+30|0]=K[o+52|0];H[n+15|0]=K[o+53|0];H[n+31|0]=K[o+54|0];H[n+16|0]=K[o+55|0];H[n+32|0]=K[o+56|0];H[n+17|0]=K[o+57|0];H[n+33|0]=K[o+58|0];H[n+18|0]=K[o+59|0];H[n+34|0]=K[o+60|0];H[n+19|0]=K[o+61|0];H[n+35|0]=K[o+62|0];H[n+20|0]=K[o+63|0];H[n+36|0]=K[o+64|0];H[n+21|0]=K[o+65|0];H[n+37|0]=K[o+66|0];H[n+22|0]=K[o+67|0];H[n+38|0]=K[o+68|0];H[n+23|0]=K[o+69|0];H[n+39|0]=K[o+70|0];break L}H[n+8|0]=K[o+39|0]?3:0;H[n+24|0]=K[o+40|0]?3:0;H[n+9|0]=K[o+41|0]?3:0;H[n+25|0]=K[o+42|0]?3:0;H[n+10|0]=K[o+43|0]?3:0;H[n+26|0]=K[o+44|0]?3:0;H[n+11|0]=K[o+45|0]?3:0;H[n+27|0]=K[o+46|0]?3:0;H[n+12|0]=K[o+47|0]?3:0;H[n+28|0]=K[o+48|0]?3:0;H[n+13|0]=K[o+49|0]?3:0;H[n+29|0]=K[o+50|0]?3:0;H[n+14|0]=K[o+51|0]?3:0;H[n+30|0]=K[o+52|0]?3:0;H[n+15|0]=K[o+53|0]?3:0;H[n+31|0]=K[o+54|0]?3:0;H[n+16|0]=K[o+55|0]?3:0;H[n+32|0]=K[o+56|0]?3:0;H[n+17|0]=K[o+57|0]?3:0;H[n+33|0]=K[o+58|0]?3:0;H[n+18|0]=K[o+59|0]?3:0;H[n+34|0]=K[o+60|0]?3:0;H[n+19|0]=K[o+61|0]?3:0;H[n+35|0]=K[o+62|0]?3:0;H[n+20|0]=K[o+63|0]?3:0;H[n+36|0]=K[o+64|0]?3:0;H[n+21|0]=K[o+65|0]?3:0;H[n+37|0]=K[o+66|0]?3:0;H[n+22|0]=K[o+67|0]?3:0;H[n+38|0]=K[o+68|0]?3:0;H[n+23|0]=K[o+69|0]?3:0;H[n+39|0]=K[o+70|0]?3:0;break L;case 7:J[n>>2]=2;x=J[o+108>>2];h=P(x,6)+161520|0;J[n+4>>2]=K[h|0];q=1;s=o+21|0;p=K[h+4|0];t=p&1;k=s+P(t,6)|0;h=(y<<9)+319216|0;H[n+40|0]=(P(K[(K[k|0]<<1)+h|0],31)+127>>>0)/255;H[n+52|0]=(P(K[h+(K[k+1|0]<<1)|0],31)+127>>>0)/255;H[n+41|0]=(P(K[h+(K[k+2|0]<<1)|0],31)+127>>>0)/255;H[n+53|0]=(P(K[h+(K[k+3|0]<<1)|0],31)+127>>>0)/255;H[n+42|0]=(P(K[h+(K[k+4|0]<<1)|0],31)+127>>>0)/255;H[n+54|0]=(P(K[h+(K[k+5|0]<<1)|0],31)+127>>>0)/255;k=s+((p^-87041>>>x)&1?6:0)|0;H[n+44|0]=(P(K[h+(K[k|0]<<1)|0],31)+127>>>0)/255;H[n+56|0]=(P(K[h+(K[k+1|0]<<1)|0],31)+127>>>0)/255;H[n+45|0]=(P(K[h+(K[k+2|0]<<1)|0],31)+127>>>0)/255;H[n+57|0]=(P(K[h+(K[k+3|0]<<1)|0],31)+127>>>0)/255;H[n+46|0]=(P(K[h+(K[k+4|0]<<1)|0],31)+127>>>0)/255;H[n+58|0]=(P(K[h+(K[k+5|0]<<1)|0],31)+127>>>0)/255;k=s+P(t^J[(p<<1&508)+172076>>2],6)|0;H[n+48|0]=(P(K[h+(K[k|0]<<1)|0],31)+127>>>0)/255;H[n+60|0]=(P(K[h+(K[k+1|0]<<1)|0],31)+127>>>0)/255;H[n+49|0]=(P(K[h+(K[k+2|0]<<1)|0],31)+127>>>0)/255;H[n+61|0]=(P(K[h+(K[k+3|0]<<1)|0],31)+127>>>0)/255;H[n+50|0]=(P(K[h+(K[k+4|0]<<1)|0],31)+127>>>0)/255;H[n+62|0]=(P(K[h+(K[k+5|0]<<1)|0],31)+127>>>0)/255;H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break K;case 8:k=(K[o+115|0]<<3)+329968|0;q=(K[o+114|0]<<3)+329968|0;p=(K[o+113|0]<<3)+329968|0;s=(K[o+112|0]<<3)+329968|0;h=L[k+4>>1]+(L[q+4>>1]+(L[p+4>>1]+L[s+4>>1]|0)|0)|0;k=L[k>>1]+(L[q>>1]+(L[p>>1]+L[s>>1]|0)|0)|0;if(!(!k|!h)){J[n>>2]=5;H[n+40|0]=K[((K[o+112|0]<<2)+332016|0)+2|0];H[n+52|0]=K[((K[o+112|0]<<2)+332016|0)+3|0];H[n+41|0]=K[((K[o+113|0]<<2)+332016|0)+2|0];H[n+53|0]=K[((K[o+113|0]<<2)+332016|0)+3|0];H[n+42|0]=K[((K[o+114|0]<<2)+332016|0)+2|0];h=K[((K[o+114|0]<<2)+332016|0)+3|0];J[n+8>>2]=16843009;J[n+12>>2]=16843009;H[n+54|0]=h;J[n+16>>2]=16843009;J[n+20>>2]=16843009;h=K[o+115|0];H[n+55|0]=h;H[n+43|0]=h;break L}J[n>>2]=6;k=h>>>0>>0;h=k<<2;H[n+40|0]=K[(h+((K[o+112|0]<<3)+329968|0)|0)+2|0];H[n+52|0]=K[(h+((K[o+112|0]<<3)+329968|0)|0)+3|0];H[n+41|0]=K[(h+((K[o+113|0]<<3)+329968|0)|0)+2|0];H[n+53|0]=K[(h+((K[o+113|0]<<3)+329968|0)|0)+3|0];H[n+42|0]=K[(h+((K[o+114|0]<<3)+329968|0)|0)+2|0];H[n+54|0]=K[(h+((K[o+114|0]<<3)+329968|0)|0)+3|0];H[n+43|0]=K[(h+((K[o+115|0]<<3)+329968|0)|0)+2|0];h=K[(h+((K[o+115|0]<<3)+329968|0)|0)+3|0];J[n+68>>2]=k;J[n+64>>2]=k;H[n+55|0]=h;J[n+8>>2]=84215045;J[n+12>>2]=84215045;J[n+16>>2]=84215045;J[n+20>>2]=84215045;break L;case 9:case 16:J[n>>2]=7;h=P(J[o+108>>2],6)+161328|0;J[n+4>>2]=K[h|0];t=n- -64|0;r=n+52|0;A=n+40|0;p=o+21|0;v=K[h+4|0];s=0;D=x-15>>>0>2;x=y<<9;k=1;while(1){h=x+319216|0;y=h;ca:{if(!D){E=s<<2;q=E+p|0;T=Q(Q(K[h+(K[q|0]<<1)|0])/Q(255));N[e+32>>2]=T;z=K[h+(K[q+1|0]<<1)|0];N[e+36>>2]=T;N[e+40>>2]=T;T=Q(Q(z>>>0)/Q(255));N[e+16>>2]=T;N[e+20>>2]=T;N[e+24>>2]=T;N[e+44>>2]=Q(K[h+(K[q+2|0]<<1)|0])/Q(255);h=E|3;break ca}q=x+319216|0;E=s<<3;h=E+p|0;N[e+32>>2]=Q(K[q+(K[h|0]<<1)|0])/Q(255);N[e+36>>2]=Q(K[q+(K[h+2|0]<<1)|0])/Q(255);N[e+40>>2]=Q(K[q+(K[h+4|0]<<1)|0])/Q(255);N[e+44>>2]=Q(K[q+(K[h+6|0]<<1)|0])/Q(255);N[e+16>>2]=Q(K[q+(K[h+1|0]<<1)|0])/Q(255);N[e+20>>2]=Q(K[q+(K[h+3|0]<<1)|0])/Q(255);N[e+24>>2]=Q(K[q+(K[h+5|0]<<1)|0])/Q(255);h=E|7}N[e+28>>2]=Q(K[y+(K[h+p|0]<<1)|0])/Q(255);J[e+8>>2]=0;J[e+12>>2]=0;J[e+4>>2]=0;J[e>>2]=0;Mv(4,5,e+32|0,e+16|0,e+4|0,e,e+8|0);h=s^v;q=h<<2;J[q+A>>2]=J[e+4>>2];J[q+r>>2]=J[e>>2];h=t+(h<<3)|0;J[h>>2]=J[e+8>>2];J[h+4>>2]=J[e+12>>2];h=k&1;k=0;s=1;if(h){continue}break};H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0];break L;case 1:break M;default:break K}}J[n>>2]=3;N[e+32>>2]=Q(K[o+21|0])/Q(255);N[e+36>>2]=Q(K[o+23|0])/Q(255);h=K[o+25|0];J[e+44>>2]=1065353216;N[e+40>>2]=Q(h>>>0)/Q(255);N[e+16>>2]=Q(K[o+22|0])/Q(255);N[e+20>>2]=Q(K[o+24|0])/Q(255);h=K[o+26|0];J[e+28>>2]=1065353216;N[e+24>>2]=Q(h>>>0)/Q(255);J[e+4>>2]=0;J[e>>2]=0;Mv(3,7,e+32|0,e+16|0,e+4|0,e,e+8|0);H[n+42|0]=K[e+6|0];I[n+40>>1]=L[e+4>>1];I[n+44>>1]=L[e+4>>1];H[n+46|0]=K[e+6|0];h=K[e|0];H[n+52|0]=h;H[n+56|0]=h;h=K[e+1|0];H[n+57|0]=h;H[n+53|0]=h;h=K[e+2|0];H[n+58|0]=h;H[n+54|0]=h;h=J[e+8>>2];J[n+64>>2]=h;k=J[e+12>>2];J[n+76>>2]=k;J[n+72>>2]=h;J[n+68>>2]=k;H[n+8|0]=K[o+39|0];H[n+9|0]=K[o+40|0];H[n+10|0]=K[o+41|0];H[n+11|0]=K[o+42|0];H[n+12|0]=K[o+43|0];H[n+13|0]=K[o+44|0];H[n+14|0]=K[o+45|0];H[n+15|0]=K[o+46|0];H[n+16|0]=K[o+47|0];H[n+17|0]=K[o+48|0];H[n+18|0]=K[o+49|0];H[n+19|0]=K[o+50|0];H[n+20|0]=K[o+51|0];H[n+21|0]=K[o+52|0];H[n+22|0]=K[o+53|0];H[n+23|0]=K[o+54|0]}q=1}Ui=e+48|0;break I}Z(109157,40075,13218,103434);B()}if(!q){break c}q=Ui-112|0;Ui=q;s=J[w>>2];t=K[s+166048|0];Ca=s-4|0;h=163792;da:{if(Ca>>>0<3){break da}e=J[w+4>>2]<<4;h=e+163808|0;if(1<>2];J[q+96>>2]=J[w+8>>2];J[q+100>>2]=e;e=J[w+20>>2];J[q+104>>2]=J[w+16>>2];J[q+108>>2]=e;e=J[w+36>>2];J[q+88>>2]=J[w+32>>2];J[q+92>>2]=e;e=J[w+28>>2];J[q+80>>2]=J[w+24>>2];J[q+84>>2]=e;J[q+72>>2]=K[w+48|0]|K[w+49|0]<<8|(K[w+50|0]<<16|K[w+51|0]<<24);e=K[w+44|0]|K[w+45|0]<<8|(K[w+46|0]<<16|K[w+47|0]<<24);J[q+64>>2]=K[w+40|0]|K[w+41|0]<<8|(K[w+42|0]<<16|K[w+43|0]<<24);J[q+68>>2]=e;J[q+56>>2]=K[w+60|0]|K[w+61|0]<<8|(K[w+62|0]<<16|K[w+63|0]<<24);e=K[w+56|0]|K[w+57|0]<<8|(K[w+58|0]<<16|K[w+59|0]<<24);J[q+48>>2]=K[w+52|0]|K[w+53|0]<<8|(K[w+54|0]<<16|K[w+55|0]<<24);J[q+52>>2]=e;e=J[w+84>>2];J[q+32>>2]=J[w+80>>2];J[q+36>>2]=e;e=J[w+76>>2];J[q+24>>2]=J[w+72>>2];J[q+28>>2]=e;e=J[w+68>>2];J[q+16>>2]=J[w+64>>2];J[q+20>>2]=e;J[q+8>>2]=-1;J[q>>2]=-1;J[q+4>>2]=-1;Ma=t>>>0<=1?1:t;ca=s&-3;Da=J[w+88>>2];n=1<>>1|0;e=0;A=K[q+95|0];v=K[q+94|0];E=K[q+93|0];D=K[q+92|0];Y=K[q+91|0];z=K[q+90|0];_=K[q+89|0];na=K[q+88|0];ga=K[q+87|0];ha=K[q+86|0];la=K[q+85|0];ma=K[q+84|0];ra=K[q+83|0];sa=K[q+82|0];ia=K[q+81|0];ja=K[q+80|0];fa=K[q+111|0];ea=K[q+110|0];y=K[q+109|0];W=K[q+108|0];oa=K[q+107|0];pa=K[q+106|0];qa=K[q+105|0];ua=K[q+104|0];ya=K[q+103|0];za=K[q+102|0];r=K[q+101|0];Aa=K[q+100|0];Ba=K[q+99|0];wa=K[q+98|0];Ea=K[q+97|0];Fa=K[q+96|0];Ga=s&-2;xa=(Ga|0)!=4;while(1){x=e<<2;p=x+q|0;if(e){o=J[w+4>>2]+165920|0;ea:{if(!((e|0)!=1|ca)){break ea}k=J[w+4>>2];o=k+165984|0;if(!((e|0)!=2|ca)){break ea}o=k+165856|0}k=K[o|0]}else{k=0}J[p>>2]=k;fa:{if(K[k+(q+96|0)|0]&Na){if(K[h|0]==(e|0)){Fa=n+(Fa^-1|-256)|0;H[q+96|0]=Fa}if(K[h+1|0]==(e|0)){Ea=n+(Ea^-1|-256)|0;H[q+97|0]=Ea}if(K[h+2|0]==(e|0)){wa=n+(wa^-1|-256)|0;H[q+98|0]=wa}if(K[h+3|0]==(e|0)){Ba=n+(Ba^-1|-256)|0;H[q+99|0]=Ba}if(K[h+4|0]==(e|0)){Aa=n+(Aa^-1|-256)|0;H[q+100|0]=Aa}if(K[h+5|0]==(e|0)){r=n+(r^-1|-256)|0;H[q+101|0]=r}if(K[h+6|0]==(e|0)){za=n+(za^-1|-256)|0;H[q+102|0]=za}if(K[h+7|0]==(e|0)){ya=n+(ya^-1|-256)|0;H[q+103|0]=ya}if(K[h+8|0]==(e|0)){ua=n+(ua^-1|-256)|0;H[q+104|0]=ua}if(K[h+9|0]==(e|0)){qa=n+(qa^-1|-256)|0;H[q+105|0]=qa}if(K[h+10|0]==(e|0)){pa=n+(pa^-1|-256)|0;H[q+106|0]=pa}if(K[h+11|0]==(e|0)){oa=n+(oa^-1|-256)|0;H[q+107|0]=oa}if(K[h+12|0]==(e|0)){W=n+(W^-1|-256)|0;H[q+108|0]=W}if(K[h+13|0]==(e|0)){y=n+(y^-1|-256)|0;H[q+109|0]=y}if(K[h+14|0]==(e|0)){ea=n+(ea^-1|-256)|0;H[q+110|0]=ea}if(K[h+15|0]==(e|0)){fa=n+(fa^-1|-256)|0;H[q+111|0]=fa}p=x+(q- -64|0)|0;ga:{if((Ga|0)!=4){F=K[p|0]|K[p+1|0]<<8|(K[p+2|0]<<16|K[p+3|0]<<24);o=x+(q+48|0)|0;C=K[o|0]|K[o+1|0]<<8|(K[o+2|0]<<16|K[o+3|0]<<24);H[p|0]=C;H[p+1|0]=C>>>8;H[p+2|0]=C>>>16;H[p+3|0]=C>>>24;H[o|0]=F;H[o+1|0]=F>>>8;H[o+2|0]=F>>>16;H[o+3|0]=F>>>24;if((s|0)!=1){break ga}break fa}F=K[p|0];o=x+(q+48|0)|0;H[p|0]=K[o|0];H[o|0]=F;F=K[p+1|0];H[p+1|0]=K[o+1|0];H[o+1|0]=F;F=K[p+2|0];H[p+2|0]=K[o+2|0];H[o+2|0]=F}p=(q+16|0)+(e<<3)|0;o=J[p>>2];J[p>>2]=pxa(o,J[p+4>>2],32);J[p+4>>2]=Yi}if(xa){break fa}o=K[k+(q+80|0)|0];k=1<>>1)){break fa}if(K[h|0]==(e|0)){ja=k+(ja^-1|-256)|0;H[q+80|0]=ja}if(K[h+1|0]==(e|0)){ia=k+(ia^-1|-256)|0;H[q+81|0]=ia}if(K[h+2|0]==(e|0)){sa=k+(sa^-1|-256)|0;H[q+82|0]=sa}if(K[h+3|0]==(e|0)){ra=k+(ra^-1|-256)|0;H[q+83|0]=ra}if(K[h+4|0]==(e|0)){ma=k+(ma^-1|-256)|0;H[q+84|0]=ma}if(K[h+5|0]==(e|0)){la=k+(la^-1|-256)|0;H[q+85|0]=la}if(K[h+6|0]==(e|0)){ha=k+(ha^-1|-256)|0;H[q+86|0]=ha}if(K[h+7|0]==(e|0)){ga=k+(ga^-1|-256)|0;H[q+87|0]=ga}if(K[h+8|0]==(e|0)){na=k+(na^-1|-256)|0;H[q+88|0]=na}if(K[h+9|0]==(e|0)){_=k+(_^-1|-256)|0;H[q+89|0]=_}if(K[h+10|0]==(e|0)){z=k+(z^-1|-256)|0;H[q+90|0]=z}if(K[h+11|0]==(e|0)){Y=k+(Y^-1|-256)|0;H[q+91|0]=Y}if(K[h+12|0]==(e|0)){D=k+(D^-1|-256)|0;H[q+92|0]=D}if(K[h+13|0]==(e|0)){E=k+(E^-1|-256)|0;H[q+93|0]=E}if(K[h+14|0]==(e|0)){v=k+(v^-1|-256)|0;H[q+94|0]=v}if(K[h+15|0]==(e|0)){A=k+(A^-1|-256)|0;H[q+95|0]=A}k=x+(q- -64|0)|0;p=K[k+3|0];o=k;k=x+(q+48|0)|0;H[o+3|0]=K[k+3|0];H[k+3|0]=p}e=e+1|0;if((Ma|0)!=(e|0)){continue}break};H[i|0]=0;H[i+1|0]=0;H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+6|0]=0;H[i+7|0]=0;H[i+8|0]=0;H[i+9|0]=0;H[i+10|0]=0;H[i+11|0]=0;H[i+12|0]=0;H[i+13|0]=0;H[i+14|0]=0;H[i+15|0]=0;ha:{ia:{ja:{n=s+1|0;if(n>>>0>32){break ja}k=1<>>0>=32){e=0;h=0}else{e=0;h=k>>>n|0}if(h|e){break ja}ka:{la:{if(!n){y=0;break la}h=k;while(1){p=(e>>>3|0)+i|0;o=p;r=K[p|0];p=e&7;H[o|0]=r|h<>>0>>0?e:n;e=o+p|0;h=h>>>p|0;n=n-p|0;if(n){continue}break}if(e>>>0>=129){break ia}ma:{y=(s&-2)==4;if(!y){break ma}na:{h=J[w+92>>2];if(h>>>0<4){n=2;while(1){p=(e>>>3|0)+i|0;o=p;r=K[p|0];p=e&7;H[o|0]=r|h<>>0>>0?e:n;e=o+p|0;h=h>>>p|0;n=n-p|0;if(n){continue}break}if(e>>>0>=129){break ia}if((s|0)!=4){break ma}h=J[w+88>>2];if(h>>>0>=2){break ja}n=(e>>>3|0)+i|0;H[n|0]=K[n|0]|h<<(e&7);if((e|0)==128){break na}e=e+1|0;break ka}break ja}break ia}if(Ca>>>0<3){break ka}}h=J[w+4>>2];n=k&142;p=n?6:4;if((p&63)>>>0>=32){o=0;p=0}else{o=0;p=h>>>p|0}if(p|o){break ja}n=n?6:4;while(1){p=(e>>>3|0)+i|0;o=p;r=K[p|0];p=e&7;H[o|0]=r|h<>>0>>0?e:n;e=o+p|0;h=h>>>p|0;n=n-p|0;if(n){continue}break}if(e>>>0>=129){break ia}}r=t>>>0<=1?1:t;A=s>>>0>3?4:3;x=0;while(1){v=(q+48|0)+x|0;D=(q- -64|0)+x|0;p=0;oa:{while(1){E=p<<2;h=K[E+D|0];z=(x|0)==3;if(z){n=H[s+166072|0]}else{n=K[s+166064|0]}if(n>>>0>32){break ja}if((n&63)>>>0>=32){o=0;C=0}else{o=0;C=h>>>n|0}if(C|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;C=o;ta=K[o|0];o=e&7;H[C|0]=ta|h<>>0>>0?e:n;e=C+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ia}}h=K[v+E|0];if(z){n=H[s+166072|0]}else{n=K[s+166064|0]}if(n>>>0>32){break ja}if((n&63)>>>0>=32){o=0;z=0}else{o=0;z=h>>>n|0}if(z|o){break ja}pa:{if(n){while(1){o=(e>>>3|0)+i|0;z=o;C=K[o|0];o=e&7;H[z|0]=C|h<>>0>>0?e:n;e=z+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>=129){break pa}}p=p+1|0;if((r|0)==(p|0)){break oa}continue}break}break ia}x=x+1|0;if((A|0)!=(x|0)){continue}break}if(!(k&52)){k=t>>>0<=1?1:t;n=0;while(1){p=(q+16|0)+(n<<3)|0;h=J[p>>2];if(h>>>0>=2){break ja}o=(e>>>3|0)+i|0;H[o|0]=K[o|0]|h<<(e&7);h=e+1|0;if(h>>>0>=129){break ia}qa:{if((s|0)==1){e=h;break qa}p=J[p+4>>2];if(p>>>0>=2){break ja}o=(h>>>3|0)+i|0;H[o|0]=K[o|0]|p<<(h&7);e=e+2|0;if(e>>>0>=129){break ia}}n=n+1|0;if((k|0)!=(n|0)){continue}break}}p=0;k=J[q+8>>2];x=J[q+4>>2];t=J[q>>2];ra:{while(1){h=J[w+88>>2];sa:{if(h){n=K[s+166080|0]-h|0;h=q+80|0;break sa}n=K[s+166056|0];h=q+96|0}r=p<<2;n=n-((r|0)==(t|0)|(r|0)==(x|0)|(k|0)==(r|0))|0;if(n>>>0>32){break ja}h=K[h+r|0];if((n&63)>>>0>=32){o=0;v=0}else{o=0;v=h>>>n|0}if(v|o){break ja}ta:{if(n){while(1){o=(e>>>3|0)+i|0;v=o;z=K[o|0];o=e&7;H[v|0]=z|h<>>0>>0?e:n;e=v+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>=129){break ta}}h=r|1;n=J[w+88>>2];ua:{if(n){o=q+80|0;n=K[s+166080|0]-n|0;break ua}o=q+96|0;n=K[s+166056|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;v=0}else{o=0;v=h>>>n|0}if(v|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;v=o;z=K[o|0];o=e&7;H[v|0]=z|h<>>0>>0?e:n;e=v+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ta}}h=r|2;n=J[w+88>>2];va:{if(n){o=q+80|0;n=K[s+166080|0]-n|0;break va}o=q+96|0;n=K[s+166056|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;v=0}else{o=0;v=h>>>n|0}if(v|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;v=o;z=K[o|0];o=e&7;H[v|0]=z|h<>>0>>0?e:n;e=v+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ta}}h=r|3;n=J[w+88>>2];wa:{if(n){o=q+80|0;n=K[s+166080|0]-n|0;break wa}o=q+96|0;n=K[s+166056|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break ta}}p=p+1|0;if((p|0)==4){break ra}continue}break}break ia}xa:{if(!y){break xa}p=0;while(1){h=J[w+88>>2];ya:{if(h){n=h+K[s+166056|0]|0;h=q+96|0;break ya}n=K[s+166080|0];h=q+80|0}y=p<<2;n=n-((y|0)==(t|0)|(x|0)==(y|0)|(k|0)==(y|0))|0;if(n>>>0>32){break ja}h=K[h+y|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}za:{if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>=129){break za}}h=y|1;n=J[w+88>>2];Aa:{if(n){o=q+96|0;n=n+K[s+166056|0]|0;break Aa}o=q+80|0;n=K[s+166080|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break za}}h=y|2;n=J[w+88>>2];Ba:{if(n){o=q+96|0;n=n+K[s+166056|0]|0;break Ba}o=q+80|0;n=K[s+166080|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;v=K[o|0];o=e&7;H[r|0]=v|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break za}}h=y|3;n=J[w+88>>2];Ca:{if(n){o=q+96|0;n=n+K[s+166056|0]|0;break Ca}o=q+80|0;n=K[s+166080|0]}n=n-((h|0)==(t|0)|(h|0)==(x|0)|(h|0)==(k|0))|0;if(n>>>0>32){break ja}h=K[h+o|0];if((n&63)>>>0>=32){o=0;r=0}else{o=0;r=h>>>n|0}if(r|o){break ja}if(n){while(1){o=(e>>>3|0)+i|0;r=o;y=K[o|0];o=e&7;H[r|0]=y|h<>>0>>0?e:n;e=r+o|0;h=h>>>o|0;n=n-o|0;if(n){continue}break}if(e>>>0>128){break za}}p=p+1|0;if((p|0)==4){break xa}continue}break}break ia}if((e|0)==128){Ui=q+112|0;break ha}Z(103066,40075,11725,51113);B()}Z(144468,40075,11546,18512);B()}Z(103085,40075,11555,18512);B()}break g;case 5:e=w+104|0;if(!Sm(d,e,0,1)){break c}m=(m|0)<0?3:m;l=(l|0)>0?l:0;h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w);pz(i,l+w|0);pz(i+8|0,m+w|0);break g}e=K[l+u|0];H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+1|0]=e;H[i|0]=e;H[i+6|0]=0;H[i+7|0]=0;e=K[m+u|0];H[i+10|0]=0;H[i+11|0]=0;H[i+12|0]=0;H[i+13|0]=0;H[i+9|0]=e;H[i+8|0]=e;H[i+14|0]=0;H[i+15|0]=0;break g;case 4:e=w+104|0;if(!Sm(d,e,0,1)){break c}l=(l|0)>0?l:0;h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w);pz(i,l+w|0);break g}e=K[l+u|0];H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+1|0]=e;H[i|0]=e;H[i+6|0]=0;H[i+7|0]=0;break g;case 3:e=0;s=Ui-224|0;Ui=s;o=Sm(d,s+72|0,0,1);Da:{if(!o){break Da}k=J[s+176>>2];if((k|0)==8){h=K[s+187|0];k=0;H[i+2|0]=0;H[i+3|0]=0;H[i+4|0]=0;H[i+5|0]=0;H[i+1|0]=h;H[i|0]=h;H[i+6|0]=0;H[i+7|0]=0;n=1;p=170;q=(K[s+186|0]<<1)+318192|0;x=(K[s+185|0]<<1)+318704|0;y=(K[s+184|0]<<1)+318192|0;h=K[q+1|0]|(K[x+1|0]<<5|K[y+1|0]<<11);q=K[q|0]|(K[x|0]<<5|K[y|0]<<11);Ea:{if((h|0)==(q|0)){if(!q){p=85;break Ea}p=0;h=q-1|0}if(h>>>0<=q>>>0){n=q;k=h;break Ea}p=p|85;n=h;k=q}H[i+10|0]=k;H[i+8|0]=n;h=P(p,16843009);H[i+12|0]=h;H[i+13|0]=h>>>8;H[i+14|0]=h>>>16;H[i+15|0]=h>>>24;H[i+11|0]=k>>>8;H[i+9|0]=n>>>8;break Da}h=i+8|0;n=k;k=s+72|0;pn(n,J[s+180>>2],s+184|0,k,s);pz(i,s|3);if(K[s+188|0]==1){xU(k,h);break Da}if(K[s+189|0]==1){wU(s+72|0,s,h);break Da}TE(h,s,0)}Ui=s+224|0;if(!o){break b}break g;case 2:e=0;p=Ui-224|0;Ui=p;s=Sm(d,p+72|0,0,1);Fa:{if(!s){break Fa}h=J[p+176>>2];if((h|0)==8){k=1;q=170;h=(K[p+186|0]<<1)+318192|0;o=(K[p+185|0]<<1)+318704|0;x=(K[p+184|0]<<1)+318192|0;n=K[h+1|0]|(K[o+1|0]<<5|K[x+1|0]<<11);h=K[h|0]|(K[o|0]<<5|K[x|0]<<11);Ga:{if((n|0)==(h|0)){if(!h){q=85;h=0;break Ga}q=0;n=h-1|0}if(h>>>0>=n>>>0){k=h;h=n;break Ga}q=q|85;k=n}H[i+2|0]=h;H[i|0]=k;n=P(q,16843009);H[i+4|0]=n;H[i+5|0]=n>>>8;H[i+6|0]=n>>>16;H[i+7|0]=n>>>24;H[i+3|0]=h>>>8;H[i+1|0]=k>>>8;break Fa}if(K[p+188|0]==1){xU(p+72|0,i);break Fa}k=h;h=p+72|0;pn(k,J[p+180>>2],p+184|0,h,p);if(K[p+189|0]==1){wU(h,p,i);break Fa}TE(i,p,0)}Ui=p+224|0;if(!s){break b}break g;case 1:e=w+104|0;if(!Sm(d,e,0,1)){break c}h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w)}e=w+104|0;nz(e,w,i);vU(e,w,i+8|0);break g;case 0:e=w+104|0;if(!Sm(d,e,0,1)){break c}h=J[w+208>>2];if((h|0)!=8){pn(h,J[w+212>>2],u,e,w)}vU(w+104|0,w,i);break g;case 30:break q}}e=K[d+4|0]|K[d+5|0]<<8|(K[d+6|0]<<16|K[d+7|0]<<24);h=K[d|0]|K[d+1|0]<<8|(K[d+2|0]<<16|K[d+3|0]<<24);H[i|0]=h;H[i+1|0]=h>>>8;H[i+2|0]=h>>>16;H[i+3|0]=h>>>24;H[i+4|0]=e;H[i+5|0]=e>>>8;H[i+6|0]=e>>>16;H[i+7|0]=e>>>24;e=K[d+12|0]|K[d+13|0]<<8|(K[d+14|0]<<16|K[d+15|0]<<24);h=K[d+8|0]|K[d+9|0]<<8|(K[d+10|0]<<16|K[d+11|0]<<24);H[i+8|0]=h;H[i+9|0]=h>>>8;H[i+10|0]=h>>>16;H[i+11|0]=h>>>24;H[i+12|0]=e;H[i+13|0]=e>>>8;H[i+14|0]=e>>>16;H[i+15|0]=e>>>24;break g}e=X<<2;if((e|0)==(j|0)){break h}n=(e+U<<1)+a|0;h=0;while(1){e=0;while(1){k=((h<<4)+w|0)+(e<<2)|0;s=K[k|0];o=K[k+1|0];x=(e<<1)+n|0;y=P(K[k+2|0],15)+128|0;y=(y>>>8|0)+y>>>4|0;k=P(K[k+3|0],15)+128|0;H[x|0]=y&240|(k>>>8|0)+k>>>8;k=P(s,15)+128|0;r=(k>>>8|0)+k<<4&61440;k=P(o,15)+128|0;H[x+1|0]=(y|(r|(k>>>8|0)+k&16128))>>>8;e=e+1|0;if((q|0)!=(e|0)){continue}break}n=n+V|0;h=h+1|0;if((ba|0)!=(h|0)){continue}break}break h}n=(e+U<<1)+a|0;k=0;if(!La){while(1){e=0;while(1){s=(e<<1)+n|0;h=((k<<4)+w|0)+(e<<2)|0;o=P(K[h+1|0],63)+128|0;r=(o>>>8|0)+o>>>3&8160;o=P(K[h+2|0],31)+128|0;h=P(K[h|0],31)+128|0;h=r|(o>>>8|0)+o<<3&260096|(h>>>8|0)+h>>>8;H[s|0]=h;H[s+1|0]=h>>>8;e=e+1|0;if((q|0)!=(e|0)){continue}break}n=n+V|0;k=k+1|0;if((ba|0)!=(k|0)){continue}break i}}while(1){e=0;while(1){s=(e<<1)+n|0;h=((k<<4)+w|0)+(e<<2)|0;o=P(K[h+1|0],63)+128|0;r=(o>>>8|0)+o>>>3&8160;o=P(K[h|0],31)+128|0;h=P(K[h+2|0],31)+128|0;h=r|(o>>>8|0)+o<<3&260096|(h>>>8|0)+h>>>8;H[s|0]=h;H[s+1|0]=h>>>8;e=e+1|0;if((q|0)!=(e|0)){continue}break}n=n+V|0;k=k+1|0;if((ba|0)!=(k|0)){continue}break}break i}e=X<<2;if((e|0)==(j|0)){break j}k=(e+U<<2)+a|0;h=0;while(1){n=0;while(1){p=n<<2;e=p+k|0;p=p+((h<<4)+w|0)|0;H[e|0]=K[p|0];H[e+1|0]=K[p+1|0];H[e+2|0]=K[p+2|0];H[e+3|0]=K[p+3|0];n=n+1|0;if((q|0)!=(n|0)){continue}break}k=k+Oa|0;h=h+1|0;if((ba|0)!=(h|0)){continue}break}break j}Z(21823,40075,9434,70577);B()}Z(21765,40075,9463,70577);B()}Z(21765,40075,9492,70577);B()}if(!s){break c}break g}if(!p){break c}break g}if(!p){break c}}ka=ka-4|0;i=g+i|0;d=d+16|0;X=X+1|0;if((X|0)!=(b|0)){continue}break}$=$-4|0;e=1;M=M+1|0;if((M|0)!=(c|0)){continue}break}break b}Z(72594,40075,9298,70577);B()}Z(114101,40075,9515,70577);B()}if((f|0)==7){y=d;ka=a;x=c;n=0;r=Ui-384|0;Ui=r;Ha:{Ia:{Ja:{Ka:{La:{o=b;Ma:{if(!o|!c){break Ma}if((nxa(o<<2)|0)!=1){break Ma}if((nxa(c<<2)|0)!=1){break Ma}J[r+12>>2]=0;J[r+4>>2]=0;J[r+8>>2]=0;e=P(c,o);if(e){An(r+4|0,e,(e|0)==1,4);z=J[r+4>>2];a=J[r+8>>2];ij(z+(a<<2)|0,0,e-a<<2);J[r+8>>2]=e}s=r+344|0;Na:{while(1){u=P(n,o);d=0;Oa:{while(1){p=d+u|0;a=r+232|0;if(!Sm(y+(p<<4)|0,a,0,0)){break Na}b=0;pn(J[r+336>>2],J[r+340>>2],s,a,r+160|0);k=255;j=255;i=255;a=255;A=0;l=0;m=0;c=0;while(1){h=A&255;f=(r+160|0)+(b<<2)|0;g=K[f+3|0];A=g>>>0>>0?h:g;l=l&255;h=K[f+2|0];l=h>>>0>>0?l:h;m=m&255;q=K[f+1|0];m=m>>>0>q>>>0?m:q;c=c&255;f=K[f|0];c=c>>>0>f>>>0?c:f;k=k&255;k=g>>>0>k>>>0?k:g;g=j&255;j=g>>>0>>0?g:h;g=i&255;i=g>>>0>>0?g:q;a=a&255;a=a>>>0>>0?a:f;b=b+1|0;if((b|0)!=16){continue}break}Pa:{if((k|0)==255){b=K[i+169584|0];a=K[a+169584|0];if((b|a)>>>0>=32){break Ia}a=a<<10|b<<5|K[j+169840|0]<<1|32768;break Pa}b=K[i+169840|0];a=K[a+169840|0];if((b|a)>>>0>15){break Ja}f=K[j+171376|0];g=K[k+171120|0];if((f|g)>>>0>=8){break Ja}a=f<<1&254|(b<<4&240|(a<<8|g<<12))}Qa:{if(A-239>>>0<=16){f=K[l+170096|0];b=K[m+170096|0];c=K[c+170096|0];if((f|(b|c))>>>0>=32){break Ka}a=a|(f|(b<<5|c<<10))<<16|-2147483648;break Qa}if(A>>>0>238){break La}f=K[l+170352|0];b=K[m+170352|0];c=K[c+170352|0];if((f|(b|c))>>>0>=16){break La}a=a|(K[A+171632|0]<<28|(f|(b<<4|c<<8))<<16)}if(e>>>0>p>>>0){J[(p<<2)+z>>2]=a;d=d+1|0;if((o|0)==(d|0)){break Oa}continue}break}break a}n=n+1|0;if((x|0)!=(n|0)){continue}break}if((x|0)<=0){break Na}ba=o-1|0;a=ba?32-S(ba)|0:0;na=x-1|0;b=na?32-S(na)|0:0;ga=a>>>0>>0?a:b;ha=ga<<1;ya=-1<>2]=e;d=J[e+(ba<<2)>>2];Ra:{if(d&32768){A=(d>>>1&15)+171920|0;i=(d>>>10&31)+171888|0;g=(d>>>5&31)+171888|0;a=255;break Ra}A=(d>>>1&7)+171936|0;i=(d>>>8&15)+171920|0;g=(d>>>4&15)+171920|0;a=K[(d>>>12&7)+171944|0]}b=f+(r+160|0)|0;J[b>>2]=K[A|0]+(K[i|0]+(K[g|0]+a|0)|0);a=d>>>16|0;Sa:{if((d|0)<0){A=(a&31)+171888|0;i=(d>>>26&31)+171888|0;a=255;d=(d>>>21&31)+171888|0;break Sa}A=(a&15)+171920|0;i=(d>>>24&15)+171920|0;a=K[(d>>>28|0)+171944|0];d=(d>>>20&15)+171920|0}f=f+(r+96|0)|0;J[f>>2]=K[A|0]+(K[i|0]+(K[d|0]+a|0)|0);d=J[e>>2];Ta:{if(d&32768){A=(d>>>1&15)+171920|0;i=(d>>>10&31)+171888|0;g=(d>>>5&31)+171888|0;a=255;break Ta}A=(d>>>1&7)+171936|0;i=(d>>>8&15)+171920|0;g=(d>>>4&15)+171920|0;a=K[(d>>>12&7)+171944|0]}J[b+16>>2]=K[A|0]+(K[i|0]+(K[g|0]+a|0)|0);a=d>>>16|0;Ua:{if((d|0)<0){A=(a&31)+171888|0;i=(d>>>26&31)+171888|0;a=255;d=(d>>>21&31)+171888|0;break Ua}A=(a&15)+171920|0;i=(d>>>24&15)+171920|0;a=K[(d>>>28|0)+171944|0];d=(d>>>20&15)+171920|0}J[f+16>>2]=K[A|0]+(K[i|0]+(K[d|0]+a|0)|0);e=J[e+Aa>>2];Va:{if(e&32768){A=(e>>>5&31)+171888|0;k=(e>>>10&31)+171888|0;i=255;a=(e>>>1&15)+171920|0;break Va}A=(e>>>4&15)+171920|0;k=(e>>>8&15)+171920|0;i=K[(e>>>12&7)+171944|0];a=(e>>>1&7)+171936|0}J[b+32>>2]=K[a|0]+(K[k|0]+(K[A|0]+i|0)|0);a=e>>>16|0;Wa:{if((e|0)<0){d=(a&31)+171888|0;A=(e>>>26&31)+171888|0;b=(e>>>21&31)+171888|0;a=255;break Wa}d=(a&15)+171920|0;A=(e>>>24&15)+171920|0;b=(e>>>20&15)+171920|0;a=K[(e>>>28|0)+171944|0]}J[f+32>>2]=K[d|0]+(K[A|0]+(K[b|0]+a|0)|0);c=c+1|0;if((c|0)!=3){continue}break}c=J[r+96>>2];d=J[r+160>>2];Xa:{if((o|0)<=0){a=c;b=d;break Xa}Ba=L[((E&255)<<1)+170608>>1]|L[(E>>>7&33554430)+170608>>1]<<16;wa=E>>>ga<>2];s=J[r+104>>2];n=J[r+184>>2];u=J[r+168>>2];k=J[r+116>>2];l=J[r+100>>2];q=J[r+112>>2];i=J[r+180>>2];m=J[r+164>>2];j=J[r+176>>2];Ea=J[r+92>>2];Fa=J[r+88>>2];Oa=J[r+84>>2];while(1){b=j;a=q;h=p;e=r+232|0;if(Sm(y+(F<<4)|0,e,0,0)){pn(J[r+336>>2],J[r+340>>2],za,e,r+16|0)}f=k;e=i;g=n;i=Ba|L[(A>>>7&33554430)+170608>>1]<<17|L[((A&255)<<1)+170608>>1]<<1;Ya:{if((o|0)==(x|0)){break Ya}j=i&ya;i=j|A>>>ga<>>0>x>>>0){break Ya}i=j|wa}p=(i<<3)+ka|0;J[p+4>>2]=J[(F<<2)+z>>2];A=A+1|0;D=(ba&A)<<2;t=J[D+Oa>>2];Za:{if(t&32768){q=(t>>>5&31)+171888|0;j=(t>>>10&31)+171888|0;k=255;i=(t>>>1&15)+171920|0;break Za}q=(t>>>4&15)+171920|0;j=(t>>>8&15)+171920|0;k=K[(t>>>12&7)+171944|0];i=(t>>>1&7)+171936|0}n=t>>>16|0;V=K[q|0];G=K[j|0];aa=K[i|0];_a:{if((t|0)<0){n=(n&31)+171888|0;j=(t>>>21&31)+171888|0;q=(t>>>26&31)+171888|0;i=255;break _a}n=(n&15)+171920|0;j=(t>>>20&15)+171920|0;q=(t>>>24&15)+171920|0;i=K[(t>>>28|0)+171944|0]}t=K[j|0];q=K[q|0];U=K[n|0];n=J[D+Fa>>2];$a:{if(n&32768){$=(n>>>5&31)+171888|0;v=(n>>>10&31)+171888|0;X=255;j=(n>>>1&15)+171920|0;break $a}$=(n>>>4&15)+171920|0;v=(n>>>8&15)+171920|0;X=K[(n>>>12&7)+171944|0];j=(n>>>1&7)+171936|0}k=k+V|0;t=i+t|0;i=n>>>16|0;$=K[$|0]+X|0;V=K[v|0];C=K[j|0];ab:{if((n|0)<0){j=(i&31)+171888|0;v=(n>>>21&31)+171888|0;X=(n>>>26&31)+171888|0;i=255;break ab}j=(i&15)+171920|0;v=(n>>>20&15)+171920|0;X=(n>>>24&15)+171920|0;i=K[(n>>>28|0)+171944|0]}k=k+G|0;q=q+t|0;ca=V+$|0;Y=K[X|0]+(i+K[v|0]|0)|0;fa=K[j|0];D=J[D+Ea>>2];bb:{if(D&32768){$=(D>>>1&15)+171920|0;v=(D>>>5&31)+171888|0;la=255;X=(D>>>10&31)+171888|0;break bb}$=(D>>>1&7)+171936|0;v=(D>>>4&15)+171920|0;la=K[(D>>>12&7)+171944|0];X=(D>>>8&15)+171920|0}ma=D>>>16|0;t=p;i=b+e|0;ja=P(i,6);ra=ja+(d+m<<1)|0;j=(K[r+23|0]+(K[r+22|0]+(K[r+21|0]+K[r+20|0]|0)|0)<<8)-(ra<<4)|0;p=0-j|0;n=j;j=a+f|0;ea=P(j,6);Ka=ea+(c+l<<1)|0;La=(Ka|0)<(ra|0);n=La?p:n;G=b+d|0;p=e+m|0;V=G+p|0;M=(K[r+19|0]+(K[r+18|0]+(K[r+17|0]+K[r+16|0]|0)|0)<<8)-(V<<6)|0;W=0-M|0;ta=M;M=a+c|0;_=f+l|0;Ca=M+_<<2;Ma=V<<2;Da=(Ca|0)<(Ma|0);V=Da?W:ta;oa=P(p,6);sa=oa+(G<<1)|0;G=(K[r+35|0]+(K[r+34|0]+(K[r+33|0]+K[r+32|0]|0)|0)<<8)-(sa<<4)|0;pa=P(_,6);Na=pa+(M<<1)|0;Ga=(Na|0)<(sa|0);G=Ga?0-G|0:G;M=d;W=P(b,3);qa=P(m,3);d=P(e,9);ia=M+(W+(qa+d|0)|0)|0;M=(K[r+39|0]+(K[r+38|0]+(K[r+37|0]+K[r+36|0]|0)|0)<<8)-(ia<<4)|0;ua=P(f,9);xa=ua+P(l,3)|0;Ha=P(a,3);Ra=(xa+Ha|0)+c|0;Sa=(Ra|0)<(ia|0);c=Sa?0-M|0:M;M=(K[r+27|0]+(K[r+26|0]+(K[r+25|0]+K[r+24|0]|0)|0)<<8)-(i<<7)|0;Ta=j<<3;Ua=i<<3;Ia=(Ta|0)<(Ua|0);M=Ia?0-M|0:M;i=C+ca|0;j=k+aa|0;ja=ja+(i+j<<1)|0;k=(K[r+31|0]+(K[r+30|0]+(K[r+29|0]+K[r+28|0]|0)|0)<<8)-(ja<<4)|0;ta=0-k|0;C=k;k=Y+fa|0;q=q+U|0;Ja=ea+(k+q<<1)|0;Va=(Ja|0)<(ja|0);aa=Va?ta:C;U=P(e,12);fa=U+(b<<2)|0;C=(K[r+43|0]+(K[r+42|0]+(K[r+41|0]+K[r+40|0]|0)|0)<<8)-(fa<<4)|0;Y=0-C|0;ta=C;C=P(f,12);Wa=C+(a<<2)|0;Xa=(Wa|0)<(fa|0);ca=Xa?Y:ta;ta=P(i,3);ea=ta+((d+W|0)+j|0)|0;Y=(K[r+47|0]+(K[r+46|0]+(K[r+45|0]+K[r+44|0]|0)|0)<<8)-(ea<<4)|0;W=q+Ha|0;Ha=ua+P(k,3)|0;Ya=W+Ha|0;Za=(Ya|0)<(ea|0);Y=Za?0-Y|0:Y;W=(K[r+51|0]+(K[r+50|0]+(K[r+49|0]+K[r+48|0]|0)|0)<<8)-(p<<7)|0;_a=_<<3;$a=p<<3;ab=(_a|0)<($a|0);p=ab?0-W|0:W;W=U+(m<<2)|0;m=(K[r+55|0]+(K[r+54|0]+(K[r+53|0]+K[r+52|0]|0)|0)<<8)-(W<<4)|0;bb=C+(l<<2)|0;cb=(bb|0)<(W|0);l=cb?0-m|0:m;oa=oa+(g+u<<1)|0;m=(K[r+67|0]+(K[r+66|0]+(K[r+65|0]+K[r+64|0]|0)|0)<<8)-(oa<<4)|0;db=pa+(h+s<<1)|0;eb=(db|0)<(oa|0);m=eb?0-m|0:m;fb=P(g,3);pa=qa+(d+(fb+u|0)|0)|0;u=(K[r+71|0]+(K[r+70|0]+(K[r+69|0]+K[r+68|0]|0)|0)<<8)-(pa<<4)|0;s=s+xa|0;xa=P(h,3);gb=s+xa|0;hb=(gb|0)<(pa|0);s=hb?0-u|0:u;u=K[r+59|0]+(K[r+58|0]+(K[r+57|0]+(K[r+56|0]-e|0)|0)|0)<<8;ib=f<<4;jb=e<<4;kb=(ib|0)<(jb|0);u=kb?0-u|0:u;qa=U+(i<<2)|0;_=(K[r+63|0]+(K[r+62|0]+(K[r+61|0]+K[r+60|0]|0)|0)<<8)-(qa<<4)|0;lb=C+(k<<2)|0;vb=(lb|0)<(qa|0);_=vb?0-_|0:_;ua=U+(g<<2)|0;U=(K[r+75|0]+(K[r+74|0]+(K[r+73|0]+K[r+72|0]|0)|0)<<8)-(ua<<4)|0;wb=C+(h<<2)|0;xb=(wb|0)<(ua|0);U=xb?0-U|0:U;C=Ka-ra|0;C=La?0-C|0:C;C=(n|0)>(P(C,13)|0)?12:(n|0)>C<<3?8:((n|0)>(P(C,3)|0))<<2;n=Ca-Ma|0;n=Da?0-n|0:n;C=C|((V|0)>(P(n,13)|0)?3:(V|0)>n<<3?2:(V|0)>(P(n,3)|0));n=Na-sa|0;n=Ga?0-n|0:n;G=C|((G|0)>(P(n,13)|0)?768:(G|0)>n<<3?512:((G|0)>(P(n,3)|0))<<8);n=Ra-ia|0;n=Sa?0-n|0:n;n=G|((c|0)>(P(n,13)|0)?3072:(c|0)>n<<3?2048:((c|0)>(P(n,3)|0))<<10);c=Ta-Ua|0;c=Ia?0-c|0:c;n=n|((M|0)>(P(c,13)|0)?48:(M|0)>c<<3?32:((M|0)>(P(c,3)|0))<<4);c=Ja-ja|0;c=Va?0-c|0:c;n=n|((aa|0)>(P(c,13)|0)?192:(aa|0)>c<<3?128:((aa|0)>(P(c,3)|0))<<6);c=Wa-fa|0;c=Xa?0-c|0:c;n=n|((ca|0)>(P(c,13)|0)?12288:(ca|0)>c<<3?8192:((ca|0)>(P(c,3)|0))<<12);c=Ya-ea|0;c=Za?0-c|0:c;n=n|((Y|0)>(P(c,13)|0)?49152:(Y|0)>c<<3?32768:((Y|0)>(P(c,3)|0))<<14);c=_a-$a|0;c=ab?0-c|0:c;n=n|((p|0)>(P(c,13)|0)?196608:(p|0)>c<<3?131072:((p|0)>(P(c,3)|0))<<16);c=bb-W|0;c=cb?0-c|0:c;l=n|((l|0)>(P(c,13)|0)?786432:(l|0)>c<<3?524288:((l|0)>(P(c,3)|0))<<18);c=db-oa|0;c=eb?0-c|0:c;l=l|((m|0)>(P(c,13)|0)?50331648:(m|0)>c<<3?33554432:((m|0)>(P(c,3)|0))<<24);c=gb-pa|0;c=hb?0-c|0:c;l=l|((s|0)>(P(c,13)|0)?201326592:(s|0)>c<<3?134217728:((s|0)>(P(c,3)|0))<<26);c=ib-jb|0;c=kb?0-c|0:c;l=l|((u|0)>(P(c,13)|0)?3145728:(u|0)>c<<3?2097152:((u|0)>(P(c,3)|0))<<20);c=lb-qa|0;c=vb?0-c|0:c;l=l|((_|0)>(P(c,13)|0)?12582912:(_|0)>c<<3?8388608:((_|0)>(P(c,3)|0))<<22);c=wb-ua|0;c=xb?0-c|0:c;m=l|((U|0)>(P(c,13)|0)?805306368:(U|0)>c<<3?536870912:((U|0)>(P(c,3)|0))<<28);n=K[$|0]+(K[X|0]+(la+K[v|0]|0)|0)|0;d=n+(ta+(d+fb|0)|0)|0;c=(K[r+79|0]+(K[r+78|0]+(K[r+77|0]+K[r+76|0]|0)|0)<<8)-(d<<4)|0;G=0-c|0;cb:{if((D|0)<0){$=(D>>>21&31)+171888|0;v=(D>>>26&31)+171888|0;X=255;l=(ma&31)+171888|0;break cb}$=(D>>>20&15)+171920|0;v=(D>>>24&15)+171920|0;X=K[(D>>>28|0)+171944|0];l=(ma&15)+171920|0}p=K[l|0]+(K[v|0]+(K[$|0]+X|0)|0)|0;l=p+(xa+Ha|0)|0;s=(l|0)<(d|0);c=s?G:c;d=l-d|0;d=s?0-d|0:d;J[t>>2]=((c|0)>(P(d,13)|0)?-1073741824:(c|0)>d<<3?-2147483648:((c|0)>(P(d,3)|0))<<30)|m;F=F+1|0;s=h;u=g;l=f;m=e;d=b;c=a;if((o|0)!=(A|0)){continue}break}J[r+180>>2]=i;J[r+164>>2]=e;J[r+176>>2]=j;J[r+112>>2]=q;J[r+116>>2]=k;J[r+100>>2]=f;J[r+184>>2]=n;J[r+168>>2]=u;J[r+120>>2]=p;J[r+104>>2]=h}J[r+96>>2]=a;J[r+160>>2]=b;E=E+1|0;if((x|0)!=(E|0)){continue}break}z=J[r+4>>2]}if(!z){break Ma}cj(z)}Ui=r+384|0;break Ha}Z(143939,40075,3215,6807);B()}Z(144226,40075,3198,6807);B()}Z(143896,40075,3208,6807);B()}Z(144092,40075,3191,6807);B()}e=1;break b}x=d;i=a;s=c;c=0;u=Ui-384|0;Ui=u;db:{eb:{fb:{o=b;gb:{if(!o|!s){break gb}if((nxa(o<<2)|0)!=1){break gb}if((nxa(s<<2)|0)!=1){break gb}J[u+12>>2]=0;J[u+4>>2]=0;J[u+8>>2]=0;a=P(o,s);if(a){An(u+4|0,a,(a|0)==1,4);r=J[u+4>>2];b=J[u+8>>2];ij(r+(b<<2)|0,0,a-b<<2);J[u+8>>2]=a}ya=u+344|0;hb:{while(1){za=P(c,o);d=0;ib:{while(1){ua=d+za|0;b=u+232|0;if(!Sm(x+(ua<<4)|0,b,0,0)){break hb}pn(J[u+336>>2],J[u+340>>2],ya,b,u+160|0);b=K[u+162|0];e=K[u+166|0];g=b>>>0>e>>>0?b:e;f=K[u+170|0];h=f>>>0>>0?g:f;g=K[u+174|0];j=g>>>0>>0?h:g;h=K[u+178|0];k=h>>>0>>0?j:h;j=K[u+182|0];l=j>>>0>>0?k:j;k=K[u+186|0];m=k>>>0>>0?l:k;l=K[u+190|0];n=l>>>0>>0?m:l;m=K[u+194|0];q=m>>>0>>0?n:m;n=K[u+198|0];p=n>>>0>>0?q:n;q=K[u+202|0];ka=q>>>0>>0?p:q;p=K[u+206|0];y=p>>>0>>0?ka:p;ka=K[u+210|0];t=y>>>0>ka>>>0?y:ka;y=K[u+214|0];A=t>>>0>y>>>0?t:y;t=K[u+218|0];X=t>>>0>>0?A:t;A=K[u+222|0];Aa=A>>>0>>0?X:A;X=K[u+161|0];v=K[u+165|0];$=v>>>0>>0?X:v;D=K[u+169|0];E=D>>>0<$>>>0?$:D;$=K[u+173|0];z=E>>>0>$>>>0?E:$;E=K[u+177|0];ba=E>>>0>>0?z:E;z=K[u+181|0];F=z>>>0>>0?ba:z;ba=K[u+185|0];V=F>>>0>ba>>>0?F:ba;F=K[u+189|0];G=F>>>0>>0?V:F;V=K[u+193|0];M=G>>>0>V>>>0?G:V;G=K[u+197|0];aa=G>>>0>>0?M:G;M=K[u+201|0];U=M>>>0>>0?aa:M;aa=K[u+205|0];C=U>>>0>aa>>>0?U:aa;U=K[u+209|0];ca=C>>>0>U>>>0?C:U;C=K[u+213|0];Y=C>>>0>>0?ca:C;ca=K[u+217|0];_=Y>>>0>ca>>>0?Y:ca;Y=K[u+221|0];Ba=_>>>0>Y>>>0?_:Y;_=K[u+160|0];na=K[u+164|0];ha=_>>>0>na>>>0?_:na;ga=K[u+168|0];la=ga>>>0>>0?ha:ga;ha=K[u+172|0];ma=ha>>>0>>0?la:ha;la=K[u+176|0];ra=la>>>0>>0?ma:la;ma=K[u+180|0];sa=ma>>>0>>0?ra:ma;ra=K[u+184|0];ia=ra>>>0>>0?sa:ra;sa=K[u+188|0];ja=ia>>>0>sa>>>0?ia:sa;ia=K[u+192|0];fa=ia>>>0>>0?ja:ia;ja=K[u+196|0];ea=fa>>>0>ja>>>0?fa:ja;fa=K[u+200|0];W=fa>>>0>>0?ea:fa;ea=K[u+204|0];oa=W>>>0>ea>>>0?W:ea;W=K[u+208|0];pa=W>>>0>>0?oa:W;oa=K[u+212|0];qa=oa>>>0>>0?pa:oa;pa=K[u+216|0];wa=pa>>>0>>0?qa:pa;qa=K[u+220|0];wa=qa>>>0>>0?wa:qa;b=b>>>0>>0?b:e;b=b>>>0>>0?b:f;b=b>>>0>>0?b:g;b=b>>>0>>0?b:h;b=b>>>0>>0?b:j;b=b>>>0>>0?b:k;b=b>>>0>>0?b:l;b=b>>>0>>0?b:m;b=b>>>0>>0?b:n;b=b>>>0>>0?b:q;b=b>>>0>>0?b:p;b=b>>>0>>0?b:ka;b=b>>>0>>0?b:y;b=b>>>0>>0?b:t;b=b>>>0>>0?b:A;e=v>>>0>X>>>0?X:v;e=e>>>0>>0?e:D;e=e>>>0<$>>>0?e:$;e=e>>>0>>0?e:E;e=e>>>0>>0?e:z;e=e>>>0>>0?e:ba;e=e>>>0>>0?e:F;e=e>>>0>>0?e:V;e=e>>>0>>0?e:G;e=e>>>0>>0?e:M;e=e>>>0>>0?e:aa;e=e>>>0>>0?e:U;e=e>>>0>>0?e:C;e=e>>>0>>0?e:ca;e=e>>>0>>0?e:Y;f=_>>>0>>0?_:na;f=f>>>0>>0?f:ga;f=f>>>0>>0?f:ha;f=f>>>0>>0?f:la;f=f>>>0>>0?f:ma;f=f>>>0>>0?f:ra;f=f>>>0>>0?f:sa;f=f>>>0>>0?f:ia;f=f>>>0>>0?f:ja;f=f>>>0>>0?f:fa;f=f>>>0>>0?f:ea;f=f>>>0>>0?f:W;f=f>>>0>>0?f:oa;f=f>>>0>>0?f:pa;f=f>>>0>>0?f:qa;if(a>>>0>ua>>>0){J[(ua<<2)+r>>2]=K[(f&255)+169584|0]<<10&31744|K[(e&255)+169584|0]<<5|K[(b&255)+169840|0]<<1|(K[(Aa&255)+170096|0]|(K[(Ba&255)+170096|0]<<5|K[(wa&255)+170096|0]<<10))<<16|-2147450880;d=d+1|0;if((o|0)==(d|0)){break ib}continue}break}break a}c=c+1|0;if((s|0)!=(c|0)){continue}break}if(!J[u+8>>2]){break a}if((s|0)<=0){break hb}r=o-1|0;a=r?32-S(r)|0:0;ca=s-1|0;b=ca?32-S(ca)|0:0;Y=a>>>0>>0?a:b;_=Y<<1;oa=-1<<_^-1;na=J[u+4>>2];pa=u+344|0;qa=(r&1)<<2;X=0;y=0;while(1){e=y-1|0;g=0;jb:{while(1){c=g<<2;b=na+(P(o,ca&e+g)<<2)|0;J[c+(u+84|0)>>2]=b;a=J[b+(r<<2)>>2];if(!(a&32768)){break eb}d=c+(u+160|0)|0;f=a&30;J[d>>2]=(P((f+(a>>>5&31)|0)+(a>>>10&31)+(f>>>4)|0,255)>>>0)/31;kb:{if((a|0)>=0){break kb}c=c+(u+96|0)|0;J[c>>2]=(P(((a>>>26&31)+(a>>>21&31)|0)+(a>>>16&31)|0,255)>>>0)/31;a=J[b>>2];if(!(a&32768)){break eb}f=a&30;J[d+16>>2]=(P((f+(a>>>5&31)|0)+(a>>>10&31)+(f>>>4)|0,255)>>>0)/31;if((a|0)>=0){break kb}J[c+16>>2]=(P(((a>>>26&31)+(a>>>21&31)|0)+(a>>>16&31)|0,255)>>>0)/31;a=J[b+qa>>2];if(!(a&32768)){break eb}b=a&30;J[d+32>>2]=(P((b+(a>>>5&31)|0)+(a>>>10&31)+(b>>>4)|0,255)>>>0)/31;if((a|0)>=0){break kb}J[c+32>>2]=(P(((a>>>26&31)+(a>>>21&31)|0)+(a>>>16&31)|0,255)>>>0)/31;g=g+1|0;if((g|0)==3){break jb}continue}break}break fb}c=J[u+96>>2];d=J[u+160>>2];lb:{if((o|0)<=0){a=c;b=d;break lb}ua=L[((y&255)<<1)+170608>>1]|L[(y>>>7&33554430)+170608>>1]<<16;ya=y>>>Y<<_;A=0;k=J[u+120>>2];q=J[u+104>>2];l=J[u+184>>2];p=J[u+168>>2];j=J[u+116>>2];m=J[u+100>>2];n=J[u+112>>2];g=J[u+180>>2];h=J[u+164>>2];ka=J[u+176>>2];za=J[u+92>>2];Aa=J[u+88>>2];Ba=J[u+84>>2];mb:{while(1){b=ka;a=n;e=u+232|0;if(Sm(x+(X<<4)|0,e,0,0)){pn(J[u+336>>2],J[u+340>>2],pa,e,u+16|0)}e=ua|L[(A>>>7&33554430)+170608>>1]<<17|L[((A&255)<<1)+170608>>1]<<1;nb:{if((o|0)==(s|0)){break nb}f=e&oa;e=f|A>>>Y<<_;if(o>>>0>s>>>0){break nb}e=f|ya}wa=(e<<3)+i|0;J[wa+4>>2]=J[na+(X<<2)>>2];A=A+1|0;v=(r&A)<<2;e=J[v+Ba>>2];if(e&32768){f=e&30;ka=(P((f+(e>>>5&31)|0)+(e>>>10&31)+(f>>>4)|0,255)>>>0)/31|0;if((e|0)>=0){break fb}n=(P(((e>>>26&31)+(e>>>21&31)|0)+(e>>>16&31)|0,255)>>>0)/31|0;t=J[v+Aa>>2];if(!(t&32768)){break eb}e=g;f=t&30;g=(P((f+(t>>>5&31)|0)+(t>>>10&31)+(f>>>4)|0,255)>>>0)/31|0;if((t|0)>=0){break fb}f=j;j=(P(((t>>>26&31)+(t>>>21&31)|0)+(t>>>16&31)|0,255)>>>0)/31|0;t=J[v+za>>2];if(!(t&32768)){break eb}if((t|0)>=0){break fb}ba=b+e|0;F=P(ba,6);ga=F+(d+h<<1)|0;v=(K[u+22|0]+(K[u+21|0]+K[u+20|0]|0)<<8)-(ga<<4)|0;V=a+f|0;G=P(V,6);Ea=G+(c+m<<1)|0;Fa=(Ea|0)<(ga|0);v=Fa?0-v|0:v;E=b+d|0;D=e+h|0;$=E+D|0;z=(K[u+18|0]+(K[u+17|0]+K[u+16|0]|0)<<8)-($<<6)|0;M=0-z|0;C=z;z=a+c|0;U=f+m|0;Oa=z+U<<2;Ka=$<<2;La=(Oa|0)<(Ka|0);$=La?M:C;C=P(D,6);ha=C+(E<<1)|0;E=(K[u+34|0]+(K[u+33|0]+K[u+32|0]|0)<<8)-(ha<<4)|0;fa=P(U,6);Ca=fa+(z<<1)|0;Ma=(Ca|0)<(ha|0);E=Ma?0-E|0:E;z=d;aa=P(b,3);ea=P(h,3);d=P(e,9);la=z+(aa+(ea+d|0)|0)|0;z=(K[u+38|0]+(K[u+37|0]+K[u+36|0]|0)<<8)-(la<<4)|0;M=c;c=P(f,9);W=c+P(m,3)|0;ia=P(a,3);Da=M+(W+ia|0)|0;Na=(Da|0)<(la|0);z=Na?0-z|0:z;M=(K[u+26|0]+(K[u+25|0]+K[u+24|0]|0)<<8)-(ba<<7)|0;Ga=V<<3;xa=ba<<3;Ha=(Ga|0)<(xa|0);ba=Ha?0-M|0:M;ma=F+(g+ka<<1)|0;F=(K[u+30|0]+(K[u+29|0]+K[u+28|0]|0)<<8)-(ma<<4)|0;Ra=G+(j+n<<1)|0;Sa=(Ra|0)<(ma|0);F=Sa?0-F|0:F;V=P(e,12);ra=V+(b<<2)|0;G=(K[u+42|0]+(K[u+41|0]+K[u+40|0]|0)<<8)-(ra<<4)|0;ta=0-G|0;M=G;G=P(f,12);Ta=G+(a<<2)|0;Ua=(Ta|0)<(ra|0);M=Ua?ta:M;Ia=P(g,3);sa=Ia+((d+aa|0)+ka|0)|0;aa=(K[u+46|0]+(K[u+45|0]+K[u+44|0]|0)<<8)-(sa<<4)|0;Ja=c+P(j,3)|0;Va=Ja+(n+ia|0)|0;Wa=(Va|0)<(sa|0);aa=Wa?0-aa|0:aa;c=(K[u+50|0]+(K[u+49|0]+K[u+48|0]|0)<<8)-(D<<7)|0;Xa=U<<3;ta=D<<3;Ya=(Xa|0)<(ta|0);D=Ya?0-c|0:c;ia=V+(h<<2)|0;c=(K[u+54|0]+(K[u+53|0]+K[u+52|0]|0)<<8)-(ia<<4)|0;Za=G+(m<<2)|0;_a=(Za|0)<(ia|0);h=_a?0-c|0:c;c=l;ja=C+(c+p<<1)|0;m=(K[u+66|0]+(K[u+65|0]+K[u+64|0]|0)<<8)-(ja<<4)|0;$a=fa+(k+q<<1)|0;ab=($a|0)<(ja|0);m=ab?0-m|0:m;bb=P(c,3);fa=ea+(d+(bb+p|0)|0)|0;p=(K[u+70|0]+(K[u+69|0]+K[u+68|0]|0)<<8)-(fa<<4)|0;l=q+W|0;q=k;cb=P(k,3);db=l+cb|0;eb=(db|0)<(fa|0);p=eb?0-p|0:p;U=K[u+58|0]+(K[u+57|0]+(K[u+56|0]-e|0)|0)<<8;fb=f<<4;gb=e<<4;hb=(fb|0)<(gb|0);U=hb?0-U|0:U;ea=V+(g<<2)|0;C=(K[u+62|0]+(K[u+61|0]+K[u+60|0]|0)<<8)-(ea<<4)|0;ib=G+(j<<2)|0;jb=(ib|0)<(ea|0);C=jb?0-C|0:C;W=V+(c<<2)|0;l=(K[u+74|0]+(K[u+73|0]+K[u+72|0]|0)<<8)-(W<<4)|0;kb=G+(k<<2)|0;lb=(kb|0)<(W|0);V=lb?0-l|0:l;k=t&30;l=(P((k+(t>>>5&31)|0)+(t>>>10&31)+(k>>>4)|0,255)>>>0)/31|0;G=l+(Ia+(d+bb|0)|0)|0;d=(K[u+78|0]+(K[u+77|0]+K[u+76|0]|0)<<8)-(G<<4)|0;k=(P(((t>>>26&31)+(t>>>21&31)|0)+(t>>>16&31)|0,255)>>>0)/31|0;Ia=k+(Ja+cb|0)|0;Ja=(Ia|0)<(G|0);d=Ja?0-d|0:d;t=Ea-ga|0;t=Fa?0-t|0:t;v=(v|0)>(P(t,13)|0)?12:(v|0)>t<<3?8:((v|0)>(P(t,3)|0))<<2;t=Oa-Ka|0;t=La?0-t|0:t;v=v|(($|0)>(P(t,13)|0)?3:($|0)>t<<3?2:($|0)>(P(t,3)|0));t=Ca-ha|0;t=Ma?0-t|0:t;v=v|((E|0)>(P(t,13)|0)?768:(E|0)>t<<3?512:((E|0)>(P(t,3)|0))<<8);t=Da-la|0;t=Na?0-t|0:t;v=v|((z|0)>(P(t,13)|0)?3072:(z|0)>t<<3?2048:((z|0)>(P(t,3)|0))<<10);t=Ga-xa|0;t=Ha?0-t|0:t;v=v|((ba|0)>(P(t,13)|0)?48:(ba|0)>t<<3?32:((ba|0)>(P(t,3)|0))<<4);t=Ra-ma|0;t=Sa?0-t|0:t;v=v|((F|0)>(P(t,13)|0)?192:(F|0)>t<<3?128:((F|0)>(P(t,3)|0))<<6);t=Ta-ra|0;t=Ua?0-t|0:t;v=v|((M|0)>(P(t,13)|0)?12288:(M|0)>t<<3?8192:((M|0)>(P(t,3)|0))<<12);t=Va-sa|0;t=Wa?0-t|0:t;v=v|((aa|0)>(P(t,13)|0)?49152:(aa|0)>t<<3?32768:((aa|0)>(P(t,3)|0))<<14);t=Xa-ta|0;t=Ya?0-t|0:t;v=v|((D|0)>(P(t,13)|0)?196608:(D|0)>t<<3?131072:((D|0)>(P(t,3)|0))<<16);t=Za-ia|0;t=_a?0-t|0:t;t=v|((h|0)>(P(t,13)|0)?786432:(h|0)>t<<3?524288:((h|0)>(P(t,3)|0))<<18);h=$a-ja|0;h=ab?0-h|0:h;m=t|((m|0)>(P(h,13)|0)?50331648:(m|0)>h<<3?33554432:((m|0)>(P(h,3)|0))<<24);h=db-fa|0;h=eb?0-h|0:h;m=m|((p|0)>(P(h,13)|0)?201326592:(p|0)>h<<3?134217728:((p|0)>(P(h,3)|0))<<26);h=fb-gb|0;h=hb?0-h|0:h;m=m|((U|0)>(P(h,13)|0)?3145728:(U|0)>h<<3?2097152:((U|0)>(P(h,3)|0))<<20);h=ib-ea|0;h=jb?0-h|0:h;m=m|((C|0)>(P(h,13)|0)?12582912:(C|0)>h<<3?8388608:((C|0)>(P(h,3)|0))<<22);h=kb-W|0;h=lb?0-h|0:h;m=m|((V|0)>(P(h,13)|0)?805306368:(V|0)>h<<3?536870912:((V|0)>(P(h,3)|0))<<28);h=Ia-G|0;h=Ja?0-h|0:h;J[wa>>2]=m|((d|0)>(P(h,13)|0)?-1073741824:(d|0)>h<<3?-2147483648:((d|0)>(P(h,3)|0))<<30);X=X+1|0;p=c;m=f;h=e;d=b;c=a;if((o|0)==(A|0)){break mb}continue}break}break eb}J[u+128>>2]=n;J[u+192>>2]=ka;J[u+196>>2]=g;J[u+132>>2]=j;J[u+200>>2]=l;J[u+136>>2]=k;J[u+176>>2]=ka;J[u+180>>2]=g;J[u+164>>2]=h;J[u+112>>2]=n;J[u+116>>2]=j;J[u+100>>2]=m;J[u+184>>2]=l;J[u+168>>2]=p;J[u+120>>2]=k;J[u+104>>2]=q}J[u+96>>2]=a;J[u+160>>2]=b;y=y+1|0;if((s|0)!=(y|0)){continue}break}}a=J[u+4>>2];if(!a){break gb}cj(a)}Ui=u+384|0;break db}Z(111668,40075,3363,109988);B()}Z(111668,40075,3348,111447);B()}e=1;break b}e=0}Ui=w+256|0;return e}Z(58877,54122,366,84789);B()}function FQ(a){var b=0,c=0,d=Q(0),e=0,f=0,g=Q(0),h=0,i=0,j=Q(0),k=Q(0),l=0,m=Q(0),n=0,o=Q(0),p=0,q=Q(0),r=0,s=Q(0),t=0,u=0,w=0,y=0,z=0,A=0,E=0,F=0,G=0,M=Q(0),O=Q(0),S=Q(0),T=0,U=Q(0),W=Q(0),X=0,_=Q(0),$=Q(0),aa=0,ba=0,ca=0,da=Q(0),ea=0,fa=Q(0),ga=0,ha=Q(0),ia=Q(0),ja=Q(0),ka=0,la=Q(0),ma=0,na=Q(0),oa=0,pa=Q(0),qa=Q(0),ra=Q(0),sa=0,ta=Q(0),ua=Q(0),va=Q(0),wa=Q(0),xa=0,ya=Q(0),za=0,Aa=0,Ba=0,Ca=0,Da=Q(0),Ea=0,Fa=0,Ga=0,Ha=0,Ia=0,Ja=0,Ka=0;u=Ui-144|0;Ui=u;a:{b:{c:{d:{e:{ea=J[a+8>>2];if(ea){ma=J[a+12>>2];f:{if(!K[269788]){break f}b=J[ea+152>>2];c=J[ea+148>>2];if((b|0)==(c|0)){break f}b=b-c>>2;i=b>>>0<=1?1:b;b=0;while(1){c=J[ea+148>>2];if(J[ea+152>>2]-c>>2>>>0<=b>>>0){break d}c=J[c+(b<<2)>>2];e=J[c>>2];f=J[e+136>>2];if(!(!f|J[f+32>>2]>=0)){l=J[e+140>>2];h=jM(u+52|0);MP(ea,c,J[c>>2],l,1,h);I[c+24>>1]=L[u+82>>1];vC(J[ea+132>>2],J[c+8>>2]);e=J[e+136>>2];l=J[e+12>>2];e=J[e+8>>2];if((l|0)==(e|0)){break e}e=YL(J[ea+132>>2],h,e,0,0,l-e>>2);J[c+8>>2]=e;if(J[J[c>>2]+168>>2]<0){kM(e)}CP(ea,c);J[f+32>>2]=J[f+32>>2]&2147483647}b=b+1|0;if((i|0)!=(b|0)){continue}break}}J[u+124>>2]=0;J[u+120>>2]=ma;J[u+116>>2]=ea;J[u+112>>2]=0;J[u+108>>2]=ma;J[u+104>>2]=ea;p=u+52|0;b=p;J[b>>2]=0;J[b+4>>2]=0;J[u+100>>2]=0;J[u+92>>2]=0;J[u+96>>2]=0;J[u+84>>2]=0;J[u+88>>2]=0;J[u+76>>2]=0;J[u+80>>2]=0;J[u+68>>2]=0;J[u+72>>2]=0;J[u+60>>2]=0;J[u+64>>2]=0;J[u+100>>2]=ea;J[u+96>>2]=230;J[u+92>>2]=ea;J[u+88>>2]=231;J[u+72>>2]=232;J[u+64>>2]=233;J[u+84>>2]=ea;J[u+80>>2]=234;J[u+76>>2]=u+104;J[u+68>>2]=u+116;H[u+56|0]=K[ma+18|0];J[u+60>>2]=J[ma+20>>2];d=N[J[a+4>>2]+4>>2];N[u+52>>2]=d;xa=J[a>>2];J[75074]=0;N[ea+136>>2]=d;J[u+128>>2]=ma;H[u+140|0]=1;J[u+136>>2]=K[ea+144|0];a=0;g:{if(!xa){break g}b=J[xa>>2];if(!b){break g}a=J[b+4>>2]}J[u+132>>2]=a;b=J[ma>>2];h:{if(K[ma+17|0]==1){a=J[b+64>>2];b=J[b+68>>2];break h}a=J[b+56>>2];b=J[b+60>>2]}Jm(a,b,235,u+128|0);if(!K[u+140|0]){dj(3,88458,23860,0)}i:{if(K[ma+17|0]==1){J[u+128>>2]=0;a=0;c=Ui-272|0;Ui=c;f=J[ea+132>>2];A=J[f+64>>2];if(J[f+88>>2]){j=N[A+72>>2];J[c+252>>2]=0;i=J[f+84>>2];l=J[i+8>>2];if((l|0)>0){S=Q(j*Q(4999999873689376e-20));while(1){h=0;b=J[J[i+16>>2]+(a<<2)>>2];h=H[f+96|0]&1?!(H[b+204|0]&1):h;j:{if(J[b+232>>2]!=3&(!(K[b+204|0]&2)&(h^-1))){break j}o=N[A+76>>2];s=N[b+60>>2];q=N[b+56>>2];M=N[b+52>>2];e=c- -64|0;Fv(b+4|0,e);U=N[c+76>>2];O=N[c+72>>2];na=N[c+68>>2];ia=N[c+64>>2];Zi[J[f+88>>2]](J[b+236>>2],e);d=N[c+64>>2];g=N[c+68>>2];m=N[c+72>>2];k=N[c+76>>2];ja=N[c+88>>2];s=Q(ja-Q(o*s));W=Q(s*s);s=N[c+84>>2];q=Q(s-Q(o*q));$=Q(q*q);q=N[c+80>>2];o=Q(q-Q(o*M));if(!(SQ(7000000186963007e-20))){break j}}J[b+64>>2]=0;J[b+48>>2]=0;J[b+32>>2]=0;J[b+16>>2]=0;N[b+60>>2]=j*ja;N[b+56>>2]=j*s;N[b+52>>2]=j*q;s=Q(Q(2)/Q(Q(k*k)+Q(Q(m*m)+Q(Q(d*d)+Q(g*g)))));o=Q(m*s);q=Q(g*o);M=Q(d*s);U=Q(k*M);N[b+40>>2]=q+U;O=Q(d*o);s=Q(g*s);na=Q(k*s);N[b+36>>2]=O-na;N[b+28>>2]=q-U;q=Q(d*s);k=Q(k*o);N[b+20>>2]=q+k;N[b+12>>2]=O+na;N[b+8>>2]=q-k;d=Q(d*M);g=Q(g*s);N[b+44>>2]=Q(1)-Q(d+g);k=d;d=Q(m*o);N[b+24>>2]=Q(1)-Q(k+d);N[b+4>>2]=Q(1)-Q(g+d);Gr(b,1)}k:{if(!h){break k}Zi[J[f+88>>2]](J[b+236>>2],c- -64|0);d=N[c+104>>2];g=N[c+96>>2];k=N[c+100>>2];g=g>2];if(d==N[Zi[J[J[e>>2]+28>>2]](e)>>2]){break k}J[c+12>>2]=0;N[c+8>>2]=d;N[c+4>>2]=d;N[c>>2]=d;Zi[J[J[e>>2]+24>>2]](e,c);l:{switch(J[b+216>>2]-2|0){case 0:case 3:break l;default:break k}}Gr(b,1)}a=a+1|0;if((l|0)!=(a|0)){continue}break}}}J[c+64>>2]=0;a=J[f+84>>2];d=N[u+52>>2];Zi[J[J[a>>2]+48>>2]](a,d,J[u+60>>2],K[u+56|0]?d:Q(.01666666753590107))|0;a=J[f+40>>2];b=J[f+36>>2];if((a|0)!=(b|0)){J[c+268>>2]=0;a=(a-b|0)/48|0;i=a>>>0<=1?1:a;l=c+160|0;a=0;while(1){b=J[f+36>>2];if((J[f+40>>2]-b|0)/48>>>0<=a>>>0){break d}m:{if(!J[u+80>>2]){dj(3,89293,129178,0);break m}b=b+P(a,48)|0;g=N[b>>2];k=N[b+4>>2];d=N[J[f+64>>2]+72>>2];N[c+260>>2]=d*N[b+8>>2];N[c+256>>2]=d*k;N[c+252>>2]=d*g;J[c+264>>2]=0;g=N[b+16>>2];k=N[b+20>>2];N[c+244>>2]=d*N[b+24>>2];J[c+248>>2]=0;N[c+240>>2]=d*k;N[c+236>>2]=d*g;e=L[b+40>>1];h=J[b+32>>2];J[c+76>>2]=-65535;J[c+80>>2]=0;J[c+68>>2]=1065353216;J[c+72>>2]=0;p=J[c+264>>2];J[c+92>>2]=J[c+260>>2];J[c+96>>2]=p;p=J[c+256>>2];J[c+84>>2]=J[c+252>>2];J[c+88>>2]=p;p=J[c+248>>2];J[c+108>>2]=J[c+244>>2];J[c+112>>2]=p;p=J[c+240>>2];J[c+100>>2]=J[c+236>>2];J[c+104>>2]=p;J[c+148>>2]=h;J[c+64>>2]=243600;Wu(l);I[c+78>>1]=e;I[c+76>>1]=65535;e=J[f+84>>2];Zi[J[J[e>>2]+28>>2]](e,c+252|0,c+236|0,c- -64|0);h=Wu(c);e=J[c+72>>2];H[c+54|0]=K[c+54|0]&254|(e|0)!=0;N[h>>2]=N[c+68>>2];d=N[J[f+64>>2]+76>>2];N[c+32>>2]=N[c+116>>2];p=J[c+124>>2];J[c+36>>2]=J[c+120>>2];J[c+40>>2]=p;N[c+16>>2]=d*N[c+132>>2];N[c+20>>2]=d*N[c+136>>2];N[c+24>>2]=d*N[c+140>>2];if(e){J[c+48>>2]=J[e+236>>2];I[c+52>>1]=L[J[e+188>>2]+4>>1]}Zi[J[u+80>>2]](h,b,J[u+84>>2])}a=a+1|0;if((i|0)!=(a|0)){continue}break}J[f+40>>2]=J[f+36>>2]}e=J[J[f+84>>2]+24>>2];z=J[u+64>>2];E=J[u+72>>2];if(z|E){k=N[J[f+64>>2]+80>>2];J[c>>2]=0;aa=Zi[J[J[e>>2]+36>>2]](e)|0;n:{if((aa|0)<=0){break n}t=1;a=1;while(1){y=Zi[J[J[e>>2]+40>>2]](e,w)|0;h=J[y+1112>>2];o:{p:{q:{l=J[y+1108>>2];switch(J[l+216>>2]-2|0){case 0:case 3:break q;default:break p}}switch(J[h+216>>2]-2|0){case 0:case 3:break o;default:break p}}d=Q(0);r=J[y+1116>>2];ga=(r|0)>0;r:{if(!(ga&a)){break r}p=y+4|0;n=0;b=0;if(r>>>0>=4){T=r&2147483644;i=0;while(1){g=N[(p+P(b,276)|0)+112>>2];d=d>g?d:g;g=N[(p+P(b|1,276)|0)+112>>2];d=d>g?d:g;g=N[(p+P(b|2,276)|0)+112>>2];d=d>g?d:g;g=N[(p+P(b|3,276)|0)+112>>2];d=d>g?d:g;b=b+4|0;i=i+4|0;if((T|0)!=(i|0)){continue}break}}i=r&3;if(!i){break r}while(1){g=N[(p+P(b,276)|0)+112>>2];d=d>g?d:g;b=b+1|0;n=n+1|0;if((i|0)!=(n|0)){continue}break}}if(d>2],L[J[l+188>>2]+4>>1],J[h+236>>2],L[J[h+188>>2]+4>>1],J[u+68>>2])|0}if(!(ga&(J[h+232>>2]!=3&(E|0)!=0)&a)|J[l+232>>2]==3){break o}n=y+4|0;i=0;while(1){b=J[l+232>>2];p=J[h+232>>2];d=N[J[f+64>>2]+76>>2];a=n+P(i,276)|0;N[c+64>>2]=d*N[a+48>>2];N[c+68>>2]=d*N[a+52>>2];N[c+72>>2]=d*N[a+56>>2];J[c+128>>2]=J[l+236>>2];I[c+152>>1]=L[J[l+188>>2]+4>>1];b=(b|0)==2?l:0;if(b){N[c+144>>2]=Q(1)/N[b+336>>2]}N[c+80>>2]=d*N[a+32>>2];N[c+84>>2]=d*N[a+36>>2];N[c+88>>2]=d*N[a+40>>2];J[c+132>>2]=J[h+236>>2];I[c+154>>1]=L[J[h+188>>2]+4>>1];p=(p|0)==2?h:0;if(p){N[c+148>>2]=Q(1)/N[p+336>>2]}g=N[a+64>>2];m=N[a+68>>2];N[c+104>>2]=-N[a+72>>2];N[c+100>>2]=-m;N[c+96>>2]=-g;N[c+136>>2]=d*Q(-N[a+80>>2]);N[c+140>>2]=d*N[a+112>>2];g=Q(0);m=Q(0);j=Q(0);o=Q(0);if(b){o=Q(d*N[b+312>>2]);j=Q(d*N[b+308>>2]);m=Q(d*N[b+304>>2])}s=Q(0);S=Q(0);if(p){S=Q(d*N[p+312>>2]);s=Q(d*N[p+304>>2]);g=Q(d*N[p+308>>2])}N[c+120>>2]=o-S;N[c+116>>2]=j-g;N[c+112>>2]=m-s;a=Zi[E|0](c- -64|0,J[u+76>>2])|0;i=i+1|0;if((r|0)<=(i|0)){break o}if(a){continue}break}}w=w+1|0;if((aa|0)<=(w|0)){break n}if((a|t)&1){continue}break}}}a=0;J[c+252>>2]=0;QL(f);i=c- -64|0;b=i;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=J[u+88>>2];J[b+4>>2]=J[u+92>>2];t=Zi[J[J[e>>2]+36>>2]](e)|0;if((t|0)>0){while(1){b=Zi[J[J[e>>2]+40>>2]](e,a)|0;l=J[b+1112>>2];y=J[b+1108>>2];s:{if(!(J[y+232>>2]==3?y:0)&(!l|J[l+232>>2]!=3)){break s}r=J[b+1116>>2];if(!r){break s}t:{if((r|0)<=0){d=Q(0);break t}p=b+4|0;d=Q(0);h=0;b=0;if(r>>>0>=4){z=r&2147483644;n=0;while(1){g=N[(p+P(b,276)|0)+80>>2];d=d>g?d:g;g=N[(p+P(b|1,276)|0)+80>>2];d=d>g?d:g;g=N[(p+P(b|2,276)|0)+80>>2];d=d>g?d:g;g=N[(p+P(b|3,276)|0)+80>>2];d=d>g?d:g;b=b+4|0;n=n+4|0;if((z|0)!=(n|0)){continue}break}}n=r&3;if(!n){break t}while(1){g=N[(p+P(b,276)|0)+80>>2];d=d>g?d:g;b=b+1|0;h=h+1|0;if((n|0)!=(h|0)){continue}break}}if(!(N[A+84>>2]<=d)){break s}J[i+8>>2]=y;b=J[y+236>>2];J[i+16>>2]=l;J[i+12>>2]=b;J[i+20>>2]=J[l+236>>2];I[i+24>>1]=L[J[y+188>>2]+4>>1];I[i+26>>1]=L[J[l+188>>2]+4>>1];TL(f,i)}a=a+1|0;if((t|0)!=(a|0)){continue}break}}J[c>>2]=0;J[c+4>>2]=0;J[c>>2]=J[u+96>>2];J[c+4>>2]=J[u+100>>2];SL(f,c);a=J[f+84>>2];Zi[J[J[a>>2]+20>>2]](a);Ui=c+272|0;break i}J[u+128>>2]=0;y=Ui-160|0;Ui=y;A=J[ea+132>>2];ga=J[A+36>>2];na=N[ga+64>>2];k=N[u+52>>2];if(J[A+103108>>2]){J[y+8>>2]=0;a=J[A+102992>>2];if(a){o=Q(na*Q(4999999873689376e-20));while(1){b=J[a>>2];c=H[A+103116|0]&1;u:{v:{if(c){if(b){break v}break u}if((b|0)!=1){break u}}j=N[a+16>>2];s=N[a+12>>2];d=N[ga+68>>2];Zi[J[A+103108>>2]](J[a+148>>2],y+16|0);g=N[y+24>>2];m=N[y+20>>2];S=Q(Q(N[y+28>>2]*g)+Q(N[y+16>>2]*m));g=Q(Q(m*m)+Q(g*g));g=rp(Q(S+S),Q(Q(1)-Q(g+g)));m=N[y+36>>2];j=Q(m-Q(d*j));S=Q(j*j);j=N[y+32>>2];d=Q(j-Q(d*s));w:{if(o>2]-g)))>Q(7000000186963007e-20)){N[y+148>>2]=na*m;N[y+144>>2]=na*j;aF(a,y+144|0,g);b=L[a+4>>1];f=b&65531;I[a+4>>1]=f;if(b&2){break w}J[a+144>>2]=0;I[a+4>>1]=f|2;break w}I[a+4>>1]=L[a+4>>1]|4}if(!c){break u}Zi[J[A+103108>>2]](J[a+148>>2],y+16|0);h=J[a+100>>2];if(!h){break u}d=N[y+48>>2];g=N[y+52>>2];g=d>2];if(g==N[e+16>>2]){break u}N[e+16>>2]=g;x:{y:{z:{switch(J[e+4>>2]){case 2:d=Q(g/N[e+12>>2]);N[e+164>>2]=d*N[e+36>>2];N[e+160>>2]=d*N[e+32>>2];N[e+172>>2]=d*N[e+44>>2];N[e+168>>2]=d*N[e+40>>2];N[e+180>>2]=d*N[e+52>>2];N[e+176>>2]=d*N[e+48>>2];N[e+184>>2]=d*N[e+56>>2];N[e+188>>2]=d*N[e+60>>2];N[e+192>>2]=d*N[e+64>>2];N[e+196>>2]=d*N[e+68>>2];N[e+200>>2]=d*N[e+72>>2];N[e+204>>2]=d*N[e+76>>2];N[e+208>>2]=d*N[e+80>>2];N[e+212>>2]=d*N[e+84>>2];N[e+220>>2]=d*N[e+92>>2];N[e+216>>2]=d*N[e+88>>2];m=N[e+96>>2];N[e+228>>2]=d*N[e+100>>2];N[e+224>>2]=d*m;m=N[e+104>>2];N[e+236>>2]=d*N[e+108>>2];N[e+232>>2]=d*m;m=N[e+112>>2];N[e+244>>2]=d*N[e+116>>2];N[e+240>>2]=d*m;m=N[e+120>>2];N[e+252>>2]=d*N[e+124>>2];N[e+248>>2]=d*m;m=N[e+128>>2];N[e+260>>2]=d*N[e+132>>2];N[e+256>>2]=d*m;m=N[e+136>>2];N[e+268>>2]=d*N[e+140>>2];N[e+264>>2]=d*m;m=N[e+148>>2];N[e+272>>2]=d*N[e+144>>2];j=Q(d*m);c=284;i=280;f=156;l=276;b=152;break y;case 0:break z;default:break x}}j=Q(g*N[e+12>>2]);c=28;i=24;f=36;d=g;l=8;b=32}N[e+l>>2]=j;m=N[e+f>>2];N[e+i>>2]=d*N[b+e>>2];N[c+e>>2]=d*m}h=J[h+4>>2];A:{if(!h){break A}while(1){e=J[h+12>>2];if(g==N[e+16>>2]){break A}N[e+16>>2]=g;B:{C:{D:{switch(J[e+4>>2]){case 0:j=Q(g*N[e+12>>2]);c=28;i=24;f=36;d=g;l=8;b=32;break C;case 2:break D;default:break B}}d=Q(g/N[e+12>>2]);N[e+164>>2]=d*N[e+36>>2];N[e+160>>2]=d*N[e+32>>2];N[e+172>>2]=d*N[e+44>>2];N[e+168>>2]=d*N[e+40>>2];N[e+180>>2]=d*N[e+52>>2];N[e+176>>2]=d*N[e+48>>2];N[e+184>>2]=d*N[e+56>>2];N[e+188>>2]=d*N[e+60>>2];N[e+192>>2]=d*N[e+64>>2];N[e+196>>2]=d*N[e+68>>2];N[e+200>>2]=d*N[e+72>>2];N[e+204>>2]=d*N[e+76>>2];N[e+208>>2]=d*N[e+80>>2];N[e+212>>2]=d*N[e+84>>2];N[e+220>>2]=d*N[e+92>>2];N[e+216>>2]=d*N[e+88>>2];m=N[e+96>>2];N[e+228>>2]=d*N[e+100>>2];N[e+224>>2]=d*m;m=N[e+104>>2];N[e+236>>2]=d*N[e+108>>2];N[e+232>>2]=d*m;m=N[e+112>>2];N[e+244>>2]=d*N[e+116>>2];N[e+240>>2]=d*m;m=N[e+120>>2];N[e+252>>2]=d*N[e+124>>2];N[e+248>>2]=d*m;m=N[e+128>>2];N[e+260>>2]=d*N[e+132>>2];N[e+256>>2]=d*m;m=N[e+136>>2];N[e+268>>2]=d*N[e+140>>2];N[e+264>>2]=d*m;m=N[e+148>>2];N[e+272>>2]=d*N[e+144>>2];j=Q(d*m);c=284;i=280;f=156;l=276;b=152}N[e+l>>2]=j;m=N[e+f>>2];N[e+i>>2]=d*N[b+e>>2];N[c+e>>2]=d*m}h=J[h+4>>2];if(h){continue}break}}b=L[a+4>>1];if(b&2){break u}J[a+144>>2]=0;I[a+4>>1]=b|2}a=J[a+96>>2];if(a){continue}break}}}J[y+8>>2]=0;J[A+103104>>2]=p;d=k;r=Ui-32|0;Ui=r;p=A+40|0;b=p;a=J[b+102868>>2];if(a&1){a=b+102872|0;dw(a,a);a=J[b+102868>>2]&-2}J[b+102868>>2]=a|2;J[r+20>>2]=10;J[r+16>>2]=10;N[r+4>>2]=d;t=d>Q(0);N[r+8>>2]=t?Q(Q(1)/d):Q(0);N[r+12>>2]=d*N[p+102988>>2];H[r+24|0]=K[p+102992|0];c=p+102872|0;a=J[c+60>>2];if(a){while(1){b=a;h=J[b+60>>2];i=J[b+56>>2];l=J[b+52>>2];f=J[l+8>>2];n=J[b+48>>2];e=J[n+8>>2];E:{F:{if(K[b+4|0]&8){if(!qV(f,e)){break F}a=J[c+68>>2];if(a){if(!(Zi[J[J[a>>2]+8>>2]](a,n,i,l,h)|0)){break F}}J[b+4>>2]=J[b+4>>2]&-9}G:{a=J[e>>2];H:{if(!((K[e+4|0]>>>1|(a|0)==1)&(a|0)!=0)){a=J[f>>2];if(!((K[f+4|0]>>>1|(a|0)==1)&(a|0)!=0)){break H}}f=J[(J[n+24>>2]+P(i,28)|0)+24>>2];if((f|0)<0){break c}e=J[c+12>>2];if((e|0)<=(f|0)){break c}a=J[(J[l+24>>2]+P(h,28)|0)+24>>2];if((a|0)<0|(a|0)>=(e|0)){break G}e=J[c+4>>2];a=e+P(a,36)|0;f=e+P(f,36)|0;if(N[a>>2]>N[f+8>>2]|N[a+4>>2]>N[f+12>>2]|(N[f>>2]>N[a+8>>2]|N[f+4>>2]>N[a+12>>2])){break F}_E(b,J[c+72>>2])}a=J[b+12>>2];break E}break c}a=J[b+12>>2];Pv(c,b)}if(a){continue}break}}N[p+103e3>>2]=0;if(!(!t|!(H[p+102995|0]&1))){n=Ui-96|0;Ui=n;J[p+103016>>2]=0;J[p+103008>>2]=0;J[p+103012>>2]=0;aa=p+68|0;f=RU(n+44|0,J[p+102960>>2],J[p+102936>>2],J[p+102964>>2],aa,J[p+102944>>2]);a=J[p+102952>>2];if(a){while(1){I[a+4>>1]=L[a+4>>1]&65534;a=J[a+96>>2];if(a){continue}break}}a=J[p+102932>>2];if(a){while(1){J[a+4>>2]=J[a+4>>2]&-2;a=J[a+12>>2];if(a){continue}break}}a=J[p+102956>>2];if(a){while(1){H[a+60|0]=0;a=J[a+12>>2];if(a){continue}break}}T=J[p+102960>>2];E=Tq(aa,T<<2);I:{J:{K:{L:{M:{N:{O:{z=J[p+102952>>2];if(z){ca=p+102968|0;while(1){a=L[z+4>>1];P:{if(!J[z>>2]|(a&35)!=34){break P}J[E>>2]=z;c=1;I[z+4>>1]=a|1;h=0;a=J[f+40>>2];t=(a|0)>0?a:0;b=0;i=0;while(1){c=c-1|0;e=J[E+(c<<2)>>2];a=L[e+4>>1];if(!(a&32)){break O}if((h|0)==(t|0)){break N}J[e+8>>2]=h;J[J[f+8>>2]+(h<<2)>>2]=e;if(!(a&2)){J[e+144>>2]=0;I[e+4>>1]=a|2}h=h+1|0;Q:{if(!J[e>>2]){break Q}a=J[e+112>>2];if(a){w=J[f+44>>2];while(1){l=J[a+4>>2];G=J[l+4>>2];R:{if((G&7)!=6|K[J[l+48>>2]+44|0]|K[J[l+52>>2]+44|0]){break R}if((b|0)>=(w|0)){break M}J[J[f+12>>2]+(b<<2)>>2]=l;J[l+4>>2]=G|1;b=b+1|0;l=J[a>>2];G=L[l+4>>1];if(G&1){break R}if((c|0)>=(T|0)){break L}J[E+(c<<2)>>2]=l;I[l+4>>1]=G|1;c=c+1|0}a=J[a+12>>2];if(a){continue}break}}a=J[e+108>>2];if(!a){break Q}w=J[f+48>>2];while(1){G=J[a+4>>2];S:{if(K[G+60|0]){break S}e=J[a>>2];l=L[e+4>>1];if(!(l&32)){break S}if((i|0)>=(w|0)){break K}J[J[f+16>>2]+(i<<2)>>2]=G;H[J[a+4>>2]+60|0]=1;i=i+1|0;if(l&1){break S}if((c|0)>=(T|0)){break J}J[E+(c<<2)>>2]=e;I[e+4>>1]=l|1;c=c+1|0}a=J[a+12>>2];if(a){continue}break}}if((c|0)>0){continue}break}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;ka=K[p+102976|0];h=0;c=Ui-160|0;Ui=c;k=N[r+4>>2];if(J[f+28>>2]>0){while(1){b=J[J[f+8>>2]+(h<<2)>>2];o=N[b+56>>2];N[b+52>>2]=o;e=J[b+48>>2];i=e;a=J[b+44>>2];J[b+36>>2]=a;J[b+40>>2]=e;d=N[b+72>>2];g=N[b+68>>2];m=N[b+64>>2];if(J[b>>2]==2){e=(C(Q(Q(1)-N[b+136>>2])),v(2));j=(x(2,e&8388607|1056964608),D());s=Q(k*Q(Q(Q(j*Q(-1.4980303049087524))+Q(Q(Q(e>>>0)*Q(1.1920928955078125e-7))+Q(-124.22551727294922)))-Q(Q(1.7258800268173218)/Q(j+Q(.35208871960639954)))));j=s=Q(0)){e=~~j>>>0;break U}e=0}j=(x(2,e),D());S=j>2])*N[b+84>>2]);e=(C(Q(Q(1)-N[b+132>>2])),v(2));j=(x(2,e&8388607|1056964608),D());s=Q(k*Q(Q(Q(j*Q(-1.4980303049087524))+Q(Q(Q(e>>>0)*Q(1.1920928955078125e-7))+Q(-124.22551727294922)))-Q(Q(1.7258800268173218)/Q(j+Q(.35208871960639954)))));j=s>2];q=N[b+120>>2];W=Q(g+Q(k*Q(Q(S*N[ca+4>>2])+Q(q*N[b+80>>2]))));g=Q((s=Q(0)){e=~~g>>>0;break W}e=0}g=(x(2,e),D());g=g>2])+Q(q*N[b+76>>2]))))*j)}b=P(h,12);e=b+J[f+20>>2]|0;J[e>>2]=a;J[e+4>>2]=i;N[(b+J[f+20>>2]|0)+8>>2]=o;a=b+J[f+24>>2]|0;N[a+4>>2]=g;N[a>>2]=m;N[(b+J[f+24>>2]|0)+8>>2]=d;h=h+1|0;if((h|0)>2]){continue}break}}a=J[r+24>>2];J[c+120>>2]=J[r+20>>2];J[c+124>>2]=a;a=J[r+16>>2];J[c+112>>2]=J[r+12>>2];J[c+116>>2]=a;a=J[r+8>>2];J[c+104>>2]=J[r+4>>2];J[c+108>>2]=a;a=J[f+20>>2];J[c+128>>2]=a;b=J[f+24>>2];J[c+132>>2]=b;e=J[r+24>>2];J[c+72>>2]=J[r+20>>2];J[c+76>>2]=e;h=J[r+16>>2];e=c- -64|0;J[e>>2]=J[r+12>>2];J[e+4>>2]=h;e=J[r+8>>2];J[c+56>>2]=J[r+4>>2];J[c+60>>2]=e;J[c+80>>2]=J[f+12>>2];e=J[f+36>>2];J[c+92>>2]=b;J[c+88>>2]=a;J[c+84>>2]=e;J[c+96>>2]=J[f>>2];i=gV(c+4|0,c+56|0);iV(i);if(K[r+24|0]){t=0;if(J[i+48>>2]>0){a=J[i+28>>2];while(1){b=J[i+40>>2]+P(t,152)|0;l=P(J[b+116>>2],12);e=l+a|0;d=N[e+8>>2];g=N[e+4>>2];m=N[e>>2];w=P(J[b+112>>2],12);h=w+a|0;o=N[h+8>>2];s=N[h+4>>2];S=N[h>>2];G=J[b+144>>2];if((G|0)>0){M=N[b+76>>2];U=N[b+72>>2];ja=N[b+132>>2];O=N[b+124>>2];ia=N[b+120>>2];da=Q(-N[b+128>>2]);e=0;while(1){a=b+P(e,36)|0;q=N[a+16>>2];W=N[a+20>>2];j=Q(Q(M*q)-Q(U*W));q=Q(Q(U*q)+Q(M*W));d=Q(Q(ja*Q(Q(N[a+8>>2]*j)-Q(N[a+12>>2]*q)))+d);o=Q(Q(da*Q(Q(N[a>>2]*j)-Q(N[a+4>>2]*q)))+o);g=Q(g+Q(O*j));m=Q(m+Q(O*q));s=Q(s-Q(ia*j));S=Q(S-Q(ia*q));e=e+1|0;if((G|0)!=(e|0)){continue}break}}N[h+4>>2]=s;N[h>>2]=S;a=J[i+28>>2];N[(a+w|0)+8>>2]=o;a=a+l|0;N[a+4>>2]=g;N[a>>2]=m;a=J[i+28>>2];N[(l+a|0)+8>>2]=d;t=t+1|0;if((t|0)>2]){continue}break}}}if(J[f+32>>2]>0){a=0;while(1){b=J[J[f+16>>2]+(a<<2)>>2];Zi[J[J[b>>2]+28>>2]](b,c+104|0);a=a+1|0;if((a|0)>2]){continue}break}}N[n+24>>2]=0;if(J[r+16>>2]>0){t=0;while(1){a=0;if(J[f+32>>2]>0){while(1){b=J[J[f+16>>2]+(a<<2)>>2];Zi[J[J[b>>2]+32>>2]](b,c+104|0);a=a+1|0;if((a|0)>2]){continue}break}}hV(i);t=t+1|0;if((t|0)>2]){continue}break}}t=0;G=J[i+48>>2];if((G|0)>0){oa=J[i+44>>2];sa=J[i+40>>2];while(1){a=sa+P(t,152)|0;w=J[a+144>>2];X:{if((w|0)<=0){break X}e=J[oa+(J[a+148>>2]<<2)>>2]- -64|0;b=0;l=0;if(w>>>0>=4){X=w&2147483644;h=0;while(1){F=e+P(l,24)|0;ba=a+P(l,36)|0;N[F+8>>2]=N[ba+16>>2];N[F+12>>2]=N[ba+20>>2];F=l|1;ba=e+P(F,24)|0;F=a+P(F,36)|0;N[ba+8>>2]=N[F+16>>2];N[ba+12>>2]=N[F+20>>2];F=l|2;ba=e+P(F,24)|0;F=a+P(F,36)|0;N[ba+8>>2]=N[F+16>>2];N[ba+12>>2]=N[F+20>>2];F=l|3;ba=e+P(F,24)|0;F=a+P(F,36)|0;N[ba+8>>2]=N[F+16>>2];N[ba+12>>2]=N[F+20>>2];l=l+4|0;h=h+4|0;if((X|0)!=(h|0)){continue}break}}h=w&3;if(!h){break X}while(1){w=e+P(l,24)|0;X=a+P(l,36)|0;N[w+8>>2]=N[X+16>>2];N[w+12>>2]=N[X+20>>2];l=l+1|0;b=b+1|0;if((h|0)!=(b|0)){continue}break}}t=t+1|0;if((G|0)!=(t|0)){continue}break}}N[n+28>>2]=0;e=1;if(J[f+28>>2]>0){h=J[f+24>>2];t=0;while(1){a=P(t,12);h=a+h|0;d=N[h>>2];g=Q(k*d);j=Q(g*g);g=N[h+4>>2];m=Q(k*g);m=Q(j+Q(m*m));if(m>Q(4)){m=Q(Q(2)/Q(Y(m)));g=Q(g*m);d=Q(d*m)}b=a+J[f+20>>2]|0;o=N[b+8>>2];s=N[b+4>>2];S=N[b>>2];m=N[h+8>>2];j=Q(k*m);if(Q(j*j)>Q(2.4674012660980225)){m=Q(m*Q(Q(1.5707963705062866)/(j>Q(0)?j:Q(-j))))}N[b+4>>2]=s+Q(k*g);N[b>>2]=S+Q(k*d);N[(a+J[f+20>>2]|0)+8>>2]=Q(k*m)+o;b=a+J[f+24>>2]|0;N[b+4>>2]=g;N[b>>2]=d;h=J[f+24>>2];N[(a+h|0)+8>>2]=m;t=t+1|0;if((t|0)>2]){continue}break}}if(J[r+20>>2]>0){t=0;while(1){M=Q(0);e=0;b=Ui+-64|0;Ui=b;a=1;if(J[i+48>>2]>0){a=J[i+24>>2];while(1){h=J[i+36>>2]+P(e,88)|0;l=P(J[h+36>>2],12);w=l+a|0;d=N[w+8>>2];g=N[w+4>>2];m=N[w>>2];w=P(J[h+32>>2],12);G=w+a|0;o=N[G+8>>2];s=N[G+4>>2];S=N[G>>2];G=J[h+84>>2];if((G|0)>0){U=N[h+68>>2];O=N[h+56>>2];ia=N[h+48>>2];ja=N[h+40>>2];da=N[h+44>>2];ya=Q(ja+da);fa=N[h+64>>2];la=Q(-fa);_=N[h+60>>2];ha=Q(-_);qa=N[h+52>>2];wa=Q(-qa);a=0;while(1){j=Rj(o);N[b+60>>2]=j;q=Hj(o);N[b+56>>2]=q;W=Rj(d);N[b+44>>2]=W;$=Hj(d);N[b+40>>2]=$;N[b+52>>2]=s-Q(Q(q*ia)+Q(qa*j));N[b+48>>2]=S-Q(Q(j*ia)+Q(q*wa));N[b+36>>2]=g-Q(Q($*O)+Q(_*W));N[b+32>>2]=m-Q(Q(W*O)+Q($*ha));OU(b+12|0,h,b+48|0,b+32|0,a);q=Q(0);j=N[b+28>>2];oa=j>M;ta=N[b+20>>2];ua=Q(ta-m);W=N[b+16>>2];va=N[b+24>>2];pa=Q(va-g);$=N[b+12>>2];ra=Q(Q(ua*W)-Q(pa*$));Da=Q(Q(U*ra)*ra);ta=Q(ta-S);va=Q(va-s);ra=Q(Q(ta*W)-Q(va*$));ra=Q(Da+Q(Q(Q(fa*ra)*ra)+ya));if(ra>Q(0)){q=Q(Q(j+Q(.004999999888241291))*Q(.20000000298023224));q=q>2]}a=a+w|0;N[a+4>>2]=s;N[a>>2]=S;a=J[i+24>>2];N[(a+w|0)+8>>2]=o;a=a+l|0;N[a+4>>2]=g;N[a>>2]=m;a=J[i+24>>2];N[(l+a|0)+8>>2]=d;e=e+1|0;if((e|0)>2]){continue}break}a=M>=Q(-.014999999664723873)}Ui=b- -64|0;b=a;h=1;a=0;if(J[f+32>>2]>0){while(1){e=J[J[f+16>>2]+(a<<2)>>2];h=Zi[J[J[e>>2]+36>>2]](e,c+104|0)&h;a=a+1|0;if((a|0)>2]){continue}break}}a=b&h;if(!a){t=t+1|0;if((t|0)>2]){continue}}break}e=a^1}if(J[f+28>>2]>0){h=0;while(1){l=P(h,12);b=l+J[f+20>>2]|0;o=N[b>>2];a=J[b>>2];s=N[b+4>>2];t=J[b+4>>2];b=J[J[f+8>>2]+(h<<2)>>2];J[b+44>>2]=a;J[b+48>>2]=t;d=N[(l+J[f+20>>2]|0)+8>>2];N[b+56>>2]=d;a=l+J[f+24>>2]|0;w=J[a+4>>2];J[b+64>>2]=J[a>>2];J[b+68>>2]=w;m=N[(l+J[f+24>>2]|0)+8>>2];g=Rj(d);N[b+24>>2]=g;d=Hj(d);N[b+20>>2]=d;N[b+72>>2]=m;m=N[b+28>>2];j=N[b+32>>2];N[b+16>>2]=s-Q(Q(d*m)+Q(g*j));N[b+12>>2]=o-Q(Q(g*m)-Q(d*j));h=h+1|0;if((h|0)>2]){continue}break}}N[n+32>>2]=0;if(!(!J[f+4>>2]|J[f+36>>2]<=0)){G=J[i+40>>2];t=c+148|0;b=0;while(1){oa=J[J[f+12>>2]+(b<<2)>>2];w=G+P(b,152)|0;h=J[w+144>>2];J[c+156>>2]=h;Y:{if((h|0)<=0){break Y}a=0;if((h|0)!=1){sa=h&2147483646;l=0;while(1){X=a<<2;F=c+140|0;ba=w+P(a,36)|0;N[X+F>>2]=N[ba+16>>2];N[t+X>>2]=N[ba+20>>2];ba=F;X=a|1;F=X<<2;X=w+P(X,36)|0;N[ba+F>>2]=N[X+16>>2];N[t+F>>2]=N[X+20>>2];a=a+2|0;l=l+2|0;if((sa|0)!=(l|0)){continue}break}}if(!(h&1)){break Y}h=a<<2;a=w+P(a,36)|0;N[h+(c+140|0)>>2]=N[a+16>>2];N[h+t>>2]=N[a+20>>2]}a=J[f+4>>2];Zi[J[J[a>>2]+20>>2]](a,oa,c+140|0);b=b+1|0;if((b|0)>2]){continue}break}}Z:{if(!ka){break Z}h=J[f+28>>2];if((h|0)<=0){break Z}l=J[f+8>>2];d=Q(34028234663852886e22);a=0;while(1){b=J[l+(a<<2)>>2];_:{if(!J[b>>2]){break _}$:{aa:{if(!(K[b+4|0]&4)){break aa}g=N[b+72>>2];if(Q(g*g)>Q(.001218469929881394)){break aa}g=N[b+64>>2];j=Q(g*g);g=N[b+68>>2];if(!(Q(j+Q(g*g))>Q(9999999747378752e-20))){break $}}J[b+144>>2]=0;d=Q(0);break _}g=Q(k+N[b+144>>2]);N[b+144>>2]=g;d=d=Q(.5))|e|J[f+28>>2]<=0){break Z}h=0;while(1){a=J[J[f+8>>2]+(h<<2)>>2];J[a+144>>2]=0;J[a+64>>2]=0;J[a+68>>2]=0;J[a+72>>2]=0;J[a+76>>2]=0;J[a+80>>2]=0;J[a+84>>2]=0;I[a+4>>1]=L[a+4>>1]&65533;h=h+1|0;if((h|0)>2]){continue}break}}fV(i);Ui=c+160|0;N[p+103008>>2]=N[n+24>>2]+N[p+103008>>2];N[p+103012>>2]=N[n+28>>2]+N[p+103012>>2];N[p+103016>>2]=N[n+32>>2]+N[p+103016>>2];c=J[f+28>>2];if((c|0)<=0){break P}e=J[f+8>>2];a=0;if((c|0)!=1){i=c&2147483646;b=0;while(1){l=e+(a<<2)|0;h=J[l>>2];if(!J[h>>2]){I[h+4>>1]=L[h+4>>1]&65534}h=J[l+4>>2];if(!J[h>>2]){I[h+4>>1]=L[h+4>>1]&65534}a=a+2|0;b=b+2|0;if((i|0)!=(b|0)){continue}break}}if(!(c&1)){break P}a=J[e+(a<<2)>>2];if(J[a>>2]){break P}I[a+4>>1]=L[a+4>>1]&65534}z=J[z+96>>2];if(z){continue}break}}Sq(aa,E);a=J[p+102952>>2];if(a){while(1){if(!(!(H[a+4|0]&1)|!J[a>>2])){$E(a)}a=J[a+96>>2];if(a){continue}break}}a=p+102872|0;dw(a,a);N[p+103020>>2]=0;QU(f);Ui=n+96|0;break I}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;Z(60811,42374,446,60067);B()}J[f+36>>2]=b;J[f+28>>2]=t;J[f+32>>2]=i;break b}J[f+36>>2]=b;J[f+32>>2]=i;J[f+28>>2]=h;break a}J[f+36>>2]=b;J[f+32>>2]=i;J[f+28>>2]=h;Z(59777,42374,496,60067);B()}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;Z(2137,55837,68,76114);B()}J[f+36>>2]=b;J[f+28>>2]=h;J[f+32>>2]=i;Z(59777,42374,525,60067);B()}N[p+103004>>2]=0;d=N[r+4>>2]}if(!(!(d>Q(0))|K[p+102993|0]!=1)){h=Ui-272|0;Ui=h;n=RU(h+220|0,64,32,0,p+68|0,J[p+102944>>2]);ba:{if(K[p+102995|0]!=1){break ba}l=J[p+102952>>2];if(l){while(1){J[l+60>>2]=0;I[l+4>>1]=L[l+4>>1]&65534;l=J[l+96>>2];if(l){continue}break}}l=J[p+102932>>2];if(!l){break ba}while(1){J[l+136>>2]=0;J[l+140>>2]=1065353216;J[l+4>>2]=J[l+4>>2]&-34;l=J[l+12>>2];if(l){continue}break}}aa=p+102872|0;ka=h+116|0;ca:{da:{while(1){ea:{a=0;U=Q(1);fa:{l=J[p+102932>>2];ga:{if(!l){break ga}ha:{ia:{while(1){ja:{b=J[l+4>>2];ka:{if(!(b&4)|J[l+136>>2]>8){break ka}la:{if(b&32){d=N[l+140>>2];break la}e=J[l+48>>2];if(K[e+44|0]){break ka}i=J[l+52>>2];if(K[i+44|0]){break ka}b=J[e+8>>2];f=J[b>>2];c=J[i+8>>2];t=J[c>>2];if((f|0)!=2&(t|0)!=2){break ja}E=L[b+4>>1];z=L[c+4>>1];if(!((E&2)>>>1&(f|0)!=0|z>>>1&(t|0)!=0)){break ka}if(!(z&8|(E&8|(f|0)!=2))){if((t|0)==2){break ka}}o=N[c+60>>2];d=N[b+60>>2];ma:{if(o>d){if(!(d>2]=o;d=Q(Q(o-d)/Q(Q(1)-d));g=Q(Q(1)-d);N[b+40>>2]=Q(g*N[b+40>>2])+Q(d*N[b+48>>2]);N[b+36>>2]=Q(g*N[b+36>>2])+Q(d*N[b+44>>2]);N[b+52>>2]=Q(g*N[b+52>>2])+Q(d*N[b+56>>2]);break ma}if(d>o){if(!(o>2]=d;g=Q(Q(d-o)/Q(Q(1)-o));k=Q(Q(1)-g);N[c+40>>2]=Q(k*N[c+40>>2])+Q(g*N[c+48>>2]);N[c+36>>2]=Q(k*N[c+36>>2])+Q(g*N[c+44>>2]);N[c+52>>2]=Q(k*N[c+52>>2])+Q(g*N[c+56>>2])}o=d}if(!(o>2];z=J[l+56>>2];J[h+140>>2]=0;J[h+132>>2]=0;J[h+136>>2]=0;J[h+112>>2]=0;J[h+104>>2]=0;J[h+108>>2]=0;f=h+88|0;uz(f,J[e+12>>2],z);uz(ka,J[i+12>>2],t);J[h+176>>2]=J[b+60>>2];e=J[b+56>>2];J[h+168>>2]=J[b+52>>2];J[h+172>>2]=e;e=J[b+48>>2];J[h+160>>2]=J[b+44>>2];J[h+164>>2]=e;e=J[b+40>>2];J[h+152>>2]=J[b+36>>2];J[h+156>>2]=e;e=J[b+32>>2];J[h+144>>2]=J[b+28>>2];J[h+148>>2]=e;J[h+212>>2]=J[c+60>>2];b=J[c+56>>2];J[h+204>>2]=J[c+52>>2];J[h+208>>2]=b;b=J[c+48>>2];J[h+196>>2]=J[c+44>>2];J[h+200>>2]=b;b=J[c+40>>2];J[h+188>>2]=J[c+36>>2];J[h+192>>2]=b;b=J[c+32>>2];J[h+180>>2]=J[c+28>>2];J[h+184>>2]=b;J[h+216>>2]=1065353216;t=0;S=Q(0);b=Ui-320|0;Ui=b;J[84024]=J[84024]+1;J[h+48>>2]=0;m=N[f+128>>2];N[h+52>>2]=m;J[b+312>>2]=J[f+88>>2];c=J[f+84>>2];J[b+304>>2]=J[f+80>>2];J[b+308>>2]=c;c=J[f+76>>2];J[b+296>>2]=J[f+72>>2];J[b+300>>2]=c;c=f- -64|0;e=J[c+4>>2];J[b+288>>2]=J[c>>2];J[b+292>>2]=e;c=J[f+60>>2];J[b+280>>2]=J[f+56>>2];J[b+284>>2]=c;J[b+272>>2]=J[f+124>>2];c=J[f+120>>2];J[b+264>>2]=J[f+116>>2];J[b+268>>2]=c;c=J[f+112>>2];J[b+256>>2]=J[f+108>>2];J[b+260>>2]=c;c=J[f+104>>2];J[b+248>>2]=J[f+100>>2];J[b+252>>2]=c;c=J[f+96>>2];J[b+240>>2]=J[f+92>>2];J[b+244>>2]=c;g=N[b+304>>2];d=Q(Q(V(Q(g/Q(6.2831854820251465))))*Q(6.2831854820251465));q=Q(g-d);N[b+304>>2]=q;k=N[b+264>>2];g=Q(Q(V(Q(k/Q(6.2831854820251465))))*Q(6.2831854820251465));M=Q(k-g);N[b+264>>2]=M;j=Q(N[b+268>>2]-g);N[b+268>>2]=j;s=Q(N[b+308>>2]-d);N[b+308>>2]=s;na:{oa:{d=Q(Q(N[f+24>>2]+N[f+52>>2])+Q(-.014999999664723873));ia=dQ(.0012499999720603228)){I[b+232>>1]=0;J[b+160>>2]=J[f+24>>2];c=J[f+20>>2];J[b+152>>2]=J[f+16>>2];J[b+156>>2]=c;c=J[f+12>>2];J[b+144>>2]=J[f+8>>2];J[b+148>>2]=c;c=J[f+4>>2];J[b+136>>2]=J[f>>2];J[b+140>>2]=c;E=f+28|0;c=E;e=J[c+12>>2];J[b+172>>2]=J[c+8>>2];J[b+176>>2]=e;c=J[f+48>>2];J[b+180>>2]=J[f+44>>2];J[b+184>>2]=c;J[b+188>>2]=J[f+52>>2];c=J[f+32>>2];J[b+164>>2]=J[f+28>>2];J[b+168>>2]=c;H[b+224|0]=0;ya=Q(ia+Q(-.0012499999720603228));ja=Q(ia+Q(.0012499999720603228));d=Q(0);while(1){g=Q(Q(1)-d);j=Q(Q(g*M)+Q(d*j));k=Rj(j);N[b+220>>2]=k;j=Hj(j);N[b+216>>2]=j;q=Q(Q(g*q)+Q(d*s));s=Rj(q);N[b+204>>2]=s;q=Hj(q);N[b+200>>2]=q;M=N[b+240>>2];O=N[b+244>>2];N[b+212>>2]=Q(Q(g*N[b+252>>2])+Q(d*N[b+260>>2]))-Q(Q(j*M)+Q(k*O));N[b+208>>2]=Q(Q(g*N[b+248>>2])+Q(d*N[b+256>>2]))-Q(Q(k*M)-Q(j*O));k=N[b+280>>2];j=N[b+284>>2];N[b+196>>2]=Q(Q(g*N[b+292>>2])+Q(d*N[b+300>>2]))-Q(Q(q*k)+Q(s*j));N[b+192>>2]=Q(Q(g*N[b+288>>2])+Q(d*N[b+296>>2]))-Q(Q(s*k)-Q(q*j));cV(b+112|0,b+228|0,b+136|0);g=N[b+128>>2];if(g<=Q(0)){f=2;break oa}if(g>2]=E;J[c>>2]=f;pa:{qa:{e=L[b+232>>1];if((e-1&65535)>>>0<2){i=J[b+284>>2];J[c+8>>2]=J[b+280>>2];J[c+12>>2]=i;J[c+40>>2]=J[b+312>>2];i=J[b+308>>2];J[c+32>>2]=J[b+304>>2];J[c+36>>2]=i;i=J[b+300>>2];J[c+24>>2]=J[b+296>>2];J[c+28>>2]=i;i=J[b+292>>2];J[c+16>>2]=J[b+288>>2];J[c+20>>2]=i;i=J[b+244>>2];J[c+44>>2]=J[b+240>>2];J[c+48>>2]=i;i=J[b+252>>2];J[c+52>>2]=J[b+248>>2];J[c+56>>2]=i;i=J[b+260>>2];J[c+60>>2]=J[b+256>>2];J[c+64>>2]=i;i=J[b+268>>2];J[c+68>>2]=J[b+264>>2];J[c+72>>2]=i;J[c+76>>2]=J[b+272>>2];j=N[c+48>>2];g=Q(Q(1)-d);s=Q(Q(g*N[c+68>>2])+Q(d*N[c+72>>2]));k=Rj(s);q=N[c+44>>2];s=Hj(s);da=Q(Q(Q(g*N[c+56>>2])+Q(d*N[c+64>>2]))-Q(Q(s*q)+Q(j*k)));W=Q(Q(Q(g*N[c+52>>2])+Q(d*N[c+60>>2]))-Q(Q(k*q)-Q(s*j)));j=N[c+12>>2];M=Q(Q(g*N[c+32>>2])+Q(d*N[c+36>>2]));q=Rj(M);O=N[c+8>>2];M=Hj(M);$=Q(Q(Q(g*N[c+20>>2])+Q(d*N[c+28>>2]))-Q(Q(M*O)+Q(j*q)));g=Q(Q(Q(g*N[c+16>>2])+Q(d*N[c+24>>2]))-Q(Q(q*O)-Q(M*j)));ra:{if((e|0)==1){J[c+80>>2]=0;e=K[b+234|0];if((e|0)>=J[f+20>>2]){break qa}i=K[b+237|0];if((i|0)>=J[f+48>>2]){break qa}j=da;i=J[f+44>>2]+(i<<3)|0;O=N[i>>2];da=N[i+4>>2];ha=$;e=J[f+16>>2]+(e<<3)|0;$=N[e>>2];fa=N[e+4>>2];j=Q(Q(j+Q(Q(s*O)+Q(k*da)))-Q(ha+Q(Q(M*$)+Q(q*fa))));N[c+96>>2]=j;g=Q(Q(W+Q(Q(k*O)-Q(s*da)))-Q(g+Q(Q(q*$)-Q(M*fa))));N[c+92>>2]=g;k=Q(Y(Q(Q(g*g)+Q(j*j))));if(k>2]=j*k;N[c+92>>2]=g*k;break pa}sa:{if(K[b+234|0]==K[b+235|0]){J[c+80>>2]=2;e=J[f+48>>2];i=K[b+237|0];if((e|0)<=(i|0)){break qa}w=e;e=K[b+238|0];if(w>>>0<=e>>>0){break qa}w=i<<3;i=J[f+44>>2];z=w+i|0;fa=N[z>>2];e=i+(e<<3)|0;la=N[e>>2];ha=N[e+4>>2];qa=N[z+4>>2];j=Q(ha-qa);N[c+92>>2]=j;_=Q(la-fa);O=Q(-_);N[c+96>>2]=O;_=Q(Y(Q(Q(j*j)+Q(_*_))));if(!(_>2]=O;j=Q(j*_);N[c+92>>2]=j}_=Q(Q(qa+ha)*Q(.5));N[c+88>>2]=_;fa=Q(Q(fa+la)*Q(.5));N[c+84>>2]=fa;e=K[b+234|0];if((e|0)>=J[f+20>>2]){break qa}e=J[f+16>>2]+(e<<3)|0;la=N[e>>2];ha=N[e+4>>2];W=Q(Q(g+Q(Q(q*la)-Q(M*ha)))-Q(W+Q(Q(k*fa)-Q(s*_))));g=Q(-O);if(!(Q(Q(W*Q(Q(k*j)+Q(s*g)))+Q(Q(Q(s*j)+Q(k*O))*Q(Q($+Q(Q(M*la)+Q(q*ha)))-Q(da+Q(Q(s*fa)+Q(k*_))))))>2]=1;e=J[f+20>>2];i=K[b+234|0];if((e|0)<=(i|0)){break qa}w=e;e=K[b+235|0];if(w>>>0<=e>>>0){break qa}w=i<<3;i=J[f+16>>2];z=w+i|0;fa=N[z>>2];e=i+(e<<3)|0;la=N[e>>2];ha=N[e+4>>2];qa=N[z+4>>2];j=Q(ha-qa);N[c+92>>2]=j;_=Q(la-fa);O=Q(-_);N[c+96>>2]=O;_=Q(Y(Q(Q(j*j)+Q(_*_))));if(!(_>2]=O;j=Q(j*_);N[c+92>>2]=j}_=Q(Q(qa+ha)*Q(.5));N[c+88>>2]=_;fa=Q(Q(fa+la)*Q(.5));N[c+84>>2]=fa;e=K[b+237|0];if((e|0)>=J[f+48>>2]){break qa}ha=W;e=J[f+44>>2]+(e<<3)|0;W=N[e>>2];la=N[e+4>>2];ha=Q(Q(ha+Q(Q(k*W)-Q(s*la)))-Q(g+Q(Q(q*fa)-Q(M*_))));g=Q(-O);if(!(Q(Q(ha*Q(Q(q*j)+Q(M*g)))+Q(Q(Q(M*j)+Q(q*O))*Q(Q(da+Q(Q(s*W)+Q(k*la)))-Q($+Q(Q(M*fa)+Q(q*_))))))>2]=g;N[c+92>>2]=-j}break pa}Z(109221,39003,50,59307);B()}Z(11412,55795,103,4803);B()}z=0;e=4;ta:{g=m;M=MU(c,b+8|0,b+4|0,g);ua:{if(!(jaya)){q=NU(b+12|0,J[b+8>>2],J[b+4>>2],d);if(ya>q){e=1;break ua}c=0;j=d;s=g;if(q<=ja){e=3;break ua}wa:{while(1){i=b+12|0;w=J[b+8>>2];G=J[b+4>>2];if(c&1){k=Q(j+Q(Q(Q(ia-q)*Q(s-j))/Q(M-q)))}else{k=Q(Q(j+s)*Q(.5))}O=NU(i,w,G,k);da=Q(O-ia);if((da>Q(0)?da:Q(-da))ia;s=i?s:k;j=i?k:j;q=i?O:q;M=i?M:O;c=c+1|0;if((c|0)!=50){continue}break}c=50}i=J[84028];J[84028]=(c|0)<(i|0)?i:c;z=z+1|0;if((z|0)!=16){break va}g=d}J[84025]=J[84025]+1;t=t+1|0;if((t|0)!=20){break ta}N[h+52>>2]=g;J[h+48>>2]=1;t=20;break na}M=MU(b+12|0,b+8|0,b+4|0,g);if(!(ja>2]=d;J[h+48>>2]=e;J[84025]=J[84025]+1;t=t+1|0;break na}j=N[b+268>>2];M=N[b+264>>2];s=N[b+308>>2];q=N[b+304>>2];d=g;continue}}Z(70543,39003,280,16652);B()}N[h+52>>2]=S;J[h+48>>2]=f}c=J[84026];J[84026]=(c|0)>(t|0)?c:t;Ui=b+320|0;d=Q(1);if(J[h+48>>2]==3){d=Q(Q(Q(Q(1)-o)*N[h+52>>2])+o);d=d>2]=d;J[l+4>>2]=J[l+4>>2]|32}b=d>2];if(l){continue}break ha}break}Z(3714,42374,642,93420);B()}Z(58027,42374,677,93420);B()}if(!a){break ga}if(!(U>Q(.9999988079071045))){break fa}}H[p+102995|0]=1;break ea}b=J[J[a+52>>2]+8>>2];e=J[J[a+48>>2]+8>>2];J[h+120>>2]=J[e+60>>2];c=J[e+56>>2];J[h+112>>2]=J[e+52>>2];J[h+116>>2]=c;c=J[e+48>>2];J[h+104>>2]=J[e+44>>2];J[h+108>>2]=c;c=J[e+40>>2];J[h+96>>2]=J[e+36>>2];J[h+100>>2]=c;c=J[e+32>>2];J[h+88>>2]=J[e+28>>2];J[h+92>>2]=c;J[h+80>>2]=J[b+60>>2];c=J[b+56>>2];J[h+72>>2]=J[b+52>>2];J[h+76>>2]=c;i=J[b+48>>2];f=h- -64|0;c=f;J[c>>2]=J[b+44>>2];J[c+4>>2]=i;c=J[b+40>>2];J[h+56>>2]=J[b+36>>2];J[h+60>>2]=c;c=J[b+32>>2];J[h+48>>2]=J[b+28>>2];J[h+52>>2]=c;xa:{ya:{d=N[e+60>>2];if(d>2]=Q(g*N[e+40>>2])+Q(d*N[e+48>>2]);N[e+36>>2]=Q(g*N[e+36>>2])+Q(d*N[e+44>>2]);N[e+60>>2]=U;d=Q(Q(g*N[e+52>>2])+Q(d*N[e+56>>2]));N[e+52>>2]=d;N[e+56>>2]=d;g=Rj(d);N[e+24>>2]=g;d=Hj(d);N[e+20>>2]=d;o=N[e+40>>2];i=J[e+40>>2];k=N[e+36>>2];J[e+44>>2]=J[e+36>>2];J[e+48>>2]=i;j=k;k=N[e+28>>2];m=N[e+32>>2];N[e+12>>2]=j-Q(Q(g*k)-Q(d*m));N[e+16>>2]=o-Q(Q(d*k)+Q(g*m));d=N[b+60>>2];if(!(d>2]=Q(g*N[b+40>>2])+Q(d*N[b+48>>2]);N[b+36>>2]=Q(g*N[b+36>>2])+Q(d*N[b+44>>2]);N[b+60>>2]=U;d=Q(Q(g*N[b+52>>2])+Q(d*N[b+56>>2]));N[b+52>>2]=d;N[b+56>>2]=d;g=Rj(d);N[b+24>>2]=g;d=Hj(d);N[b+20>>2]=d;o=N[b+40>>2];i=J[b+40>>2];k=N[b+36>>2];J[b+44>>2]=J[b+36>>2];J[b+48>>2]=i;j=k;k=N[b+28>>2];m=N[b+32>>2];N[b+12>>2]=j-Q(Q(g*k)-Q(d*m));N[b+16>>2]=o-Q(Q(d*k)+Q(g*m));_E(a,J[p+102944>>2]);c=J[a+4>>2];i=c&-33;J[a+4>>2]=i;J[a+136>>2]=J[a+136>>2]+1;if((c&6)!=6){J[a+4>>2]=c&-37;J[e+60>>2]=J[h+120>>2];a=J[h+116>>2];J[e+52>>2]=J[h+112>>2];J[e+56>>2]=a;a=J[h+108>>2];J[e+44>>2]=J[h+104>>2];J[e+48>>2]=a;a=J[h+100>>2];J[e+36>>2]=J[h+96>>2];J[e+40>>2]=a;a=J[h+92>>2];J[e+28>>2]=J[h+88>>2];J[e+32>>2]=a;J[b+60>>2]=J[h+80>>2];a=J[h+76>>2];J[b+52>>2]=J[h+72>>2];J[b+56>>2]=a;a=J[f+4>>2];J[b+44>>2]=J[f>>2];J[b+48>>2]=a;a=J[h+60>>2];J[b+36>>2]=J[h+56>>2];J[b+40>>2]=a;a=J[h+52>>2];J[b+28>>2]=J[h+48>>2];J[b+32>>2]=a;g=N[e+56>>2];d=Rj(g);N[e+24>>2]=d;g=Hj(g);N[e+20>>2]=g;k=N[e+28>>2];m=N[e+32>>2];N[e+16>>2]=N[e+48>>2]-Q(Q(g*k)+Q(d*m));N[e+12>>2]=N[e+44>>2]-Q(Q(d*k)-Q(g*m));g=N[b+56>>2];d=Hj(g);N[b+20>>2]=d;g=Rj(g);N[b+24>>2]=g;k=N[b+28>>2];m=N[b+32>>2];N[b+16>>2]=N[b+48>>2]-Q(Q(d*k)+Q(g*m));N[b+12>>2]=N[b+44>>2]-Q(Q(g*k)-Q(d*m));a=9;break xa}c=L[e+4>>1];if(!(c&2)){J[e+144>>2]=0;I[e+4>>1]=c|2}c=L[b+4>>1];if(!(c&2)){J[b+144>>2]=0;I[b+4>>1]=c|2}J[n+36>>2]=0;J[n+28>>2]=0;J[n+32>>2]=0;c=J[n+40>>2];if((c|0)<=0){break b}J[e+8>>2]=0;J[J[n+8>>2]>>2]=e;J[n+28>>2]=1;if((c|0)==1){break b}J[b+8>>2]=1;J[J[n+8>>2]+4>>2]=b;J[n+28>>2]=2;if(J[n+44>>2]<=0){break a}c=1;J[n+36>>2]=1;J[J[n+12>>2]>>2]=a;I[e+4>>1]=L[e+4>>1]|1;I[b+4>>1]=L[b+4>>1]|1;J[a+4>>2]=i|1;a=e;while(1){za:{if(J[a>>2]!=2){break za}l=J[a+112>>2];if(!l){break za}while(1){if(J[n+28>>2]==J[n+40>>2]|J[n+36>>2]==J[n+44>>2]){break za}t=J[l+4>>2];Aa:{if(H[t+4|0]&1){break Aa}i=J[l>>2];if(!(K[a+4|0]&8|J[i>>2]!=2|K[i+4|0]&8)|(K[J[t+48>>2]+44|0]|K[J[t+52>>2]+44|0])){break Aa}J[h+40>>2]=J[i+60>>2];f=J[i+56>>2];J[h+32>>2]=J[i+52>>2];J[h+36>>2]=f;f=J[i+48>>2];J[h+24>>2]=J[i+44>>2];J[h+28>>2]=f;f=J[i+40>>2];J[h+16>>2]=J[i+36>>2];J[h+20>>2]=f;f=J[i+32>>2];J[h+8>>2]=J[i+28>>2];J[h+12>>2]=f;if(!(H[i+4|0]&1)){d=N[i+60>>2];if(!(d>2]=Q(g*N[i+40>>2])+Q(d*N[i+48>>2]);N[i+36>>2]=Q(g*N[i+36>>2])+Q(d*N[i+44>>2]);N[i+60>>2]=U;d=Q(Q(g*N[i+52>>2])+Q(d*N[i+56>>2]));N[i+52>>2]=d;N[i+56>>2]=d;g=Rj(d);N[i+24>>2]=g;d=Hj(d);N[i+20>>2]=d;o=N[i+40>>2];z=J[i+40>>2];k=N[i+36>>2];J[i+44>>2]=J[i+36>>2];J[i+48>>2]=z;j=k;k=N[i+28>>2];m=N[i+32>>2];N[i+12>>2]=j-Q(Q(g*k)-Q(d*m));N[i+16>>2]=o-Q(Q(d*k)+Q(g*m))}_E(t,J[p+102944>>2]);f=J[t+4>>2];if(!(f&4)){f=J[h+12>>2];J[i+28>>2]=J[h+8>>2];J[i+32>>2]=f;J[i+60>>2]=J[h+40>>2];f=J[h+36>>2];J[i+52>>2]=J[h+32>>2];J[i+56>>2]=f;f=J[h+28>>2];J[i+44>>2]=J[h+24>>2];J[i+48>>2]=f;f=J[h+20>>2];J[i+36>>2]=J[h+16>>2];J[i+40>>2]=f;g=N[i+56>>2];d=Rj(g);N[i+24>>2]=d;g=Hj(g);N[i+20>>2]=g;k=N[i+28>>2];m=N[i+32>>2];N[i+16>>2]=N[i+48>>2]-Q(Q(g*k)+Q(d*m));N[i+12>>2]=N[i+44>>2]-Q(Q(d*k)-Q(g*m));break Aa}if(!(f&2)){f=J[h+12>>2];J[i+28>>2]=J[h+8>>2];J[i+32>>2]=f;J[i+60>>2]=J[h+40>>2];f=J[h+36>>2];J[i+52>>2]=J[h+32>>2];J[i+56>>2]=f;f=J[h+28>>2];J[i+44>>2]=J[h+24>>2];J[i+48>>2]=f;f=J[h+20>>2];J[i+36>>2]=J[h+16>>2];J[i+40>>2]=f;g=N[i+56>>2];d=Rj(g);N[i+24>>2]=d;g=Hj(g);N[i+20>>2]=g;k=N[i+28>>2];m=N[i+32>>2];N[i+16>>2]=N[i+48>>2]-Q(Q(g*k)+Q(d*m));N[i+12>>2]=N[i+44>>2]-Q(Q(d*k)-Q(g*m));break Aa}J[t+4>>2]=f|1;f=J[n+36>>2];if((f|0)>=J[n+44>>2]){break a}J[n+36>>2]=f+1;J[J[n+12>>2]+(f<<2)>>2]=t;f=L[i+4>>1];if(f&1){break Aa}I[i+4>>1]=f|1;if(!(!J[i>>2]|f&2)){J[i+144>>2]=0;I[i+4>>1]=f|3}f=J[n+28>>2];if((f|0)>=J[n+40>>2]){break b}J[i+8>>2]=f;J[J[n+8>>2]+(f<<2)>>2]=i;J[n+28>>2]=f+1}l=J[l+12>>2];if(l){continue}break}}f=c;c=0;a=b;if(f){continue}break}d=N[r+4>>2];J[h+24>>2]=20;J[h+16>>2]=1065353216;d=Q(d*Q(Q(1)-U));N[h+8>>2]=d;N[h+12>>2]=Q(1)/d;c=J[r+16>>2];a=0;H[h+28|0]=0;J[h+20>>2]=c;E=J[b+8>>2];f=0;c=Ui-128|0;Ui=c;Ba:{Ca:{w=J[e+8>>2];b=J[n+28>>2];if((w|0)<(b|0)){if((b|0)<=(E|0)){break Ca}if((b|0)<=0){l=J[n+24>>2];break Ba}while(1){b=J[J[n+8>>2]+(f<<2)>>2];l=J[b+48>>2];e=P(f,12);i=e+J[n+20>>2]|0;J[i>>2]=J[b+44>>2];J[i+4>>2]=l;N[(e+J[n+20>>2]|0)+8>>2]=N[b+56>>2];l=J[b+68>>2];i=e+J[n+24>>2]|0;J[i>>2]=J[b+64>>2];J[i+4>>2]=l;l=J[n+24>>2];N[(e+l|0)+8>>2]=N[b+72>>2];f=f+1|0;if((f|0)>2]){continue}break}break Ba}Z(11812,42333,397,93420);B()}Z(11788,42333,398,93420);B()}J[c+88>>2]=J[n+12>>2];J[c+92>>2]=J[n+36>>2];J[c+104>>2]=J[n>>2];b=J[h+20>>2];J[c+72>>2]=J[h+16>>2];J[c+76>>2]=b;b=J[h+28>>2];J[c+80>>2]=J[h+24>>2];J[c+84>>2]=b;b=J[h+12>>2];J[c+64>>2]=J[h+8>>2];J[c+68>>2]=b;b=J[n+20>>2];J[c+100>>2]=l;J[c+96>>2]=b;t=gV(c+12|0,c- -64|0);f=0;Da:{if(J[h+24>>2]<=0){break Da}while(1){M=Q(0);z=0;i=Ui+-64|0;Ui=i;e=1;if(J[t+48>>2]>0){while(1){l=J[t+36>>2]+P(z,88)|0;T=J[l+84>>2];ca=J[l+36>>2];e=J[l+32>>2];Ea:{if((e|0)!=(w|0)){S=Q(0);k=Q(0);if((e|0)!=(E|0)){break Ea}}S=N[l+64>>2];k=N[l+40>>2]}b=J[t+24>>2];ca=P(ca,12);G=b+ca|0;d=N[G+8>>2];g=N[G+4>>2];m=N[G>>2];G=P(e,12);e=G+b|0;o=N[e+8>>2];j=N[e+4>>2];s=N[e>>2];if((T|0)>0){O=N[l+56>>2];ia=N[l+48>>2];ja=N[l+68>>2];da=N[l+44>>2];ya=Q(k+da);fa=Q(-S);la=N[l+60>>2];_=Q(-la);ha=N[l+52>>2];qa=Q(-ha);e=0;while(1){q=Rj(o);N[i+60>>2]=q;U=Hj(o);N[i+56>>2]=U;W=Rj(d);N[i+44>>2]=W;$=Hj(d);N[i+40>>2]=$;N[i+52>>2]=j-Q(Q(U*ia)+Q(ha*q));N[i+48>>2]=s-Q(Q(q*ia)+Q(U*qa));N[i+36>>2]=g-Q(Q($*O)+Q(la*W));N[i+32>>2]=m-Q(Q(W*O)+Q($*_));OU(i+12|0,l,i+48|0,i+32|0,e);q=Q(0);U=N[i+28>>2];b=U>M;wa=N[i+20>>2];ta=Q(wa-m);W=N[i+16>>2];ua=N[i+24>>2];va=Q(ua-g);$=N[i+12>>2];pa=Q(Q(ta*W)-Q(va*$));ra=Q(Q(ja*pa)*pa);wa=Q(wa-s);ua=Q(ua-j);pa=Q(Q(wa*W)-Q(ua*$));pa=Q(ra+Q(Q(Q(S*pa)*pa)+ya));if(pa>Q(0)){q=Q(Q(U+Q(.004999999888241291))*Q(.75));q=q>2]}b=b+G|0;N[b+4>>2]=j;N[b>>2]=s;b=J[t+24>>2];N[(b+G|0)+8>>2]=o;b=b+ca|0;N[b+4>>2]=g;N[b>>2]=m;N[(ca+J[t+24>>2]|0)+8>>2]=d;z=z+1|0;if((z|0)>2]){continue}break}e=M>=Q(-.007499999832361937)}Ui=i- -64|0;if(e){break Da}f=f+1|0;if((f|0)>2]){continue}break}}e=P(w,12);i=e+J[n+20>>2]|0;l=J[i+4>>2];b=w<<2;f=J[b+J[n+8>>2]>>2];J[f+36>>2]=J[i>>2];J[f+40>>2]=l;i=b;b=J[n+8>>2];f=J[n+20>>2];N[J[i+b>>2]+52>>2]=N[(f+e|0)+8>>2];e=f;f=P(E,12);i=e+f|0;l=J[i+4>>2];e=b;b=E<<2;e=J[e+b>>2];J[e+36>>2]=J[i>>2];J[e+40>>2]=l;N[J[b+J[n+8>>2]>>2]+52>>2]=N[(f+J[n+20>>2]|0)+8>>2];iV(t);f=0;if(J[h+20>>2]>0){while(1){hV(t);f=f+1|0;if((f|0)>2]){continue}break}}l=0;if(J[n+28>>2]>0){d=N[h+8>>2];while(1){b=P(l,12);e=b+J[n+24>>2]|0;g=N[e>>2];k=Q(d*g);j=Q(k*k);m=N[e+4>>2];k=Q(d*m);k=Q(j+Q(k*k));if(k>Q(4)){k=Q(Q(2)/Q(Y(k)));m=Q(m*k);g=Q(g*k)}f=b+J[n+20>>2]|0;S=N[f+8>>2];j=N[f+4>>2];s=N[f>>2];o=N[e+8>>2];k=Q(d*o);if(Q(k*k)>Q(2.4674012660980225)){o=Q(o*Q(Q(1.5707963705062866)/(k>Q(0)?k:Q(-k))))}j=Q(j+Q(d*m));N[f+4>>2]=j;s=Q(s+Q(d*g));N[f>>2]=s;k=Q(Q(d*o)+S);N[(b+J[n+20>>2]|0)+8>>2]=k;f=b+J[n+24>>2]|0;N[f+4>>2]=m;N[f>>2]=g;N[(b+J[n+24>>2]|0)+8>>2]=o;b=J[J[n+8>>2]+(l<<2)>>2];N[b+72>>2]=o;N[b+68>>2]=m;N[b+64>>2]=g;N[b+56>>2]=k;N[b+48>>2]=j;N[b+44>>2]=s;g=Rj(k);N[b+24>>2]=g;k=Hj(k);N[b+20>>2]=k;o=j;m=N[b+28>>2];j=N[b+32>>2];N[b+16>>2]=o-Q(Q(k*m)+Q(g*j));N[b+12>>2]=s-Q(Q(g*m)-Q(k*j));l=l+1|0;if((l|0)>2]){continue}break}}if(!(!J[n+4>>2]|J[n+36>>2]<=0)){E=J[t+40>>2];e=c+116|0;l=0;while(1){w=J[J[n+12>>2]+(l<<2)>>2];i=E+P(l,152)|0;b=J[i+144>>2];J[c+124>>2]=b;Fa:{if((b|0)<=0){break Fa}f=0;if((b|0)!=1){T=b&2147483646;z=0;while(1){ca=f<<2;G=c+108|0;oa=i+P(f,36)|0;N[ca+G>>2]=N[oa+16>>2];N[e+ca>>2]=N[oa+20>>2];F=G;ca=f|1;G=ca<<2;ca=i+P(ca,36)|0;N[F+G>>2]=N[ca+16>>2];N[e+G>>2]=N[ca+20>>2];f=f+2|0;z=z+2|0;if((T|0)!=(z|0)){continue}break}}if(!(b&1)){break Fa}b=f<<2;f=i+P(f,36)|0;N[b+(c+108|0)>>2]=N[f+16>>2];N[b+e>>2]=N[f+20>>2]}b=J[n+4>>2];Zi[J[J[b>>2]+20>>2]](b,w,c+108|0);l=l+1|0;if((l|0)>2]){continue}break}}fV(t);Ui=c+128|0;if(J[n+28>>2]<=0){break ya}while(1){b=J[J[n+8>>2]+(a<<2)>>2];I[b+4>>1]=L[b+4>>1]&65534;Ga:{if(J[b>>2]!=2){break Ga}$E(b);l=J[b+112>>2];if(!l){break Ga}while(1){b=J[l+4>>2];J[b+4>>2]=J[b+4>>2]&-34;l=J[l+12>>2];if(l){continue}break}}a=a+1|0;if((a|0)>2]){continue}break}break ya}break da}dw(aa,aa);a=0;if(!K[p+102994|0]){break xa}H[p+102995|0]=0;a=8}if((a|0)!=8){continue}}break}QU(n);Ui=h+272|0;break ca}Z(58027,54641,722,70191);B()}N[p+103024>>2]=0;d=N[r+4>>2]}if(d>Q(0)){N[p+102988>>2]=N[r+8>>2]}b=J[p+102868>>2];Ha:{if(!(b&4)){break Ha}a=J[p+102952>>2];if(!a){break Ha}while(1){if(K[a+4|0]&32){J[a+84>>2]=0;J[a+76>>2]=0;J[a+80>>2]=0}a=J[a+96>>2];if(a){continue}break}}J[p+102868>>2]=b&-3;N[p+102996>>2]=0;Ui=r+32|0;Ia:{if(!J[A+103112>>2]){break Ia}a=J[A+102992>>2];if(!a){break Ia}d=N[J[A+36>>2]+68>>2];while(1){if(!(!(K[a+4|0]&32)|J[a>>2]!=2)){N[y+16>>2]=d*N[a+12>>2];g=N[a+16>>2];J[y+24>>2]=0;N[y+20>>2]=d*g;g=N[a+56>>2];J[y+144>>2]=0;J[y+148>>2]=0;g=Q(g*Q(.5));N[y+156>>2]=Rj(g);N[y+152>>2]=Hj(g);Zi[J[A+103112>>2]](J[a+148>>2],y+16|0,y+144|0)}a=J[a+96>>2];if(a){continue}break}}b=J[A+103072>>2];c=J[A+103068>>2];if((b|0)!=(c|0)){a=0;J[y+140>>2]=0;J[y+20>>2]=0;J[y+16>>2]=243500;f=Wu(y+32|0);J[y+108>>2]=0;J[y+112>>2]=-1;J[y+96>>2]=0;J[y+100>>2]=0;I[y+116>>1]=L[y+116>>1]&65534;J[y+20>>2]=J[A+36>>2];b=(b-c|0)/48|0;c=b>>>0<=1?1:b;while(1){b=J[A+103068>>2];if((J[A+103072>>2]-b|0)/48>>>0<=a>>>0){break d}b=b+P(a,48)|0;d=N[b>>2];N[y+148>>2]=na*N[b+4>>2];N[y+144>>2]=na*d;d=N[b+16>>2];N[y+12>>2]=na*N[b+20>>2];N[y+8>>2]=na*d;J[y+108>>2]=J[b+32>>2];I[y+114>>1]=L[b+40>>1];H[y+86|0]=K[y+86|0]&254;JU(p,y+16|0,y+144|0,y+8|0);Zi[J[u+80>>2]](f,b,J[u+84>>2]);a=a+1|0;if((c|0)!=(a|0)){continue}break}J[A+103072>>2]=J[A+103068>>2]}if(J[u+64>>2]){J[y+16>>2]=0;a=J[A+102972>>2];if(a){while(1){Ja:{if(!(K[a+4|0]&2)){break Ja}c=J[a+48>>2];b=J[a+52>>2];if(!K[c+44|0]&K[b+44|0]!=1){break Ja}Zi[J[u+64>>2]](J[c+48>>2],L[J[c+40>>2]+P(P(J[a+56>>2],H[J[c+12>>2]+20|0]&1),6)>>1],J[b+48>>2],L[J[b+40>>2]+P(P(J[a+60>>2],H[J[b+12>>2]+20|0]&1),6)>>1],J[u+68>>2])|0}a=J[a+12>>2];if(a){continue}break}}}f=J[A+102972>>2];J[y+8>>2]=0;QL(A);b=y+16|0;J[b>>2]=0;J[b+4>>2]=0;J[b+24>>2]=0;J[b+16>>2]=0;J[b+20>>2]=0;J[b+8>>2]=0;J[b+12>>2]=0;J[b>>2]=J[u+88>>2];J[b+4>>2]=J[u+92>>2];if(f){while(1){Ka:{if(!(K[f+4|0]&2)){break Ka}l=J[f+48>>2];i=J[f+52>>2];if(!K[l+44|0]&K[i+44|0]!=1){break Ka}n=J[f+132>>2];La:{if((n|0)<=0){d=Q(0);break La}e=f- -64|0;h=0;d=Q(0);a=0;if(n>>>0>=4){r=n&2147483644;c=0;while(1){g=N[(e+P(a,24)|0)+20>>2];d=d>g?d:g;g=N[(e+P(a|1,24)|0)+20>>2];d=d>g?d:g;g=N[(e+P(a|2,24)|0)+20>>2];d=d>g?d:g;g=N[(e+P(a|3,24)|0)+20>>2];d=d>g?d:g;a=a+4|0;c=c+4|0;if((r|0)!=(c|0)){continue}break}}c=n&3;if(!c){break La}while(1){g=N[(e+P(a,24)|0)+20>>2];d=d>g?d:g;a=a+1|0;h=h+1|0;if((c|0)!=(h|0)){continue}break}}if(!(N[ga+76>>2]<=d)){break Ka}a=J[i+8>>2];c=J[l+8>>2];J[b+8>>2]=c;c=J[c+148>>2];J[b+16>>2]=a;J[b+12>>2]=c;J[b+20>>2]=J[a+148>>2];a=J[f+60>>2];I[b+24>>1]=L[J[l+40>>2]+P(P(J[f+56>>2],H[J[l+12>>2]+20|0]&1),6)>>1];I[b+26>>1]=L[J[i+40>>2]+P(P(a,H[J[i+12>>2]+20|0]&1),6)>>1];TL(A,b)}f=J[f+12>>2];if(f){continue}break}}a=y+144|0;J[a>>2]=0;J[a+4>>2]=0;J[a>>2]=J[u+96>>2];J[a+4>>2]=J[u+100>>2];SL(A,a);n=Ui-48|0;Ui=n;a=J[p+102984>>2];Ma:{if(!a){break Ma}ca=J[a+4>>2];Na:{if(!(ca&1)){break Na}z=J[p+102952>>2];if(!z){break Na}while(1){b=J[z+100>>2];if(b){A=z+12|0;while(1){a=L[z+4>>1];Oa:{if(!(a&32)){J[n+8>>2]=1050253722;J[n>>2]=1056964608;J[n+4>>2]=1056964608;break Oa}c=J[z>>2];if(!c){J[n+8>>2]=1056964608;J[n>>2]=1056964608;J[n+4>>2]=1063675494;break Oa}if(!(a&2)){J[n+8>>2]=1058642330;J[n>>2]=1058642330;J[n+4>>2]=1058642330;break Oa}if((c|0)==1){J[n+8>>2]=1063675494;J[n>>2]=1056964608;J[n+4>>2]=1056964608;break Oa}J[n+8>>2]=1060320051;J[n>>2]=1063675494;J[n+4>>2]=1060320051}ga=0;h=Ui-1552|0;Ui=h;i=b;Pa:{Qa:{Ra:{Sa:{Ta:{Ua:{Va:{Wa:{r=J[b+12>>2];switch(J[r+4>>2]){case 0:break Sa;case 4:break Ta;case 2:break Ua;case 3:break Va;case 1:break Wa;default:break Ra}}k=N[A>>2];d=N[A+8>>2];m=N[r+24>>2];g=N[A+12>>2];j=N[r+28>>2];o=N[A+4>>2];N[h+36>>2]=Q(Q(d*m)+Q(g*j))+o;N[h+32>>2]=k+Q(Q(g*m)-Q(d*j));m=N[r+32>>2];j=N[r+36>>2];N[h+1004>>2]=o+Q(Q(d*m)+Q(g*j));N[h+1e3>>2]=k+Q(Q(g*m)-Q(d*j));a=J[p+102984>>2];Zi[J[J[a>>2]+24>>2]](a,h+32|0,h+1e3|0,n);break Ra}a=J[r+28>>2];d=N[A>>2];g=N[A+8>>2];b=J[r+24>>2];k=N[b>>2];m=N[A+12>>2];j=N[b+4>>2];N[h+36>>2]=Q(Q(g*k)+Q(m*j))+N[A+4>>2];N[h+32>>2]=d+Q(Q(m*k)-Q(g*j));if((a|0)<2){break Ra}aa=1;while(1){d=N[A>>2];g=N[A+8>>2];c=b+(aa<<3)|0;k=N[c>>2];m=N[A+12>>2];j=N[c+4>>2];N[h+1004>>2]=Q(Q(g*k)+Q(m*j))+N[A+4>>2];N[h+1e3>>2]=d+Q(Q(m*k)-Q(g*j));c=J[p+102984>>2];f=h+32|0;Zi[J[J[c>>2]+24>>2]](c,f,h+1e3|0,n);c=J[p+102984>>2];Zi[J[J[c>>2]+16>>2]](c,f,Q(.05000000074505806),n);c=J[h+1004>>2];J[h+32>>2]=J[h+1e3>>2];J[h+36>>2]=c;aa=aa+1|0;if((a|0)!=(aa|0)){continue}break}break Ra}a=J[r+416>>2];if((a|0)>=17){break Qa}if((a|0)>0){c=r+160|0;k=N[A+4>>2];m=N[A>>2];d=N[A+8>>2];g=N[A+12>>2];b=0;while(1){f=b<<3;e=f+(h+32|0)|0;f=c+f|0;j=N[f>>2];o=N[f+4>>2];N[e+4>>2]=k+Q(Q(d*j)+Q(g*o));N[e>>2]=m+Q(Q(g*j)-Q(d*o));b=b+1|0;if((a|0)!=(b|0)){continue}break}}b=J[p+102984>>2];Zi[J[J[b>>2]+12>>2]](b,h+32|0,a,n);break Ra}if(!(H[r+60|0]&1)){break Ra}oa=Zi[J[J[r>>2]+12>>2]](r)|0;J[h+1416>>2]=0;a=h;J[a+1004>>2]=2;J[a+1008>>2]=1008981770;J[a+1e3>>2]=247140;H[a+1020|0]=0;J[a+1024>>2]=0;J[a+1028>>2]=0;J[a+80>>2]=0;J[a+84>>2]=0;I[a+88>>1]=0;J[a+140>>2]=0;J[a+144>>2]=0;I[a+148>>1]=0;J[a+200>>2]=0;J[a+204>>2]=0;I[a+208>>1]=0;J[a+72>>2]=0;J[a+76>>2]=0;J[a+36>>2]=1;J[a+40>>2]=1008981770;J[a+32>>2]=247060;H[a+52|0]=0;H[a+112|0]=0;J[a+132>>2]=0;J[a+136>>2]=0;J[a+96>>2]=1;J[a+100>>2]=1008981770;J[a+92>>2]=247060;H[a+172|0]=0;J[a+156>>2]=1;J[a+160>>2]=1008981770;J[a+152>>2]=247060;J[a+192>>2]=0;J[a+196>>2]=0;J[a+260>>2]=0;J[a+264>>2]=0;I[a+268>>1]=0;J[a+320>>2]=0;J[a+324>>2]=0;I[a+328>>1]=0;I[a+388>>1]=0;J[a+380>>2]=0;J[a+384>>2]=0;J[a+212>>2]=247060;H[a+232|0]=0;J[a+216>>2]=1;J[a+220>>2]=1008981770;J[a+252>>2]=0;J[a+256>>2]=0;H[a+292|0]=0;J[a+272>>2]=247060;J[a+276>>2]=1;J[a+280>>2]=1008981770;J[a+312>>2]=0;J[a+316>>2]=0;H[a+352|0]=0;J[a+332>>2]=247060;J[a+336>>2]=1;J[a+340>>2]=1008981770;J[a+372>>2]=0;J[a+376>>2]=0;I[a+448>>1]=0;J[a+440>>2]=0;J[a+444>>2]=0;I[a+508>>1]=0;J[a+500>>2]=0;J[a+504>>2]=0;I[a+568>>1]=0;J[a+560>>2]=0;J[a+564>>2]=0;J[a+392>>2]=247060;H[a+412|0]=0;J[a+396>>2]=1;J[a+400>>2]=1008981770;J[a+432>>2]=0;J[a+436>>2]=0;H[a+472|0]=0;J[a+452>>2]=247060;J[a+456>>2]=1;J[a+460>>2]=1008981770;J[a+492>>2]=0;J[a+496>>2]=0;J[a+512>>2]=247060;J[a+516>>2]=1;J[a+520>>2]=1008981770;J[a+552>>2]=0;J[a+556>>2]=0;H[a+532|0]=K[a+532|0]&254;H[a+592|0]=K[a+592|0]&254;J[a+576>>2]=1;J[a+580>>2]=1008981770;J[a+572>>2]=247060;I[a+628>>1]=0;J[a+620>>2]=0;J[a+624>>2]=0;J[a+612>>2]=0;J[a+616>>2]=0;H[a+652|0]=K[a+652|0]&254;J[a+636>>2]=1;J[a+640>>2]=1008981770;J[a+632>>2]=247060;I[a+688>>1]=0;J[a+680>>2]=0;J[a+684>>2]=0;J[a+672>>2]=0;J[a+676>>2]=0;H[a+712|0]=K[a+712|0]&254;J[a+696>>2]=1;J[a+700>>2]=1008981770;J[a+692>>2]=247060;I[a+748>>1]=0;J[a+740>>2]=0;J[a+744>>2]=0;J[a+732>>2]=0;J[a+736>>2]=0;H[a+772|0]=K[a+772|0]&254;J[a+756>>2]=1;J[a+760>>2]=1008981770;J[a+752>>2]=247060;I[a+808>>1]=0;J[a+800>>2]=0;J[a+804>>2]=0;J[a+792>>2]=0;J[a+796>>2]=0;H[a+832|0]=K[a+832|0]&254;J[a+816>>2]=1;J[a+820>>2]=1008981770;J[a+812>>2]=247060;I[a+868>>1]=0;J[a+860>>2]=0;J[a+864>>2]=0;J[a+852>>2]=0;J[a+856>>2]=0;H[a+892|0]=K[a+892|0]&254;J[a+876>>2]=1;J[a+880>>2]=1008981770;J[a+872>>2]=247060;I[a+928>>1]=0;J[a+920>>2]=0;J[a+924>>2]=0;J[a+912>>2]=0;J[a+916>>2]=0;H[a+952|0]=K[a+952|0]&254;J[a+936>>2]=1;J[a+940>>2]=1008981770;J[a+932>>2]=247060;I[a+988>>1]=0;J[a+980>>2]=0;J[a+984>>2]=0;J[a+972>>2]=0;J[a+976>>2]=0;d=N[n>>2];g=N[n+4>>2];N[a+28>>2]=N[n+8>>2]*Q(.800000011920929);N[a+24>>2]=g*Q(.800000011920929);N[a+20>>2]=d*Q(.800000011920929);if(!oa){break Ra}Ea=a+1160|0;while(1){Xa:{if(!L[J[i+40>>2]+P(P(H[J[i+12>>2]+20|0]&1,ga),6)>>1]|J[J[r+32>>2]+(ga<<2)>>2]==-1){break Xa}VE(r,ga,h+1e3|0);a=J[h+1416>>2];if((a|0)>=17){break Qa}if((a|0)>0){k=N[A+4>>2];m=N[A>>2];d=N[A+8>>2];g=N[A+12>>2];aa=0;while(1){b=aa<<3;c=b+(h+1424|0)|0;b=b+Ea|0;j=N[b>>2];o=N[b+4>>2];N[c+4>>2]=k+Q(Q(d*j)+Q(g*o));N[c>>2]=m+Q(Q(g*j)-Q(d*o));aa=aa+1|0;if((a|0)!=(aa|0)){continue}break}}b=J[p+102984>>2];Zi[J[J[b>>2]+12>>2]](b,h+1424|0,a,h+20|0);aa=0;a=J[r+56>>2];b=(ga>>>0)/(a>>>0)|0;E=b;t=0;T=Ui-256|0;Ui=T;c=K[J[i+12>>2]+20|0];f=J[i+40>>2];a=P(a,b);w=ga-a|0;a=a+w|0;ka=Ko(r,a,T+128|0);Ya:{if(ka){sa=f+P(P(a,c&1),6)|0;b=-1;while(1){c=(t<<3)+172688|0;a=E+J[c>>2]|0;Za:{if((a|0)<0|(a|0)>=J[r+52>>2]){break Za}c=w+J[c+4>>2]|0;if((c|0)<0){break Za}f=J[r+56>>2];if((f|0)<=(c|0)){break Za}a=c+P(a,f)|0;e=Ko(r,a,T);if(L[sa>>1]!=L[J[i+40>>2]+P(P(a,H[J[i+12>>2]+20|0]&1),6)>>1]){break Za}d=N[r+44>>2];g=N[r+48>>2];d=Q((d>g?d:g)*Q(.009999999776482582));d=Q(d*d);c=0;while(1){l=c;c=c+1|0;G=(ka|0)==(c|0);a=T+128|0;f=a+((G?0:c)<<3)|0;g=N[f+4>>2];k=N[f>>2];a=a+(l<<3)|0;m=N[a+4>>2];j=N[a>>2];f=0;while(1){_a:{a=f;if((e|0)==(a|0)){a=e;break _a}f=a+1|0;X=T+(a<<3)|0;o=Q(k-N[X>>2]);s=Q(o*o);o=Q(g-N[X+4>>2]);if(!(d>Q(s+Q(o*o)))){continue}X=T+(((e|0)!=(f|0)?f:0)<<3)|0;o=Q(j-N[X>>2]);s=Q(o*o);o=Q(m-N[X+4>>2]);if(!(d>Q(s+Q(o*o)))){continue}}break}b=(Ia=-1,Ja=oxa(-2,l),Ka=a>>>0>=e>>>0,Ka?Ia:Ja)&b;if(!G){continue}break}}t=t+1|0;if((t|0)!=4){continue}break}break Ya}b=-1;$a:{if((E|0)<0){if((E|0)!=-1){break Ya}a=0;break $a}ab:{if((w|0)<-1|(E|0)>=J[r+52>>2]){break ab}a=w+1|0;c=J[r+56>>2];if((a|0)>=(c|0)){break ab}Ko(r,a+P(c,E)|0,T)}a=E+1|0}bb:{if((w|0)<0|(a|0)>=J[r+52>>2]){break bb}c=J[r+56>>2];if((c|0)<=(w|0)){break bb}Ko(r,w+P(a,c)|0,T)}if((E|0)<0){break Ya}cb:{if((w|0)<=0|(E|0)>=J[r+52>>2]){break cb}a=J[r+56>>2];if((a|0)<(w|0)){break cb}Ko(r,(w-1|0)+P(a,E)|0,T)}if(!E|(E|0)>J[r+52>>2]|(w|0)<0){break Ya}a=J[r+56>>2];if((a|0)<=(w|0)){break Ya}Ko(r,w+P(a,E-1|0)|0,T)}Ui=T+256|0;Fa=h+32|0;l=b;t=0;b=0;sa=0;E=Ui-256|0;Ui=E;db:{if(L[(J[J[r+40>>2]+8>>2]+(J[J[r+32>>2]+(ga<<2)>>2]<<2)|0)+2>>1]<17){G=Ko(r,ga,E);Ba=G>>>0>=16?16:G;if(!Ba){break db}f=G-1|0;c=2;a=1;while(1){e=a;a=c;if(l>>>b&1){T=E+(b<<3)|0;ka=J[T+4>>2];w=Fa+P(t,60)|0;c=w;J[c+24>>2]=J[T>>2];J[c+28>>2]=ka;ka=E+(e<<3)|0;X=J[ka>>2];F=J[ka+4>>2];I[c+56>>1]=0;J[c+32>>2]=X;J[c+36>>2]=F;H[c+56|0]=1;c=E+(f<<3)|0;eb:{if(l>>>f&1){f=J[c+4>>2];J[w+40>>2]=J[c>>2];J[w+44>>2]=f;break eb}g=N[T>>2];m=N[c>>2];k=N[T+4>>2];s=N[c+4>>2];d=Q(k-s);j=Q(d*d);o=Q(g-m);S=Q(o*o);c=(j>S?j:S)==j;c=((c?d>=Q(0)?1:-1:0)+ga|0)+P(J[r+56>>2],c?0:o<=Q(0)?1:-1)|0;f=J[J[r+32>>2]+(c<<2)>>2];fb:{if((f|0)==-1){d=Q(s-k);d=Q(d+d);g=Q(m-g);g=Q(g+g);break fb}T=J[J[r+40>>2]+8>>2];X=Ko(r,c,E+128|0);c=L[(T+(f<<2)|0)+2>>1];gb:{if(!c){c=0;break gb}Aa=c&1;hb:{if((c|0)==1){d=Q(34028234663852886e22);f=0;c=0;break hb}za=c&65534;d=Q(34028234663852886e22);f=0;c=0;T=0;while(1){F=E+128|0;Ca=f|1;ba=F+(Ca<<3)|0;m=Q(N[ba>>2]-g);F=F+(f<<3)|0;j=Q(N[F>>2]-g);o=Q(j*j);j=Q(N[F+4>>2]-k);j=Q(o+Q(j*j));F=j>2]-k);m=Q(o+Q(m*m));d=F?j:d;ba=m>2]-g);g=Q(d*d);d=Q(N[c+4>>2]-k);c=j>Q(g+Q(d*d))?f:F}c=(E+128|0)+(((c+X|0)-1>>>0)%(X>>>0)<<3)|0;d=N[c+4>>2];g=N[c>>2]}N[w+44>>2]=d;N[w+40>>2]=g}H[w+57|0]=1;ib:{if(l>>>e&1){c=E+(a<<3)|0;f=J[c+4>>2];J[w+48>>2]=J[c>>2];J[w+52>>2]=f;break ib}c=E+(a<<3)|0;k=N[c>>2];m=N[ka+4>>2];d=Q(N[c+4>>2]-m);j=Q(d*d);g=N[ka>>2];k=Q(k-g);o=Q(k*k);c=(j>o?j:o)==j;c=((c?d>=Q(0)?1:-1:0)+ga|0)+P(J[r+56>>2],c?0:k<=Q(0)?1:-1)|0;f=J[J[r+32>>2]+(c<<2)>>2];jb:{if((f|0)==-1){d=Q(d+d);g=Q(k+k);break jb}T=J[J[r+40>>2]+8>>2];ka=Ko(r,c,E+128|0);c=L[(T+(f<<2)|0)+2>>1];kb:{if(!c){c=0;break kb}ba=c&1;lb:{if((c|0)==1){d=Q(34028234663852886e22);f=0;c=0;break lb}Aa=c&65534;d=Q(34028234663852886e22);f=0;c=0;T=0;while(1){X=E+128|0;za=f|1;F=X+(za<<3)|0;k=Q(N[F>>2]-g);X=X+(f<<3)|0;j=Q(N[X>>2]-g);o=Q(j*j);j=Q(N[X+4>>2]-m);j=Q(o+Q(j*j));X=j>2]-m);k=Q(o+Q(k*k));d=X?j:d;F=k>2]-g);g=Q(d*d);d=Q(N[c+4>>2]-m);c=k>Q(g+Q(d*d))?f:F}c=(E+128|0)+(((c+ka|0)+1>>>0)%(ka>>>0)<<3)|0;d=N[c+4>>2];g=N[c>>2]}N[w+52>>2]=d;N[w+48>>2]=g}t=t+1|0}c=(a+1>>>0)%(G>>>0)|0;f=b;b=e;sa=sa+1|0;if((Ba|0)!=(sa|0)){continue}break}break db}Z(105899,41688,272,49591);B()}Ui=E+256|0;if(!t){break Xa}while(1){k=N[A>>2];d=N[A+8>>2];a=(h+32|0)+P(aa,60)|0;m=N[a+24>>2];g=N[A+12>>2];j=N[a+28>>2];o=N[A+4>>2];N[h+1428>>2]=Q(Q(d*m)+Q(g*j))+o;N[h+1424>>2]=k+Q(Q(g*m)-Q(d*j));m=N[a+32>>2];j=N[a+36>>2];N[h+16>>2]=o+Q(Q(d*m)+Q(g*j));N[h+12>>2]=k+Q(Q(g*m)-Q(d*j));a=J[p+102984>>2];Zi[J[J[a>>2]+24>>2]](a,h+1424|0,h+12|0,n);aa=aa+1|0;if((aa|0)!=(t|0)){continue}break}}ga=ga+1|0;if((oa|0)!=(ga|0)){continue}break}break Ra}k=N[A>>2];d=N[A+8>>2];m=N[r+24>>2];g=N[A+12>>2];j=N[r+28>>2];N[h+1004>>2]=Q(Q(d*m)+Q(g*j))+N[A+4>>2];N[h+1e3>>2]=k+Q(Q(g*m)-Q(d*j));k=N[r+8>>2];N[h+1428>>2]=d+Q(g*Q(0));N[h+1424>>2]=g-Q(d*Q(0));a=J[p+102984>>2];b=h+1e3|0;Zi[J[J[a>>2]+20>>2]](a,b,k,h+1424|0,n);a=J[p+102984>>2];N[h+24>>2]=Q(k*N[h+1428>>2])+N[h+1004>>2];N[h+20>>2]=Q(k*N[h+1424>>2])+N[h+1e3>>2];d=N[n>>2];g=N[n+4>>2];N[h+40>>2]=Q(1)-N[n+8>>2];N[h+36>>2]=Q(1)-g;N[h+32>>2]=Q(1)-d;Zi[J[J[a>>2]+24>>2]](a,b,h+20|0,h+32|0)}Ui=h+1552|0;break Pa}Z(105881,42374,1041,47661);B()}b=J[i+4>>2];if(b){continue}break}}z=J[z+96>>2];if(z){continue}break}}mb:{if(!(ca&2)){break mb}b=J[p+102956>>2];if(!b){break mb}while(1){a=Ui+-64|0;Ui=a;c=J[b+52>>2];f=J[b+48>>2];e=J[f+16>>2];J[a+56>>2]=J[f+12>>2];J[a+60>>2]=e;f=J[c+16>>2];J[a+48>>2]=J[c+12>>2];J[a+52>>2]=f;Zi[J[J[b>>2]>>2]](a+40|0,b);Zi[J[J[b>>2]+4>>2]](a+32|0,b);J[a+28>>2]=1061997773;J[a+20>>2]=1056964608;J[a+24>>2]=1061997773;nb:{ob:{switch(J[b+4>>2]-3|0){case 0:c=J[p+102984>>2];Zi[J[J[c>>2]+24>>2]](c,a+40|0,a+32|0,a+20|0);break nb;case 1:f=J[b+72>>2];c=a+12|0;J[c>>2]=J[b+68>>2];J[c+4>>2]=f;e=J[b+80>>2];f=a+4|0;J[f>>2]=J[b+76>>2];J[f+4>>2]=e;h=J[p+102984>>2];e=a+20|0;Zi[J[J[h>>2]+24>>2]](h,c,a+40|0,e);h=J[p+102984>>2];Zi[J[J[h>>2]+24>>2]](h,f,a+32|0,e);h=J[p+102984>>2];Zi[J[J[h>>2]+24>>2]](h,c,f,e);break nb;case 2:break nb;default:break ob}}f=J[p+102984>>2];e=a+40|0;c=a+20|0;Zi[J[J[f>>2]+24>>2]](f,a+56|0,e,c);f=J[p+102984>>2];i=e;e=a+32|0;Zi[J[J[f>>2]+24>>2]](f,i,e,c);f=J[p+102984>>2];Zi[J[J[f>>2]+24>>2]](f,a+48|0,e,c)}Ui=a- -64|0;b=J[b+12>>2];if(b){continue}break}}pb:{if(!(ca&8)){break pb}J[n+44>>2]=1063675494;J[n+36>>2]=1050253722;J[n+40>>2]=1063675494;f=J[p+102932>>2];if(!f){break pb}c=n+8|0;while(1){qb:{if((J[f+4>>2]&6)!=6){break qb}a=J[f+48>>2];b=J[a+8>>2]+12|0;d=N[J[a+12>>2]+8>>2];a=J[f+52>>2];UE(n,f- -64|0,b,d,J[a+8>>2]+12|0,N[J[a+12>>2]+8>>2]);a=J[f+132>>2];if((a|0)<=0){break qb}b=0;if((a|0)!=1){e=a&-2;z=0;while(1){h=J[p+102984>>2];i=c+(b<<3)|0;l=n+36|0;Zi[J[J[h>>2]+32>>2]](h,i,n,l);h=J[p+102984>>2];Zi[J[J[h>>2]+32>>2]](h,i+8|0,n,l);b=b+2|0;z=z+2|0;if((e|0)!=(z|0)){continue}break}}if(!(a&1)){break qb}a=J[p+102984>>2];Zi[J[J[a>>2]+32>>2]](a,c+(b<<3)|0,n,n+36|0)}f=J[f+12>>2];if(f){continue}break}}rb:{if(!(ca&4)){break rb}J[n+44>>2]=1063675494;J[n+36>>2]=1063675494;J[n+40>>2]=1050253722;f=J[p+102952>>2];if(!f){break rb}while(1){sb:{if(!(K[f+4|0]&32)){break sb}b=J[f+100>>2];if(!b){break sb}while(1){if(J[b+28>>2]>0){z=0;while(1){a=J[(J[b+24>>2]+P(z,28)|0)+24>>2];if((a|0)<0|(a|0)>=J[p+102884>>2]){break c}a=J[p+102876>>2]+P(a,36)|0;d=N[a+4>>2];g=N[a+8>>2];k=N[a>>2];m=N[a+12>>2];N[n+28>>2]=m;N[n+24>>2]=k;N[n+20>>2]=m;N[n+16>>2]=g;N[n+12>>2]=d;N[n+8>>2]=g;N[n+4>>2]=d;N[n>>2]=k;a=J[p+102984>>2];Zi[J[J[a>>2]+8>>2]](a,n,4,n+36|0);z=z+1|0;if((z|0)>2]){continue}break}}b=J[b+4>>2];if(b){continue}break}}f=J[f+96>>2];if(f){continue}break}}if(!(ca&16)){break Ma}b=J[p+102952>>2];if(!b){break Ma}while(1){a=J[b+24>>2];J[n+8>>2]=J[b+20>>2];J[n+12>>2]=a;a=J[b+16>>2];J[n>>2]=J[b+12>>2];J[n+4>>2]=a;a=J[b+48>>2];J[n>>2]=J[b+44>>2];J[n+4>>2]=a;a=J[p+102984>>2];Zi[J[J[a>>2]+28>>2]](a,n);b=J[b+96>>2];if(b){continue}break}}Ui=n+48|0;Ui=y+160|0}b=J[u+124>>2];a=J[ma+4>>2];tb:{if(b>>>0>=a>>>0){if(K[300320]){break tb}J[u+32>>2]=a;J[u+36>>2]=J[56054];dj(3,88458,125168,u+32|0)}H[300320]=a>>>0<=b>>>0}b=J[u+112>>2];a=J[ma+12>>2];ub:{if(b>>>0>=a>>>0){if(K[300321]){break ub}J[u+16>>2]=a;J[u+20>>2]=J[56055];dj(3,88458,125065,u+16|0)}H[300321]=a>>>0<=b>>>0}vb:{if(!xa){break vb}b=J[xa>>2];if(!b){break vb}Ga=J[b+3216>>2];Ha=J[b+3220>>2]}J[u+128>>2]=Ga;J[u+132>>2]=Ha;tv(J[xa>>2],u+128|0,1);if(J[75074]>0){ym(J[xa>>2])}a=K[ma+16|0];b=J[ea+132>>2];wb:{if(K[ma+17|0]==1){J[b+60>>2]=a&1?7631:0;break wb}J[(b+103084|0)+4>>2]=a&1?11:0}a=J[ea+152>>2]-J[ea+148>>2]>>2;J[75044]=a+J[75044];J[u+40>>2]=a;J[u+44>>2]=0;J[u+8>>2]=a;J[u+12>>2]=0}Ui=u+144|0;return}Z(112533,53895,429,12693);B()}Z(145396,53895,487,84789);B()}Z(2361,55750,166,99541);B()}Z(2108,55837,54,76114);B()}Z(2296,55837,62,76114);B()}function TM(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,C=0,D=0,E=0,F=0,G=0,N=0,O=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;v=Ui-224|0;Ui=v;J[218570]=d;J[v+216>>2]=a;J[v+204>>2]=0;J[v+68>>2]=0;J[v+52>>2]=0;b=a+b|0;J[v+220>>2]=b;J[v+208>>2]=a;J[v+212>>2]=b;z=Ui-2064|0;Ui=z;O=v+24|0;r=Ui-144|0;Ui=r;J[z+12>>2]=0;J[z+4>>2]=8;J[z+8>>2]=0;d=v+36|0;a=d+41|0;m=d+40|0;a:{b:{c:{d:{h=J[d+176>>2];f=J[d+172>>2];e:{if(h>>>0>f>>>0){b=f+1|0;J[d+172>>2]=b;g=K[f|0];break e}if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);f:{if(!b){H[d+40|0]=0;J[d+32>>2]=0;h=a;break f}g=K[m|0];h=b+m|0}J[d+172>>2]=a;J[d+176>>2]=h;b=a}if((g&255)!=137){break d}g:{if(b>>>0>=h>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);h:{if(b){h=b+m|0;g=K[m|0];break h}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;k=a;break g}k=b+1|0;J[d+172>>2]=k;g=K[b|0]}if((g&255)!=80){break d}i:{if(h>>>0<=k>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);j:{if(b){h=b+m|0;g=K[m|0];break j}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;b=a;break i}b=k+1|0;J[d+172>>2]=b;g=K[k|0]}if((g&255)!=78){break d}k:{if(b>>>0>=h>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);l:{if(b){h=b+m|0;g=K[m|0];break l}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;k=a;break k}k=b+1|0;J[d+172>>2]=k;g=K[b|0]}if((g&255)!=71){break d}m:{if(h>>>0<=k>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);n:{if(b){h=b+m|0;g=K[m|0];break n}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;b=a;break m}b=k+1|0;J[d+172>>2]=b;g=K[k|0]}if((g&255)!=13){break d}o:{if(b>>>0>=h>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);p:{if(b){h=b+m|0;g=K[m|0];break p}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;k=a;break o}k=b+1|0;J[d+172>>2]=k;g=K[b|0]}if((g&255)!=10){break d}q:{if(h>>>0<=k>>>0){if(!J[d+32>>2]){break d}b=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);r:{if(b){h=b+m|0;g=K[m|0];break r}H[d+40|0]=0;J[d+32>>2]=0;h=a;g=0}J[d+172>>2]=a;J[d+176>>2]=h;break q}a=k+1|0;J[d+172>>2]=a;g=K[k|0]}if((g&255)!=26){break d}s:{if(a>>>0>=h>>>0){if(!J[d+32>>2]){break d}a=Zi[J[d+16>>2]](J[d+28>>2],m,J[d+36>>2])|0;J[d+168>>2]=J[d+168>>2]+(J[d+172>>2]-J[d+180>>2]|0);if(a){break s}H[d+40|0]=0;J[d+32>>2]=0;break d}J[d+172>>2]=a+1;m=a}if(K[m|0]!=10){break d}a=J[d+184>>2];J[d+172>>2]=J[d+180>>2];J[d+176>>2]=a;J[r+16>>2]=d;break c}J[218569]=93911;a=J[d+184>>2];J[d+172>>2]=J[d+180>>2];J[d+176>>2]=a;a=Zj(1,18456);if(a){J[a>>2]=d;J[a+18408>>2]=-1;H[a+18372|0]=255;J[a+18452>>2]=2279;J[a+18448>>2]=2280;J[a+18444>>2]=2281;b=gq(a);f=J[d+184>>2];J[d+172>>2]=J[d+180>>2];J[d+176>>2]=f;cj(a);if((b|0)==216){break b}}J[218569]=10442;h=0;break a}h=0;g=0;m=0;o=Ui-5120|0;Ui=o;H[o+14|0]=0;I[o+12>>1]=0;p=r+16|0;J[p+12>>2]=0;J[p+4>>2]=0;J[p+8>>2]=0;i=J[p>>2];d=i+41|0;j=i+40|0;t:{u:{v:{f=J[i+176>>2];b=J[i+172>>2];w:{if(f>>>0>b>>>0){a=b+1|0;J[i+172>>2]=a;g=K[b|0];break w}if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);x:{if(!a){H[i+40|0]=0;J[i+32>>2]=0;f=d;break x}g=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;a=d}if((g&255)!=137){break v}y:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);z:{if(a){g=K[j|0];f=a+j|0;break z}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;b=d;break y}b=a+1|0;J[i+172>>2]=b;g=K[a|0]}if((g&255)!=80){break v}A:{if(b>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);B:{if(a){g=K[j|0];f=a+j|0;break B}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;a=d;break A}a=b+1|0;J[i+172>>2]=a;g=K[b|0]}if((g&255)!=78){break v}C:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);D:{if(a){g=K[j|0];f=a+j|0;break D}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;b=d;break C}b=a+1|0;J[i+172>>2]=b;g=K[a|0]}if((g&255)!=71){break v}E:{if(b>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);F:{if(a){g=K[j|0];f=a+j|0;break F}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;a=d;break E}a=b+1|0;J[i+172>>2]=a;g=K[b|0]}if((g&255)!=13){break v}G:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);H:{if(a){g=K[j|0];f=a+j|0;break H}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;b=d;break G}b=a+1|0;J[i+172>>2]=b;g=K[a|0]}if((g&255)!=10){break v}I:{if(b>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);J:{if(a){g=K[j|0];f=a+j|0;break J}g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d}J[i+172>>2]=d;J[i+176>>2]=f;a=d;break I}a=b+1|0;J[i+172>>2]=a;g=K[b|0]}if((g&255)!=26){break v}K:{if(a>>>0>=f>>>0){if(!J[i+32>>2]){break v}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);L:{if(a){g=a+j|0;f=K[j|0];break L}H[i+40|0]=0;J[i+32>>2]=0;g=d;f=0}J[i+172>>2]=d;J[i+176>>2]=g;break K}J[i+172>>2]=a+1;f=K[a|0]}if((f&255)!=10){break v}f=1;while(1){b=rl(i)<<16;g=rl(i);n=b|g;M:{N:{O:{P:{Q:{R:{S:{T:{U:{V:{W:{X:{Y:{k=rl(i);a=k<<16|rl(i);if((a|0)<=1229472849){if((a|0)==1130840649){break Y}if((a|0)==1229209940){break U}if((a|0)!=1229278788){break S}if(!f){break T}J[218569]=93899;break u}if((a|0)==1229472850){break X}if((a|0)==1347179589){break W}if((a|0)!=1951551059){break S}if(!f){break V}J[218569]=93899;break u}W=1;if(!n){break M}if((b|0)<0){J[i+172>>2]=J[i+176>>2];break M}if(!J[i+16>>2]){g=J[i+172>>2];break N}a=J[i+176>>2];g=J[i+172>>2];b=a-g|0;if((b|0)>=(n|0)){break N}J[i+172>>2]=a;Zi[J[i+20>>2]](J[i+28>>2],n-b|0);break M}if(!f){J[218569]=93899;break u}if((n|0)!=13){J[218569]=93899;break u}J[i>>2]=rl(i)<<16|rl(i);a=rl(i)<<16|rl(i);J[i+4>>2]=a;if(a>>>0>=16777217){J[218569]=143513;break u}if(M[i>>2]>=16777217){J[218569]=143513;break u}Z:{f=J[i+176>>2];b=J[i+172>>2];_:{$:{if(f>>>0>b>>>0){a=b+1|0;J[i+172>>2]=a;g=K[b|0];break $}if(!J[i+32>>2]){J[p+16>>2]=0;break _}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);aa:{if(!a){g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d;break aa}g=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;a=d}b=g&255;J[p+16>>2]=b;if(b>>>0>16){break _}if(1<>>0>>0){b=a+1|0;J[i+172>>2]=b;g=K[a|0];break ba}if(!J[i+32>>2]){g=0;b=a;u=0;break O}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ca:{if(!a){g=0;H[i+40|0]=0;J[i+32>>2]=0;f=d;break ca}g=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;b=d}u=g&255;if(u>>>0>=7){J[218569]=93899;break u}if((g&255)==3){g=3;u=3;s=3;if(J[p+16>>2]!=16){break O}J[218569]=93899;break u}if(!(u&1)){break O}J[218569]=93899;break u}if(f){J[218569]=93899;break u}if(n>>>0>=769){J[218569]=93899;break u}da:{t=(g>>>0)/3|0;if((n|0)==(P(t,3)|0)){if(g>>>0>=3){break da}f=0;break M}J[218569]=93899;break u}f=J[i+176>>2];a=J[i+172>>2];q=0;while(1){ea:{if(a>>>0>>0){b=a+1|0;J[i+172>>2]=b;k=K[a|0];break ea}if(!J[i+32>>2]){k=0;b=a;break ea}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);fa:{if(!a){k=0;H[i+40|0]=0;J[i+32>>2]=0;f=d;break fa}k=K[j|0];f=a+j|0}J[i+172>>2]=d;J[i+176>>2]=f;b=d}g=(o+16|0)+(q<<2)|0;H[g|0]=k;ga:{if(b>>>0>>0){k=b+1|0;J[i+172>>2]=k;a=K[b|0];break ga}if(!J[i+32>>2]){a=0;k=b;break ga}b=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ha:{if(!b){H[i+40|0]=0;J[i+32>>2]=0;f=d;a=0;break ha}f=b+j|0;a=K[j|0]}J[i+172>>2]=d;J[i+176>>2]=f;k=d}H[g+1|0]=a;ia:{if(f>>>0>k>>>0){a=k+1|0;J[i+172>>2]=a;b=K[k|0];break ia}if(!J[i+32>>2]){b=0;a=k;break ia}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ja:{if(!a){H[i+40|0]=0;J[i+32>>2]=0;f=d;b=0;break ja}f=a+j|0;b=K[j|0]}J[i+172>>2]=d;J[i+176>>2]=f;a=d}H[g+3|0]=255;H[g+2|0]=b;q=q+1|0;if((t|0)!=(q|0)){continue}break}f=0;break M}if(J[p+4>>2]){J[218569]=93899;break u}if(s){if(!t){J[218569]=93899;break u}ka:{if(n>>>0<=t>>>0){s=4;if(n){break ka}f=0;break M}J[218569]=93899;break u}k=J[i+176>>2];g=J[i+172>>2];f=0;while(1){la:{if(g>>>0>>0){a=g+1|0;J[i+172>>2]=a;b=K[g|0];g=a;break la}if(!J[i+32>>2]){b=0;break la}a=Zi[J[i+16>>2]](J[i+28>>2],j,J[i+36>>2])|0;J[i+168>>2]=J[i+168>>2]+(J[i+172>>2]-J[i+180>>2]|0);ma:{if(!a){H[i+40|0]=0;J[i+32>>2]=0;k=d;b=0;break ma}k=a+j|0;b=K[j|0]}J[i+172>>2]=d;J[i+176>>2]=k;g=d}H[((o+16|0)+(f<<2)|0)+3|0]=b;f=f+1|0;if((n|0)!=(f|0)){continue}break}f=0;break M}a=J[i+8>>2];if(!(a&1)){J[218569]=93899;break u}if((n|0)!=a<<1){J[218569]=93899;break u}na:{if(J[p+16>>2]!=16){f=0;if((a|0)>0){break na}x=1;s=0;break M}x=1;f=0;if((a|0)<=0){s=0;break M}while(1){I[(o+6|0)+(f<<1)>>1]=rl(i);s=0;f=f+1|0;if((f|0)>2]){continue}break}f=0;break M}while(1){H[(o+12|0)+f|0]=P(rl(i),K[J[p+16>>2]+181825|0]);x=1;s=0;f=f+1|0;if((f|0)>2]){continue}break}f=0;break M}if(f){J[218569]=93899;break u}if(!(t|!s)){J[218569]=93899;break u}if(n>>>0>=1073741825){J[218569]=22189;break u}f=0;a=m+n|0;if((a|0)<(m|0)){break t}oa:{if(a>>>0<=l>>>0){g=J[p+4>>2];break oa}g=l?l:n>>>0<=4096?4096:n;while(1){l=g;g=l<<1;if(a>>>0>l>>>0){continue}break}g=ml(J[p+4>>2],l);if(!g){J[218569]=3003;break t}J[p+4>>2]=g}k=g+m|0;pa:{qa:{ra:{sa:{if(!J[i+16>>2]){q=J[i+176>>2];g=J[i+172>>2];break sa}q=J[i+176>>2];g=J[i+172>>2];b=q-g|0;if((b|0)<(n|0)){break ra}}if(g+n>>>0>q>>>0){break pa}hj(k,g,n);J[i+172>>2]=n+J[i+172>>2];break qa}g=hj(k,g,b);g=b+g|0;b=n-b|0;g=Zi[J[i+16>>2]](J[i+28>>2],g,b)|0;J[i+172>>2]=J[i+176>>2];if((b|0)!=(g|0)){break pa}}m=a;break M}J[218569]=93899;break t}b=J[p+4>>2];if(!b){J[218569]=93899;break u}ta:{a=J[i+4>>2];d=P(P(a,J[i+8>>2]),P(J[p+16>>2],J[i>>2])+7>>>3|0)+a|0;a=sj(d);if(a){J[o+1044>>2]=b;J[o+1048>>2]=b+m;b=0;t=0;n=Ui-2512|0;Ui=n;j=o+1044|0;J[j+32>>2]=1;J[j+20>>2]=a;J[j+24>>2]=a;J[j+28>>2]=a+d;ua:{va:{if(W){break va}d=J[j>>2];k=J[j+4>>2];wa:{if(d>>>0>=k>>>0){g=d;f=0;break wa}g=d+1|0;J[j>>2]=g;f=K[d|0]}xa:{if(g>>>0>=k>>>0){d=g;break xa}d=g+1|0;J[j>>2]=d;b=K[g|0]}if(!(b&32|(((f<<8|b)>>>0)%31|d>>>0>=k>>>0))){if((f&15)==8){break va}}J[218569]=93899;break ua}J[j+16>>2]=0;J[j+8>>2]=0;J[j+12>>2]=0;A=j+3500|0;C=j+3212|0;D=j+3180|0;G=j+3080|0;Q=j+3112|0;R=j+1480|0;T=j+1192|0;U=j+1160|0;V=j+1060|0;S=j+1092|0;w=j+2056|0;y=j+36|0;Y=n+1936|0;_=n+1648|0;$=n+1616|0;aa=n+1516|0;ba=n+1548|0;d=0;while(1){ya:{za:{if((d|0)>0){break za}while(1){f=d;if(t>>>d|0){J[j>>2]=J[j+4>>2];break za}b=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;b=K[d|0]}d=f+8|0;J[j+8>>2]=d;t=(b&255)<>2]=t;if((f|0)<17){continue}break}b=f+7|0;k=t>>>1|0;break ya}b=d-1|0;J[j+8>>2]=b;k=t>>>1|0;J[j+16>>2]=k;if((d|0)>2){break ya}while(1){if(k>>>b|0){J[j>>2]=J[j+4>>2];break ya}g=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;g=K[d|0]}d=b+8|0;J[j+8>>2]=d;k=(g&255)<>2]=k;f=(b|0)<17;b=d;if(f){continue}break}}d=b-2|0;J[j+8>>2]=d;g=k>>>2|0;J[j+16>>2]=g;Aa:{Ba:{Ca:{switch((k&3)-1|0){default:f=d&7;if(f){k=d;Da:{if((b|0)>1){break Da}while(1){if(g>>>d|0){J[j>>2]=J[j+4>>2];k=d;break Da}b=0;k=J[j>>2];if(k>>>0>2]){J[j>>2]=k+1;b=K[k|0]}k=d+8|0;J[j+8>>2]=k;g=(b&255)<>2]=g;b=(d|0)<17;d=k;if(b){continue}break}}d=k-f|0;J[j+8>>2]=d;g=g>>>f|0;J[j+16>>2]=g}Ea:{Fa:{Ga:{Ha:{Ia:{Ja:{if((d|0)>0){N=d-1|0;q=(N>>>3|0)+1|0;m=q&3;f=0;Ka:{if(d>>>0<25){b=0;break Ka}ca=q&1073741820;b=0;l=0;while(1){k=(n+492|0)+b|0;H[k|0]=g;H[k+1|0]=g>>>8;H[k+2|0]=g>>>16;H[k+3|0]=g>>>24;b=b+4|0;g=0;l=l+4|0;if((ca|0)!=(l|0)){continue}break}}k=0;if(m){while(1){H[(n+492|0)+b|0]=g;b=b+1|0;g=g>>>8|0;k=g;f=f+1|0;if((m|0)!=(f|0)){continue}break}}J[j+16>>2]=k;b=d-(N&-8)|0;J[j+8>>2]=b-8;if((b|0)==8){break Ja}d=93899;break Ga}q=0;if((d|0)>=0){break Ia}d=93899;break Ga}if(d>>>0>24){break Ha}}m=J[j+4>>2];f=J[j>>2];La:{if(!(q&1)){b=f;g=q;break La}d=0;Ma:{if(f>>>0>=m>>>0){b=f;break Ma}b=f+1|0;J[j>>2]=b;d=K[f|0]}H[(n+492|0)+q|0]=d;g=q+1|0}if((q|0)==3){break Ha}while(1){k=0;f=(n+492|0)+g|0;Na:{if(b>>>0>=m>>>0){d=b;b=0;break Na}d=b+1|0;J[j>>2]=d;b=K[b|0]}H[f|0]=b;Oa:{if(d>>>0>=m>>>0){b=d;break Oa}b=d+1|0;J[j>>2]=b;k=K[d|0]}H[(g+n|0)+493|0]=k;g=g+2|0;if((g|0)!=4){continue}break}}f=K[n+492|0]|K[n+493|0]<<8;d=93899;if((f^(K[n+494|0]|K[n+495|0]<<8))!=65535){break Ga}b=J[j>>2];d=93899;if(M[j+4>>2]>>0){break Ga}k=J[j+28>>2];if(k>>>0>=a+f>>>0){break Ea}d=93899;if(!J[j+32>>2]){break Ga}b=J[j+24>>2];g=a-b|0;d=3003;if(f>>>0>(g^-1)>>>0){break Ga}a=k-b|0;k=f+g|0;if(a>>>0>>0){while(1){d=3003;if((a|0)<0){break Ga}a=a<<1;if(k>>>0>a>>>0){continue}break}}b=ml(b,a);if(b){break Fa}d=3003}J[218569]=d;break ua}J[j+24>>2]=b;J[j+28>>2]=a+b;a=b+g|0;J[j+20>>2]=a;b=J[j>>2]}hj(a,b,f);J[j>>2]=f+J[j>>2];a=f+J[j+20>>2]|0;J[j+20>>2]=a;break Aa;case 0:if(!Jt(y,182224,288)){break ua}if(!Jt(w,182512,32)){break ua}break Ba;case 2:break ua;case 1:break Ca}}k=d;Pa:{if((b|0)>6){break Pa}while(1){if(g>>>d|0){J[j>>2]=J[j+4>>2];k=d;break Pa}a=0;b=J[j>>2];if(b>>>0>2]){J[j>>2]=b+1;a=K[b|0]}k=d+8|0;J[j+8>>2]=k;g=(a&255)<>2]=g;a=(d|0)<17;d=k;if(a){continue}break}}a=k-5|0;J[j+8>>2]=a;b=g>>>5|0;J[j+16>>2]=b;f=a;Qa:{if((k|0)>9){break Qa}while(1){if(b>>>a|0){J[j>>2]=J[j+4>>2];f=a;break Qa}d=0;f=J[j>>2];if(f>>>0>2]){J[j>>2]=f+1;d=K[f|0]}f=a+8|0;J[j+8>>2]=f;b=(d&255)<>2]=b;d=(a|0)<17;a=f;if(d){continue}break}}k=g&31;a=f-5|0;J[j+8>>2]=a;d=b>>>5|0;J[j+16>>2]=d;m=b&31;b=a;Ra:{if((f|0)>8){break Ra}while(1){if(d>>>a|0){J[j>>2]=J[j+4>>2];b=a;break Ra}g=0;b=J[j>>2];if(b>>>0>2]){J[j>>2]=b+1;g=K[b|0]}b=a+8|0;J[j+8>>2]=b;d=(g&255)<>2]=d;f=(a|0)<17;a=b;if(f){continue}break}}a=b-4|0;J[j+8>>2]=a;b=d>>>4|0;J[j+16>>2]=b;g=0;H[n+15|0]=0;H[n+16|0]=0;H[n+17|0]=0;H[n+18|0]=0;J[n+8>>2]=0;J[n+12>>2]=0;J[n>>2]=0;J[n+4>>2]=0;l=(d&15)+3|0;while(1){f=g;g=b;d=a;Sa:{if((d|0)>2){break Sa}while(1){if(g>>>a|0){J[j>>2]=J[j+4>>2];d=a;break Sa}b=0;d=J[j>>2];if(d>>>0>2]){J[j>>2]=d+1;b=K[d|0]}d=a+8|0;J[j+8>>2]=d;g=(b&255)<>2]=g;b=(a|0)<17;a=d;if(b){continue}break}}a=d-3|0;J[j+8>>2]=a;b=g>>>3|0;J[j+16>>2]=b;H[n+K[f+182544|0]|0]=g&7;g=f+1|0;if((f|0)!=(l|0)){continue}break}if(!Jt(n+492|0,n,19)){break ua}l=k+257|0;N=m+1|0;m=l+N|0;a=J[j+8>>2];f=0;Ta:{while(1){Ua:{if((a|0)>15){k=a;break Ua}b=J[j>>2];q=J[j+4>>2];if(b>>>0>=q>>>0){if(J[j+12>>2]){break Ta}J[j+12>>2]=1;k=a+16|0;J[j+8>>2]=k;break Ua}g=J[j+16>>2];while(1){if(g>>>a|0){J[j>>2]=q;k=a;break Ua}d=0;if(b>>>0>>0){k=b+1|0;J[j>>2]=k;d=K[b|0];b=k}k=a+8|0;J[j+8>>2]=k;g=(d&255)<